TA

tailor-resume

Customize your resume to match specific job postings for better ATS scores.

Install

mkdir -p .claude/skills/tailor-resume && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16212" && unzip -o skill.zip -d .claude/skills/tailor-resume && rm skill.zip

Installs to .claude/skills/tailor-resume

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Assembles an optimized resume for a specific role from the ExperienceLibrary, scores it for ATS compatibility, and saves it to the artifact inventory. Fires automatically when the user shares or pastes a job description, or expresses intent to apply to a specific role. Also invocable via /career-navigator:tailor-resume.
321 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • →Assemble an optimized resume for a specific role
  • →Score the resume for ATS compatibility
  • →Select relevant experience units from an ExperienceLibrary
  • →Ensure required job description keywords are present
  • →Save the generated resume to the artifact inventory

How it works

The skill collects a job description, the user's ExperienceLibrary, and profile, then invokes a `resume-coach` agent to select, assemble, and rewrite experience units for the target role. It then scores the resume for ATS compatibility.

Inputs & outputs

You give it
job description, ExperienceLibrary.json, and profile.md
You get back
optimized resume text, ATS score, and an entry in artifacts-index.json

When to use tailor-resume

  • →Tailor my resume
  • →Optimize resume for job
  • →Update resume profile
  • →Build resume for application

About this skill

Assemble the best possible resume for a specific role, drawn from the user's ExperienceLibrary. Invoke the resume-coach agent to do the work.

Workflow

1. Collect inputs

Job description — required. If the user has not provided one:

"Paste the job description and I'll tailor your resume for it."

Verify the JD against the canonical source — always. Before handing anything to resume-coach, fetch the posting from the company's own careers page or ATS (Greenhouse, Lever, Ashby, Workday, SmartRecruiters). Aggregator listings — Indeed, LinkedIn, Ladders, ZipRecruiter, Jobgether, BuiltIn — are frequently truncated, stale, or reworded, and any job_link stored in recommendations.json may point at one.

How to find the canonical post: search {Company} {Role} careers or {Company} greenhouse OR lever OR ashby {Role}, then fetch it. If the aggregator link is a shortlink (e.g. to.indeed.com/...), it will usually not resolve to usable text — go find the real posting instead of retrying the fetch.

Then diff the canonical JD against whatever the user or recommendations.json supplied, and flag every contradiction to the user before building the resume. Report them plainly:

"The full JD on {source} differs from the listing we had on file: {contradiction}. That changes {what it changes}. Want me to proceed on the canonical version?"

Contradictions that matter most, because they change targeting or disqualify the role:

  • People-management scope — "lead a team of PMs" vs. an IC/individual-contributor framing
  • Seniority or title — Director vs. Senior PM vs. Principal
  • Location and work model — onsite/hybrid/remote, and which office
  • Compensation band — especially where a pay-transparency disclosure appears only on the canonical post
  • Hard requirements — degree filters, years of experience, clearance, work authorization
  • Required application materials — essays, work samples, portfolios, take-homes that aggregators drop entirely

If a contradiction invalidates the original fit rationale, say so directly and correct the stored fit_signals or gaps in recommendations.json — do not let a wrong signal survive into the tracker. If the canonical posting cannot be found or fetched, tell the user the JD is unverified and name the specific risk, rather than proceeding silently.

Target role and company — extract from the canonical JD if not stated explicitly.

ExperienceLibrary — read {user_dir}/CareerNavigator/ExperienceLibrary.json. If the file is missing or the units array is empty:

"Your ExperienceLibrary is empty. Run /career-navigator:add-source to add a resume first, then I can tailor one for this role."

Profile — read {user_dir}/CareerNavigator/profile.md for differentiators, skills, and target preferences. Do not ask the user for anything that is already in the profile.

2. Invoke resume-coach

Hand off to the resume-coach agent with:

  • The full job description text
  • The full ExperienceLibrary (CareerNavigator/ExperienceLibrary.json)
  • The user profile (CareerNavigator/profile.md)
  • Any specific instructions the user provided (emphasis, exclusions, tone)

resume-coach will:

  • Select the most relevant experience units using performance_weights
  • Assemble and rewrite them for the target role
  • Ensure all required JD keywords are present (ATS pass)
  • Return the completed resume text and an ATS score

