ai-used-resume
ai-used-resume
When to Use
Invoke this skill whenever the user wants to turn their AI-tool usage history into a résumé artefact. Common triggers:
- "Generate my résumé from my AI usage."
- "Render my CV in Japanese / German / Traditional Chinese / Europass."
- "Tailor my résumé for this JD."
- "Review / score my latest résumé."
- "Show my résumé score trend."
- "Which locales am I weakest in?"
Do NOT invoke when the user:
- Asks to write résumé content from scratch without AI-usage history (no signal source).
- Wants a generic CV template — this skill is opinionated about the AI-coding-era narrative.
- Asks for a profile on a platform that doesn't use Markdown/DOCX/PDF (e.g. LinkedIn scraping).
Quick Reference
| Intent | Command |
|---|---|
| Fresh pipeline | uv run vibe-resume extract && uv run vibe-resume aggregate && uv run vibe-resume enrich --locale en_US && uv run vibe-resume render -f all |
| Render single locale | uv run vibe-resume render -f md --locale ja_JP |
| All 10 locales | uv run vibe-resume render --all-locales |
| JD-tailored run | uv run vibe-resume enrich --tailor data/imports/jd.txt --locale en_US -n 1 && uv run vibe-resume render -f md --locale en_US --tailor data/imports/jd.txt |
| Persona-biased enrich | uv run vibe-resume enrich --persona tech_lead --locale en_US (keys: tech_lead / hr / executive / startup_founder / academic) |
| Multi-persona enrich in one run | uv run vibe-resume enrich --persona tech_lead,hr,executive --locale en_US or --persona all — each persona writes its own _project_groups.<persona>.json |
| Persona render | uv run vibe-resume render --persona tech_lead --locale en_US reads the persona-scoped cache and emits resume_v<NNN>_<locale>_<persona>.md |
| Compare persona output | uv run vibe-resume personas-compare -n 3 — side-by-side bullets per persona for the top-N groups (quality iteration loop) |
| Score latest | uv run vibe-resume review |
| Score with JD echo | uv run vibe-resume review --jd data/imports/jd.txt |
| Score with persona lens | uv run vibe-resume review --persona hr — appends persona-specific review tips |
| Per-locale trend | uv run vibe-resume trend --locale zh_TW |
| Locale quick map | |
|---|---|
en_US |
default, XYZ verbs, ATS flat skills |
en_EU |
Europass labelled personal-info, CEFR |
en_GB |
UK spelling, Personal statement |
zh_TW |
繁中,中英技術混排 |
zh_HK |
bilingual EN + 繁 headings |
zh_CN |
简体,大厂 ATS-friendly |
ja_JP |
DOCX = JIS Z 8303 履歴書 grid; md = 職務経歴書 |
ko_KR |
이력서 + photo expected |
de_DE |
Lebenslauf + Persönliche Daten, photo expected |
fr_FR |
Profil / Compétences / Expérience |
Procedure
-
Locate the repo. The CLI binary is
vibe-resume; check withwhich vibe-resumeoruv run vibe-resume --help. If not installed, ask the user whether to clone https://github.com/easyvibecoding/vibe-resume and runuv venv && uv pip install -e ".[dev]". -
Verify
profile.yaml.- If still the example (
Your Nameplaceholder), ask forname,email,target_role,summary. Optional:experience,education,languages,custom_sections. - For locale-specific text, use
<field>_<locale>overrides (e.g.title_zh_TW,summary_ja_JP,bullets_de_DE). Seeprofile.example.yamlfor the full list including locale-conditional personal fields (dob,gender,nationality,mil_service,photo_path,marital_status) — only rendered when the active locale'spersonal_fieldsincludes them.
- If still the example (
-
Confirm
config.yamlknobs.scan.mode—fullfor all$HOME.gitrepos,whitelistto restrict toscan.roots(use if first run is slow).privacy.blocklist— project names to exclude from extractor output.privacy.abstract_tech—trueto hide concrete tech names.render.locale— team default.render.all_locales_formats— formats per locale for--all-locales(default["md"]).
-
Run extractors → aggregate → enrich.
uv run vibe-resume extract uv run vibe-resume status # sanity-check per-source counts uv run vibe-resume aggregate # → data/cache/_project_groups.json uv run vibe-resume enrich --locale <L> # XYZ (en_*) or noun-phrase (zh/ja/ko/de/fr)- Add
--tailor data/imports/jd.txtto bias achievements toward a job description's keywords (never invents matches the raw activity doesn't support). - Add
-n Nto limit to the top-N project groups; out-of-window groups retain prior enrichment rather than being overwritten.
- Add
-
Render.
uv run vibe-resume render -f md --locale en_US uv run vibe-resume render -f all --locale ja_JP # DOCX = JIS 履歴書 grid uv run vibe-resume render --all-locales # fan out over 10 locales uv run vibe-resume render --all-locales --tailor data/imports/jd.txtLocale resolution chain (same chain applies to
enrich):- CLI
--locale profile.preferred_localeconfig.render.localeen_USfallback
- CLI
-
Review & trend.
uv run vibe-resume review --jd data/imports/jd.txt # 8-point scorecard, graded A–F uv run vibe-resume trend --locale ja_JP # ASCII sparkline across all prior runsBar is grade B / 80% before sending a draft to a real reviewer.
Pitfalls
The full catalogue of failure modes and their fixes — mixed-script
locale leaks, --all-locales format quirk, first-run extraction
slowness, CJK contact-line wrapping, the claude -p optional fallback,
and the privacy rules around profile.yaml / data/imports/ — lives
in references/troubleshooting.md.
Verification
After a full run, confirm:
# 1. Render produced the expected files
ls data/resume_history/ | tail -n 10
# 2. Last review was ≥ B grade
uv run vibe-resume review --locale <L> | tail -n 5
# 3. Trend trending up
uv run vibe-resume trend --locale <L>
For a JD-tailored run, spot-check that the output bullets surface the JD's key nouns:
grep -iE "$(awk '/[A-Z][A-Za-z]{3,}/{print $1}' data/imports/jd.txt | head -5 | paste -sd '|' -)" data/resume_history/resume_v*_<L>.md
For multi-locale batch runs, make sure there's no cross-script leak:
# ja_JP render must not contain Traditional-only Chinese (e.g. 設計, 處理, 實作)
grep -cE "設計|處理|實作|業務" data/resume_history/resume_v*_ja_JP.md # expect 0 or very low
# zh_CN must not contain Traditional-only characters (e.g. 設, 實, 業)
grep -cE "設|實|業" data/resume_history/resume_v*_zh_CN.md # expect 0
End-to-end example — "one JD, every market"
# LLM pass per locale
for loc in en_US ja_JP de_DE zh_TW; do
uv run vibe-resume enrich --tailor data/imports/jd.txt --locale "$loc" -n 3
done
# Batch render
for loc in en_US ja_JP de_DE zh_TW; do
uv run vibe-resume render -f all --locale "$loc" --tailor data/imports/jd.txt
done
# Review each and show the trend
for loc in en_US ja_JP de_DE zh_TW; do
uv run vibe-resume review --locale "$loc"
done
uv run vibe-resume trend
Strategic résumé: --company <key> --level <key>
enrich and review accept two extra axes — a named target employer
(70 bundled profiles in core/profiles/*.yaml) and a seniority bracket
(6 career-level archetypes) — stacked on top of --locale /
--persona / --tailor. Block injection order is
tailor → persona → level → company. Every apply auto-checks
last_verified_at and warns loudly if older than 90 days.
See references/strategic-resume.md for
the full axis reference, company list/show/audit/verify/
mark-verified commands, and the drop-in recipe for adding a new
employer profile.
Extending the pipeline
When the user asks to add a new extractor, locale, or persona, consult
references/extending.md for the Activity
schema contract, registration steps, and the "never invent activities"
rule.
Useful sibling commands
uv run vibe-resume status— per-source activity countsuv run vibe-resume list-versions— résumé version history from internal gituv run vibe-resume diff v001 v002— diff two versionsuv run vibe-resume completion zsh --install— shell completion so--locale <tab>expandsscripts/backup_claude_projects.sh(macOS/Linux) /scripts/backup_claude_projects.ps1(Windows) — back up~/.claude/projectsbefore Claude Code's 30-day cleanup