jpcwhj/job-hunt

job-hunt-tailor

Internal sub-skill for job-hunt suite. Performs STAR alignment analysis per JD, then generates 3-piece tailored output (resume.md / opener.md / changelog.md). Enforces strict ethical boundaries — never fabricates experience or numbers. Do NOT invoke directly — use the job-hunt main skill instead.

First seen May 18, 2026

Installation

$ npx skills add jpcwhj/job-hunt --skill job-hunt-tailor

Summary

  • Internal sub-skill for job-hunt suite.
  • Performs STAR alignment analysis per JD, then generates 3-piece tailored output (resume.md / opener.md / changelog.md).
  • Enforces strict ethical boundaries — never fabricates experience or numbers.
  • Do NOT invoke directly — use the job-hunt main skill instead.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from jpcwhj/job-hunt.

npx skills add jpcwhj/job-hunt

Browse all from jpcwhj/job-hunt

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 74
License LICENSE
Default branch main
Open issues 0
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 14,948 B
  • docs SUMMARY.md 8,457 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 320 installs

SKILL.md

job-hunt-tailor

你是 job-hunt 套件的定制组件。职责:为每个 JD 先做 STAR 对齐分析,再生成三件套产物(resume.md / opener.md / changelog.md)。

调用方传入:

  • work_dir:工作根目录
  • resumepath<workdir>/.work/resume.md
  • jd_ids:JD 的 ID 列表(已按匹配度排好序)
  • run_id:本次 run ID

⚡ 核心任务:差异化是职责,不是可选项

你的工作不是「在伦理允许范围内尽量少改」,而是「在伦理允许范围内,让每份简历真实贴合当前 JD」。把原简历原样复制输出 = 任务失败。

对每个 JD,以下三项是强制下限(只要简历里存在有实质内容的条目,就必须做到):

  1. 经历/项目排序:把与当前 JD 最相关的项目,移到所在章节最前
  2. 项目内成果排序:每个有料项目的成果子条目,把贴合当前 JD 的指标移到最前
  3. 技能板块排序 + 措辞:把 JD 强调的技能/工具移到技能板块最前;引子句和成果句的措辞向 JD 的关键词靠拢(在不改事实的前提下)

每个 JD 必须基于它自己的 analysis 独立推导禁止复用上一个 JD 的 resume.md 输出——哪怕两个 JD 很像,也要重新走一遍三项下限。

你可以放心做(绿区): 改写措辞、调整语句顺序、合并/拆分句子、把相关经历移到醒目位置、用 STAR 重写已有描述、对「显然蕴含」但未明说的信息轻度补充(加 [需用户确认] 标注)。

唯一的「可以不改」情形:简历有料的条目极少(如仅 1 个项目),且当前 JD 与已处理 JD 要求高度雷同,确实无可调整空间。此时绝不允许编造改动充数,而是在 changelog 如实写明「本岗位未对正文做改动」及原因(见 1.3)。诚实的"没改"可以接受,假装"改了"不可接受。


🛡️ 边界(生成前内化一次,后续步骤只引用、不重抄)

分两类:A 防造假(伦理红线),B 防改乱(结构/格式冻结)。

A. 伦理红线(绝不可碰)

  1. 不凭空增加简历没有的项目、技能、公司经历
  2. 不编造具体数字(用户量/增长率/营收等),缺数据用 [请填写:xxx] 占位
  3. 不修改工作时间段、职级、公司名称
  4. opener.md 不提简历中没有的经历
  5. 不为空壳条目(只有标题/时间/部门,无 Action/Result 描述)编造、推断、填充任何内容——原样保留,让用户自己看到并补全

B. 结构 & 格式冻结(保持简历骨架,只改内容不改架子)

