Resume Optimization(简历优化 · 环节二)
Overview
Stage two of the three-stage resume pipeline (diagnosis → optimization → report).
The deliverables are the final resume in three formats: resume.html + resume.pdf
+ resume.docx.
Entry Modes & Artifact Handoff
Default output directory is ./resume-output/; a path the user explicitly names takes
priority. Artifact lookup order: user-named path → ./resume-output/ → ask the user.
- Entry A — continuing after diagnosis. Read
./resume-output/diagnosis.jsonand
build the rewrite work list from itsissues/risks, itsjd_matchitems marked
missing/partial, itsfirst_scan.missingfacts, itstimeline.concerns, and the
user's answers to itsgapsquestions; calibrate evidence depth and wording against
itsseniority; read./resume-output/before.*for source content. Recover the
gapsanswers from./resume-output/gap-answers.md(cross-session persistence
contract — a numbered markdown list with each question and its answer or(待补充));
if the file is absent or incomplete, fall back to thegapslist indiagnosis.json
and re-ask any question whose answer is still missing. - Entry B — direct entry, existing resume. If the user explicitly skips
diagnosis, proceed, but first save the original resume as
./resume-output/before.<ext>so stage three can compare. If the user has not
said skip and nodiagnosis.*is found, suggest once: "建议先用 resume-diagnosis
做环节一诊断,要先诊断吗?" — if declined, proceed and do not ask again. - Entry C — from scratch, no existing resume. No
before.*; stage three will use
report"mode": "after_only".
Write resume.html / resume.pdf / resume.docx. Never overwrite an existing
before.*.
Quick Routing
- A generic "优化简历/改简历" request on an existing resume, without an explicit
diagnosis skip → start withresume-diagnosis. - User wants only a before/after comparison report → use
resume-report. - If the target role is missing and cannot be inferred, ask one concise question.
Runtime Compatibility
- Use only relative paths from this skill folder when loading references, templates, or scripts.
- Treat
agents/openai.yamlas optional Codex/OpenAI UI metadata; Claude Code can ignore it. - Avoid relying on product-specific tools unless the user explicitly asks for that runtime's integration.
- Prefer shell commands that work in both Claude Code and Codex:
python3, local scripts, and local file paths.
Required Workflow
- Determine the entry mode and locate (or create) the artifacts above.
- Build an input inventory; apply the Minimum Input Standard in
references/hr-scorecard.md. - Read
references/hr-scorecard.mdandreferences/rewrite-guide.md. - When a target role is named, a JD is provided, or the role can be inferred, read
references/role-playbooks.md. - Read
references/geo-html-resume.mdbefore generating HTML or optimizing for ATS/GEO. - If
diagnosis.jsonexists, convert eachissue/riskinto a concrete edit and land it. Extend the work list with eachjd_matchitem markedmissing/partialand with the user's answers to the diagnosisgapsquestions: read./resume-output/gap-answers.mdto recover answers across sessions (fall back todiagnosis.json'sgapsand re-ask any question still unanswered). Cover JD gaps only with real evidence from the user's background (anything still uncovered goes into the delivery summary's gap list), and write each answered gap into the relevant section. Surface eachfirst_scan.missingfact in the top third (headline / summary / contact block) when the source material or a gap answer supplies it, and resolve eachtimeline.concernsentry not already covered by ariskwith factual context — never invented history. Calibrate evidence depth and wording against the diagnosedseniority(Seniority Calibration inreferences/hr-scorecard.md). - Rewrite each section with evidence (action + scope + method + impact) and optimize keywords naturally (no stuffing).
- Generate
./resume-output/resume.htmlfromassets/resume-template.html— replace sample data, meta tags, JSON-LD, section headings, and all visible content. - Run
python3 scripts/check_resume_html.py resume.htmland fix every failure before claiming the artifact is ready. - Export by default:
python3 scripts/export_resume_pdf.py resume.html resume.pdfandpython3 scripts/export_resume_docx.py resume.html resume.docx, then verify both exist. If no Chrome/Chromium is available, deliver HTML + DOCX, say so, and include the PDF export command. Re-export loop (hard rule): any subsequent edit toresume.html— whether driven by user feedback, a missedcheck_resume_html.pyfailure, or a late polish pass — MUST be followed by re-running both export commands before the next delivery. Never hand the user HTML plus a stale PDF/DOCX. Converge all HTML edits first, then re-export once, rather than re-exporting after every single-line change; but the moment you deliver or claim "done", all three files must reflect the same content. - Stage gate. After delivering the three resume formats, ask the user: 「优化完成。是否进入环节三「复盘」,生成优化前后对比报告?」 Do not generate the report until the user confirms. On confirmation, continue with the
resume-reportskill and tell it./resume-output/holdsbefore.*,diagnosis.json, andresume.*.- Pre-authorization: if the user asked up front to complete all three stages at once, treat that as confirmation; at the boundary still report the artifacts and state you are proceeding to stage three.
HR Writing Rules
- Lead with fit for the target role, not biography.
- Prefer strong nouns and verbs over adjectives: "reduced review time by 30%" beats "excellent communication skills".
- Use real numbers when provided; never invent metrics. If a metric is missing, ask, estimate only when explicitly authorized, or use scale/proxy facts.
- Convert duties into outcomes. Preserve a short responsibility phrase only when the role context would otherwise be unclear.
- Remove weak claims: "familiar with", "responsible for", "participated in", "good at", "hardworking", and unsupported self-evaluations.
- Keep one resume optimized for one target. If the user has multiple targets, create variants.
HTML Artifact Rules
- Keep the resume as semantic HTML, not an image or canvas.
- Preserve mobile readability: no fixed-width content wider than the viewport, no tiny text, no horizontal scroll.
- Preserve PDF export quality: include
@page,@media print, page-break controls, and no screen-only critical content. - Include GEO signals: meaningful
<title>, meta description, meta keywords when useful, schema.orgPersonJSON-LD, machine-readable contact details, and target-role keywords in natural visible text. - Avoid hidden keyword blocks, white-on-white text, fake roles, fake skills, or unverifiable claims.
- Three-format sync:
resume.pdfandresume.docxare derived fromresume.html, not siblings. After step 10, any HTML edit must be followed by re-running both export commands before the next delivery — never ship a newer HTML with an older PDF/DOCX.
Output Shape
- The resume in three formats:
resume.html+resume.pdf+resume.docx(HTML + DOCX if PDF export is impossible). - A short summary: role-specific keyword/evidence gaps, assumptions and missing facts, and the
check_resume_html.pyresult. - Every artifact path.
- The stage-gate question (unless pre-authorized).