Automated summary
Regenerates a CV as HTML and then PDF from a pre-filled profile, either tailoring it to a specific job posting or refreshing the base version.
Strengths
- Keeps a dated archive of HTML versions (`YYYY-MM-DD_<context>.html`) before every edit, making rollbacks straightforward
- Rewrites the summary, reorders skills, and re-emphasizes bullets around the job description's keywords without inventing metrics or facts
- Battle-tested PDF pipeline that works around Chrome headless blocking `file://` URLs by serving the page from a local HTTP server
- Dated, sequence-numbered output naming (`date_NN_Name.pdf`) keeps exports sortable and traceable
Limitations
- Tightly macOS-bound: hardcoded Chrome path, Preview launch, `~/Documents` and `~/Desktop` folders
- The "Who You Are" block ships with placeholders that must be filled in manually before it is useful
- Only reorders and rewords content already in the latest HTML, so output quality depends entirely on the existing source CV
- No ATS compatibility or layout validation beyond a rough PDF size check (~150KB+)
Use it when you want to refresh your CV or tailor it to a specific company or vacancy and get a dated PDF ready to send.
Avoid it on non-macOS machines, or when you have no existing source HTML CV in the skill's history to build from.
Security analysis
CautionThe skill uses powerful tools (bash, a local HTTP server, Chrome headless) but for a coherent, legitimate purpose: rendering an HTML CV to PDF locally. There is no obfuscation, no curl|sh, no secret exfiltration, no destructive deletion, and it explicitly says not to use file:// URLs — it never sends data outbound. Concerns are limited to the broad `pkill`, the default-all-interfaces HTTP server exposing /tmp briefly, and general local-file writes. Hence 'caution' rather than 'safe' or 'risky'.
- •Starts `python3 -m http.server 9292` from /tmp, which by default binds to 0.0.0.0 and exposes /tmp contents on the local network while running (ends only via `kill %1`).
- •`pkill -f "http.server"` is overly broad and could kill unrelated Python HTTP servers the user is running.
- •Launches Chrome headless and writes files to /tmp, ~/Documents/CVs, and ~/Desktop (local filesystem writes, expected but broad).
- •Invokes `open -a Preview` on generated PDFs.
Examples
Adapt my CV for this backend role at Stripe — here's the job description: [paste JD]. Emphasize TypeScript, Node.js and payments work.Regenerate my base CV: I just wrapped up a contract at Acme as a senior backend engineer and want it reflected.Make a version of my CV targeted at Nango, backend focus, and save it with the right history and PDF names.name: job:cv description: Regenerate your CV. Knows your full profile, stack, and experience. Adapts the CV for a specific vacancy or context if provided, or refreshes the base version. Invoke when you ask to update, adapt, or regenerate the CV. argument-hint: "[vacancy description or company name, optional]" user-invocable: true disable-model-invocation: false allowed-tools: Bash(cat *), Bash(open *), Bash(cp *), Bash(ls *), Bash("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" *)
CV Generator
Who You Are
<!-- Fill in your profile. This is used to adapt bullets and summary for each role. -->Your Name — Senior [Role], [N]+ years, based in [City, Country] (UTC[offset]).
Core stack: [e.g. TypeScript, Node.js, NestJS, Fastify, React, Next.js, Prisma, PostgreSQL] AI/agents: [e.g. Mastra, OpenAI, RAG pipelines, pgvector, LangChain — if applicable] Mobile/platforms: [e.g. React Native, Telegram Mini Apps — if applicable] DevOps: [e.g. Docker, GitHub Actions, AWS] English: [level]. Location: [city], remote only.
Current role: [Company] ([Start]–present) — [brief product description]. Stack: [tech stack].
Previous roles:
- [Company] ([dates]): [one-line description]
- [Company] ([dates]): [one-line description]
- [Company] ([dates]): [one-line description]
CV Files
- HTML source (canonical):
~/.claude/skills/job-cv/history/— always use the latest*.htmlin history as source of truth. - Working copy:
/tmp/cv.html— write here before generating PDF - PDF output:
~/Documents/CVs/YYYY-MM-DD_NN_YourName.pdf— date + sequence number for today (01, 02…), sortable - History archive:
~/.claude/skills/job-cv/history/
History naming convention
YYYY-MM-DD_<context>.html — where <context> is either base (no target company) or a slug of the company/role (e.g. stripe, nango-backend).
ls -lt ~/.claude/skills/job-cv/history/
How to regenerate PDF
⚠️ Do NOT use file:// URLs with Chrome headless — Chrome sandbox blocks local file access and silently renders an error page (~23KB PDF).
Correct workflow:
- Write HTML to
/tmp/cv.htmlusing the Write tool - Serve via Python HTTP server from
/tmp - Chrome headless fetches from
localhost - Copy PDF to output folder
pkill -f "http.server" 2>/dev/null; sleep 1
cd /tmp && python3 -m http.server 9292 &
sleep 1
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--headless=new --disable-gpu \
--no-margins --no-pdf-header-footer \
--print-to-pdf="/tmp/cv_out.pdf" \
"http://localhost:9292/cv.html" 2>&1 | tail -3
kill %1 2>/dev/null
DATE=$(date +%Y-%m-%d)
N=$(ls ~/Documents/CVs/${DATE}_*.pdf 2>/dev/null | wc -l | tr -d ' ')
N=$(printf "%02d" $((N + 1)))
OUTFILE=~/Documents/CVs/${DATE}_${N}_YourName.pdf
cp /tmp/cv_out.pdf "$OUTFILE"
cp /tmp/cv_out.pdf ~/Desktop/${DATE}_${N}_YourName.pdf
open -a Preview "$OUTFILE"
A valid PDF is ~150KB+. If output is ~23KB it's still an error page.
Instructions
- Read the latest HTML from history:
ls -lt ~/.claude/skills/job-cv/history/→ read the newest file. - Archive before edits: save current HTML to history as
YYYY-MM-DD_<context>.htmlusing the Write tool. - Edit the HTML (Write tool to
/tmp/cv.html):- Summary: rewrite to match the company's vibe and keywords from their JD
- Skills section: surface the most relevant technologies first, add keywords from JD naturally
- Bullets: keep all real content, only reorder emphasis — never invent metrics or facts
- If no arguments — user wants to update/refresh the base CV. Ask what changed.
- Never fabricate metrics or details. Only use information confirmed by the user or verifiable from the project.
- After editing, regenerate the PDF using the workflow above and open it in Preview.
- Show the user what changed (diff summary, not the full HTML).
CV style rules
- Bold only outcomes and scale (e.g. 1M+ MAU, all interns promoted) — not tech keywords
- No build tooling in bullets (Turborepo, pnpm workspaces — too narrow)
- Keep real tech depth: PostgreSQL, Redis, SSE, Prisma ORM, Supabase — these are real experience worth keeping
- No LLM model version strings in CV (write "OpenAI" or "LLMs", never "GPT-4" / "GPT-4o")
- "Maintained and extended" not "Shipped" if you inherited a running service
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/cv-generator-mrwakbj0/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/cv-generator-mrwakbj0' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/cv-generator-mrwakbj0/download' --output '.skill-downloads/cv-generator-mrwakbj0/SKILL.md.part' && mv '.skill-downloads/cv-generator-mrwakbj0/SKILL.md.part' '.skill-downloads/cv-generator-mrwakbj0/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Tools declared by the author (check availability in your agent): Bash(cat *), Bash(open *), Bash(cp *), Bash(ls *), Bash("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" *)
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
This file does not provide a usable name/description header for this native procedure. It remains available to download and inspect; use the manual method below.
Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/cv-generator-mrwakbj0/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
PDF Reader
Productivity
Read and extract text from PDF files, including documents, reports, contracts, and spreadsheets. Works with local files, URLs, and WhatsApp attachments. Use whenever PDF content is needed, even if not explicitly requested.
Discord Messaging Workflows
Productivity
Use the message tool to send, edit, and moderate Discord messages with interactive components.
Interactive Verdict Preview
Productivity
Generate an interactive HTML preview of keep/drop verdicts for maintainer review, then process the pasted feedback JSON.