/changelog: update CHANGELOG.md in Keep a Changelog format
A Claude Code slash command that collects commits since the last release tag and adds categorized entries (Added, Changed, Deprecated, Removed, Fixed, Security) under the Unreleased section of CHANGELOG.md.
Skill in Engineering by AISkillHub Library
What it does
Keeping a changelog current is easy to skip until release day, when nobody remembers what changed. `/changelog` updates `CHANGELOG.md` from git history using the Keep a Changelog structure, so the file stays readable by people rather than being a raw commit dump.
**What it does** - Finds the latest tag with `git describe --tags --abbrev=0` (or uses a ref you pass) and reads commits since then, including merge commits and their PR titles. - Reads diffs where commit subjects are vague ("fix stuff", "wip") so the entry describes the actual change. - Sorts entries into `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed` and `Security`, under `## [Unreleased]`. - Skips changes with no effect on users or integrators: CI tweaks, internal refactors, test-only changes, formatting. It lists what it skipped so you can override. - Merges with existing Unreleased entries without duplicating them. - Creates the file with the standard header if it does not exist. - With `release <version>`, it renames Unreleased to `## [<version>] - <YYYY-MM-DD>` and adds a fresh empty Unreleased section.
**What it will not do** It does not create tags, bump version numbers in manifests, or publish anything. It does not rewrite entries from previous releases.
**Example entry** ``` ### Fixed - CSV export no longer drops rows whose description contains a line break (#318). ```
This is the developer-facing changelog. For a user-facing announcement, use a separate release notes command.
How to use it
1. Save the file below as `.claude/commands/changelog.md`. 2. Run `/changelog` to add entries for commits since the latest tag. 3. Run `/changelog v2.3.0` to use a specific starting ref instead of the latest tag. 4. When cutting a release, run `/changelog release 2.4.0` to move Unreleased entries into a dated version section. 5. Review the edit in your diff before committing.
Files
Save each file at the path shown, relative to your project root.