Release Notes Writer
When to invoke
- "Generate release notes for v3.2."
- "What's in this release? Group changes for the changelog."
- "Draft user-facing notes between v1.4.0 and main."
Inputs needed
- Source — one of:
- CSV / JSON of merged PRs (number, title, body, labels, author, url)
- Two git refs (e.g. v1.4.0..HEAD) — uses
git log
- Audience —
public(default; drops chore/internal) orinternal(keeps everything). - Version + date.
Workflow
- Ingest the change list.
- Classify each item: Feature, Improvement, Fix, Breaking, Internal.
- Use Conventional-Commit prefixes (
feat:,fix:,chore:,BREAKING CHANGE) when present. - Otherwise infer from labels and title verbs.
- Use Conventional-Commit prefixes (
- Filter out internal items if
audience=public. - Render:
RELEASE_NOTES.md— sectioned Markdown with PR linksSLACK.md— 3-bullet TL;DR
- Highlight breaking changes at the top with explicit migration callouts.
Output format
## Highlights
## Breaking changes
## New features
## Improvements
## Bug fixes
## Internal (omitted from public notes)
Guardrails
- Never invent or rewrite a PR title beyond minor copy editing.
- Always link back to the PR number / URL.
- Breaking changes get their own section even if there's only one.
Reference code
generate.py reads CSV/JSON or git log, classifies, and writes both Markdown outputs.