Install
openclaw skills install @nanookai/keepachangelogMaintain CHANGELOG.md in Keep a Changelog 1.1.0 format. Use when the user asks to create a changelog, record recent changes or draft release notes, cut or tag a release, or audit an existing changelog — and before editing any CHANGELOG.md for another reason.
openclaw skills install @nanookai/keepachangelogA changelog is written for one reader: a human, mid-upgrade, deciding what this release means for them. Every rule below serves that reader.
## [Unreleased] always sits first, collecting changes for the next release.## [X.Y.Z] - YYYY-MM-DD (ISO 8601 date).### Added / ### Changed / ### Deprecated / ### Removed / ### Fixed / ### Security, in that order, listing only the categories that have entries:
## [1.0.1] - 2026-06-14 [YANKED], with a line saying why it was pulled.An entry earns its place by being notable: the reader would notice the change or act on it. Internal refactors, CI tweaks, and invisible dependency bumps fall below the bar; security fixes are always above it.
CHANGELOG.md.git tag (fall back to version history in the package manifest); create a dated section per version, newest first. For a history deeper than a handful of versions, ask the user how far back to backfill.git log <prev-tag>..<tag>, applying the Writing entries rules.Done when: the file matches the skeleton's shape, every version section has an ISO date and a resolving link reference, and ## [Unreleased] sits at the top.
CHANGELOG.md if Unreleased has entries) to HEAD.git log over that range commit by commit, judging each against the notable bar.## [Unreleased].Done when: every commit in the range is accounted for — turned into an entry, folded into an existing entry, or judged below the notable bar.
## [Unreleased] to ## [X.Y.Z] - <today> and open a fresh, empty ## [Unreleased] above it.[Unreleased] compares <new-tag>...HEAD; the new version compares <previous-tag>...<new-tag>.Done when: an empty Unreleased sits at the top, the new section carries today's date and every former Unreleased entry, and both updated references resolve.
git tag against version sections: a released version with no section is a violation — the reader mistakes the gap for "nothing changed".Done when: every rule has been checked against every section, and each violation found is fixed or reported.