changelog-entry
Skill36 starsChanged 17 days agoBSD-3-ClauseView on GitHub
Write, review or trim CHANGELOG.md entries. Use when editing CHANGELOG.md, when a PR needs a changelog line, when a section is too long or a change may be breaking, or on a changelog conflict.
10 other projects use a version of this.
Adopted by
Most recently taken up by
- getsentry/objectstoretheir own version, first seen Nov 8, 2026
- open-slide/open-slidetheir own version, first seen Nov 8, 2026
- crbnos/carbontheir own version, first seen Nov 7, 2026
- 1weiho/open-slidetheir own version, first seen Nov 1, 2026
- grafana/tempotheir own version, first seen Oct 17, 2026
- pypa/cibuildwheeltheir own version, first seen Oct 8, 2026
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- 1weiho/open-slide★ 9.7ksame name
- open-slide/open-slide★ 9.7ksame name
- telepresenceio/telepresence★ 7.3ksame name
- grafana/tempo★ 5.6ksame name
- crbnos/carbon★ 2.8ksame name
- pypa/cibuildwheel★ 2.3ksame name
- Sandakan/Nora★ 1.2ksame name
- getsentry/objectstore★ 15same name
- atejandro/release-fanout★ 0same name
- stamat/claude★ 0same name
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 repository3 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- lean-mcp-toolsSkill
- repo-docsSkill
The file
We split this skill into the rules it gives an agent
9 rules. 0 are common, 7 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
One sentence: No semicolon joining two facts.
- Distinctive: line 46
No internal jargon: No module, class, library or algorithm names.
- Distinctive: line 66
No issue fits? File one, then reference it.
- Distinctive: line 87
Read the whole section before changing a word.
- Distinctive: line 93
Keep every issue reference.
- Distinctive: line 102
Run the repo's formatter.
- Very specific: line 112
When upgrading needs an action, add a migration note under ## [Unreleased] that points at it.
- Very specific: line 116
Every branch in a stack writes into the same ## [Unreleased] section, so a rebase conflicts there.
- Distinctive: line 117
Keep both sides. Losing the other branch's entry is silent, and review will not catch it.
“Common” is measured: kept by at least 6 in 10 of the 10 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
Changelog entry
A changelog is written for the person who upgrades. How the change was made, what it cost, and which files moved belong in the issue and the pull request.
The shape of an entry
- [**Breaking:** ]<present-tense verb> <what the user gets> ([#<issue>])### Changed
- **Breaking:** drop `file` from `get_apex_log_summary` in favour of the scalar `topMethodsSelfPercentage` ([#86])
- Reduce every tool response with no fact lost: `execute_anonymous` by 30%, `get_apex_log_summary` by 27% ([#86])
<!-- Unreleased -->
[#86]: https://github.com/owner/repo/issues/86- One sentence. No semicolon joining two facts. Two wrapped lines is the ceiling.
- Sub-bullets only where one feature has distinct parts - three at most, each naming one capability. Never how it was built.
- Present tense. "Add", "Reduce", "Refuse" - not "Added", "Reduced".
- Breaking entries first in their section, prefixed
**Breaking:**. - Then most impactful first. The entry that changes the most readers' day leads its section. Not commit order, not issue number, not the order you wrote them.
- Sections in this order: Changed, Added, Removed, Fixed.
- A reference link on every substantial entry, defined under
<!-- Unreleased -->at the end of the file. Never an inline URL.
The file outranks this skill on style. Match the released sections - their emoji, labels and tense. Length and jargon are not style: those rules always hold.
Write for the reader, not the author
The reader upgrades the package; they did not write it. Name the outcome they can see.
- No internal jargon. No module, class, library or algorithm names. If the reader cannot find the word in the product, cut it.
- A fix names the symptom, not the cause.
- A big feature gets one headline entry, plus up to three sub-bullets for its parts. Detail belongs in the docs.
What earns an entry
One entry per user-visible change, not one per commit. If a user of the released package cannot see it, it gets no entry: a refactor, a renamed internal helper, a test, the mechanism behind a fix.
Give the result, not the method. A number earns its place when the size is the result; how it was measured does not.
A performance entry always carries its number - a multiple or a percentage, and what it is of. "Faster" on its own is not an entry, because the reader cannot tell whether to care.
Already-unreleased work: edit the existing entry, and drop a fix for a bug that only ever existed in it. A change nobody has received is not a change, and nobody met the bug.
No issue fits? File one, then reference it.
Wrong, then right
| Wrong | Right |
- Removed destructiveHint from three tools, since the spec says it is meaningless when readOnlyHint is true | no entry - the user sees no difference |
- Replaced ten per-category properties with one z.partialRecord, cutting ~844 to ~428 tokens | fold the result into the one user-facing entry |
- Reduced the cost by 31% ([#87](https://.../87)) | - Reduce the cost by 31% ([#87]), plus a reference definition |
- Refactor CSV parsing to process dataset arrays asynchronously | - Fix the freeze on a large CSV export |
- Replace webview-ui-toolkit with vscode-elements | - Match the host's controls more closely |
| a feature with six nested sub-bullets | a headline sentence, then three sub-bullets at most, one capability each |
- Improve search performance | - Search a 100MB log 10× faster |
- Optimise the parser | - Cut parse time on a large log by 31% |
Trim a section nobody will read
Screens long, or nested three deep. Rewrite the section whole - entry-by-entry edits never merge anything, and merging is most of the win.
- Find the bounds:
grep -n '^## \[' CHANGELOG.md. - Read the whole section before changing a word.
- Draft the replacement in one pass. Three sub-bullets at most under a headline; fold or drop the rest.
- Merge entries that name the same surface or the same fix. Three styling entries are one entry.
- Drop what the reader cannot see, by the rules above.
- Re-order each section by impact. A trimmed section in the old order still buries the lead.
- Keep every issue reference. Losing one loses the trail to the detail you cut.
Splice it in, then check the references - left column is used but undefined, right is defined but unused:
comm -3 <(grep -v '^\[#' CHANGELOG.md | grep -o '\[#[0-9]*\]' | sort -u) \ <(grep -o '^\[#[0-9]*\]' CHANGELOG.md | sort -u)- Run the repo's formatter.
Report the before/after line count and every entry you merged or dropped. A cut the author disagrees with is invisible to them otherwise.
Versions and migration
- A version heading is added when the release is tagged, with an absolute date:
## [1.0.0] - 2026-03-20. Until then everything sits under## [Unreleased]. - Major is forced by behaviour that changes for someone who upgrades and changes nothing else.
- When upgrading needs an action, add a migration note under
## [Unreleased]that points at it.
Stacked branches
Every branch in a stack writes into the same ## [Unreleased] section, so a rebase conflicts there.
Keep both sides. Losing the other branch's entry is silent, and review will not catch it.
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.

