cv-claw
Use this skill when the user wants to ingest a resume or CV into structured JSON, tailor an existing resume for a specific job, tweak how a rendered resume…
Draft a pull-request message (title + Markdown body) for the current branch into main. Use when the user asks for a "PR message", "PR description", "pull request message", or says "write a PR message" / "give me a PR message". Output is Markdown text only — does not call `gh` or
$ npx -y skills add farhan0167/cv-claw --skill pr-message --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/pr-messageContext preview
The summary Claude sees to decide when to auto-load this skill.
Draft a pull-request message (title + Markdown body) for the current branch into main. Use when the user asks for a "PR message", "PR description", "pull request message", or says "write a PR message" / "give me a PR message". Output is Markdown text only — does not call `gh` or
name: pr-message description: Draft a pull-request message (title + Markdown body) for the current branch into main. Use when the user asks for a "PR message", "PR description", "pull request message", or says "write a PR message" / "give me a PR message". Output is Markdown text only — does not call `gh` or open a PR.
Draft a PR message for merging the current branch into `main` and hand the user a single fenced Markdown block they can paste into the GitHub UI or into `gh pr create --body-file -`.
This skill is **repo-local** to py-cv-claw. It does not call `gh` and does not open or edit PRs.
`git rev-parse --abbrev-ref HEAD` returns)
Print what you inferred at the top of your reply. Do not ask the user to confirm base/head unless head is `main` itself (in which case stop and ask — there's nothing to merge).
1. **Discover scope.** Run these in parallel and read the results:
triple-dot: changes on HEAD relative to the merge base, ignoring work added to `main` since the branch diverged).
verify commit messages tell the truth. Commits sometimes mis-describe their scope; the diff is ground truth.
2. **Sanity-check the state.** Stop and tell the user (don't draft) when any of these hold:
diff. Offer: "Want me to describe only commits authored on this branch (`git log main..HEAD --no-merges`), or include the merges?"
3. **Decide whether to ask for framing.** Ask the user *before* drafting only when:
don't unify them (e.g. one commit is a dep bump, another is an unrelated feature, no shared narrative).
terse / generic.
Otherwise: draft silently. Most branches in this repo are tightly themed — don't manufacture ambiguity.
4. **Pick the title.**
(`feat:`, `fix:`, `refactor:`, `docs:`, `chore:`). Fall back to descriptive prose if commits are mixed types.
should understand what's in this PR without opening it.
5. **Write the body.** Exactly three H2 sections, in this order:
## Summary
1–2 sentences. The "why," not the "what." Name specs implemented,
issues closed, or design docs referenced — but only if they're
actually present in the diff or commit messages. Never invent links
or issue numbers.
## Changes
Grouped bullets by area. Group labels are derived from the diff;
typical groups in this repo:
- **Code** — anything under `src/cvclaw/`.
- **Skills** — `skills/cv-claw/` and `.claude/skills/`.
- **Docs** — README.md, CLAUDE.md, `.claude/specifications/`.
- **Templates** — `src/cvclaw/templates/` (the bundled root).
- **Build/CI** — pyproject.toml, Makefile, .github/.
Skip groups with no changes. Each bullet ≤1 line; reference files
or subsystems (`src/cvclaw/cli.py`, "ingest.md") rather than commit
hashes. Bold the group label.
## Test plan
Markdown checklist. Use only steps the repo actually supports —
read `Makefile` and `pyproject.toml` to ground each step. For this
repo that's typically:
- [ ] `make lint` is clean.
- [ ] `uv run cv-claw render resumes/example.json` succeeds.
- [ ] Any spec-specific manual smoke tests called out in the
relevant `.claude/specifications/SPEC-*.md`.
Do not invent CI jobs, test suites, or pytest invocations that
don't exist in this repo.6. **Output.** Reply with:
drafted from N commit(s) across M changed file(s).`
title on the first line, a blank line, then the body. This makes the whole thing one copy-paste.
<title> ## Summary <1–2 sentences> ## Changes - **<Group>** — <bullet> - **<Group>** — <bullet> ## Test plan - [ ] <step> - [ ] <step>
`gh pr create` invocations; this skill produces hand-drafted Markdown the user pastes manually.
section. Caveats fold into Summary or as inline bullets in Changes.
(no test suite exists, no CI workflow exists), don't list it.
commits.** If `.claude/specifications/SPEC-foo.md` is touched in this PR, mention it; if it isn't, don't.
wants the PR opened, they will say so separately and the global `gh pr create` flow handles it.
tell the user there's nothing to merge.
Hand Claude a PDF, a screenshot, or a job posting and ask in plain language — *"turn this into a resume," "tailor it for this role," "make the name bigger"* — and get back a polished, print-ready HTML document you can open and export to PDF.