ATS-optimized resume tailoring that replaces generic AI resume services. Instead of a one-size-fits-all rewrite, this skill tailors your resume per job description — matching keywords, adjusting emphasis, and structuring content for both human recruiters and ATS systems.
| Stage | What Happens |
|---|---|
| Intake | Reads your resume (PDF/text) + job description (text or URL) |
| Analysis | Parses both documents, produces gap analysis: matches, gaps, differentiators |
| Feedback | Shows you a structured resume review: strengths, issues, gap table vs the JD |
| Strategic Questions | Asks 3-5 targeted questions: locale, positioning, emphasis, domain scope |
| ATS Optimization | Rewrites for the specific role: tailored summary, grouped skills, keyword placement |
| Draft + Scoring | Generates markdown draft with ATS score estimate and keyword coverage table |
| Final Output | Produces .docx via pandoc, optionally generates a cover letter |
AI resume services apply the same transformation to every resume:
- Generic executive summary ("Seasoned leader with 15+ years...")
- Over-narrow domain focus (strips adjacent experience)
- No job-specific keyword targeting
- Template formatting without strategic thinking
This skill asks what the specific job needs before touching your content.
- Job-description-driven — every tailoring decision is based on the target JD
- Resume feedback — structured analysis with strengths, issues, and gap table before tailoring
- ATS scoring — estimated match score with keyword coverage breakdown
- Locale support — EN/US and RU/CIS conventions (section order, personal info, tone)
- Master profile — stores your full career data, never loses context when narrowing
- Visibility system — control which roles appear in which resume variants (
always,variant-specific,on-request,reference-only); excluded roles are reported with reasons before tailoring - Anti-pattern protection — blocks generic openers, keyword stuffing, over-condensation
- Cover letter — optional, also tailored to the specific role
- DOCX output — ATS-friendly single-column document via pandoc
- Claude Code CLI installed
- pandoc installed (for DOCX generation)
Verify pandoc:
pandoc --version# Add the marketplace (first time only)
claude /plugin marketplace add olegvg/resume-tailor-plugin
# Install the plugin
claude /plugin install resume-tailor# Clone the repository
git clone https://github.com/olegvg/resume-tailor-plugin.git
# Install from local path
claude /plugin install --path ./resume-tailor-pluginCopy the plugin into your Claude Code plugins directory:
# Clone
git clone https://github.com/olegvg/resume-tailor-plugin.git
# Copy to Claude Code plugins directory
cp -r resume-tailor-plugin ~/.claude/plugins/resume-tailor-pluginAfter manual installation, restart Claude Code for the skill to be detected.
This repository is also packaged for Codex:
.codex-plugin/plugin.json— Codex plugin manifest..agents/plugins/marketplace.json— self-hosted Codex marketplace index pointing at this plugin repository.
Codex loads the bundled resume-tailor skill from skills/.
/resume-tailor
Provide:
- Resume: path/to/your-resume.pdf
- Job: https://linkedin.com/jobs/view/123456
Or paste the job description directly:
/resume-tailor
Resume: ~/Documents/my-resume.pdf
Job Description:
We are looking for a Senior Backend Engineer...
[paste full JD text]
On first run, the skill creates a master profile — a comprehensive data store of your career at docs/resume/master-profile.md. Subsequent runs use this profile as the base:
/resume-tailor
Job: https://greenhouse.io/job/senior-platform-engineer-at-stripe
The skill will ask: "Using your master profile as the base. Correct?"
- Analysis phase — skill parses your resume and JD, identifies matches and gaps
- Feedback — structured resume review: strengths for this role, issues to address, gap table showing every JD requirement and where it appears (or doesn't) in your resume, plus an excluded roles report if your master profile uses the visibility system
- Questions — 3-5 strategic questions (locale, positioning, emphasis)
- Draft — markdown resume with ATS analysis section showing:
- Estimated ATS score (%)
- Keyword coverage table (which JD requirements appear where)
- Gaps remaining
- Review — you provide feedback, skill iterates
- Final output —
.docxfile ready to submit
docs/resume/
master-profile.md # Your career data (created once)
draft-stripe-2026-03-16.md # Markdown draft with ATS analysis
John-Doe-Senior-Engineer-resume.docx # Final DOCX
cover-letter-stripe-2026-03-16.md # Cover letter (if requested)
cover-letter-stripe-2026-03-16.docx # Cover letter DOCX
For branded styling, place a Word template at docs/resume/reference.docx. The skill will use it for consistent fonts, colors, and spacing:
# The skill detects and uses it automatically
docs/resume/reference.docxClaude Desktop does not support plugins directly, but you can use this skill through Projects with custom instructions.
- Open Claude Desktop → Projects → Create New Project
- Name it "Resume Tailor" (or any name you prefer)
- Click Set custom instructions
- Paste the full content of
skills/resume-tailor/SKILL.mdinto the instructions field - Upload the reference files as project knowledge:
skills/resume-tailor/references/ats-rules.mdskills/resume-tailor/references/locale-en.mdskills/resume-tailor/references/locale-ru.mdskills/resume-tailor/references/section-templates.md
- Open the "Resume Tailor" project
- Start a new chat
- Attach your resume PDF and paste/type the job description
- Claude will follow the multi-stage workflow from the instructions
| Feature | Claude Code | Claude Desktop |
|---|---|---|
| Automatic skill detection | Yes | No (manual project setup) |
| WebFetch for job URLs | Yes | No (paste JD text manually) |
| File system access | Yes (reads/writes files) | No (use attachments) |
| DOCX generation | Yes (via pandoc) | No (outputs markdown text) |
| Master profile persistence | Yes (saved to disk) | No (per-conversation only) |
| AskUserQuestion UI | Yes (structured choices) | No (free-text conversation) |
For full functionality, use Claude Code. Claude Desktop works well for the analysis, feedback, and draft generation stages — you'll just need to copy the output into a document manually.
If you want Claude Desktop to access local files (for reading resumes and writing output), you can set up the filesystem MCP server:
- Edit
~/Library/Application Support/Claude/claude_desktop_config.json(Mac) or%APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Documents/resumes"
]
}
}
}- Restart Claude Desktop
- Claude can now read/write files in the specified directory
If you have multiple resume variants (e.g., different target industries), you can control which roles appear in each variant by adding a Visibility field to roles in your master profile:
| Value | Meaning |
|---|---|
always |
Include in all resume variants |
variant-specific |
Only in variants listed in the Variants field |
on-request |
Skip unless explicitly requested |
reference-only |
Metadata only, never included in output |
Example in master profile:
### Company A — Fintech Platform
- **Visibility:** variant-specific
- **Variants:** fintech, generic
- **Title:** CTO
...
### Company B — Early Career Role
- **Visibility:** on-request
- **Title:** Software Engineer
...During the feedback stage, the skill shows an Excluded Roles Report — a table listing every role left out and why (variant mismatch, not requested, user constraint like "without fintech"). You can override any exclusion before tailoring begins.
If your master profile has no Visibility fields, all roles are treated as always and the report is skipped.
- No photo, no DOB, no marital status
- Section order: Contact → Summary → Skills → Experience → Education
- 1-2 pages max
- Direct, metrics-forward tone
- Photo and DOB expected
- Section order: Contact → Target Role → Education → Experience → Skills → Certifications → Languages
- 2-3 pages standard
- Professional formal tone
- Mixed RU + EN technical vocabulary
The skill asks which locale to use and applies the appropriate conventions automatically.
The skill estimates an ATS match score using:
Score = 0.4 × required_skills_coverage
+ 0.2 × nice_to_have_coverage
+ 0.2 × achievement_quantification_rate
+ 0.1 × section_completeness
+ 0.1 × keyword_distribution
- 85%+ — Strong match, likely passes ATS filters
- 70-84% — Moderate, depends on competition
- Below 70% — Significant gaps to address
resume-tailor-plugin/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest
├── .codex-plugin/
│ └── plugin.json # Codex plugin manifest
├── .agents/
│ └── plugins/
│ └── marketplace.json # Codex marketplace index
├── skills/
│ └── resume-tailor/
│ ├── SKILL.md # Main orchestrator (stages, workflow, checklist)
│ └── references/
│ ├── ats-rules.md # ATS formatting rules & scoring
│ ├── locale-en.md # English/US conventions
│ ├── locale-ru.md # Russian/CIS conventions
│ └── section-templates.md # Section templates for both locales
├── LICENSE
├── AGENTS.md
└── README.md
MIT — see LICENSE.
Issues and PRs welcome. If you find ATS rules that are outdated or locale conventions that need updating, please open an issue.