g-eskayo/marvin/resume-tailor

Trust tier 3
  • community
Source check pending

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-tailor

SKILL.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

InvocationHandler
/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
  1. 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."
  1. If no URL: ask "Please paste the job description."
  2. If --cover-letter was 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:

combined = (relevance × 0.7) + (recency × 0.3)
recency: 1.0 = current | 0.85 = <1yr | 0.65 = 1–3yr | 0.40 = 3–6yr | 0.20 = >6yr
relevance: 1.0 = direct match | 0.6 = transferable | 0.3 = adjacent

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.

markdown
# GIL ESKAYO
[JD-DERIVED TITLE — ALL CAPS]
gileskayo.me | geskayo@gmail.com | linkedin.com/in/gileskayo
(650) 867-2527 | github.com/G-Eskayo | U.S. Citizen[ | Security Clearance: Secret (Reinstatable) — if defense/gov role]
[SUMMARY — 2–3 sentences. Tailored to the specific role. No "I am a..." opener. Lead with what you build, then the crossover if relevant, then the current work.]
## PROFESSIONAL EXPERIENCE
**[Company Name]** *[Title, Dates]*
[ONE synthesized overview paragraph, 2–4 sentences: role scope, tasks, and value delivered — action verbs, quantified impact where available, mirrors JD language. Do NOT split this into multiple bullets that each repeat the bold company name — that's the Projects section's shape, not this one. Combine what master.md lists as separate bullets for this role into one flowing paragraph.]
**[Company Name]** *[Title, Dates]*
[overview paragraph for the next role]
[Required section. Curate to the strongest ~4 roles — not a hard cap, a description of good curation. One entry per company/role, not per achievement. If a company genuinely has two distinct stints (e.g. promoted, or left and came back), those are two entries; multiple bullets for one continuous role are not.]
## TECHNICAL SKILLS
• **[Category] –** [skill], [skill], [skill], [skill — max 4 items per category]
• **[Category] –** [skill], [skill], [skill], [skill]
• **[Category] –** [skill], [skill], [skill], [skill]
• **[Category] –** [skill], [skill], [skill], [skill]
[Optional section — include only if genuinely strong/JD-relevant. Typically ~3–4 categories. Include Cybersecurity if JD is security-relevant. Include Engineering & Domain Knowledge if aerospace signal detected.]
## SOFT SKILLS
[skill] · [skill] · [skill] · [skill] · [skill] · [skill — up to ~6, JD-matched, on one line]
## PROJECTS
**[Project Name]** *([tech stack] — [rough date, e.g. "2026" or "Q2 2026"])*
• [bullet 1 — what was built, impact, scale]
• [bullet 2 — optional, max 2 per project]
**[Project Name]** *([tech stack] — [rough date])*
• [bullet 1]
[Required section, and the resume's highest-visual-priority one (render_pdf.py gives project names a larger/bolder treatment than other bold text — see design.md §7.1). Include the strongest, JD-relevant projects — no fixed count, curated by strength. Always include a rough date in the italic parenthetical alongside tech stack — signals recency; year-level precision is enough, don't make it look like a formal dated entry.]
## EDUCATION
**B.S. Computer Science** – University of Colorado Boulder | August 2025
## RELEVANT TRAINING
• **[Cert name]** – [Issuer] – [one-line description of what was built/learned]
• **[Cert name]** – [Issuer] – [description]
• **[Cert name]** – [Issuer] – [description]
[Optional section — include only if present in master and genuinely relevant. Typically up to ~3, most relevant to JD. Each cert on its own blank-line-separated paragraph.]
## ACHIEVEMENTS
• **U.S. Armed Forces Veteran** – Chemical, Biological, Radiological & Nuclear (CBRN) Defense Specialist[, Security Clearance: Secret (Reinstatable) — append if defense/gov role]
• **Eagle Scout** – Highest rank in Boy Scouts; 31 merit badges and two Eagle Palms
[Include both for leadership/character-signal roles. Include just Veteran for defense/gov roles if space is tight. Bulleted + bold lead-in, same pattern as Technical Skills/Relevant Training — see the "Formatting system" note below Slot caps.]

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:

~/.agents/venv/bin/python ~/.agents/skills/resume-tailor/scripts/render_pdf.py \
~/.claude/resume/tailored/[slug]-[date]/resume.md \
~/.claude/resume/tailored/[slug]-[date]/resume.pdf

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

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
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/g-eskayo/marvin/resume-tailor/badge)](https://verified-skill.com/skills/g-eskayo/marvin/resume-tailor)

Something wrong with this skill or its page? Tell us.