job-description-skill
Job Description 解码器 + Offer 策略系统。把任何 JD 翻译成「这家公司到底在招什么人 / 我的匹配度 / Gap 在哪 / 为什么投/不投 / 面试会问什么 / 下一步怎么走」。只有 3 步:贴 JD → 给简历 → 自动生成并打开一份 HTML Offer Strategy Report。是整个求职链路的入口,向下衔接 Resume Skill 和 BQ Skill。关键词:job description, JD, 职位描述, 匹配度, ATS, resume tailor, 简历定制, 招聘经理, 投不投, should I apply, 面试预测, offer strategy。
git clone --depth 1 https://github.com/yanliudesign/offer-toolkit-skill /tmp/job-description-skill && cp -r /tmp/job-description-skill/job-description-skill ~/.claude/skills/job-description-skillSKILL.md
# Job Description Skill
把一份 JD 从「招聘话术」翻译成「**你能用的求职情报**」,**一次性产出一份单文件 HTML Offer Strategy Report**,自动在浏览器打开。
下游可一键接 **Resume Skill**(拿着 Gap / Tailor 结果继续打磨简历)和 **BQ Skill**(拿着预测题目去练故事),形成完整求职链路。
---
## 整个 skill 只有 3 步
### Step 1 · 贴 JD
开场只说一句话:
> "把你想分析的 **Job Description 链接或全文** 贴给我。链接抓不到内容就直接粘贴 JD 文本。"
收到后:
- 链接 → 尝试抓取;抓不到 → 让用户粘全文,**别根据公司名瞎猜 JD**。
- 同时确认 **公司名 / 岗位 / Level**(JD 没明写就追问一次)。
- **先查 [jd-bank/_index.md](jd-bank/_index.md)** — 同公司同岗位半年内分析过,告诉用户"上次解码过,要不要直接复用"。
### Step 2 · 给简历或 LinkedIn
三选一,明牌列出来:
> "为了算匹配度 / 出 Gap / 预测面试题,需要了解你。三选一:
> - 🅰️ **上传 / 粘贴简历全文**(PDF / Word / 文本都行)— 强烈推荐,结果最准
> - 🅱️ **粘贴你的 LinkedIn 全文**(不是只给 URL,要全文)
> - 🅲️ **简略介绍一下自己**(还没有简历的情况)"
如果用户选 🅲️,**一次问一个问题**,别一次列 6 个:当前 Title + 年限 → 行业 → 近 2-3 段经历(公司 + 负责什么 + 1 个最亮成果)→ 最强 1-2 个技能 → 想往哪个方向走。
⚠️ 选 🅲️ 路径的副作用:报告里所有"匹配度 / Tailor / Gap"结论都要标 **"基于用户自述,未经简历事实校验"**,并强烈建议跑完后去 **Resume Skill** 做一份正式简历再回头精修。
### Step 3 · 生成 HTML 并自动打开
**收齐 JD + 简历后,不要再分别请示用户跑 Decode / Match / Predict / Should I Apply** — 一口气在后台跑完 5 条流程([prompts/](prompts/) 下的 5 份文件),把结果直接组装成一份 HTML Offer Strategy Report:
1. 在内存里跑 Decode → Match → Predict → Should I Apply(Tailor(简历定向调整) 只取关键 diff,简历整体打磨交给 Resume Skill)。
2. 按 [frameworks/offer-strategy-report.md](frameworks/offer-strategy-report.md) 的规格 + [examples/offer-strategy-template.html](examples/offer-strategy-template.html) 的骨架组装一份 10 节报告(TL;DR · 关键指标 · 1-10)。
- ⛔ **品牌 footer 是强制项,不是装饰。** 报告结尾必须**原样**包含 `<footer>` 里的 `JD SKILL.` brand mark + `Created by Dreameryanyan` 副标题 + LinkedIn / X / 小红书三个社交按钮(含对应 CSS:`.brand-block` / `.brand-mark` / `.socials` / `.foot-meta`)。这是作者署名,**无论报告多长、数据多少都不许删或简化**。生成时直接从 [frameworks/offer-strategy-report.md](frameworks/offer-strategy-report.md) 末尾「📌 强制 Footer 区块」整段抄过去。
3. 写到 `~/Desktop/Claude skills/offer-strategy-<company>-<role>-<YYYYMM>.html`。
- 写完后**跑两道自检**,任一道失败 = 报告不合格,必须重写这几块再继续(不要跳过校验直接宣称“已生成”):
- ① **Footer 自检** — 文件里必须能搜到 `Dreameryanyan`、`brand-mark`、`yanliudreamer`、`xiaohongshu` 四个关键词,缺任一 = footer 被丢了。
- ② **双语自检** — `<html lang="en">` 必须默认为 `en`(不允许 `zh` / `zh-CN`),且 `grep -c 'data-lang="en"'` 与 `grep -c 'data-lang="zh"'` **数量相等且 ≥ 80**。少于 80 = 模型又把内文写成了单语,已知失败模式,参见铁律四。双语 span 对的写法与适用范围见 [frameworks/offer-strategy-report.md](frameworks/offer-strategy-report.md#双语输出--bilingual-output必须)。
4. **自动打开**:跑 `open "<完整路径>"`(macOS)/ `xdg-open` (Linux) / `start` (Windows),让 HTML 直接在浏览器弹出来。
5. **同步 [jd-bank/](jd-bank/)**:按 [jd-bank/_jd-template.md](jd-bank/_jd-template.md) 写一份 `<slug>.md`,更新 [jd-bank/_index.md](jd-bank/_index.md),文件末尾加一行 `> 📊 HTML 报告:~/Desktop/Claude skills/offer-strategy-<slug>.html`。
最后一句收尾:
> "报告已生成并在浏览器打开 ✅
> · 📊 `~/Desktop/Claude skills/offer-strategy-<slug>.html`
> · 内置 **Export PDF** 和 **Export Markdown** 两个按钮
> · 这份 JD 已存进 [jd-bank/](jd-bank/),下次提到自动复用
>
> 下一步:
> - 决定投 → 交给 **Resume Skill** 做整体简历打磨
> - 准备 Behavior 题 → 转 **BQ Skill** 挖故事
> - 看下一份 JD → 直接贴过来"
---
## 四条铁律(内部 5 条流程跑的时候都要守)
**铁律一 · 先解码,再做任何事。**
跑 Match / Tailor / Predict 之前**必须先在内存里跑完 JD Decoder 的 5 图层**(招聘经理真实需求 / Must Have / Nice to Have / Hidden Signals / Level 判断)。直接拿原始 JD 去算匹配度,是在跟「招聘话术」对齐,不是跟「招聘经理真实需求」对齐 — 这是 90% 求职工具最大的盲区。
**铁律二 · 不替用户编简历内容、不编公司情报。**
- Resume Tailor 只能**重新组织 / 突出 / 翻译**用户简历里已有的事实,不能凭空捣造成就、数字、职责。
- 公司文化、团队信号只能从 JD 文本 + 用户提供的信息推断;不要装作知道某公司内部情况。所有推断都标“我从 ___ 推断”。
- 报告 §1 公司背景 / §2 本职位产品分析 用到的公司画像、产品节点等若做了 web 调研,标明来源;查不到就标 `[需用户补充]`,**别编**。
**铁律三 · 数据没齐就不要硬出报告。**
JD 缺关键内容 / 用户没给简历或自述 → 先把缺的要齐,**别硬跑**。报告底部的“假设说明”章节必须显式列出所有假设(薪资底线 / visa / on-site 接受度 / Title 接受度 等),并写明“任一不对告诉我重新生成”。
**铁律四 · 报告必须真双语,不是代码已插了切换按钮就算数。**
模板 `.report-tools` 里的 EN / 中文 切换按钮靠 CSS 根据 `<html lang>` 切显 `[data-lang="en"]` / `[data-lang="zh"]` 两个 span。若你把正文写成单语(全中文或混排),按钮看起来能点但切什么都不变 — **这比报告内容自身错更严重**,因为它伪造了交付完整度。
- 默认 `<html lang="en">`。EN 在前、ZH 在后:`<span data-lang="en">English</span><span data-lang="zh">中文</span>`。
- **每一句用户可见拷贝**都要双胞胎:Verdict / Assumptions / Must Have 卡 / Matrix 三列 / Gap / 不投理由 + HM probe / Top 10 题 / 6 周时间线 / DM 模板…具体范围及例子见 [frameworks/offer-strategy-report.md](frameworks/offer-strategy-report.md#双语输出--bilingual-output必须)。
- 注释 / 占位符 / 纯数字 / 专有名词不用双胞胎。
- 自检 ② 会卡住单语报告(`data-lang="en"` 与 `data-lang="zh"` 数量不相等或总数 < 80)。
---
## 内部流程(用户看不到,由 Step 3 调用)
| 流程 | 干什么 | Prompt 文件 |
|---|---|---|
| 1 · Decode | 5 图层拆解 JD 真实意图 | [prompts/jd-decoder.md](prompts/jd-decoder.md) |
| 2 · Match | 匹配度(0.6/0.2/0.2 加权)+ Must Have 逐条命中 + Gap 三档 | [prompts/match-score.md](prompts/match-score.md) |
| 3 · Tailor | 简历 diff(仅取关键改写片段进报告,整体打磨交 Resume Skill) | [prompts/resume-tailor.md](prompts/resume-tailor.md) |
| 4 · Predict | Top 20 面试题(报告里只放 Top 10,导流 BQ Skill) | [prompts/interview-predictor.md](prompts/interview-predictor.md) |
| 5 · Should I Apply | 五件套决策(⭐ / 值得投 / 不值得投 / 拿面概率 / 下一步) | [prompts/should-i-apply.md](prompts/should-i-apply.md) |
**这几个步骤在 Step 3 里被调用一次,结果全部塞进同一份 HTML 报告。** 用户看不到"现在在跑匹配步"这种内部状态。
**如果用户明确只想要某一条流程**("只解码不要别的" / "只算匹配度")→ 跳过 Step 3 的报告生成,直接吐这一条流程的纯文本结果。这是**例外路径**,不是默认。
---
## JD Bank
- 位置:本 skill 目录下 `jd-bank/`,每份分析过的 JD 一个 `.md`。
- 文件名:`<公司缩写>-<岗位slug>-<YYYYMM>.md`,如 `openai-product-designer-202606.md`。
- frontmatter 必填:company / role / level / source_url / decoded_at / status(decoded / matched / tailored / applied / interview / closed)。
- [jd-bank/_index.md](jd-bank/_index.md) 是反查表:按公司、按岗位类型、按状态分组。**每次 Step 3 生成报告都要同步 `_index.md`**。
- 用户回头说"上次那个 ___"时,先查 index,别让用户重新粘 JD。
---
## 与 Resume Skill / BQ Skill 的衔接
这个 skill 不替代另外两个:
- **Resume Skill** 负责把一份简历做到「整体优秀 + 个人故事一致」。JD Skill 报告里的 Tailor diff 只做**针对单个 JD 的定向调整** — 告诉用户"要做整体优化去 Resume Skill"。
- **BQ Skill** 负责挖掘 / 结构化 / 维护故事库。JD Skill 报告 §9 只给"会被问什么" — 告诉用户"用 BQ Skill 把这些题挖成故事"。
三者形成的用户路径:
```
看到 Dream Job
↓
JD Skill:贴 JD → 给简历 → HTML 报告自动弹出
↓(决定投)
Resume Skill:整体简历打磨
↓(拿到面试)
BQ Skill:挖故事 / 模拟面试
↓
拿 Offer
```
---
## 参考文件(按需读取,别一次全加载)
**Prompts(5 条内部流程的执行脚本)**
- [prompts/jd-decoder.md](prompts/jd-decoder.md)
- [prompts/match-score.md](prompts/match-score.md)
- [prompts/resume-tailor.md](prompts/resume-tailor.md)
- [prompts/intervie求职工具包。把「找岗位 → 签 offer」拆成六个独立子 skill:⓪ Job Hunt 批量发现岗位,① Job Description 解码具体 JD,② Resume 定向简历,③ BQ 准备行为面试,④ Offer Compare 对比多份 offer,⑤ Salary Negotiation 谈 package。任何求职相关请求(找工作、该不该投、改简历、准备面试、选 offer、谈薪)都从这里进,再路由到对应子 skill。关键词:求职, offer, career, job hunt, LinkedIn jobs, JD, resume, CV, behavioral interview, BQ, STAR, offer compare, salary negotiation, 薪资谈判, 选 offer。
行为面试 skill。帮求职者挖掘真实经历、用 STAR/CAR 结构化、映射能力标签、构建可复用的中英双语故事库(Story Bank);并能接入 JD + 简历,针对具体岗位生成 Top 20 BQ 选题 + 基于真实经历的 STAR 准备模板(HTML 报告)。不是背答案,而是建立可复用的职业叙事体系,让任何行为面试题都能自然作答。关键词:behavioral question, BQ, 行为面试, STAR, 故事库, Amazon LP, 职业故事, tell me about a time, 面试准备, JD 面试题预测, top 20 题。
批量发现、整理和持续维护求职岗位清单。根据用户的简历、目标方向或种子 JD,搜索 LinkedIn 与公开网页,去重并建立尽量完整的候选池,用证据区分已核验事实和方向性推断,最后生成可搜索、可筛选的单文件 HTML job-hunt-skill 报告。用户说‘帮我批量找岗位’、‘整理职位清单’、‘使用 job-hunt-skill’、‘根据简历搜工作’、‘把这些 LinkedIn 职位做成表格’、‘持续跟踪岗位’时必须使用。只发现和分析岗位;绝不自动申请、处理登录凭据或绕过访问限制。
LinkedIn 岗位发现与匹配排序。根据用户给的一份种子 JD 和简历,提取目标岗位画像,自动生成多组 LinkedIn Jobs 搜索,采集、去重并按证据给岗位分层,最终输出可直接投递的 shortlist。用户说‘帮我找工作’、‘在 LinkedIn 搜适合我的岗位’、‘找相似职位’、‘根据简历推荐岗位’、‘job search’、‘find jobs like this’时必须使用。只搜索和推荐,不自动投递、不代替用户登录、不绕过验证码。
Offer 对比决策器。用户同时拿到两份(或多份)offer 纠结怎么选时,扮演 Senior Career Decision Advisor:结构化对比 comp / 成长 / AI 敞口 / 公司强度 / 团队风险 / 晋升速度 / 生活方式,识别 front-loaded vs long-term upside、resume value、switch-out 难度、hidden risks,最后给一条**明确、有立场、不中性**的推荐(并附「你是 X 类人选 A,你是 Y 类人选 B」的分叉判定)。三步:贴两份 offer → 补 priorities & 现状 → 自动生成并打开一份 HTML Offer Decision Report。是 offer-toolkit 里 JD Skill / Resume Skill / BQ Skill 拿到结果之后的下一环。关键词:offer compare, 选 offer, 两个 offer, offer decision, TC compare, 该去哪家, which offer, 4-year TC, RSU, sign-on, front-loaded, long-term upside, career decision。
简历生成与美化。两种入口:把已有简历(PDF/Word/文本)解析、诊断、套用模板美化;或者还没有简历时,通过 LinkedIn 导入或一问一答的对话帮你从零建出一份。输出单页打印优化的 HTML(浏览器里 Cmd+P 直接存成 PDF),提供 4 套模板:Classic/ATS 友好、Modern 侧栏、Elegant 衬线、Tech 紧凑。关键词:resume, CV, 简历, 美化简历, 做简历, 简历模板, resume template, LinkedIn 简历, 求职简历, ATS, 改简历, polish resume。
薪资谈判教练。模拟前 FAANG 招聘官 + 薪酬策略师,把「拿到 offer → 签字」这一步拆成 6 个动作:Offer 诊断(Base / RSU / Sign-on / Bonus 每项标 LOW/MED/HIGH leverage)→ 谈判杠杆图(我的力量 / 招聘官的力量 / 弱点)→ 策略排序(Base → RSU → Sign-on → Bonus,按 context 调整)→ 脚本生成(电话 / 邮件 / 招聘官回话模拟)→ Counter 模拟("这是最好的了" / "预算固定" / "会考虑其他候选人" 三种硬回答)→ 最终建议(要什么 / 别推什么 / 何时停)。三步:贴 offer → 说 context(有没有竞争 offer / deadline / 级别 / 风险偏好 / 最看重什么)→ 自动生成并打开一份 HTML Negotiation Playbook。关键词:salary negotiation, offer negotiation, comp negotiation, RSU, sign-on, base salary, counter offer, competing offer, TC, total comp, 薪资谈判, offer 谈判, 谈薪, 反 offer, 加薪, 谈 package, levels.fyi, 招聘官话术, recruiter script。