Changelog
Skill Cairn-ai-tooling/agent-collab-tooling/skills/changelog
Reusable Claude Code skills that help AI agents collaborate: handoffs, shared task tracking, code-review exchange, ADRs, and changelogs. Installable as a plugin.
npx -y skills add Cairn-ai-tooling/agent-collab-tooling --skill changelogAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when recording a notable change — adds a correctly-placed entry under [Unreleased] in CHANGELOG.md (Keep a Changelog format), reusing the right ### section without duplicating headings.
SKILL.md
3.9 KB, as published. Nobody here has run it
Changelog
Maintains CHANGELOG.md in Keep a Changelog 1.1.0
format with SemVer. Changes accumulate under ## [Unreleased] and
are cut into a version at release time (not by this skill).
The single most common bug this skill must avoid: creating a second ### <Type> heading
when one already exists. Always append to the existing subsection.
Inputs
- Entry text — what changed, user-facing, concise (include why when it isn't obvious).
- Change type — one of:
Added,Changed,Deprecated,Removed,Fixed,Security. Infer from the entry; ask only if genuinely ambiguous.
Canonical section order
### Added → ### Changed → ### Deprecated → ### Removed → ### Fixed → ### Security
When creating a missing subsection, insert it so the subsections stay in this order.
Procedure
-
Locate
CHANGELOG.mdat the repo root. If missing, scaffold it:# Changelog All notable changes to this project are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] -
Sanity-check the shape. If the file exists but is clearly not Keep-a-Changelog shaped (no
# Changelog/ no## [version headings), report and stop — do not mangle an unrecognized file. -
Ensure
## [Unreleased]exists. If absent, create it directly under the header block, above the most recent released version section. -
Find or create the
### <Type>subsection within[Unreleased]:- If a
### <Type>heading already exists under[Unreleased], use it — do not add another. (This is the critical rule.) - If it doesn't exist, create it in the canonical order above, with a blank line after the heading (markdownlint MD022/MD032).
- Scope the search to the
[Unreleased]section only — a### Addedunder an older released version is unrelated and must be left alone.
- If a
-
Append the entry as a new
-list bullet at the end of that subsection. Wrap at ~100 columns; indent continuation lines to align under the text (hanging indent). -
Leave released version sections untouched. Do not commit — leave that to the user.
Worked example
Given:
## [Unreleased]
### Added
- New decision-record skill.
Running with entry "changelog skill" / type Added must produce (one ### Added, two
bullets) — not a duplicate heading:
## [Unreleased]
### Added
- New decision-record skill.
- New changelog skill.
Running with entry "fix numbering gap handling" / type Fixed adds a new subsection in
canonical order (Fixed comes after Added):
## [Unreleased]
### Added
- New decision-record skill.
- New changelog skill.
### Fixed
- Fix numbering gap handling.
Acceptance checklist
- Appending to an existing
### Addedadds a bullet and leaves a single### Addedheading (no duplicate). - A missing subsection is created in canonical order (e.g.
FixedafterAdded). - A
### Addedunder a released version is never confused with the one under[Unreleased]. - Re-running is idempotent in shape: it never creates duplicate
### <Type>headings. - A non-Keep-a-Changelog file is reported, not rewritten.
Related: pairs with [[decision-record]] when a change also warrants recording its rationale.
Gives 1 of the 12 instructions most readme changelog skills give
Counted across 471 of the 478 authors here whose files we hold, read 2026-08-06
- follow the Keep a Changelog formatin 31 of 471, across 26 files
- omit empty sectionsin 21 of 471
- Run from the git repository rootin 20 of 471, across 7 files
- save output directly to CHANGELOG.mdin 20 of 471, across 7 files
- Group commits into logical categoriesin 19 of 471, across 6 files
- Review the generated changelog before publishingin 19 of 471, across 6 files
- Apply changelog guidelines and brand voicein 18 of 471, across 5 files
- Exclude internal commits like refactoring and testsin 18 of 471, across 5 files
- Specify date ranges for focused changelogsin 17 of 471, across 4 files
- Convert technical commits into customer languagein 17 of 471, across 4 files
- group commits by conventional commit typein 14 of 471
- insert new entry below unreleased sectionhere, and in 14 of 471
Said here and by no other author read
- infer the change type from the entry
- maintain canonical section order when creating subsections
- scope subsection search to the unreleased section only
- append the entry as a new list bullet
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.