mcpField

Changelog Sync After Ship

FeaturedOn demand
DocsUp to 3 rounds

About 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

  1. 01Compares commits from the most recent tag
  2. 02Falls back to the last 20 commits when no tag exists
  3. 03Rechecks with git log -5 --oneline each round
  4. 04Manual trigger, capped at 3 rounds

Use cases

  1. 01Writing the changelog after a release
  2. 02Checking for omissions after merging a batch of features
  3. 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.

prompt.md
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.

01
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
02
Compare with existing entries

Read each commit against the [Unreleased] content of CHANGELOG.md and note entries that are missing, stale or inaccurate.

03
Update the changelog

Add or correct entries only for user-visible changes; internal refactors are left out.

04
Check recent commits

Run git log -5 --oneline to confirm no recent change is unrecorded. If gaps remain, start another round.

Not met → next roundExits when met

Supported agents

Coding agents that can run this loop directly.

Claude Code
Cursor

Comments

Markdown supported