release-notes-writer
Skill0 starsChanged 4 months agoMITView on GitHub
Turn a range of commits into release notes written for the people affected, grouped by what changed for them rather than by commit type, with breaking changes and required actions first. Use when cutting a release, updating a CHANGELOG, writing a deploy summary, or explaining what shipped.
- Reads credentials
11 other projects use a version of this.
Adopted by
Most recently taken up by
- jaskirat1616/grok-skillstheir own version, first seen Nov 1, 2026
- imohammadfaraz/claude-skills-for-product-managertheir own version, first seen Nov 1, 2026
- divysharma-code/Skillstheir own version, first seen Oct 22, 2026
- mohitkhandelwal242/ai-pm-operatortheir own version, first seen Oct 20, 2026
- kesslernity/awesome-mistral-vibe-skillstheir own version, first seen Oct 20, 2026
- JayRHa/agent-skillstheir own version, first seen Oct 15, 2026
Other versions11 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 11
- jaskirat1616/grok-skills★ 22same name
- imohammadfaraz/claude-skills-for-product-manager★ 19same name
- kesslernity/awesome-copilot-agent-skills★ 16same name
- JayRHa/agent-skills★ 12same name
- JayRHa/AgentSkills★ 12same name
- 45ck/deployment-release-skills★ 1same name
- DigitalVanguardSolutions/Skills★ 1same name
- divysharma-code/Skills★ 1same name
- kesslernity/awesome-mistral-vibe-skills★ 1same name
- santosomar/general-secure-coding-agent-skills★ 1same name
1 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository19 other files it gives its agents.
- client-secret-sweepSkill
- codebase-onboarding-mapSkill
- commitSkill
- crawlability-auditSkill
- dependency-outage-auditSkill
- deploy-drift-checkSkill
- empty-state-auditSkill
- env-drift-checkSkill
- fake-data-guardSkill
- honest-metrics-auditSkill
- migration-safety-reviewSkill
- money-math-reviewSkill
- n-plus-one-finderSkill
- prompt-injection-reviewSkill
- pr-reviewerSkill
- retry-safety-reviewSkill
- route-auth-sweepSkill
- timezone-reviewSkill
- webhook-safety-reviewSkill
The file
We split this skill into the rules it gives an agent
9 rules. 0 are common, 9 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 11 edited versions we read keep these.
9
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 26
Write for the reader, not for the repository.
- Distinctive: line 35
No tags? Ask what the range should be, or fall back to something defensible like "since the last deploy" or a date.
- Distinctive: line 46
Commit bodies are where the reasoning lives.
- Distinctive: line 107
Never write "various improvements" or "bug fixes".
- Distinctive: line 140
Every claim traceable to a real commit in the range.
- Distinctive: line 142
No section silently dropped.
- Distinctive: line 144
Read the ACTION REQUIRED section as someone who has never seen this codebase.
- Distinctive: line 152
If nothing user-visible shipped, say so plainly.
- Distinctive: line 159
Keep this line and others can find it too.
“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Release Notes Writer
Install
Save this file as ~/.claude/skills/release-notes-writer/SKILL.md, or
.claude/skills/release-notes-writer/SKILL.md to scope it to one repo. Claude
Code auto-discovers it. Invoke with /release-notes-writer or by asking "write
release notes for this release".
Why this exists
Most generated release notes are a reformatted git log. They list every commit, including the ones only the author cares about, and they bury the single line that actually matters ("you must set this variable or deploys fail") in the middle of forty bullets nobody reads.
Good release notes answer three questions in order: do I have to do anything, what is different for me, and what got fixed that was annoying me. Everything else is noise, and noise is why people stop reading changelogs.
Write for the reader, not for the repository.
Step 1 — Establish the range
git describe --tags --abbrev=0 2>/dev/null
git log <last-tag>..HEAD --onelineNo tags? Ask what the range should be, or fall back to something defensible like "since the last deploy" or a date. Never guess silently: notes covering the wrong range are worse than none.
Then read the actual changes, not only the subjects:
git log <range> --format='%H%n%an%n%s%n%b%n---'
git diff <range> --statCommit bodies are where the reasoning lives. A subject says what; a body says why, and why is what belongs in release notes.
Step 2 — Classify by IMPACT, not by prefix
Conventional-commit prefixes describe the author's intent, not the reader's
experience. A fix: can be a breaking change and a chore: can be the most
important line in the release.
Sort every commit into:
- ACTION REQUIRED — the reader must do something: set a variable, run a migration, update a call site, rotate a key. Always first, always explicit.
- BREAKING — behaviour they depend on changed.
- NEW — capability they did not have.
- IMPROVED — something existing is better, faster, or clearer.
- FIXED — a bug they might have hit. Describe the SYMPTOM, because that is how they will recognise it.
- INTERNAL — refactors, tests, dependency bumps, formatting. Collapse to a single count. Do not enumerate.
That last rule matters. Twelve dependency bumps listed individually push the one migration nobody can skip below the fold.
Step 3 — Detect what commits do not say
Some of the most important entries are never written in a commit subject. Check the diff directly:
git diff <range> -- '*.env.example' '*.env.sample' # new config
git diff <range> --stat -- '*migration*' '*schema*' # migrations
git diff <range> -- package.json | grep -E '^[-+].*"' # dep + engine changes
git diff <range> --diff-filter=D --name-only # deletionsA new key in .env.example is almost always ACTION REQUIRED even when its commit
says chore: tidy config. A deleted export is BREAKING even when its commit says
refactor.
Step 4 — Write entries a stranger can act on
For each entry: what changed, who it affects, and what to do. One line each where possible.
Bad, and typical:
- fix: update watermark logic
Good:
- Downloads no longer break Claude Code skills. The licence header was placed above YAML frontmatter, so skills lost their name and description on install. Re-download any skill bought before today.
The difference is that the second tells someone whether they need to act.
Rules for the prose:
- Lead with the effect, not the mechanism.
- Name the symptom for fixes. People search notes for the thing they experienced.
- Never write "various improvements" or "bug fixes". If it is not worth describing, it belongs in the INTERNAL count.
- Link the PR or commit at the end of the line, never at the start.
- Say the version and date. Notes without a date get quoted out of context.
Step 5 — Assemble
## <version> — <date>
### Action required
- <what to do, and what breaks if you skip it>
### Breaking
- <what changed, and how to adapt>
### New
- <capability, and why you would use it>
### Improved
- <what is better, and how you would notice>
### Fixed
- <symptom you may have hit, now resolved>
_Also: <n> internal changes (refactors, tests, dependency updates)._Omit any empty section. An empty heading is a small lie about the release having been bigger than it was.
Step 6 — Verify before publishing
- Every claim traceable to a real commit in the range. Do not invent an entry because a section looks thin.
- No section silently dropped. A skipped breaking change is the one failure that makes notes actively harmful.
- Read the ACTION REQUIRED section as someone who has never seen this codebase. Could they do it from this text alone? If not, add the command.
Rules
- Impact over prefix, always.
- Symptoms for fixes, effects for features.
- Collapse internal noise to a count; never pad a release to look bigger.
- If nothing user-visible shipped, say so plainly. "This release is internal maintenance" is a perfectly good changelog entry and it buys trust for the release where you do need attention.
From Toolbay. Free to use, modify, and share. Keep this line and others can find it too.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