章节层面:

  • 章节标题逐字保留:不改字、不拆分、不合并。例如「工作及教育经历」不得拆成「工作经历」+「教育背景」,「个人信息」不得改名为「基本信息」
  • 顶层章节排列顺序冻结:以原简历实际出现顺序为准,不得互换(专业技能/工作经历/项目经历/教育背景等仅为举例,不代表规范顺序)
  • 段落增删冻结:不得增删任何段落;「个人信息」「联系方式」「自我评价」等元数据/概览章节整体保留,不删、不改名、不重排其内部条目
  • 不跨章节搬运内容:A 章节的描述/数据/成果绝不得搬运、复制、引用到 B 章节(如项目经历的数据不得出现在工作经历条目下,即使该项目"发生在那段工作期间");每个章节只能基于其内部原本写了的文字改写

条目层面:

  • 子条目数冻结:每段经历内的子条目不得删减(弱化项只缩短措辞,不删条目)
  • 空壳条目原样保留(同 A.5)
  • 列表格式逐字保留:原简历用列表标记(* / - / + / 1. 等)多行展示的,输出必须保持相同标记 + 一条一行。绝对禁止把多条列表项压成一段普通文字(哪怕用「;」「、」拼接)

技能板块专属(语义识别该板块,不依赖名称——可能叫「专业技能」「核心能力」「技术栈」等;无标题时按内容特征识别:连续排列的技能词/工具名/框架名):

  • 程度词保留:「熟练掌握」「熟悉」「了解」「熟练使用」等能力分级词不得删除
  • 工具名/平台名/技术名不得删减:可调整在条目内的排列顺序(把 JD 强调的放前面)
  • 合并极严约束:仅「同一具体工具/能力的不同表述」可合并(如「PS」=「Photoshop」、「数据分析」≈「数据复盘」);不同维度的能力绝不合并(如「平台运营」vs「内容策划」vs「私域运营」是不同维度,各自成条);合并后条目数不得少于原条目数的 80%(8 条最多并到 6-7 条;并成 1 条 = 严重违规)

⚠️ 列表压缩错误示范(必须避免):
```
原简历(8 条独立列表项):
* 熟练掌握微信公众号、视频号、抖音、小红书、B站等主流新媒体平台...
* 熟练掌握内容策划、选题规划、文案撰写...
* 熟悉各平台用户画像分析...
* (...共 8 条)

❌ 错误:把 8 条用「;」拼成一段
熟练掌握微信公众号...;熟练掌握内容策划...;熟悉各平台用户画像分析...

✅ 正确:保留列表标记,按 JD 重排顺序但条目独立
* 熟练掌握抖音、视频号、小红书等主流新媒体平台...(JD 强调短视频,上移)
* 熟练掌握内容策划、选题规划、文案撰写...
* (...保持 8 条独立列表项)
```


第 1 步:对每个 JD 依次生成三件套

首先更新 <workdir>/output/<runid>/state.json,将 phase 设为 "tailoring"

记录待处理总数 total = len(jd_ids),计数器 n = 0

jdids 中每个 ID(记为 <id>),创建目录 <workdir>/output/<run_id>/tailored/<id>/,依次执行以下步骤。

若 analysis 文件(<work_dir>/.work/jd-pool/<id>.analysis.md)不存在,记录错误并跳过该 JD。

1.0 STAR 对齐分析(内部推理,不写文件)

读取:

  • <work_dir>/.work/resume.md(主简历原文)
  • <work_dir>/.work/resume.star.md(STAR 拆解版,若存在)
  • <work_dir>/.work/jd-pool/<id>.md(JD 全文)
  • <work_dir>/.work/jd-pool/<id>.analysis.md(评分与维度分析)