Voice-aligned Summary (optional): If the user explicitly asks to match their LinkedIn voice / voice-profile.md for the Summary only, ask resume-coach for a ResumeSummaryBrief per agents/resume-coach/AGENT.md. Before invoking writer, run the same voice preflight as draft-outreach (ask for ## User writing samples / ## User writing samples (launch) or skip). Then invoke writer in resume-summary mode, substitute the returned ## Summary into the draft, then continue to ATS presentation below.

3. Score and review

Present the full assessment returned by resume-coach before saving:

Resume assembled for {Role} at {Company}
JD source: {canonical URL} {(verified against the listing on file | CONTRADICTIONS FOUND — see below)}

ATS score: {n}/100
Keyword coverage: {matched_keywords} / {total_required} must-have keywords matched

JD contradictions (omit this block if none)
- {What the listing on file said} → {what the canonical JD actually says} → {what it changes}

Strengths
- {What the ExperienceLibrary covers well for this role}

Gaps (honest)
- {Requirements with no or weak ExperienceLibrary coverage}
- {Achievements that need metrics or sharpening}

If the score is below 70, ask before saving:

"This resume scores {n}/100 for ATS. The main gaps are {keywords}. Do you want me to address them before saving?"

4. Save the artifact

Once the user confirms (or if the score is ≥ 70 with no gaps flagged), save the resume:

Filenames (avoid host / MCP validation errors): use ASCII-safe names only—hyphens -, no em dashes or smart quotes. Sanitize company and role: remove \ / : * ? " < > | and newlines; collapse whitespace; limit basename (~100 chars). Example: Anthropic-PM-Claude-Code-Resume-2026-03-24.md

  • Filename format: {SanitizedCompany}-{SanitizedRole}-Resume-{YYYY-MM-DD}.md
  • Path: {user_dir}/
  • Write to {user_dir}/CareerNavigator/artifacts-index.json:
{
  "id": "{uuid}",
  "type": "resume",
  "filename": "{filename}",
  "path": "{user_dir}/{filename}",
  "target_company": "{company}",
  "target_role": "{role}",
  "date_created": "{today}",
  "source": "generated",
  "ats_score": {n},
  "source_units": ["{unit_ids used}"],
  "jd_keywords": ["{keywords matched}"],
  "jd_source_url": "{canonical careers-page or ATS URL the JD was verified against}",
  "notes": "{record any JD contradictions found during verification}"
}

If other artifact files (PDF/DOCX) exist in {user_dir}, run the artifact-saved workflow once after saving so artifacts-index.json stays aligned with disk.

Confirm to the user:

"Saved as {filename}. Run /career-navigator:cover-letter to generate a matching cover letter."

5. Suggest next step

If the user hasn't already logged an application for this role, prompt:

"Want me to add this to your tracker? Just say 'yes' or tell me the application details."

When not to use it

  • →When the user's ExperienceLibrary is empty or missing
  • →When a job description is not provided

Limitations

  • →Requires an existing ExperienceLibrary with content
  • →Requires a job description to tailor the resume
  • →ATS score below 70 prompts user confirmation before saving

How it compares

This skill automates the tailoring of a resume to a specific job description by selecting and optimizing content from a personal library, including ATS scoring, which differs from manual resume customization.

Compared to similar skills

tailor-resume side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
tailor-resume (this skill)06moNo flagsIntermediate
amcs-producer-notes-generator510moNo flagsAdvanced
sales-automator55moNo flagsBeginner
social-media-generator610moReviewBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

amcs-producer-notes-generator

miethe

Generate production notes defining song structure, hooks, instrumentation hints, per-section tags, and mix parameters. Aligns with style spec and blueprint production guidelines. Use when creating arrangement, dynamics, and audio engineering guidance for composition and rendering.

585

sales-automator

sickn33

Draft cold emails, follow-ups, and proposal templates. Creates pricing pages, case studies, and sales scripts. Use PROACTIVELY for sales outreach or lead nurturing.

537

social-media-generator

ailabs-393

This skill should be used when the user requests social media content creation for Twitter, Instagram, LinkedIn, or Facebook. It generates platform-optimized posts and saves them in an organized folder structure with meaningful filenames based on event details.

634

xhs-note-creator

comeonzhj

小红书笔记素材创作技能。当用户需要创建小红书笔记素材时使用这个技能。技能包含:根据用户的需求和提供的资料,撰写小红书笔记内容(标题+正文),生成图片卡片(封面+正文卡片),以及发布小红书笔记。

49

blogpost-creator

Xe

Create new blogposts from a template or linkposts using the hydrate command.

12

libreoffice-writer

Anhvu1107

ALWAYS use this when the user or an upstream archive refers to `libreoffice-writer`, the nested skill path form for `writer`, or the equivalent slash path. This is a namespace-preserving alias that routes to `writer` while retaining strict validation, Senior Master execution, and Codex review standa

00

Search skills

Search the agent skills registry