pr-description
Canonical PR description template for every PR shipped from this harness, with a validator that enforces the required sections. Use when opening or editing a PR (the /ship and /forge-ship steps), or w
SKILL.md.claude/skills/pr-description/SKILL.md
GitHubpr-description
The single source of truth for how every Agent Forge PR body is written. All ship paths
(/ship, /forge-ship, /forgemaster's ship phase) compose the PR body from this template and
validate it before gh pr create.
The template lives at references/pr-template.md — edit that file to change the standard; everything else references it.
When to Use
- Any time a PR is opened or its body edited from this harness.
- When the user asks for "the PR format / template" or to check that a PR body conforms.
Required sections
Every PR body MUST contain these H2 headings, each filled (no leftover placeholders):
| Section | Holds |
|---|---|
## What Changed |
The change in plain language + concrete edits |
## Why It's Needed |
Motivation: the problem, need, or bug it addresses |
## How It Was Tested |
Gates run, automated suites, manual steps |
## Test Evidence |
Real proof — pasted command output / counts, not a claim |
## Risk & Rollback |
Blast radius and the undo path |
## Linked Issues & AC Trace |
Closes <beads-id> + acceptance-criterion → evidence table |
The first four are the harness baseline (what / why / how-tested / evidence). Risk & Rollback
and Linked Issues & AC Trace are the harness additions — they make a PR reviewable (knowable
blast radius) and traceable (every acceptance criterion mapped to evidence), matching the
Beads-first, test-evidence rules in CLAUDE.md.
Process
1. Start from the template
cp .claude/skills/pr-description/references/pr-template.md .tmp/work/pr-body.md
Fill every section. For a /forge-ship run, the ship report (reports/<slug>-ship.md) already
contains the narrative and walkthrough — map it into the template sections rather than duplicating
prose. Paste actual test output into ## Test Evidence; never green-wash.
2. Validate before creating the PR
bun run .claude/skills/pr-description/scripts/check-pr-body.ts .tmp/work/pr-body.md
The validator emits { ok, data: { present, missing, empty }, error } and exits non-zero if any
required section is missing or left as a placeholder. Fix and re-run until ok: true.
3. Open or update the PR
gh pr create --base <base> --title "<title>" --body "$(cat .tmp/work/pr-body.md)"
# or, on an existing PR:
gh pr edit <n> --body "$(cat .tmp/work/pr-body.md)"
To check a PR that already exists:
gh pr view <n> --json body -q .body | bun run .claude/skills/pr-description/scripts/check-pr-body.ts -
Exit Criteria
- PR body contains all six required sections, each filled.
-
## Test Evidenceholds real output, not a promise. -
check-pr-body.tsreportsok: true.