Updates GitHub Release notes with human-readable summaries AFTER release-please creates a release. Use when user says "update release description", "improve release notes", or after merging a release-please PR. NEVER modifies the release PR body (breaks parsing).
This skill inherits all available tools. When active, it can use any tool Claude has access to.
This skill creates human-readable summaries for release-please GitHub Releases.
DO NOT edit the release-please PR body. Release-please parses specific patterns from the PR body to extract version information. Modifying the PR body (especially wrapping content in <details> tags or changing headers) will break version parsing and result in:
⚠ Failed to find version in release notes⚠ Failed to parse releasesReference: release-please PR body parsing expects <summary> tags to contain version patterns like 1.1.0 or component: 1.1.0.
You MUST complete each step in order. Mark each complete before proceeding.
# List recent releases
gh release list --limit 5
Look for releases with empty or minimal descriptions. Check a specific release:
gh release view <TAG> --json body,tagName,name
Checkpoint: State the release tag (e.g., "Updating Release myapp-v1.1.0")
If the release body already has good content, confirm with user before overwriting.
Get the version's changelog section from CHANGELOG.md:
# Read CHANGELOG.md and find the version section
cat CHANGELOG.md
Extract ALL (#N) references from the version section:
# Example: extract PR numbers from changelog content
echo '<CHANGELOG_SECTION>' | grep -oE '\(#[0-9]+\)' | grep -oE '[0-9]+' | sort -u -n
Checkpoint: Report "Found N PRs: #X, #Y, #Z..."
⚠️ CRITICAL: Fetch the actual PR descriptions, not just titles!
For EACH PR number from Step 2, fetch full details:
gh pr view <NUMBER> --json number,title,body
Run in parallel for efficiency.
Checkpoint: List each PR with its title AND a snippet of its body:
Fetched N PR descriptions:
- #84 "Add row numbers column": "## Summary\nAdded row numbers to help users track position..."
- #87 "Add pagination": "## Changes\n- New Pagination component\n- Supports page size selection..."
VIOLATION CHECK:
gh pr view for EACH #N referenceSTOP. Answer these questions before continuing:
gh pr view calls did you make in Step 3? ___If the numbers don't match, you skipped PRs. Go back to Step 3.
Using PR BODIES, categorize:
User-facing (include):
Internal-only (exclude):
Checkpoint: List what's included vs excluded.
Audience: Users, PMs, executives — NOT developers.
Forbidden: component, SSR, tRPC, virtualization, CLS, refactor, robust, seamless, enhanced
Format:
### What's New
- [2-4 bullets, plain language, what users can DO]
### What's Changed
- [2-4 bullets, improvements/fixes users notice]
Translations:
| PR Body Says | You Write |
|---|---|
| "Virtualized grid for 1000+ items" | "Large lists load faster" |
| "Eliminated CLS with SSR skeletons" | "Pages no longer jump during load" |
| "Refactored Button variants" | (OMIT) |
Checkpoint: Draft complete.
Update the GitHub Release notes directly using gh release edit:
gh release edit <TAG> --notes '### What'\''s New
- First bullet
- Second bullet
### What'\''s Changed
- First bullet
- Second bullet
---
<details>
<summary>Full Changelog</summary>
## [X.Y.Z](compare-link) (date)
### Features
- feature 1
- feature 2
### Bug Fixes
- fix 1
- fix 2
</details>'
Important: The full changelog from CHANGELOG.md goes inside the <details> block.
gh release view <TAG> --json body -q '.body' | head -30
Checkpoint: Summary at top, full changelog in collapsible section.
These indicate you skipped steps or did something wrong:
| If you did this... | You violated... |
|---|---|
| Modified the release PR body | CRITICAL - breaks release-please parsing |
Used git log for commit info | Step 3 - must fetch PR bodies |
| Wrote summary from PR titles | Step 3 - titles are insufficient |
| Didn't list fetched bodies | Step 3 checkpoint |
| Jumped to writing summary | Steps 2-4 |
| Used forbidden words | Step 5 rules |