Maintain Your CHANGELOG.md with Claude
A CHANGELOG.md in Keep a Changelog format is the canonical place developers look for what changed between versions. Stop writing it by hand — pipe your git log and let Claude produce the entry.
git log v1.2.0..HEAD --oneline | claude -p "
Format these commits as a CHANGELOG.md entry for version 1.3.0
following the Keep a Changelog format. Group into Added, Changed,
Fixed, and Removed sections. Today's date is $(date +%Y-%m-%d).
Skip merge commits and internal chore entries.
"
Claude reads the raw commits, filters out noise like merge commits and typo fixes, infers intent from the messages, and produces a clean categorised entry ready to paste into your file:
## [1.3.0] - 2026-03-25
### Added
- User profile avatars with automatic resizing
### Fixed
- Cart total not updating when quantity changes
- Password reset email not sending on staging
Works best with conventional commit messages (feat:, fix:, chore:) but Claude handles natural-language commits too — it's good at inferring whether "tweak button styles" belongs under Changed or Fixed.
To keep this consistent, add a shell alias that always targets your last tag:
alias changelog='git log $(git describe --tags --abbrev=0)..HEAD --oneline | claude -p "Generate a Keep a Changelog entry for the next version. Group into Added, Changed, Fixed, Removed."'
Run it before every release, paste the output, commit — your CHANGELOG practically writes itself.
Log in to leave a comment.
The /security-review command scans your uncommitted changes for injection vectors, auth gaps, hardcoded secrets, and other common vulnerabilities.
The SessionStart hook fires when any session begins or resumes, making it ideal for loading environment variables and running one-time setup scripts.
Ask Claude to write property-based tests for your functions using fast-check — it identifies the mathematical invariants in your code and generates tests that cover inputs you'd never enumerate by hand.