
Resume Matcher
Tailors a master resume to job descriptions and writes cover letters and PDFs.
Install
npx skills add srbhr/Resume-Matcher --skill resume-matcher -g -a claude-code -y- Repository
- srbhr/Resume-Matcher29k
- Category
- Business
- Updated
- 5d ago
- License
- Apache-2.0
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- No, instructions only
What it does
Use Resume Matcher with no API key, with you doing the AI work. Sets up the app, creates a master resume, tailors it to job descriptions (pasted in chat or saved in jobs/), writes cover letters and outreach messages, and exports PDFs. Use when the user asks about resumes, CVs, job descriptions, tailoring, cover letters, or setting up or running Resume Matcher.
Resume Matcher, driven by you
You are the AI. The resume-matcher command stores, validates, scores and renders what you write, in the same database as the web app, so everything you save appears at http://localhost:3000. The user makes small edits there.
Work in this order: set up (once), master resume (once), tailor (per job), hand off to the UI. Skip a step that is already done. Talk to the user in their language.
The command
From the repository root:
uv run --directory apps/backend resume-matcher <tool> [arguments]
resume-matcher --helplists the tools;resume-matcher <tool> --helpshows one tool's arguments as a JSON schema.- Arguments are either one JSON object (
'{"resume_id": "…"}',@args.json, or-for stdin) or fields:key=value(string),key=@file(string from a file),key:=json(any JSON value),key:=@file.json(JSON from a file). - Use absolute paths.
--directoryruns the command fromapps/backend, so a relative path resolves from there. - The result is JSON on stdout. Exit code 1: the tool failed and stderr says why. Exit code 2: the command line was wrong.
- Write argument files (large JSON such as a whole resume) to
jobs/.work/in this repository (mkdir -p jobs/.workfirst). It is gitignored and inside every agent's sandbox. - To shorten it, define a shell function, not a variable (zsh does not split a command stored in a variable):
rmx() { uv run --directory "$PWD/apps/backend" resume-matcher "$@"; }
Docker install: run the same tools inside the container, from its backend folder so they use the app's data:
docker exec -i -w /app/backend resume-matcher python -m app.mcp_server.cli <tool> [arguments]


