Changelog Sync After Ship
FeaturedOn demandAbout Changelog Sync After Ship
This loop is started manually after a release goes out, to keep CHANGELOG.md in line with what actually changed. Each round lists the commits since the last tag and checks whether [Unreleased] covers every user-visible change, for up to 3 rounds.
Key features
- 01Compares commits from the most recent tag
- 02Falls back to the last 20 commits when no tag exists
- 03Rechecks with git log -5 --oneline each round
- 04Manual trigger, capped at 3 rounds
Use cases
- 01Writing the changelog after a release
- 02Checking for omissions after merging a batch of features
- 03Confirming the change scope before drafting release notes
- Goal
- The [Unreleased] section of CHANGELOG.md accurately records every change in this ship.
- Exit when
- Stop when the changelog covers all user-visible changes.
- Between iterations run
- git log -5 --oneline
Launch prompt
Paste into Claude Code. The agent repeats the steps below until the exit condition is met.
Start the "Changelog Sync After Ship" loop. Goal: The [Unreleased] section of CHANGELOG.md accurately records every change in this ship. Max iterations: 3. Step 1: List commits since the tag — Run the diff command to get the commits from the last tag (or HEAD~20 if there is no tag) up to HEAD. This list defines the scope of the ship. `git log $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~20)..HEAD --oneline` Step 2: Compare with existing entries — Read each commit against the [Unreleased] content of CHANGELOG.md and note entries that are missing, stale or inaccurate. Step 3: Update the changelog — Add or correct entries only for user-visible changes; internal refactors are left out. Step 4: Check recent commits — Run git log -5 --oneline to confirm no recent change is unrecorded. If gaps remain, start another round. Between iterations run: `git log -5 --oneline` Exit when: Stop when the changelog covers all user-visible changes.
Steps
Each round runs in order; if the exit condition isn’t met, another round starts, up to 3.
Run the diff command to get the commits from the last tag (or HEAD~20 if there is no tag) up to HEAD. This list defines the scope of the ship.
git log $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~20)..HEAD --onelineRead each commit against the [Unreleased] content of CHANGELOG.md and note entries that are missing, stale or inaccurate.
Add or correct entries only for user-visible changes; internal refactors are left out.
Run git log -5 --oneline to confirm no recent change is unrecorded. If gaps remain, start another round.
Supported agents
Coding agents that can run this loop directly.