$npx -y skills add deusyu/claude-resume --skill cvAI-powered resume system. Manages structured experience data and generates tailored LaTeX resumes for different job targets. Use when user says 'cv', 'generate resume', 'make resume', 'init resume', 'add experience', '简历', '生成简历', '初始化简历', or '添加经历'.
| 1 | # Resume — One Source, Many Tailored Resumes |
| 2 | |
| 3 | A complete resume management system: structured experience data → AI-tailored LaTeX → PDF. |
| 4 | |
| 5 | ``` |
| 6 | experiences/ → /cv generate → resume.tex → make en → output/Name-Title.pdf |
| 7 | (素材) (AI 定制化) (LaTeX源) (编译) (输出) |
| 8 | ``` |
| 9 | |
| 10 | ## Subcommand Routing |
| 11 | |
| 12 | Parse `$ARGUMENTS` to determine which workflow to run: |
| 13 | |
| 14 | - `init [text]` → **Init Workflow** |
| 15 | - `generate [job title or JD file]` or `gen [...]` → **Generate Workflow** |
| 16 | - `add [description]` → **Add Experience Workflow** |
| 17 | - Empty or unrecognized → Show available subcommands and ask user what they want to do |
| 18 | |
| 19 | --- |
| 20 | |
| 21 | ## Prerequisites Check |
| 22 | |
| 23 | Before any workflow, verify the environment: |
| 24 | |
| 25 | 1. Check if `resume.cls` exists in the current working directory. If not, copy from `${CLAUDE_SKILL_DIR}/assets/resume.cls` |
| 26 | 2. Check if `Makefile` exists. If not, copy from `${CLAUDE_SKILL_DIR}/assets/Makefile` |
| 27 | 3. Create directories if missing: `experiences/work/`, `jobs/`, `output/`, `.history/` |
| 28 | 4. Check if `xelatex` is available: `which xelatex`. If not, warn the user: "XeLaTeX is required. Install with: brew install --cask mactex" |
| 29 | |
| 30 | --- |
| 31 | |
| 32 | ## Init Workflow (`/cv init [text]`) |
| 33 | |
| 34 | Initialize the experience data library from scratch. |
| 35 | |
| 36 | ### Mode Detection |
| 37 | |
| 38 | Based on `$ARGUMENTS` (after stripping "init"): |
| 39 | |
| 40 | 1. **User pasted large text** (resume, work history, LinkedIn export) → **Import Mode** |
| 41 | 2. **Empty or short description** → **Q&A Mode** |
| 42 | 3. **File path provided** (PDF/Markdown) → Read file, then **Import Mode** |
| 43 | |
| 44 | ### Import Mode |
| 45 | |
| 46 | 1. **Parse** the provided content, extracting: personal info, education, work history (company, period, department, role, projects, metrics), personal projects, skills, honors |
| 47 | 2. **Confirm** with user — show structured result, ask about missing info or inaccurate metrics |
| 48 | 3. **Generate files** into `experiences/`: |
| 49 | - `profile.md` — personal info + education |
| 50 | - `work/<company>.md` — one file per company |
| 51 | - `projects.md` — personal projects |
| 52 | - `skills.md` — skill inventory |
| 53 | - `honors.md` — honors + quantified metrics |
| 54 | |
| 55 | ### Q&A Mode |
| 56 | |
| 57 | Walk through one question at a time. **Never ask multiple questions at once.** |
| 58 | |
| 59 | 1. **Basic info** → name, email, phone, wechat (optional), blog/github (optional) → write `experiences/profile.md` |
| 60 | 2. **Education** → school, degree, major, period, highlights → append to `experiences/profile.md` |
| 61 | 3. **Work history** (loop) → company, department, role, period, projects, metrics, tech stack → write `experiences/work/<company>.md`. After each: "Any more work experience?" Continue or move on. |
| 62 | 4. **Personal projects** → name, link, description, tech stack, highlights → write `experiences/projects.md` |
| 63 | 5. **Skills** → auto-generate from collected tech stacks, show for confirmation → write `experiences/skills.md` |
| 64 | 6. **Honors** → extract quantified metrics from work history + user additions → write `experiences/honors.md` |
| 65 | |
| 66 | ### File Format Reference |
| 67 | |
| 68 | **profile.md:** |
| 69 | ```markdown |
| 70 | --- |
| 71 | name: Name / English Name |
| 72 | email: email@example.com |
| 73 | phone: "+86 xxx" |
| 74 | wechat: xxx |
| 75 | blog: https://... |
| 76 | github: https://... |
| 77 | --- |
| 78 | |
| 79 | ## Education |
| 80 | |
| 81 | ### School · College | Degree (Period) |
| 82 | - Major, highlights |
| 83 | ``` |
| 84 | |
| 85 | **work/\<company\>.md:** |
| 86 | ```markdown |
| 87 | --- |
| 88 | company: Company Name |
| 89 | company_en: English Name |
| 90 | url: https://... |
| 91 | location: City |
| 92 | period: YYYY/MM -- YYYY/MM |
| 93 | department: Department |
| 94 | role: Role |
| 95 | tags: [tag1, tag2, ...] |
| 96 | --- |
| 97 | |
| 98 | # Project Name |
| 99 | > Timeline | Role |
| 100 | |
| 101 | ## Background |
| 102 | ... |
| 103 | |
| 104 | ## Key Work |
| 105 | ... |
| 106 | |
| 107 | ## Metrics |
| 108 | ... |
| 109 | |
| 110 | ## Tech Stack |
| 111 | ... |
| 112 | ``` |
| 113 | |
| 114 | Key principles: |
| 115 | - Keep raw details in experiences — trimming happens at generation time |
| 116 | - Tags should cover core tech and business domain keywords |
| 117 | - Metrics must include specific numbers |
| 118 | - One file per company, filename in lowercase English (e.g., `bytedance.md`) |
| 119 | |
| 120 | --- |
| 121 | |
| 122 | ## Generate Workflow (`/cv generate [target]`) |
| 123 | |
| 124 | Generate a tailored resume for a specific job target. |
| 125 | |
| 126 | ### Step 1: Read All Materials |
| 127 | |
| 128 | Read all files: |
| 129 | - `experiences/profile.md` |
| 130 | - All `.md` files under `experiences/work/` |
| 131 | - `experiences/projects.md` |
| 132 | - `experiences/skills.md` |
| 133 | - `experiences/honors.md` |
| 134 | |
| 135 | Read `${CLAUDE_SKILL_DIR}/assets/resume-example.tex` to understand the LaTeX structure and available commands. |
| 136 | |
| 137 | If the argument is a file path, also read that JD file. |
| 138 | |
| 139 | ### Step 2: Analyze Job Requirements |
| 140 | |
| 141 | Based on JD or job title, determine: |
| 142 | 1. **Core technical requirements** — what skills matter most |
| 143 | 2. **Experience priority** — which work experiences are most relevant |
| 144 | 3. **Framing angle** — how to present the same experience differently for this role |
| 145 | 4. **Content selection** — include/omit personal projects section, which experiences to trim |
| 146 | |
| 147 | ### Step 3: Prese |