---
name: pr-summarizer
description: Use when opening a PR — produces a clean PR description (what / why / how to verify / risks) from a branch diff against base.
version: 0.1.0
status: experimental
risk: low
tags: [engineering, read-only, writes-files]
---
# PR Summarizer
## When to use
- Just before opening a PR
- After force-pushing a substantive update to an existing PR (refresh description)
## When NOT to use
- Drafts the user is still iterating on (the summary will go stale immediately)
- Massive diffs (> 1000 lines) — ask the user to scope first
## Inputs
| Name | Type | Required | Notes |
|---|---|---|---|
| `base` | string | no | default `origin/main` |
| `branch` | string | no | default current `HEAD` |
## Outputs
A markdown PR body with sections: **Summary**, **Why**, **How tested**, **Risks**, **Linked**.
## Workflow
1. `git diff ...HEAD --stat` and `git log ..HEAD --oneline` to see scope
2. `git diff ...HEAD` for content
3. Group changes by area (one bullet per logical concern, not per file)
4. Pull "why" from commit messages + linked tickets if mentioned
5. Identify test artifacts touched; surface as **How tested** (or flag if none)
6. Risks: any High-risk paths touched? auth, billing, migrations? mention.
7. Linked: parse `Fixes #` / `Refs #` from commits
## References
- [`references/pr-template.md`](references/pr-template.md)
## Success criteria
- Description ≤ 25 lines
- Every "why" claim is supported by a commit message or visible in the diff
- Risks section honest about unknowns ("untested in production data shape")
## Failure modes
- No commit messages worth quoting → "Why" sourced from diff only; flag this
- Diff touches secrets / `.env*` → STOP and surface; PR shouldn't include them