resume
AI-powered resume system. Manages structured experience data and generates tailored LaTeX resumes for different job targets. Use when user says 'resume', 'generate resume', 'make resume', 'init resume', 'add experience', '简历', '生成简历', '初始化简历', or '添加经历'.
Resume — One Source, Many Tailored Resumes
A complete resume management system: structured experience data → AI-tailored LaTeX → PDF.
experiences/ → /resume generate → resume.tex → make en → output/Name-Title.pdf
(素材) (AI 定制化) (LaTeX源) (编译) (输出)
Subcommand Routing
Parse $ARGUMENTS to determine which workflow to run:
init [text]→ Init Workflowgenerate [job title or JD file]orgen [...]→ Generate Workflowadd [description]→ Add Experience Workflow- Empty or unrecognized → Show available subcommands and ask user what they want to do
Prerequisites Check
Before any workflow, verify the environment:
- Check if
resume.clsexists in the current working directory. If not, copy from${CLAUDE_SKILL_DIR}/assets/resume.cls - Check if
Makefileexists. If not, copy from${CLAUDE_SKILL_DIR}/assets/Makefile - Create directories if missing:
experiences/work/,jobs/,output/,.history/ - Check if
xelatexis available:which xelatex. If not, warn the user: "XeLaTeX is required. Install with: brew install --cask mactex"
Init Workflow (/resume init [text])
Initialize the experience data library from scratch.
Mode Detection
Based on $ARGUMENTS (after stripping "init"):
- User pasted large text (resume, work history, LinkedIn export) → Import Mode
- Empty or short description → Q&A Mode
- File path provided (PDF/Markdown) → Read file, then Import Mode
Import Mode
- Parse the provided content, extracting: personal info, education, work history (company, period, department, role, projects, metrics), personal projects, skills, honors
- Confirm with user — show structured result, ask about missing info or inaccurate metrics
- Generate files into
experiences/:profile.md— personal info + educationwork/<company>.md— one file per companyprojects.md— personal projectsskills.md— skill inventoryhonors.md— honors + quantified metrics
Q&A Mode
Walk through one question at a time. Never ask multiple questions at once.
- Basic info → name, email, phone, wechat (optional), blog/github (optional) → write
experiences/profile.md - Education → school, degree, major, period, highlights → append to
experiences/profile.md - 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. - Personal projects → name, link, description, tech stack, highlights → write
experiences/projects.md - Skills → auto-generate from collected tech stacks, show for confirmation → write
experiences/skills.md - Honors → extract quantified metrics from work history + user additions → write
experiences/honors.md
File Format Reference
profile.md:
---
name: Name / English Name
email: [email protected]
phone: "+86 xxx"
wechat: xxx
blog: https://...
github: https://...
---
## Education
### School · College | Degree (Period)
- Major, highlights
work/<company>.md:
---
company: Company Name
company_en: English Name
url: https://...
location: City
period: YYYY/MM -- YYYY/MM
department: Department
role: Role
tags: [tag1, tag2, ...]
---
# Project Name
> Timeline | Role
## Background
...
## Key Work
...
## Metrics
...
## Tech Stack
...
Key principles:
- Keep raw details in experiences — trimming happens at generation time
- Tags should cover core tech and business domain keywords
- Metrics must include specific numbers
- One file per company, filename in lowercase English (e.g.,
bytedance.md)
Generate Workflow (/resume generate [target])
Generate a tailored resume for a specific job target.
Step 1: Read All Materials
Read all files:
experiences/profile.md- All
.mdfiles underexperiences/work/ experiences/projects.mdexperiences/skills.mdexperiences/honors.md
Read ${CLAUDE_SKILL_DIR}/assets/resume-example.tex to understand the LaTeX structure and available commands.
If the argument is a file path, also read that JD file.
Step 2: Analyze Job Requirements
Based on JD or job title, determine:
- Core technical requirements — what skills matter most
- Experience priority — which work experiences are most relevant
- Framing angle — how to present the same experience differently for this role
- Content selection — include/omit personal projects section, which experiences to trim
Step 3: Present the Plan
Before generating .tex, show the user:
- Target positioning (one sentence)
- Content selection (which experiences to include/omit)
- Key differentiation (how this resume differs from a generic one)
Wait for user confirmation before proceeding.
Step 4: Generate LaTeX
Generate resume.tex following these rules:
-
Use resume.cls commands strictly:
\name{},\basicInfo{},\email{},\phone{},\wechat{},\homepage[]{}\section{},\datedsubsection{}{},\role{}{},\rolewithdate{}{}{}itemizewith[parsep=0.25ex]
-
Keep to 1 page (critical for Chinese version):
- 5-6 sections: positioning, education, work, (projects), skills, honors
- 3-5 bullet points per project
- Trim early internships to 1-2 lines each
- If too long, cut early internships and low-relevance bullets first
-
LaTeX header for Chinese:
\documentclass{resume} \usepackage{xeCJK} \setCJKmainfont{SourceHanSerifSC-Medium} \setCJKsansfont{SourceHanSerifSC-Medium} \setCJKmonofont{SourceHanSerifSC-Medium}For English version: remove the three xeCJK lines.
-
Formatting:
- Use
\textbf{【keyword】}to mark each bullet's keyword - Escape:
&→\&,%→\% - Use
\href{url}{text}for hyperlinks
- Use
Step 5: Build
- Backup current
resume.texto.history/resume_$(date +%Y%m%d%H%M%S).tex - Write generated content to
resume.tex - Run
make ento build PDF - Copy PDF to
output/with job-specific name
Step 6: English Version (if requested)
- Remove xeCJK lines
- Translate all content to English
- Build PDF
Add Experience Workflow (/resume add [description])
Add or update experience data incrementally.
Step 1: Classify Input
Determine what the user is adding:
- New work experience → create/update
experiences/work/*.md - New personal project → update
experiences/projects.md - New skill → update
experiences/skills.md - New honor/certification → update
experiences/honors.md - Personal info change → update
experiences/profile.md
Step 2: Read Existing File
Read the target file to understand current content and format.
Step 3: Update
Apply updates following the file format conventions above. Keep raw details — don't trim prematurely.
Step 4: Confirm
Show the diff to the user, confirm before writing.
Step 5: Remind
After updating: "Experience updated. Run /resume generate [target] to regenerate your resume."