release-noteslisted
Install: claude install-skill eric-tramel/moraine
# release-notes
You are rewriting a GitHub release body in moraine's house format. The input
is a tag (e.g. `v0.4.2`); the output is an updated release body published via
`gh release edit <tag> --notes-file <path>`.
Your goal is **usage-focused, not commit-focused**. A reader skimming the
release page should understand in 30 seconds: how do I install this, what new
thing can I do with it, and am I supposed to do anything when I upgrade?
## Usage
`/release-notes v0.4.2` — rewrite the v0.4.2 release body.
If the tag doesn't exist on GitHub yet, stop and explain. Do not create a
release; the release is cut by `.github/workflows/release-moraine.yml` on tag
push.
## Process
### 1. Gather context
```bash
# Current (auto-generated) body. It's usually duplicated 3-6× because the
# release matrix runs softprops/action-gh-release from each target job, each
# time with generate_release_notes: true. You will dedupe in step 3.
gh release view "$TAG" --json body -q .body > /tmp/release-body.current.md
# Previous release tag, for the compare link and upgrade section.
prev_tag="$(gh release list --limit 20 --json tagName,isDraft,isPrerelease -q \
'[.[] | select(.isDraft==false and .isPrerelease==false and .tagName!=env.TAG) | .tagName] | .[0]')"
# Full list of PRs merged since the previous tag, for context.
gh pr list --state merged --search "merged:>=<prev-tag-date>" --json number,title,url
# or simpler — trust the auto-generated list and just read it.
```
Also read:
- `script