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 with which vibe-resume or uv run vibe-resume --help. If not installed, ask the user whether to clone https://github.com/easyvibecoding/vibe-resume and run uv venv && uv pip install -e ".[dev]".
Verify profile.yaml.
- If still the example (
Your Name placeholder), ask for name, 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). See profile.example.yaml for the full list including locale-conditional personal fields (dob, gender, nationality, mil_service, photo_path, marital_status) — only rendered when the active locale's personal_fields includes them.
Confirm config.yaml knobs.
scan.mode — full for all $HOME .git repos, whitelist to restrict to scan.roots (use if first run is slow).
privacy.blocklist — project names to exclude from extractor output.
privacy.abstract_tech — true to 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.txt to bias achievements toward a job description's keywords (never invents matches the raw activity doesn't support).
- Add
-n N to limit to the top-N project groups; out-of-window groups retain prior enrichment rather than being overwritten.
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.txt
Locale resolution chain (same chain applies to enrich):
- CLI
--locale
profile.preferred_locale
config.render.locale
en_US fallback
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 runs
Bar 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 counts
uv run vibe-resume list-versions — résumé version history from internal git
uv run vibe-resume diff v001 v002 — diff two versions
uv run vibe-resume completion zsh --install — shell completion so --locale <tab> expands
scripts/backup_claude_projects.sh (macOS/Linux) / scripts/backup_claude_projects.ps1 (Windows) — back up ~/.claude/projects before Claude Code's 30-day cleanup
Source: easyvibecoding/vibe-resume — distributed by TomeVault.
1---2name: ai-used-resume3description: Generate a versioned, reviewer-scored résumé from the user's AI-coding and git history — extracts from Claude Code, Cursor, Copilot, Cline, Continue, Aider, Windsurf, Zed AI, Claude Desktop, ChatGPT/Claude.ai/Gemini/Grok/Perplexity/Mistral/Poe cloud exports, ComfyUI, Midjourney, Suno, ElevenLabs, and git commits. Renders to Markdown / DOCX / PDF across 10 locales (en_US, en_EU, en_GB, zh_TW, zh_HK, zh_CN, ja_JP, ko_KR, de_DE, fr_FR) with culture-specific layouts (JIS Z 8303 履歴書 grid, Europass, Lebenslauf, bilingual HK), optional JD-tailored bullet rewriting, and an 8-point reviewer audit with score trend. Use when the user asks to "generate my résumé", "render my résumé in Japanese", "tailor my CV for this job description", "score my résumé", or "show my résumé trend". Use when this capability is needed.4---56# ai-used-resume78## When to Use910Invoke this skill whenever the user wants to **turn their AI-tool usage history into a résumé artefact**. Common triggers:1112- "Generate my résumé from my AI usage."13- "Render my CV in Japanese / German / Traditional Chinese / Europass."14- "Tailor my résumé for this JD."15- "Review / score my latest résumé."16- "Show my résumé score trend."17- "Which locales am I weakest in?"1819**Do NOT** invoke when the user:20- Asks to *write* résumé content from scratch without AI-usage history (no signal source).21- Wants a generic CV template — this skill is opinionated about the AI-coding-era narrative.22- Asks for a profile on a platform that doesn't use Markdown/DOCX/PDF (e.g. LinkedIn scraping).2324## Quick Reference2526| Intent | Command |27|---|---|28| 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` |29| Render single locale | `uv run vibe-resume render -f md --locale ja_JP` |30| All 10 locales | `uv run vibe-resume render --all-locales` |31| 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` |32| Persona-biased enrich | `uv run vibe-resume enrich --persona tech_lead --locale en_US` (keys: `tech_lead` / `hr` / `executive` / `startup_founder` / `academic`) |33| 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` |34| 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` |35| 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) |36| Score latest | `uv run vibe-resume review` |37| Score with JD echo | `uv run vibe-resume review --jd data/imports/jd.txt` |38| Score with persona lens | `uv run vibe-resume review --persona hr` — appends persona-specific review tips |39| Per-locale trend | `uv run vibe-resume trend --locale zh_TW` |4041| Locale quick map | |42|---|---|43| `en_US` | default, XYZ verbs, ATS flat skills |44| `en_EU` | Europass labelled personal-info, CEFR |45| `en_GB` | UK spelling, Personal statement |46| `zh_TW` | 繁中,中英技術混排 |47| `zh_HK` | **bilingual EN + 繁** headings |48| `zh_CN` | 简体,大厂 ATS-friendly |49| `ja_JP` | **DOCX = JIS Z 8303 履歴書 grid**; md = 職務経歴書 |50| `ko_KR` | 이력서 + photo expected |51| `de_DE` | Lebenslauf + Persönliche Daten, photo expected |52| `fr_FR` | Profil / Compétences / Expérience |5354## Procedure55561. **Locate the repo.** The CLI binary is `vibe-resume`; check with `which vibe-resume` or `uv run vibe-resume --help`. If not installed, ask the user whether to clone https://github.com/easyvibecoding/vibe-resume and run `uv venv && uv pip install -e ".[dev]"`.57582. **Verify `profile.yaml`.**59 - If still the example (`Your Name` placeholder), ask for `name`, `email`, `target_role`, `summary`. Optional: `experience`, `education`, `languages`, `custom_sections`.60 - For locale-specific text, use `<field>_<locale>` overrides (e.g. `title_zh_TW`, `summary_ja_JP`, `bullets_de_DE`). See `profile.example.yaml` for the full list including locale-conditional personal fields (`dob`, `gender`, `nationality`, `mil_service`, `photo_path`, `marital_status`) — only rendered when the active locale's `personal_fields` includes them.61623. **Confirm `config.yaml` knobs.**63 - `scan.mode` — `full` for all `$HOME` `.git` repos, `whitelist` to restrict to `scan.roots` (use if first run is slow).64 - `privacy.blocklist` — project names to exclude from extractor output.65 - `privacy.abstract_tech` — `true` to hide concrete tech names.66 - `render.locale` — team default.67 - `render.all_locales_formats` — formats per locale for `--all-locales` (default `["md"]`).68694. **Run extractors → aggregate → enrich.**70 ```bash71 uv run vibe-resume extract72 uv run vibe-resume status # sanity-check per-source counts73 uv run vibe-resume aggregate # → data/cache/_project_groups.json74 uv run vibe-resume enrich --locale <L> # XYZ (en_*) or noun-phrase (zh/ja/ko/de/fr)75 ```76 - Add `--tailor data/imports/jd.txt` to bias achievements toward a job description's keywords (never invents matches the raw activity doesn't support).77 - Add `-n N` to limit to the top-N project groups; out-of-window groups retain prior enrichment rather than being overwritten.78795. **Render.**80 ```bash81 uv run vibe-resume render -f md --locale en_US82 uv run vibe-resume render -f all --locale ja_JP # DOCX = JIS 履歴書 grid83 uv run vibe-resume render --all-locales # fan out over 10 locales84 uv run vibe-resume render --all-locales --tailor data/imports/jd.txt85 ```8687 Locale resolution chain (same chain applies to `enrich`):88 1. CLI `--locale`89 2. `profile.preferred_locale`90 3. `config.render.locale`91 4. `en_US` fallback92936. **Review & trend.**94 ```bash95 uv run vibe-resume review --jd data/imports/jd.txt # 8-point scorecard, graded A–F96 uv run vibe-resume trend --locale ja_JP # ASCII sparkline across all prior runs97 ```9899 Bar is grade **B / 80%** before sending a draft to a real reviewer.100101## Pitfalls102103The full catalogue of failure modes and their fixes — mixed-script104locale leaks, `--all-locales` format quirk, first-run extraction105slowness, CJK contact-line wrapping, the `claude -p` optional fallback,106and the privacy rules around `profile.yaml` / `data/imports/` — lives107in [references/troubleshooting.md](references/troubleshooting.md).108109## Verification110111After a full run, confirm:112113```bash114# 1. Render produced the expected files115ls data/resume_history/ | tail -n 10116117# 2. Last review was ≥ B grade118uv run vibe-resume review --locale <L> | tail -n 5119120# 3. Trend trending up121uv run vibe-resume trend --locale <L>122```123124For a JD-tailored run, spot-check that the output bullets surface the JD's key nouns:125126```bash127grep -iE "$(awk '/[A-Z][A-Za-z]{3,}/{print $1}' data/imports/jd.txt | head -5 | paste -sd '|' -)" data/resume_history/resume_v*_<L>.md128```129130For multi-locale batch runs, make sure there's no cross-script leak:131132```bash133# ja_JP render must not contain Traditional-only Chinese (e.g. 設計, 處理, 實作)134grep -cE "設計|處理|實作|業務" data/resume_history/resume_v*_ja_JP.md # expect 0 or very low135# zh_CN must not contain Traditional-only characters (e.g. 設, 實, 業)136grep -cE "設|實|業" data/resume_history/resume_v*_zh_CN.md # expect 0137```138139## End-to-end example — "one JD, every market"140141```bash142# LLM pass per locale143for loc in en_US ja_JP de_DE zh_TW; do144 uv run vibe-resume enrich --tailor data/imports/jd.txt --locale "$loc" -n 3145done146147# Batch render148for loc in en_US ja_JP de_DE zh_TW; do149 uv run vibe-resume render -f all --locale "$loc" --tailor data/imports/jd.txt150done151152# Review each and show the trend153for loc in en_US ja_JP de_DE zh_TW; do154 uv run vibe-resume review --locale "$loc"155done156uv run vibe-resume trend157```158159## Strategic résumé: `--company <key> --level <key>`160161`enrich` and `review` accept two extra axes — a named target employer162(70 bundled profiles in `core/profiles/*.yaml`) and a seniority bracket163(6 career-level archetypes) — stacked on top of `--locale` /164`--persona` / `--tailor`. Block injection order is165`tailor → persona → level → company`. Every apply auto-checks166`last_verified_at` and warns loudly if older than 90 days.167168See [references/strategic-resume.md](references/strategic-resume.md) for169the full axis reference, `company list`/`show`/`audit`/`verify`/170`mark-verified` commands, and the drop-in recipe for adding a new171employer profile.172173## Extending the pipeline174175When the user asks to add a new extractor, locale, or persona, consult176[references/extending.md](references/extending.md) for the `Activity`177schema contract, registration steps, and the "never invent activities"178rule.179180## Useful sibling commands181182- `uv run vibe-resume status` — per-source activity counts183- `uv run vibe-resume list-versions` — résumé version history from internal git184- `uv run vibe-resume diff v001 v002` — diff two versions185- `uv run vibe-resume completion zsh --install` — shell completion so `--locale <tab>` expands186- `scripts/backup_claude_projects.sh` (macOS/Linux) / `scripts/backup_claude_projects.ps1` (Windows) — back up `~/.claude/projects` before Claude Code's 30-day cleanup187188---189> Source: [easyvibecoding/vibe-resume](https://github.com/easyvibecoding/vibe-resume) — distributed by [TomeVault](https://tomevault.io).190<!-- tomevault:4.0:skill_md:2026-05-23 -->