From empire-git
Generates canonical GitHub PR descriptions with structured sections (Why, What changed, Test plan). For use with gh CLI commands to create or edit PR bodies.
How this skill is triggered — by the user, by Claude, or both
Slash command
/empire-git:pr-descriptionThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
IMPORTANT: Output the rendered description verbatim. Do not summarize, paraphrase, or describe this skill. The caller pipes your output to `gh pr create` or `gh pr edit` unchanged.
IMPORTANT: Output the rendered description verbatim. Do not summarize, paraphrase, or describe this skill. The caller pipes your output to gh pr create or gh pr edit unchanged.
—), en dash (–), and the spaced hyphen (-); they read as machine written. Split into two sentences or use a comma or colon. Hyphenated words like off-by-one and Markdown list bullets stay fine.CONTEXT.md exists in the repo, use its vocabulary for domain terms.| Diff size | Budget |
|---|---|
| ≤ 100 LOC | ≤ 80 words, drop Test plan unless non-trivial |
| ≤ 500 LOC | ≤ 200 words, include only non-empty sections |
| > 500 LOC | ≤ 200 words, summarize at higher level, note the size in What changed |
Skip empty sections entirely.
Render between markers. Preserve everything outside markers when updating.
<!-- pr-description:start -->
## Why
1–2 sentences. Problem or goal. Link issue if a commit references one.
## What changed
3–5 bullets. Behavior changes only — what users or callers experience differently.
Skip mechanical changes (renames, moves, test additions) unless they affect behavior.
Pick the most important changes; don't enumerate everything.
## Test plan
Manual steps to verify the change locally.
Omit for simple diffs or when the behavior is self-evident.
Never list CI steps (lint, typecheck, unit tests, CI pipelines).
<!-- pr-description:end -->
Default to Why / What changed / Test plan only. Add an extra ## section only when the change carries something a reviewer must not miss and no existing section fits — e.g. a breaking change, a required migration, a new env var or dependency, a rollback step, or a security-relevant note. Never add one by default or to pad a thin PR. Prefix breaking changes with BREAKING:.
When the branch was cut from another feature branch (not from main/master), or when the user provides a parent PR URL, add before the opening marker:
Depends on: <PR URL or branch name>
Detect by running git log --oneline <default-branch>..HEAD and checking if the branch base differs from the repo default branch.
If an existing body is provided:
<!-- pr-description:start --> and <!-- pr-description:end -->.Fixes #N, task lists, Depends on: lines).The rendered body is the only thing piped to gh. Labels and assignee are set with flags on the same gh pr create/gh pr edit call — never inside the body.
--assignee @me on create, or gh pr edit --add-assignee @me on an existing PR.gh label list. Map type (feat/fix/docs/chore), affected area/scope, and size (only if the repo uses size labels) to the closest existing label.--label on create or gh pr edit --add-label. If no existing label fits, apply none — do not force a wrong one.docs/agents/issue-tracker.md) explicitly defines the label set agents may create. Absent that file, the existing labels are the only allowed set.Formatting only. No behavior change. between markers.| Bad | Good |
|---|---|
| "This PR adds support for…" | "Add support for…" |
| "We refactor auth to…" | "Refactor auth: extract token validation into…" |
| "Various fixes" | (list each) |
| "Fixes bug" | "Fix off-by-one in pagination cursor when total % limit == 0" |
| "Updated tests" | (omit — visible in diff) |
| "Renamed X to Y" | (omit unless rollout-relevant) |
| "Ran lint / CI / tests" | (never include in test plan) |
npx claudepluginhub marcoskichel/empire --plugin empire-gitCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.