Install
$ agentstack add skill-jain777-jobclaw-skills-tailor-resume ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
tailor-resume
Turn the master profile into a resume aimed at one job — maximizing relevance and ATS keyword match without inventing anything.
Inputs
- Profile: read
profile/master-profile.md(frontmatter + body, plus any[VERIFY]flags — don't rely on unverified facts). If missing →/build-profile. - Job: pasted description, URL, or an entry from
jobs/found-.json. Known-info gate (RULES §6): if no job is given inline, readjobs/current.json— do not re-ask for the JD when score-fit/find-jobs already captured it. - (Optional)
scores/.score.jsonfromscore-fit— reuse itsmissing_keywordslist.
The one hard rule
Never fabricate. You may select, reorder, reframe, and re-emphasize the user's real experience and use the job's vocabulary for things they actually did. You may not invent roles, titles, dates, metrics, skills, or tools they don't have. If a must-have is genuinely absent, leave it out and flag it to the user — don't paper over it.
Read but never quote: the context block
The profile has a context: block with career_goal and additional_info. Read both for signal — use them to bias which experience strand to lead with in the Summary and which skills to elevate. Never quote, paraphrase, or echo their contents into the Summary, bullets, or anywhere else the candidate would send out. Do not write phrases like "My career goal is…" — that signal stays internal.
Method
- Load region conventions. Read the target region's pack in [
../../knowledge/regions/](../../knowledge/regions/) and follow its resume rules — length, what to include/omit (e.g., US: omit photo/DOB, no salary; IN: 1–2 pages, include notice period, drop photo/DOB by default), spelling variant, and date format. These govern the structure below. - Read the job for must-have keywords, responsibilities, seniority, and the language it uses.
- Select & order the profile's most relevant experience, skills, and projects for this role; drop or shorten the irrelevant. Use
context.career_goalas a tie-breaker on what to lead with. - Rewrite bullets under the rubric below.
- Surface keywords naturally into summary/skills/bullets — enough to pass ATS screening, never keyword-stuffed.
- Honor constraints/voice from the profile Notes (tone, hard limits).
- Self-check the draft against the rubric and anti-patterns before writing.
Bullet & section rubric (self-check before writing)
- **One page if ]`*. Never name the target company.
- Skills grouped, not flat: 3–5 named groups (per track preset); 4–8 items per group; ordered most-relevant first.
- Dates obey region pack (US:
Mon YYYYorMon YYYY – Present; IN:DD/MM/YYYYorMon YYYY). Consistent across all roles. - Vary verbs across the whole page — no two consecutive bullets start with the same verb, and avoid reusing any verb more than twice (scannability + perceived breadth). Pull from the full [action-verbs.md](reference/action-verbs.md) range rather than recycling led/managed/built.
- Honor
context.career_goalandNotes / voice: bias Summary toward stated goal direction; respect declared tone; never override hard constraints.
Anti-patterns (do not ship)
- The duties list — job-description-as-resume.
- "We did this" plural where the candidate's individual contribution is unclear.
- Smart quotes / em-dashes in the markdown (rendercv/Typst render Unicode fine, but keep the source clean and consistent).
- Skills-section keyword spam (>10 per group, generic "Microsoft Office, Excel" for senior roles).
- Tools-without-outcomes ("Used Jira, Figma, Notion" as a bullet).
- Naming the target company in Summary ("Excited to join Stripe to…").
Output — produce the PDF by default
Write the resume content, then render it. Default output is a sendable PDF, not just markdown.
1. Write the content files to resumes/
resumes/-.md— human-readable tailored markdown for review (sections per rule 10).resumes/-.tailor.json— structured sidecar:
``jsonc { "source_profile_path": "profile/master-profile.md", "target_job": { "company": "...", "role": "...", "url": "..." }, "theme_hint": "engineeringresumes | classic | sb2nov | moderncv | ...", // optional rendercv theme "contact_order": ["email","phone","linkedin","github","portfolio"], "contact_hidden": ["twitter"], // optional, per-job "basics_overrides": { "label": "", "summary": "" }, "content": { "work": [ ... ], "skills": [ ... ], "projects": [ ... ], "education": [ ... ] } } ``
resumes/-.json— the JSON-Resume intermediate render-resume consumes. Assemble it from the profile + the tailored content (see [../render-resume/reference/json-resume-schema.md](../render-resume/reference/json-resume-schema.md)):basics: name,label/summaryfrombasics_overrides, email, phone, location, andprofiles[]= every link in the master profile'slinks:block ({network, url}, includinglinks.other) so no link is lost; portfolio →basics.url.work/skills/projects/educationfromcontent(tailored).meta:{ track, region, paper, theme }(theme =theme_hintorengineeringresumes).- Never re-derive links by parsing the markdown — read them from
links:.
2. Render the PDF (default) + visual QA
Preflight first (so the dependency isn't a surprise mid-flow): run python3 scripts/doctor.py. If it reports rendercv MISSING, tell the user up front before rendering — "the PDF needs rendercv (one-time install): python3 -m venv skills/render-resume/.venv && skills/render-resume/.venv/bin/pip install \"rendercv[full]\" — install now, or I'll hand you the markdown + content files and you render later?" — and only pip install on their go-ahead. With rendercv present, render:
python3 skills/render-resume/scripts/render.py --data resumes/.json --out resumes/.pdf [--theme ]
(render.py auto-runs the deterministic page/fill QA gate and prints an ATS-safe: yes/no line — relay the warning if a styled theme was used.) Then run the review-render vision-QA loop on the PDF (render → screenshot → rubric → one fix → re-render, bounded) — the resume isn't "done" until it passes. If rendercv isn't installed, render.py writes the .rendercv.yaml and prints install guidance (exit 0) — tell the user to install it (README) or run /render-resume once set up; the content files are still produced.
3. Report
- A 2–4 line rationale: what you emphasized, what you cut, which keywords you added.
- Any honesty flags: must-haves the user genuinely lacks.
- Any rubric / QA warnings and the PDF path.
Next steps
Resume PDF ready (resumes/.pdf). Next: /write-cover-letter for this job, then submit — or /apply-to-job to assemble the cover letter + form answers in one pass. No emoji.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jain777
- Source: jain777/jobclaw-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.