writing-release-noteslisted
Install: claude install-skill it-bens/cc-port
# Writing Release Notes
## Requirements
- **Version**: a tag like `v0.5.0`. Ask if missing. Accept with or without leading `v`; emit canonical `v` form in output.
- **Working directory**: cc-port repository root.
- Repository must be a git checkout with tags fetched (`git fetch --tags` if unsure).
- cc-port releases are tag-driven via goreleaser; there is no release PR to read from. Aggregate from the tag range.
## Workflow
```dot
digraph release_notes {
entry [shape=doublecircle, label="Version?"];
fetch_tags [shape=box, label="List tags +\ncheck target"];
prev_exists [shape=diamond, label="Previous tag\nexists?"];
first_release [shape=box, label="Range =\ninitial-commit..HEAD\n(note in summary)"];
target_exists [shape=diamond, label="Target tag\nexists?"];
range_tag [shape=box, label="Range =\nprev..target"];
ask_head [shape=box, label="AskUser:\nconfirm HEAD"];
range_head [shape=box, label="Range =\nprev..HEAD"];
list_prs [shape=box, label="List merged PRs"];
fetch_pr [shape=box, label="Fetch PR details"];
categorise [shape=box, label="Categorise"];
filter [shape=box, label="Filter"];
breaking [shape=diamond, label="Breaking?"];
flag_break [shape=box, label="Require Breaking\nChanges section"];
title [shape=box, label="Generate title"];
draft [shape=box, label="Draft notes"];
antislop [shape=box, label="Anti-slop pass"];
clean [shape=diamond, label="Clean?"];
present [shape=doublecircle, label=