Claude Code Skill
Changelog Writer
Use when writing release notes, a CHANGELOG.md entry, a version summary or "what's new" text from git history, merged pull requests or tickets, or deciding the next semantic version number.
Install
npx skills add WST2002/claude-code-skills --skill changelog-writer
Or copy skills/changelog-writer into ~/.claude/skills/.
Overview
Release notes tell users what changed for them and what they must do. Build them from the real history between two versions, group by impact, and write in the reader's language, not in commit-speak.
Method
- Find the range: last release tag to now —
git describe --tags --abbrev=0, thengit log <tag>..HEAD --oneline --no-merges. With GitHub:gh pr list --state merged --search "merged:>=<date>"orgh release view. - Read each change, not just the subject line, when the impact is unclear (
git show <sha> --stat). - Classify each change: Added, Changed, Deprecated, Removed, Fixed, Security (Keep a Changelog). Drop internal-only changes (refactors, CI, tests) unless the audience is developers of the project.
- Decide the version (Semantic Versioning): any breaking change → major; new backward-compatible feature → minor; only fixes → patch.
- Rewrite for the audience: user-facing benefit first, one line each, link the PR or issue.
- Write breaking changes with migration steps.
- Follow the existing CHANGELOG.md style if the project has one.
Format
## [2.4.0] - 2026-10-16
### Added
- Export orders to CSV from the Orders page. (#412)
### Changed
- Search now matches partial words. (#405)
### Fixed
- Coupon discount no longer disappears when the cart quantity changes. (#398)
### Security
- Upgrade `jsonwebtoken` to 9.0.2 to fix token verification bypass. (#401)
### Breaking changes
- `GET /api/orders` now returns paginated results. Read items from `data` and
pass `cursor` to fetch the next page. (#410)
Dates in ISO format. Newest version at the top. Omit empty sections.
Common mistakes
- Copying commit subjects ("fix stuff", "wip") into release notes.
- Hiding breaking changes inside "Changed" with no migration steps.
- Listing internal refactors that users do not care about.
- Choosing a minor version for a release that breaks clients.
- Mentioning features from unmerged branches.