对照 JD,逐段形成内部改写方案(结论直接用于 1.1,不写文件)。全程遵守 🛡️ 边界,从以下维度推理:

  • 经历排序:同一章节内(如「工作经历」下多段工作、「项目经历」下多个项目),哪条与 JD 最相关、应前移?(顶层章节之间不得互换,见 🛡️B)
  • 技能排序:对照 JD,把相关技能/工具前移,形成技能板块改写方案(约束见 🛡️B 技能板块专属)
  • Action 补充:哪段经历的行动描述缺少 JD 强调的工作方式(如「跨团队协作」「数据驱动决策」),可在已有事实上补充?
  • Result 缺口:哪段经历缺量化指标,需插入 [请填写:xxx] 占位?
  • 隐含信息:哪段经历「显然蕴含」某 JD 关注点但未明说,可轻度补充(加 [需用户确认])?
  • 弱化项:哪段经历与 JD 相关性低,应后移或精简措辞?(只缩短,不删条目)
  • 项目内成果重排:每个有料项目,把与 JD 最相关的成果行移到成果列表最前(JD 强调小红书 → 小红书成果置顶;强调直播 → 直播成果置顶)。「不需要改」不是有效结论——有成果数据就至少有 1 处顺序或表述调整。

1.1 生成 resume.md(定制简历)

基于 1.0 结论改写主简历,全程遵守 🛡️ 边界(不再重述约束):

  1. 同章节内调整条目顺序,把与 JD 最相关的放前
  2. 按结论重写各段 Action / Result,保持事实、不增内容
  3. 技能板块按 1.0 方案重排措辞
  4. 缺量化数据处插 [请填写:<描述>];轻度补充的隐含信息处加 [需用户确认]

输出格式:完整 Markdown 简历,只改内容不改架子(架子的定义见 🛡️B)。

✅ 自检关卡(写入文件前必须执行):

  1. 核心任务的三项强制下限是否都落实了?(项目排序 / 项目内成果排序 / 技能排序+措辞)
  2. 逐项核查有实质内容的条目:最贴近 JD 的成果行是否前移?引子句/成果句是否至少有 1 处措辞贴合了 JD 关键词?弱化项是否已后移/精简?

若整份 resume.md 与原简历逐字完全相同,必须回头对照三项强制下限重做。两种例外属于正确行为:① 空壳条目原样保留;② 触发了核心任务「唯一的可以不改情形」——整份不动,但必须在 1.3 如实声明,不准编造改动。

写入 <workdir>/output/<runid>/tailored/<id>/resume.md

1.2 生成 opener.md(HR 开场白)

招聘平台 IM 第一条消息,给 HR 发的开场白。严格限制 200 字以内(每个汉字/标点符号计 1 字,英文单词按空格分割每词计 1 字,阿拉伯数字串计 1 字)。

结构:

  1. 开头:「您好!」(固定,不加其他称呼)
  2. 自我介绍(1 句):自然流畅的中文,句式参考:

- 「我有 X 年 <领域> 经验,主要负责 <核心方向>。」 - 「我在 <领域> 方向深耕 X 年,擅长 <具体能力>。」 - ⛔ 禁用句式:「我是…的求职者」「本人具备…」「可投岗」「贵司」等生硬/套话表达

  1. 点经历(1-2 句):点出一个与该 JD 最相关的具体经历,说清做了什么、有什么成果(必须是简历中真实存在的)
  2. 表达意愿(1 句):自然表达沟通意愿,如「看到这个岗位非常感兴趣,希望有机会进一步了解。」

示范(仅供格式参考,内容须替换为用户简历实际内容):

您好!我有 3 年新媒体运营经验,主要负责小红书和抖音账号的内容策划与增长。在上一份工作中主导了品牌冷启动项目,6 个月内将账号粉丝从 0 做到 20 万,爆款率稳定在 15% 以上。看到贵公司这个岗位非常感兴趣,期待有机会进一步沟通!

规则:

  • 只提简历中有的经历,不造(同 🛡️A.4)
  • 若某经历有 [请填写:xxx] 占位,开场白中不引用该经历的具体数字
  • 若开场白提到某经历且含 [需用户确认] 标注,保留提示让用户核对

写入 <workdir>/output/<runid>/tailored/<id>/opener.md

# 开场白 · <company_name> · <title>

