Changelog Generator
Builds a Keep a Changelog section from a commit range — groups Conventional Commits into Added / Fixed / Changed and links the PRs behind them.
What this skill does
Key features
- Reads a commit range with git log and parses Conventional Commit types
- Groups entries under Keep a Changelog headings (Added, Fixed, Changed)
- Links each entry back to its PR or commit when the reference exists
- Refuses to invent entries — only what is actually in the range appears
- Flags commits it cannot classify instead of silently dropping them
Use cases
- Drafting a CHANGELOG.md section before cutting a release
- Turning a messy commit history into a readable summary of changes
- Keeping a consistent changelog format across a team
SKILL.md
The skill definition — its metadata and the exact instructions an agent follows. Copy it into a SKILL.md file in your agent's skills folder.
| name | changelog-generator |
|---|---|
| description | Generate a Keep a Changelog section from a git commit range grouped by Conventional Commit type. |
| allowed-tools | Read, Bash(git log:*), Bash(git diff:*), Bash(git tag:*) |
| output | CHANGELOG.md section |
| format | keep-a-changelog |
Musts
- Read the exact commit range with
git log <from>..<to>before writing anything. - Group entries under Keep a Changelog headings:
Added,Changed,Fixed,Removed,Deprecated,Security. - Map Conventional Commit types to sections (
feat-> Added,fix-> Fixed,refactor/perf-> Changed) and never invent an entry not present in the range. - Link each entry to its PR number or short commit SHA when that reference exists in the message.
- List any commit you cannot confidently classify under an
Uncategorizednote rather than dropping it.
Guidelines
- Skip
chore,ci, anddocscommits unless they change user-facing behavior. - Keep each line a single imperative phrase; strip the type prefix from the visible text.
- Put an
## [Unreleased]or## [x.y.z] - DATEheader only when the user gives you the version and date.
Output format
## [1.4.0] - 2026-07-07
### Added
- Rate-limit login attempts per IP (#412)
### Fixed
- Prevent duplicate emails on retry (#418)
### Changed
- Cache session lookups for faster auth (a1b2c3d)
FAQ
Does it write to CHANGELOG.md for me?
No. It prints a formatted section to the terminal. You review it and paste it into CHANGELOG.md yourself, so a human always approves what ships.
What if commits don't follow Conventional Commits?
It classifies what it can from the type prefix and lists anything ambiguous under an Uncategorized note so you can sort it manually. It never guesses a type just to fill a section.
Before running any skill, read its instructions and the tools it's allowed to use, and test it on a safe target first. See LLM security best practices.