Files
2026-06-06 05:21:10 +00:00

128 lines
5.5 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: jd-resume-tailor
description: 给定一份 JD 和一份现有简历,做"JD 拆解 + 简历定向改写"。拆 JD 抽出硬技能、软技能、加分项;对照简历做 gap 分析;产出针对该岗位重写后的简历,突出相关经验、补齐关键词缺口、并保留候选人真实经历不编造。当用户说"针对这个岗位 / 这家公司改简历""帮我对一下这个 JD""我想投这个职位你看怎么改""把这份简历针对 X 公司优化""做一份定向版简历",或同时给出 JD 文本 + 简历文件时,必须触发本 skill。**请勿用本 skill 做"从零写简历"**——那是 resume-builder 的事。
---
# JD ⇄ Resume TailorJD 拆解 + 简历定向改写)
这个 skill 的边界很窄:**只解决"已有 JD + 已有简历,要改一份命中率最高的版本"**。
不做的事:
- 写新简历(去 `resume-builder`
- 找方向 / 推荐岗位(去 `job-intent-tracker`
- 出面试题(去 `interview-prep`
---
## 何时触发
强信号:
- 用户给了 JD 链接 / JD 文本 + 一份简历 → **必触发**
- "针对这个岗位帮我改简历"
- "对照一下这个 JD"
- "我想投 X 公司的 Y 岗,帮我看简历"
- "做一份定向版"
弱信号(先确认):
- 只给了 JD 没有简历 → 问"你的简历方便发我看一下吗没有的话我可以先帮你从零做一份resume-builder"
- 只给了简历说"改简历" → 问"是针对哪个 JD 改?没有 JD 就用 resume-builder 通用优化"
---
## 工作流
### Step 1: 解析 JD
输入可能是:
- 纯文本(用户粘贴)
- 链接(**不要**自动 fetch提醒用户复制 JD 文本进来;若用户授权 fetch使用 web_fetch
- 截图(用 OCR / 视觉识别,让用户确认抽取结果)
- doc/pdf 文件
调用脚本:
```bash
python scripts/parse_jd.py --jd-file <jd.txt> --out jd_parsed.json
```
脚本会从 JD 抽出:
- **硬技能 must-have**"必须" / "要求" / "至少 X 年" 等强信号词后面的技能)
- **硬技能 nice-to-have**"加分" / "优先" / "熟悉者优先" 等弱信号)
- **软技能信号**(沟通 / 推动 / 跨部门 / 抗压 等)
- **职责动词 + 对象**"负责 X" / "搭建 Y" / "推动 Z"
- **特殊要求**(出差 / 学历 / 证书 / 语言 / 城市)
把结果展示给用户,让用户**确认 / 修正抽取是否准确**(关键 must-have 不能漏)。
### Step 2: 解析简历
输入:用户上传的简历文件(.pdf / .docx / .md / .txt
调用对应 skill 解析:
- pdf → pdf skill
- docx → docx skill
抽出:基本信息、教育、每段工作 / 项目经历的(公司、岗位、时间、职责 bullet、技能列表。
### Step 3: Gap 分析
调用:
```bash
python scripts/jd_gap.py --jd jd_parsed.json --resume resume.txt --out gap.md
```
脚本输出三类清单:
1. **完美命中**JD must-have 在简历里有明确证据)
2. **隐性命中**JD 要求 X简历里有 X 的近义经验,但用词不一样 → 改写时可以"提一下"
3. **真缺口**JD 要求但简历完全没有)
对"真缺口"分两类:
- **可补救**:简历里其实做过类似的事,只是没写出来 → 追问用户"你做过 X 吗?"
- **不可补救**:用户确实没做过 → **不能编**,建议用户在 cover letter 或 summary 里诚实说明并强调 transferable skill
### Step 4: 定向改写
按以下原则重写简历:
**a. 重排经历顺序**:与 JD 最相关的工作 / 项目放最前(不改时间真实性,但可以把项目经历拆成两块"相关项目 / 其他项目"
**b. 重写每条 bullet**
- 把 JD 里的"职责动词"自然嵌入 bullet如 JD 说"主导 ___ 系统设计",简历里就把"参与"改成"主导"——前提是用户确实主导了)
- 数字保留并放大("用户 100 万"是好事,别藏起来)
- 补 JD 关键词(如 JD 说"A/B 测试",但简历里写的是"灰度对比",改成"A/B 测试(灰度对比)"
**c. 重写 Summary**:用 2~3 行总结你为什么是这个岗位的合适人选,**直接对应 JD 的 must-have**
**d. 调整技能列表**:把 JD 提到的技能移到最前面(前提是真的会)
**e. 不改的事实**
- 公司名、岗位名、起止时间、学历 —— 一字不改
- 项目规模、用户量、收入数据 —— 不能编,只能让用户确认后填准
### Step 5: 自检 + 报告
输出三个文件:
1. `resume_tailored_<公司>_<岗位>.md`(改写后的简历)
2. `gap_analysis.md`gap 分析报告)
3. 聊天里给一个 ATS 命中率对比:"改前 X% → 改后 Y%"
附:诚实提醒用户**哪些 bullet 是基于现有信息推测改写的**,让用户复核后再投。
---
## 反模式(不要做)
- ❌ 编造经历("加上一段你没做过的项目"——绝对禁止,哪怕用户要求)
- ❌ 把 JD 的整段话直接粘进简历(很容易被 HR 一眼识破,且 ATS 反作弊会标记)
- ❌ 关键词堆砌在末尾塞一长串技能词凑命中率HR 一眼能看出)
- ❌ 把"参与"改成"主导"但没有问用户实际角色 → 必须先核实
- ❌ 不给用户看 gap自己默默改 → 用户会失去对简历的"理解"
## 与其他 skill 的协作
- 改完后用户说"帮我准备这家公司的面试" → 转 `interview-prep`,把 JD + 改写简历传过去
- 用户说"我想知道还能投哪些类似的岗" → 转 `job-intent-tracker`
- 用户说"我现在简历不太行,能不能整体重做" → 转 `resume-builder`