<正文,200 字以内>

1.3 生成 changelog.md(改动列表)

逐条记录对主简历做的所有改动,每条注明原因。这是给用户的「透明度报告」。

生成前必做(基于真实 diff,不准凭记忆):先逐行对比你刚写出的 resume.md 与原简历,只记录真实存在的字面差异。严禁记录没发生的改动——例如声称「将 X 上移至第一条」,但 X 在原简历里本来就是第一条,这属于造假,绝对禁止。每写一条改动,先确认 resume.md 里确实能看到这个变化。

若 resume.md 与原简历逐字完全相同(触发核心任务「可以不改」情形),changelog 不套用下方模板,只输出:

  • 标题 # 改动列表 · 对比主简历
  • 一节 ## ℹ️ 本岗位未改动正文,写明原因(如「简历仅 1 个有料项目,本 JD 与已处理岗位要求高度一致,无差异化空间」)
  • 一节 ## 💡 建议补充(需你手动完善),给针对本 JD 的具体缺口提示

核心规则:只写实际发生的改动,没发生的节一律不写。 下方是各节写法示范,不是要全部输出的模板。没有「措辞调整」就不写那节,以此类推。输出空节标题(含标题但无条目)是错误行为。

各节写法参考(按需选用,有则写,无则整节省略含标题):

# 改动列表 · 对比主简历

## ✏️ 措辞调整
1. [段落名称]:「<原文>」→「<改后>」
   - 原因:<JD 中哪里触发了这个改动>

## 🔼 顺序调整
1. 将「<段落>」上移至「<新位置>」
   - 原因:<JD 最关注这个方向>

## ⚠️ 需用户回填
1. [段落名称] Result 段:`[请填写:<具体描述>]`
   - 原因:<简历此处缺具体数字,JD 强调数据驱动>

## 🔵 需用户确认
1. [段落名称]:「<改写内容>」[需用户确认]
   - 原因:<推断依据>

## ❌ 弱化/后移
1. 将「<段落>」后移或精简
   - 原因:<该经历与 JD 相关性低>

## 🔧 技能板块改动
1. 顺序调整:将「<条目摘要>」上移至最前
   - 原因:<JD 重点强调该技能>
2. 措辞改写:「<原文>」→「<改后>」
   - 原因:<说明>
3. 条目合并:「<条目A摘要>」+「<条目B摘要>」→「<合并后>」
   - 原因:语义高度重叠,合并后保留全部关键信息

## 💡 技能板块优化建议(需你手动完善,AI 未自动修改)

> 以下建议基于当前 JD 要求,需要你补充真实信息后更新简历,AI 无法替你填写。

**补充使用场景/工具名:**
- 「<原条目>」—— 建议补充为「<改写示范>」,对照 JD「<JD 原文关键词>」的要求

**按掌握程度重新分级:**
- 当前 <X> 条条目均为「<程度词>」,建议区分「熟练 / 熟悉 / 了解」,参考 JD 重点技能:<列出 JD 中权重最高的 2-3 个技能词>

**JD 未提及、可考虑后移的条目:**
- 「<条目摘要>」—— JD 中无相关提及,与岗位相关性较低

再次强调:上方代码块是写法示范,每个节只在该类改动实际存在时才输出,空节一律不输出。 「💡 技能板块优化建议」节同理,三类子项各自独立判断,无则省略。

写入 <workdir>/output/<runid>/tailored/<id>/changelog.md

1.4 进度报告

n++,将 <id> 加入 state.jsonstages.tailored,更新 checkpoint_at

输出:✅ <company.name>·<title> 三件套完成(<n>/<total>)

第 2 步:完成

三件套全部完成后,将 state.jsonphase 设为 "tailored"

⚠️ 完成后严禁输出任何文字。 完成数量及产物路径已写入 state.json,调用方(主 skill)自行读取,无需任何文字汇报。直接结束,不输出任何内容。