Add a skill for keeping the documentation in step with a change - #42
Merged
Conversation
Five files carry this project's documentation and each answers a different question, but only one of them - CHANGELOG.md - has anything enforcing it. So a change reliably lands with a changelog entry and nothing else, and the plan, the README and CLAUDE.md fall behind exactly the way the changelog once did. The skill routes a change to the files it actually owes an entry rather than treating a touched changelog as done, and it starts from the diff rather than from the conversation, because a summary of the work reliably drops the part that turned out to matter. Three of its rules are mistakes made while writing the last two pull requests, which is most of the reason it is worth having. Anchor an edit on unique surrounding text, because "### Removed" matches twice in CHANGELOG.md. Never let two entries in the same unreleased block contradict each other - when a branch reworks something an unreleased entry already describes, amend that entry, since neither has shipped and the block should read as one description of the release rather than as a diary of what was tried. And do not leave a measurement reading as current after a change invalidated it; the Advanced page's height needed re-qualifying twice. The changelog section carries a worked contrast on a real entry rather than a description of the house style, since the distinction between the patch and the defect is easier to copy than to explain. Its verification step greps only the lines the change added. The first draft grepped whole files for inherited names and answered "yes, 28" on a clean tree, because the plan and the README name the predecessor legitimately - a check that always fails is a check nobody reads twice. .claude/settings.local.json and .claude/worktrees/ are ignored rather than committed alongside it. The skill is shared and belongs to the repository; a permission allow-list full of one machine's paths does not, and an untracked .claude/ was going to end up inside someone's git add -A. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Five files carry this project's documentation and each answers a different question, but only one of them —
CHANGELOG.md— has anything enforcing it. So a change reliably lands with a changelog entry and nothing else, and the plan, the README andCLAUDE.mdfall behind exactly the way the changelog once did..claude/skills/document-change/SKILL.mdroutes a change to the files it actually owes an entry, rather than treating a touched changelog as done:CHANGELOG.mdno-changeloglabelREADME.mddocs/MODERNIZATION-PLAN.mdCLAUDE.mddocs/decisions/It starts from the diff rather than from the conversation, because a summary of the work reliably drops the part that turned out to matter.
Three rules that came from real mistakes
Which is most of why it is worth having. All three were made while writing #40 and #41:
### Removedmatches twice inCHANGELOG.md.Two smaller decisions
The changelog section carries a worked contrast on a real entry rather than a description of the house style. The distinction between the patch and the defect is easier to copy than to explain.
Its verification step greps only the lines the change added. The first draft grepped whole files for inherited names and answered "yes, 28" on a clean tree, because the plan and the README name the predecessor legitimately — a check that always fails is a check nobody reads twice.
On
.claude/settings.local.jsonandworktrees/are added to.gitignorerather than committed alongside the skill. The skill is shared and belongs to the repository; a permission allow-list full of one machine's paths does not, and an untracked.claude/was going to end up inside someone'sgit add -A.Testing
No code changes — no test, build or behaviour is affected. Labelled
no-changelog: nothing here is visible to a user of the app.🤖 Generated with Claude Code