一键导入
jd-tailor
输入一份 JD 职位介绍,用 profile/ 信息源库把简历做成适配该 JD 的单页 PDF 专门版。用户说「按 JD 定制简历」「适配这个岗位」「生成专门版简历」「针对这个 JD 改简历」或贴出一段 JD 要求定制时使用。产出落 refs/JD/(本地永不提交),正典 src/data.tsx 零改动。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
输入一份 JD 职位介绍,用 profile/ 信息源库把简历做成适配该 JD 的单页 PDF 专门版。用户说「按 JD 定制简历」「适配这个岗位」「生成专门版简历」「针对这个 JD 改简历」或贴出一段 JD 要求定制时使用。产出落 refs/JD/(本地永不提交),正典 src/data.tsx 零改动。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | jd-tailor |
| description | 输入一份 JD 职位介绍,用 profile/ 信息源库把简历做成适配该 JD 的单页 PDF 专门版。用户说「按 JD 定制简历」「适配这个岗位」「生成专门版简历」「针对这个 JD 改简历」或贴出一段 JD 要求定制时使用。产出落 refs/JD/(本地永不提交),正典 src/data.tsx 零改动。 |
一轮七步:保鲜 → 解析 JD → 匹配选材 → 产出方案(审核点)→ 隔离 worktree 物化 → 门禁+渲染 → 收尾。
设计文档:docs/superpowers/specs/2026-07-12-jd-tailor-skill-design.md(§2 决策记录不得推翻)。
唯一硬约束:正典 main 的 src/data.tsx 全程不改——所有变体改动只发生在临时 worktree 内。适配是对现有「简历级」内容的重投影(重排/选取/强调 + 填个人优势),不是改写事实、不引入新主张或新数字。红线继承现行法(见下 §红线闸),本 skill 不新设标准。
输入:JD 文本(用户直接粘贴)或 JD 文件路径,二者都收。先确定公司名(从 JD 提取,用于目录名;提取不到则用 unknown-co)。
DATE=$(date +%F)
COMPANY=<从 JD 提取的公司名,小写 kebab;提取不到用 unknown-co>
JDDIR="refs/JD/${DATE}-${COMPANY}"
mkdir -p "$JDDIR"
node scripts/sync-lark.mjs --check; echo "sync-check exit=$?"
保鲜:退出码 10 表示飞书有新增/过期篇目 → 跟跑 node scripts/sync-lark.mjs --pull 并按受影响卡更新;lark 不可用(命令失败)→ 降级用现有快照,在 analysis.md 声明快照日期(refs/Lark/.sync-state.json 的 generated_at),不阻断。
Bash 调用之间 shell 变量不保留:记下 DATE/COMPANY/JDDIR,后续命令代入字面值。
从 JD 文本提取结构化关键词,仅提取不判断:
先读 profile/INDEX.md(JD 定制工作流规程)与 profile/skills-evidence.md(技能↔证据索引)。对每个 JD 关键词:
skills-evidence.md 找对应域,取其强度分级与证据卡指针。profile/sources/MANIFEST.md 进 refs/ 原始层深挖,引用前过脱敏红线。按 .claude/skills/jd-tailor/templates/jd-analysis.md 模板,写 ${JDDIR}/analysis.md,含:
把 analysis.md 的要点(尤其个人优势 3 条散文与红线自查结论)呈现给用户,明确请求确认。未获确认,不进 worktree、不改任何 data.tsx。 用户要改就改方案、重呈。
用户确认后,从 main 开临时 worktree。用 --detach 在 main 的 tip 建游离 HEAD——变体是一次性产物无需分支,且可避开「main 已被主工作区检出」导致 worktree add 失败(用户跑 skill 时通常正在 main):
git worktree add --detach ".worktrees/jd-${COMPANY}" main
在 worktree 内(.worktrees/jd-${COMPANY}/)改 src/data.tsx,只用 §适配词汇表允许的变换:
profile 填 summary: [<3 条已确认要点>]。不在此处生成 patch:§6 的删字回合还会继续改 data.tsx 收敛单页,此刻存的 patch 会与最终 PDF 不一致。data.tsx.patch 统一在 §6 门禁全绿、单页达成后从最终 data.tsx 生成。
worktree 是 git 检出,refs/ 已 gitignore → 不在检出内,两处需补偿:
leak-check 找不到 refs/leak-blocklist.txt 会静默降级为仅内置模式(少量模式却仍报「通过」)——必须先从主工作区拷进来,且拷贝失败要 fail-fast,绝不让降级的 leak-check 蒙混过关。profile.summary,会触发 data.test.ts 的「正典留空」断言——用 JD_VARIANT=1 跳过该单条(其余测试照常),见该测试注释。先跑门禁(set -euo pipefail + test -f 让 blocklist 缺失即中止,不进降级门禁):
cd ".worktrees/jd-${COMPANY}"
set -euo pipefail
test -f ../../refs/leak-blocklist.txt # 缺失即 fail-fast,杜绝 leak-check 降级后假通过
mkdir -p refs && cp ../../refs/leak-blocklist.txt refs/leak-blocklist.txt
npm run type-check && JD_VARIANT=1 npm run test && npm run leak-check && npm run print-check
print-check 溢出第 2 页 → 删字回合:砍最低相关 bullet 或精简个人优势,改完重跑上面整段直至 1 页;绝不缩字号、压间距。leak-check 失败 / blocklist 缺失 / worktree 建失败 → 停下报错,不改用旧产物;正典不受影响。门禁全绿、单页达成之后,再从最终 data.tsx 一并生成交付 PDF 与 patch(此顺序保证 patch 能复现交付的 PDF):
bash scripts/render-pdf.sh "<仓库绝对路径>/${JDDIR}/王景宏简历.pdf"
git diff main -- src/data.tsx > "<仓库绝对路径>/${JDDIR}/data.tsx.patch"
cd <仓库根>
git worktree remove ".worktrees/jd-${COMPANY}" --force
向用户交付:${JDDIR}/王景宏简历.pdf(单页专门版,交付文件名固定为「王景宏简历.pdf」,直接可投递)、${JDDIR}/analysis.md(审计轨)、${JDDIR}/data.tsx.patch(可复现);并列出缺口清单(JD 要但接不住的项)。
不自动提交、不自动回灌正典:变体是一次性本地产物(refs/JD/ 已 gitignore)。是否把某条改进吸收进正典由用户另行决定,走现行工作流(小改直提 main / 复杂 issue→PR→CR)。
方案生成(§3)与物化(§5)两处都过:
profile/skills-evidence.md 唯一口径)。profile/facts/numbers.md 锚点,遵「只放大数字、小计数不写数字」。npm run leak-check 必过。print-check + 目视;字数问题用删字解决。允许(对简历级内容的重投影):重排 experiences/projects/bullets 顺序;在多 bullet 里选取最相关、单页预算内略去低相关;重排/强调六行技能栏;填个人优势 3 条(每条回指简历级证据)。
禁止:改写事实措辞、引入新主张/新数字、动 tagline(全栈开发 × AI 应用 锁死)、把「可聊级/仅了解」升上纸面、写禁用词。