update-changelog
Skill2 starsChanged 7 days agoMITView on GitHub
Append one dated line per shipped unit to the canonical CHANGELOG.md via propose-confirm — never auto-writes. Use on /update-changelog, \"log this ship\", or when a caller organ offers it on shipped work or a significant planning-artifact change. One line per unit, not per commit. Mode A — never auto-fires.
37 other projects use a version of this.
Adopted by
Most recently taken up by
- harshitsinghbhandari/domain-expansiontheir own version, first seen Nov 8, 2026
- Raicuparta/rai-paltheir own version, first seen Nov 2, 2026
- dotnet/vscode-csharptheir own version, first seen Nov 1, 2026
- a2ui-project/a2uitheir own version, first seen Nov 1, 2026
- raine/skillstheir own version, first seen Nov 1, 2026
- jlu-lujing/TaskHuntertheir own version, first seen Nov 1, 2026
Used with
Projects with it also use clack-cli-patterns, drag-to-reorder and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
openchamberSkillclack-cli-patterns
Use when creating or modifying OpenChamber CLI commands, prompts, terminal output, non-TTY behavior, `--quiet`, or `--json` behavior.
Also in 3 projects that use this
openchamberSkilldrag-to-reorder
Use when implementing or modifying OpenChamber sortable or drag-to-reorder behavior, especially `@dnd-kit`, touch/mobile interactions, variable-width items, or wrapping layouts.
Also in 3 projects that use this
mitsuhikoSkilloebb-scotty
Austrian rail travel planner (ÖBB Scotty). Use when planning train journeys in Austria, checking departures/arrivals at stations, or looking for service disruptions. Covers ÖBB trains, S-Bahn, regional trains, and connections to neighboring countries.
Also in 3 projects that use this
mitsuhikoSkillpi-share
Load and parse session transcripts from shittycodingagent.ai/buildwithpi.ai/buildwithpi.com/pi.dev (pi-share) URLs. Fetches gists, decodes embedded session data, and extracts conversation history.
Also in 3 projects that use this
- +8 more from openchamber
Other versions37 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 37
- penpot/penpot★ 62ksame name
- alibaba/page-agent★ 29ksame name
- joke2k/faker★ 19ksame name
- a2ui-project/a2ui★ 17ksame name
- google/A2UI★ 17ksame name
- quickwit-oss/tantivy★ 16ksame name
- btriapitsyn/openchamber★ 13ksame name
- openchamber/openchamber★ 13ksame name
- mitsuhiko/agent-commands★ 3.2ksame name
- mitsuhiko/agent-stuff★ 3.2ksame name
27 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository47 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- autonomizeSkill
- blueprintSkill
- brainstormSkill
- captureSkill
- checkpointSkill
- close-outSkill
- coordinateSkill
- cycleSkill
- deliverSkill
- design-proposalSkill
- discoverSkill
- dispatchSkill
- draft-planSkill
- envisionSkill
- executeSkill
- extract-conventionsSkill
- glossarySkill
- humanizeSkill
- human-viewSkill
- improve-promptSkill
- memory-auditSkill
- new-agentSkill
- new-agents-mdSkill
- new-hookSkill
- new-mcpSkill
- orchestrateSkill
- pr-authorSkill
- prepSkill
- pre-pushSkill
- pr-triageSkill
- recapSkill
- retrospect-coreSkill
- reviewSkill
- rulesSkill
- shortcutsSkill
- specSkill
- systematic-debuggingSkill
- test-driven-developmentSkill
- update-codemapSkill
- using-git-worktreesSkill
- visualise-codemapSkill
- visualSkill
- work-stateSkill
- wrapSkill
- write-testsSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 7 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 36 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Before composing or writing anything, Read docs/changelog-contract.md (location resolution, ordering, the unit of a line, the two …
- Distinctive: line 19
Otherwise never auto-fires: No session-start, no per-turn, no hook trigger.
- Very specific: line 35
If the root CHANGELOG.md would be swallowed by a bare/global .gitignore rule (git check-ignore it), surface that to the user — do not edit …
- Distinctive: line 58
First, dedup against the existing log: Before prepending, scan the recent sections for an existing line covering the *same unit* (same …
- Distinctive: line 59
If it already says the same thing → no new line.
- Distinctive: line 60
If the existing line is now *stale* (e.g.
- Distinctive: line 61
Only prepend a fresh line when the unit is genuinely unlogged.
- Very specific: line 64
If today's dated section (## YYYY-MM-DD) exists, prepend the line within it (newest first).
- Distinctive: line 76
Do not commit (the user's call).
- Very specific: line 80
Does not auto-write: Every line passes the §3 accept/edit/reject gate, including on the caller path.
- Distinctive: line 81
Does not auto-fire: No session-start / per-turn / hook trigger.
“Common” is measured: kept by at least 6 in 10 of the 36 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
update-changelog
The changelog writer. Maintains the canonical CHANGELOG.md — the single reverse-chronological "what actually happened" ship-record that cuts session re-alignment cost. It is the one writer; several caller skills offer it but never write the changelog themselves.
Prerequisite — load the format contract
Before composing or writing anything, Read docs/changelog-contract.md (location resolution, ordering, the unit of a line, the two line-types, the significant-change rule, voice). It is the authority; this skill applies it. Every reference below assumes you have read it this turn.
When to run
- User types
/update-changelog [unit description](explicit trigger). - User says "log this ship", "record what shipped", "add this to the changelog".
- Another skill offers it (the caller path):
recap,checkpoint,execute,spec,draft-planinvite/update-changelogat a ship moment or a significant planning-artifact change. The caller surfaces the offer; the user accepts; this skill does the write. The skill is the writer, the callers are the doorways. - Otherwise never auto-fires. No session-start, no per-turn, no hook trigger. And it never auto-writes — the propose-confirm gate (§3) gates every line, even on the caller path.
Inputs
- The unit. Text after
/update-changelogdescribes the shipped unit / significant change. No argument → infer from the recent turns (what was just shipped or decided); ask one clarifying question if multiple candidates. - Line-type signal. From the trigger: a ship moment (execute-done / checkpoint / recap / close-out) → ship line (
✓); a significant planning-artifact change (spec / envision / draft-plan) → decision line (◆). When invoked directly, infer from the unit; when ambiguous, ask. - Target project.
$CLAUDE_PROJECT_DIRif set, else cwd.
Procedure
1. Resolve the target CHANGELOG
Per the contract §1:
- Project root
CHANGELOG.mdif it exists, or the project plainly declares one → use it. - Else
.claude/CHANGELOG.md(create lazily on first accepted write). - State which file you will write to before proposing.
- If the root
CHANGELOG.mdwould be swallowed by a bare/global.gitignorerule (git check-ignoreit), surface that to the user — do not edit.gitignoreto force-track; syncing is the user's choice.
2. Classify the line-type and compose
- Pick ship line (
✓) or decision line (◆) per the input signal + contract §4. - Significant-change gate (decision lines only). Per contract §5: a decision line is warranted only for a significant planning-artifact change — a new spec/vision/plan for a slug, or a status transition — not a routine wording revision. If the change is routine churn, say so and do not propose a line (the user can override).
- Compose one line in repo-reader changelog voice (contract §3): terse, what-changed-for-a-reader, per shipped unit not per commit. Resolve today's date for the section header.
3. Propose — confirm before writing
Show the user, exactly:
- the composed line (with its
✓/◆marker), - the target file and where it lands (which dated section — new or existing),
- then ask: accept / edit / reject.
Nothing is written until accept. This is the same propose-confirm-commit gate capture / recap / rules use. On the caller path the gate still fires — a caller's offer is not a write.
- accept → §4.
- edit → user revises the line in prose; re-propose; loop until accept or reject.
- reject → write nothing. Acknowledge ("Nothing logged.") and stop. (Rejecting is the real filter behind the significant-change heuristic — a non-changelog-worthy offer dies here.)
4. Prepend
First, dedup against the existing log. Before prepending, scan the recent sections for an existing line covering the same unit (same proposal number / slug / feature). If one exists:
- If it already says the same thing → no new line; tell the user it's already logged. (A unit logged at seed-time or by an earlier caller should not be duplicated — a stale duplicate is worse than no line.)
- If the existing line is now stale (e.g. it was written mid-build and the unit has since changed scope) → offer to edit the existing line in place rather than add a second one.
- Only prepend a fresh line when the unit is genuinely unlogged.
Then write:
- If today's dated section (
## YYYY-MM-DD) exists, prepend the line within it (newest first). - Else open a new dated section at the top of the file, above the previous newest section.
- Preserve everything else verbatim. The changelog is an append-only log — append-only logs are explicitly not versioned folders; a flat file is correct. Append-only governs storage shape (flat file, prepend), not blind duplication — the dedup check above still applies.
5. Offer the BACKLOG-row sync (optional)
If the shipped unit has a row in this project's BACKLOG.md priority queue (proposal/feature queue), offer to remove that row — closing the documented-but-manual "delete row + note ship" loop BACKLOG itself describes. Propose-confirm; never auto-removes. Skip silently if there is no BACKLOG or no matching row.
6. Close
Logged to
<CHANGELOG path>under## <date>. <ship/decision> line added.
Do not commit (the user's call). Do not touch the project's ship-narrative record (a build-progress memory or equivalent), if it keeps one, or the CLAUDE.md coverage map — those stay their own records (contract §6).
What update-changelog does NOT do
- Does not auto-write. Every line passes the §3 accept/edit/reject gate, including on the caller path.
- Does not auto-fire. No session-start / per-turn / hook trigger. Callers offer; the user invokes.
- Does not log per-commit. One line per shipped unit (contract §3). Git owns the commit log.
- Does not log routine planning churn. Decision lines fire only on significant changes (contract §5); the gate filters the rest.
- Does not replace the ship-narrative record, recap, or the BACKLOG forward queue — only BACKLOG's "Recently shipped" prose section (contract §6).
- Does not edit
.gitignoreto force-track a changelog — syncing is the user's choice. - Does not commit the changelog change.
Relationship to other organs
- changelog-contract — the format authority this skill applies (location / ordering / line-types / significant-change rule / voice).
- recap — offers a ship line on a session's completed units; this skill writes it.
- checkpoint — offers a ship line at a post-build module checkpoint.
- execute — offers a ship line when a plan completes with done-criteria met.
- spec / draft-plan / envision — offer a decision line on a significant planning-artifact change (significant-change-gated).
- close-out — the scope chain's terminus; its record step calls this writer as the chain's single ledger write (the close-out→changelog seam). close-out is a doorway, update-changelog is the writer.
- BACKLOG.md — the forward queue (unchanged); its "Recently shipped" section is replaced by a pointer to the changelog, and §5 offers to retire a shipped row.
- the project's ship-narrative record (a build-progress memory or equivalent), if it keeps one — the narrative ship-record (hashes/deviations/lessons), untouched; the changelog is the index, the narrative record is the story.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

