g-eskayo/marvin/resume-tailor
- community
Checking that the SKILL.md file is still in the repository.
Maintain a master resume and generate tailored 1-page application packages from job descriptions. Domain-siloed — job-search specific, local-only (master resume never leaves the machine). Use for /tailor, /add-to-master, /merge-resume, /parse-transcript.
Install
npx vskill@latest install g-eskayo/marvin/resume-tailorSKILL.md
Resume Tailor Skill
Triggers: /tailor, /add-to-master, /merge-resume, /parse-transcript Purpose: Maintain a master resume and generate tailored 1-page application packages from job descriptions.
Constants
- Master resume:
~/.claude/resume/master.md - Output base:
~/.claude/resume/tailored/ - Output pattern:
~/.claude/resume/tailored/[company-slug]-[YYYY-MM-DD]/ - Scripts:
~/.agents/skills/resume-tailor/scripts/ - Python:
~/.agents/venv/bin/python
Command Routing
| Invocation | Handler | |
|---|---|---|
/tailor [url] [--cover-letter] | [TAILOR] | |
/add-to-master "..." | [ADD-TO-MASTER] | |
/merge-resume [path] | [MERGE-RESUME] | |
/parse-transcript [path] | [PARSE-TRANSCRIPT] |
[TAILOR] — Full Application Package
Phase 1: Intake
- If a URL was provided: run
~/.agents/venv/bin/python ~/.agents/skills/resume-tailor/scripts/fetch_jd.py <url>
- If it succeeds: use stdout as the JD text
- If it fails (non-zero exit): say "Couldn't fetch that URL — please paste the job description directly."
- If no URL: ask "Please paste the job description."
- If
--cover-letterwas NOT in the invocation: ask "Would you like a cover letter with this application? (yes/no)"
Phase 2: Research
Search for:
- Company: mission, values, product, recent news (last 12 months), tech stack, team size/stage, culture signals (startup vs. enterprise)
- Role: seniority signals, team context, reporting structure if visible, tech signals
- Contact: hiring manager name, recruiter, team lead — check company site, LinkedIn, job post
Determine output folder name: slugify company name (lowercase, hyphens, no special chars) + today's date. Write ~/.claude/resume/tailored/[slug]-[date]/research.md with all findings.
Phase 3: Tailoring
Read ~/.claude/resume/master.md in full.
Suppressed entries: an entry whose heading is followed by <!-- suppress: ... --> is kept in the master for the record only. Never include it, mention it, or draw facts from it in the resume, cover letter or summary, however relevant it looks. (Added 2026-10-07: Snorkel AI and Nourished Mobile App.)
Extract from JD:
- Job title → use verbatim as the header title line (all-caps). If ambiguous, infer the best match.
- Semantic concepts: domain areas, responsibility types, tech clusters, cultural signals
- Aerospace/defense signals: check for keywords — systems, engineering, simulation, physics, aerospace, hardware, robotics, defence, aviation, space, dynamics, structural, fluid, orbital, DoD, government, clearance
Score every master resume entry:
Revised 2026-07-02 — no hard item caps. Use the score to rank and curate, not to cut at a fixed count. Required sections (always include): Summary, Professional Experience, Projects, Education. Optional sections (include only if genuinely strong/JD-relevant; cut before padding): Technical Skills, Soft Skills, Relevant Training, Achievements. Typical good curation lands around 4 roles and however many projects are genuinely strong — that's a description of what good output looks like, not a count to hit. render_pdf.py now auto-shrinks to fit 1 page (Phase 5), so content length is no longer what keeps the resume on one page — curation quality is. Ties broken by recency.
Preserve exact quantities when condensing master.md bullets. Known failure mode from 2026-07-02: "14 charts, 2 tabs" (of one dashboard) got compressed into "14 dashboards" while tailoring — same number, false claim. Before writing a shortened bullet, check every number/unit in it against the master.md source sentence. If a number can't survive compression without becoming misleading, cut the number rather than let it drift.
Aerospace crossover signal: If JD has any aerospace/defense/systems keyword → surface the aerospace background in:
- The summary (explicitly mention dual-discipline background)
- The Engineering & Domain Knowledge skills category
- The cover letter unique angle paragraph
Security clearance signal: If JD is for a government/defense/cleared role → surface "Security Clearance: Secret (Reinstatable)" prominently in the header contact block.
Mirror company language: Use their terminology, not generic buzzwords.
Phase 4: Build Resume
Write ~/.claude/resume/tailored/[slug]-[date]/resume.md using this exact template structure.
CRITICAL FORMATTING RULE: Every paragraph element (bullets, project titles, achievement lines) MUST be separated by a blank line. Items within the same markdown block merge into a single visual line. One blank line = one visual paragraph break.
Revised 2026-07-02 — required sections and guidance, not hard caps:
- Required, always present: Summary (2–3 sentences), Professional Experience, Projects, Education (1 line only — this one stays a hard format rule, not a content-length one)
- Optional, include only if genuinely strong: Technical Skills, Soft Skills, Relevant Training, Achievements
- Typical well-curated shape: ~3–4 skill categories × ~4 items, ~6 soft skills, ~4 roles (one synthesized overview each), however many projects are genuinely strong × ~2 bullets, ~3 certs — guidance for what good curation looks like, not limits to enforce
- 1-page fit is now the renderer's job (Phase 5 auto-shrink-to-fit), not content's job — see architecture.md ADR-006
Formatting system, added 2026-07-02 — apply to every section, no exceptions. Sections were drifting into random per-section formatting (some bulleted, some stacked plain lines; some bold labels, some not) with no underlying logic — direct user feedback. Every section is one of exactly two patterns:
- Pattern A — itemized list (2+ discrete parallel entries: skill categories, certs, achievements):
•bullet, bold the entry's label (category name / cert name / achievement title), then the detail. Applies to: Technical Skills, Relevant Training, Achievements, and Projects' sub-bullets sit under this pattern too (though the project name bolding lives in the entry-title line above them, not the bullets themselves). - Pattern B — flowing content (one paragraph or one line, not a list of parallel items): no bullet. Applies to: Summary, Experience's overview paragraph (though its company/title header line above it is its own bold+italic element — see Phase 4 Experience format), Soft Skills (a single comma/middot-separated descriptor line — intentionally not itemized, these are single terms not label:detail pairs), Education (bold the degree as the "label," rest of the line is detail, same convention as Pattern A's bold-then-detail shape, just without a bullet since it's one line).
When in doubt for a new/unusual master.md entry, ask: is this one of several parallel items, or one flowing statement? That answers which pattern it uses — don't invent a third shape.
Phase 5: Render PDF
Run:
Read stderr, not just stdout. The renderer's auto-fit (architecture.md ADR-006) prints one of three things worth surfacing to Gil, not silently swallowing:
WARNING: content still spans N pages...— content overflows even at the smallest legible size. Trim content.NOTE: page is only ~X% full...— content is sparse but plausibly fixable. Suggest the next-strongest Project from master.md or expanding an existing entry.FLAG: page is only ~X% full even at the 13pt ceiling...— added 2026-07-02, per explicit user direction. Content was never close to overflowing at any size in the ladder. Surface this directly and honestly: this isn't a formatting gap, it's a signal that master.md may not have enough genuinely JD-relevant content for this role. Say so plainly and let Gil make the call on whether to proceed — don't pad the resume to hide it, and don't silently proceed as if the sparse output were normal.
Phase 6: Cover Letter (if requested)
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/resume-tailor/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/g-eskayo/marvin/resume-tailor)