| name | update-changelogs |
| description | Update CHANGELOG.md files and cabal version numbers for cardano-ledger packages changed since origin/master, following PVP and project RELEASING.md rules.
TRIGGER when: about to add, modify, or remove an entry in any `CHANGELOG.md` under this repository; about to bump a `version:` field in any `*.cabal`; user asks to update changelogs, bump versions, or prepare a release/PR; finishing a task that modified Haskell source under `eras/<era>/impl`, `eras/<era>/test-suite`, or `libs/<lib>` (so a changelog entry is likely warranted).
SKIP: read-only inspection (no edits planned); only test scenarios changed (no API changes); only value/default changes; user is explicitly hand-editing a CHANGELOG and has not asked the agent to do it; the changed file is in an excluded package per RELEASING.md.
|
| argument-hint | [package-root] |
| allowed-tools | Bash(git *), Read, Grep, Glob, Edit |
| model | opus |
| effort | max |
| hooks | {"Stop":[{"hooks":"[Truncated]"}]} |
Update CHANGELOG.md files and .cabal version numbers for packages changed since origin/master.
If $ARGUMENTS is non-empty, restrict to that package root (e.g. libs/cardano-ledger-core). Otherwise, update all affected packages.
Reference docs:
- PVP rules: https://pvp.haskell.org/
- Project versioning & release process:
RELEASING.md (excluded packages, test packages, upper/lower bound policy, changelog conventions, version bump logic)
Changed files (pre-fetched)
!`git diff origin/master... --name-only`
Workflow
Step 1 — Identify affected packages
Map each changed file to its package root:
eras/<era>/impl/ → era implementation package
eras/<era>/test-suite/ → era test-suite package
libs/<lib>/ → library package
Ignore files in excluded packages (see RELEASING.md) and files outside any package. If $ARGUMENTS was given, use only that package.
Step 2 — Read current version
For each package, read the top-most ## <version> heading in CHANGELOG.md (the current unreleased version) and the version: field in the .cabal file.
The .cabal version may lag behind the CHANGELOG. After a CHaP release, ./scripts/bump-changelogs.sh adds a new empty patch-bump section to the CHANGELOG but does not update the .cabal. The CHANGELOG version is authoritative. When you bump, update both.
Step 3 — Classify the changes
Read git diff origin/master -- <package-root> excluding CHANGELOG.md and .cabal changes. Classify using PVP rules (see https://pvp.haskell.org/) with the following project-specific caveats:
Not an API change (no bump, no entry)
These are never API changes regardless of where they appear:
- Value changes — changing a record field value, a default, a constant, or any expression. Only changes to types, signatures, and the set of exports matter.