resume-skills 是一套帮你写好中文简历的 AI skill 套件,按实际业务拆成三个独立环节:
- 简历诊断(resume-diagnosis):审阅现有简历,产出招聘视角的诊断报告页(筛选结论、六维评分、首屏 6 秒扫描、时间线、JD 对照、主要问题、风险分级、客观信号)。
- 简历优化(resume-optimization):按诊断结果改写,产出最终简历(HTML + PDF + DOCX)。
- 复盘报告(resume-report):生成优化前后对比报告页,直观展示评分变化与主要修改点。
每个环节结束都会询问是否进入下一环节;你也可以单环节使用。它既面向 GEO/AI 搜索与招聘筛选,又能适配不同专业、不同岗位方向的简历写作。
你可以把它交给 Claude Code、Codex 或兼容 skill 的 AI 助手使用,让 AI 从 HR、ATS、招聘 Agent 和生成式搜索的角度,帮你诊断、改写、生成一份更适合投递和被发现的简历。
它适合不懂简历排版、不确定怎么写项目经历、担心简历过不了 HR 或 AI 初筛的人使用。
- GEO 友好:让简历更容易被 AI 搜索、招聘 Agent、智能问答和简历筛选系统正确理解。
- 多专业适配:不只适合程序员,也适合产品、运营、市场、设计、财会、金融、法学、教育、医学、土木、机械、新媒体、行政等方向。
- 岗位导向:同一段经历会按目标岗位重写,不同专业背景也能转成招聘方看得懂的岗位语言。
- HR 可读:减少空话和模板化表达,让 HR 更快看清你的定位、能力和证据。
- HTML/PDF 友好:保留可复制、可读取的文本内容,兼顾手机阅读、电脑阅读和 PDF 投递。
- 第一次写简历,不知道应该放什么、不该放什么。
- 已有简历,但投递效果一般,想让 AI 帮你从 HR 视角检查问题。
- 来自不同专业,想把课程、实习、项目、竞赛、科研或作品集转成简历语言。
- 准备转岗、转行、找实习、找全职,想把经历改写成更匹配目标岗位的版本。
- 手里有岗位 JD,想让简历更贴近招聘要求和常见筛选关键词。
- 希望简历对 AI 搜索、招聘 Agent、ATS 和 GEO 更友好。
- 想生成一份手机、电脑和 PDF 都能正常阅读的 HTML 简历。
- 做个人求职材料整理,希望先有一个可信、清晰、可继续打磨的版本。
本项目以 AGPL-3.0 开源,可自由使用(含商用),详见 开源协议。
本套件包含三个独立 skill,分别对应三个环节,需要分别安装(每个 skill 是 skills/ 下一个自包含目录)。
Claude Code 插件一键安装:本仓库根目录提供
.claude-plugin/plugin.json,可在 Claude Code 中以插件形式一次性安装三个 skill,免去下面的三条 symlink。
三个 skill 已上架 SkillHub(命名空间 @user_6733bad6),全程不必访问 GitHub。先装一次它的 CLI:
curl -fsSL https://skillhub.cn/install/install.sh | bash -s -- --cli-only
export PATH="$HOME/.local/bin:$PATH" # 建议同时写进 ~/.zshrc然后装齐三个,并把每个拉平到宿主能扫到的位置。SKILLS 换成你宿主的 skills 目录(下面以 Claude Code 用户级为例;Codex 换 ${CODEX_HOME:-$HOME/.codex}/skills):
SKILLS=~/.claude/skills
mkdir -p "$SKILLS"
skillhub install @user_6733bad6/resume-diagnosis --dir "$SKILLS"
skillhub install @user_6733bad6/resume-optimization-suite --dir "$SKILLS"
skillhub install @user_6733bad6/resume-report --dir "$SKILLS"
ln -sfn "$SKILLS/@user_6733bad6/resume-diagnosis" "$SKILLS/resume-diagnosis"
ln -sfn "$SKILLS/@user_6733bad6/resume-optimization-suite" "$SKILLS/resume-optimization"
ln -sfn "$SKILLS/@user_6733bad6/resume-report" "$SKILLS/resume-report"为什么要带
@user_6733bad6/,还要补三条软链。resume-diagnosis这个 slug 在 SkillHub 上另有别人的同名 skill,不带命名空间的skillhub install resume-diagnosis会装到别人的包;而带命名空间安装时 CLI 会多套一层@user_6733bad6/目录,宿主只扫skills/*/SKILL.md这一层,不拉平就一个都发现不了,且没有任何报错。三条ln -sfn就是把它们拉平到宿主能扫到的位置(如果$SKILLS/<skill 名>已经是一个真实目录,先删掉再执行)。优化环节的 slug 是
resume-optimization-suite,skill 名仍是resume-optimization。 平台上resume-optimization已被占用,所以只有这一个 slug 带-suite后缀;软链名用 skill 名,宿主里的命令名不受影响。三个要装进同一个
--dir。 它们靠约定的产物目录./resume-output/交接,每个环节结束时会按名字把你交给下一个 skill;少装一个,流水线就在那一环断掉。更新:重新执行上面三条
skillhub install,各加--force(不加会报Target exists),软链不用重建。和下面 clone + symlink 的方式选一条就行,别对同一个宿主混用——装的是同一套 skill,混用会装出两份并造成触发竞争。
上架的是与本仓库 skills/ 逐字一致的同一份内容(平台会额外塞一个记录版本号的 _meta.json)。当前上架版本 v2.1.0。装完同样要新开一个会话。
如果你已经把这三个目录安装到 Claude Code 或 Codex 的 skills 目录,可以跳过这一步。下面命令里的 REPO 指本仓库的本地路径,例如 ~/projects/resume-skills。
Claude Code(三条 symlink):
REPO=~/projects/resume-skills
mkdir -p ~/.claude/skills
for s in resume-diagnosis resume-optimization resume-report; do
ln -sf "$REPO/skills/$s" "$HOME/.claude/skills/$s"
doneCodex:
REPO=~/projects/resume-skills
CODEX_SKILLS="${CODEX_HOME:-$HOME/.codex}/skills"
mkdir -p "$CODEX_SKILLS"
for s in resume-diagnosis resume-optimization resume-report; do
ln -sf "$REPO/skills/$s" "$CODEX_SKILLS/$s"
done如果你的 Codex 环境使用 ~/.agents/skills,把上面 $CODEX_SKILLS 换成 ~/.agents/skills 即可。
从旧版迁移:如果你之前安装过单体
resume-skill(整仓 symlink 到~/.claude/skills/resume-skill),请先删除它,否则它与新的三个 skill 同时存在会造成触发竞争:rm -f ~/.claude/skills/resume-skill # 旧版整仓 symlink
你不需要先整理得很完美。能提供多少就提供多少,AI 会根据缺失信息继续追问。
建议准备:
- 现有简历,或一段原始经历描述。
- 目标岗位,例如“产品运营”“数据分析师”“Java 后端开发”。
- 目标岗位 JD,越具体越好。
- 工作、实习、项目、教育、证书、技能、作品链接等材料。
- 你希望投递的城市、行业、公司类型或薪资方向。
下面示例用 $skill-name 显式指定环节。如果不指定,AI 会根据你的请求自动路由到对应环节(有现有简历的「优化简历」默认从环节一诊断开始)。
完整三环节(诊断 → 优化 → 复盘):
帮我优化这份简历(附简历)。三个环节一次做完:先诊断、再改写、最后出前后对比报告。
只要环节一·诊断:
用 $resume-diagnosis 从 HR 角度审阅我的简历,指出最影响投递结果的问题并给出诊断报告。
直接进环节二·优化(跳过诊断):
用 $resume-optimization 直接帮我改写这份简历,不用先诊断,目标岗位是产品运营,并导出 PDF 和 Word。
从零生成简历(环节二,无诊断):
用 $resume-optimization 根据我的经历新建一份适合数据分析岗位的中文简历。
只要环节三·复盘报告:
用 $resume-report 给我做这份简历优化前后的对比报告。
按 JD 优化:
用 $resume-optimization 对照下面这份岗位 JD,帮我优化简历,让内容更适合 HR 和 AI 初筛。
三个环节各司其职,可以单独用,也可以串成一条流水线:
- 环节一·简历诊断(resume-diagnosis):找出定位不清、经历空泛、关键词不足、表达不可信等问题,生成一份独立的诊断报告页(HTML),先给出「建议投递 / 边缘状态 / 暂不建议投递」的筛选结论,再展开六维评分、首屏 6 秒扫描、时间线概览、目标岗位(JD)逐条对照、带原文批注的主要问题与修复建议、分级的 HR 风险提示和脚本实测的客观信号。诊断分是后续复盘报告的既定基线。
- 环节二·简历优化(resume-optimization):承接诊断的问题清单逐条改写,或直接改写/从零生成。把“参与、熟悉”这类模糊表达和没有量化佐证的“负责”,改成更像真实工作成果的表达;围绕目标岗位或 JD 调整标题、摘要、经历重点和技能关键词;用内置模板生成 HTML 简历并导出 PDF 和 Word;做内容质检,避免占位内容、隐藏关键词和明显弱表达。
- 环节三·复盘报告(resume-report):生成一份独立的 HTML 报告页,直观展示 6 个维度优化前后的评分变化、主要修改点和脚本实测的客观信号;改写前分数与诊断页一致(有诊断 JSON 时由脚本强制校验)。
通用能力:多专业适配(产品、运营、市场、设计、财会、金融、法学、教育、医学、土木、机械、新媒体、行政等)、GEO/ATS/AI 筛选友好(保留可读取文本、关键词自然出现、不堆砌不隐藏)、HR 可读、HTML/PDF/Word 三格式。
每个环节结束会询问「是否进入下一环节」;如果你一开始就说「三个环节一次做完」,视为已确认,环节交界处仍会汇报产物并声明进入下一环节。
这套 skill 不是简单地把文字润色得更好看,而是按招聘筛选的过程分三步处理简历:
- 诊断:判断目标岗位和当前材料里最有价值的证据,从 HR 视角检查定位是否清楚、经历是否可信、成果是否具体、风险点是否明显,生成改写前的诊断报告页(客观信号由脚本实测,分数由 AI 按六维量表判断)。
- 优化:按目标岗位重写内容,突出更相关的经历、补充关键词但不夸大造假;补齐 GEO/AI 需要的标题、摘要、结构化信息和可读取文本;用内置模板生成可阅读、可复制、可被筛选系统理解的 HTML 简历,并导出 PDF 和 Word;做基础质检。
- 复盘:测量优化前后的客观信号,按六维量表判断变化,生成评分对比报告页;所有展示数字由脚本重新计算,AI 不手写分数。
三个环节通过约定的产物目录(默认 ./resume-output/,存放 before.*、diagnosis.json、resume.*、report.*)衔接,diagnosis.json 把诊断分作为基线传给复盘环节。
简单说,它的目标是让简历同时服务三类读者:
- HR:快速看懂你适合什么岗位。
- 面试官:看到真实经历和可追问的证据。
- ATS/招聘 Agent/AI 搜索:能正确读取你的信息、关键词、专业背景和经历结构。
- 一份简历优先服务一个目标岗位。不同岗位最好生成不同版本。
- 不要让 AI 编造公司、学校、职级、证书、项目或数字。
- 如果没有准确数据,可以先写规模、频率、对象、时长、协作人数等事实。
- 如果 AI 问你补充信息,优先补“结果、数据、职责边界、项目背景”。
- 最终简历里的事实需要你自己确认,尤其是时间、公司、学历、证书和联系方式。
本项目采用 GNU Affero 通用公共许可证第 3 版(AGPL-3.0-or-later),是 OSI 认可的开源协议:
- 个人学习、个人求职、自用修改、商业使用:均免费,无需额外授权。
- 你可以自由使用、修改和分发本项目。
- copyleft 要求:如果你修改本项目并分发,或通过网络(SaaS、网站、平台等)向用户提供修改版服务,必须在相同的 AGPL-3.0 条款下向使用者公开你的修改源码(AGPL 第 13 条)。
- 不得移除版权声明,也不得将衍生版重新授权为更宽松的协议。
完整条款见 LICENSE.md。
普通使用者不需要阅读本节。只有在你要维护模板、脚本或测试时才需要这些命令。
根目录是唯一开发正本;skills/ 下是按 manifest 同步的分发副本(随仓库提交,每个目录是一个自包含 skill)。
skills/resume-diagnosis/、skills/resume-optimization/、skills/resume-report/:三个 skill,各含自己的SKILL.md(就地撰写)+ 同步的scripts/assets/references。SKILL.md的 frontmatter 同时承载 SkillHub 发布元数据(slug/displayName/version/summary/license/homepage),规则见下文「发布到 SkillHub」。references/:HR 评分量表(hr-scorecard.md)、诊断指南(diagnosis-guide.md)、改写指南(rewrite-guide.md)、复盘指南(report-guide.md)、岗位画像(role-playbooks.md)、GEO/HTML 参考(geo-html-resume.md)。assets/:三个 HTML 模板(简历、诊断页、复盘报告页)。scripts/:HTML 质检(check_resume_html.py)、PDF/Word 导出、评分与报告渲染(score_resume.py)、skill 同步(sync_skills.py)。tests/:脚本测试与 skill 包守护测试。.claude-plugin/plugin.json:Claude Code 插件清单,一键安装三个 skill。
改任何根目录下的脚本、模板或 references 后,必须运行同步把改动镜像到 skills/ 下三个包。永远只改正本,不要直接改 skills/ 下的副本(CI 会拦截漂移)。
python3 scripts/sync_skills.py # 把根目录正本镜像到 skills/ 各包
python3 scripts/sync_skills.py --check # 校验副本与正本一致、无孤儿文件(CI 运行此项)SkillHub 只从 SKILL.md frontmatter 读元数据,一次只发一个 skill 目录。tests/test_skill_packages.py 守着四条规矩:slug 钉在已发布的值上(resume-diagnosis / resume-optimization-suite / resume-report,已发布的 slug 不可改;新 skill 沿用 slug = 目录名,除非平台报「已被占用」);displayName 以「简历诊断优化」开头且这几个字连续不被分隔符打断(平台检索只认 slug 与 displayName 的整串子串,统一前缀才能一次搜到三个);version 与 .claude-plugin/plugin.json 一致(发版时四处一起升:plugin.json + 三个 SKILL.md);frontmatter 字段不出白名单。description 同时承担宿主触发与平台卡片展示两个职责,保持中文、首句说清这个 skill 是什么。
python3 -m unittest tests.test_skill_packages # frontmatter 守卫
for s in resume-diagnosis resume-optimization resume-report; do
skillhub publish "skills/$s" --dry-run # 本地预检:只校验元数据与打包,不发请求
done
for s in resume-diagnosis resume-optimization resume-report; do
skillhub publish "skills/$s" --changelog "本次改动一句话" # 正式发布,需已 skillhub login
done限频约每分钟 3 次(报 429 隔 80 秒重试),审核异步逐个放行。发布依赖浏览器里完成的实名认证与 API Token,不进 CI。
检查内置模板:
python3 scripts/check_resume_html.py assets/resume-template.html --allow-placeholders检查正式用户简历:
python3 scripts/check_resume_html.py path/to/resume.html导出 PDF / Word:
python3 scripts/export_resume_pdf.py path/to/resume.html path/to/resume.pdf
python3 scripts/export_resume_docx.py path/to/resume.html path/to/resume.docx生成诊断页(先看客观信号,再用诊断 JSON 渲染):
python3 scripts/score_resume.py measure before.txt
python3 scripts/score_resume.py diagnose diagnosis.json --resume before.txt -o diagnosis.html生成复盘报告(有诊断 JSON 时传 --diagnosis 强制校验 before 分一致):
python3 scripts/score_resume.py measure after.html --before before.txt
python3 scripts/score_resume.py render report.json --after after.html --before before.txt -o report.html --diagnosis diagnosis.json运行测试:
python3 -m unittest