changelog-generator
Skill0 starsChanged 38 days agoMITView on GitHub
Generate or update a repository CHANGELOG.md in Keep a Changelog format from git history - grouping commits since the last tag into Added/Changed/Deprecated/Removed/Fixed/Security, rewriting them as user-facing entries, and recommending the semantic version bump. Use when someone asks "generate a changelog from the git log", "update CHANGELOG.md for this release", "what version bump does this release need", or "turn these commits into release notes". Do NOT use for writing benefit-first product announcement changelogs for end users from release notes - use changelog-writer instead; this skill produces the versioned CHANGELOG.md file that lives in the repo.
99 other projects use a version of this.
Adopted by
Most recently taken up by
- darkweb19/skillstheir own version, first seen Nov 8, 2026
- BrightGold70/skillstheir own version, first seen Nov 8, 2026
- kazemcodes/skill-treetheir own version, first seen Nov 8, 2026
- alunadev/ald-skillstheir own version, first seen Nov 8, 2026
- myths-labs/musetheir own version, first seen Nov 6, 2026
- Sma1lboy/rovetheir own version, first seen Nov 6, 2026
Used with
Projects with it also use api-test-suite-builder, fda-consultant-specialist 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.
Arnav-0Skillapi-test-suite-builder
Use when the user asks to generate API tests, create integration test suites, test REST endpoints, or build contract tests.
Also in 7 projects that use this
Hussain-ElfalahSkillfda-consultant-specialist
Also in 5 projects that use this
csiddhant796-blipSkillkarpathy-coder
Use when writing, reviewing, or committing code to enforce Karpathy's 4 coding principles — surface assumptions before coding, keep it simple, make surgical changes, define verifiable goals. Triggers on "review my diff", "check complexity", "am I overcomplicating this", "karpathy check", "before I commit", or any code quality concern where the LLM might be overcoding.
Also in 5 projects that use this
Hussain-ElfalahSkillquality-manager-qmr
Also in 5 projects that use this
csiddhant796-blipSkillself-eval
Honestly evaluate AI work quality using a two-axis scoring system. Use after completing a task, code review, or work session to get an unbiased assessment. Detects score inflation, forces devil's advocate reasoning, and persists scores across sessions.
Also in 6 projects that use this
ComposioHQSkillmeeting-notes-and-actions
Turn meeting transcripts or rough notes into crisp summaries with decisions, risks, and owner-tagged action items; use for Zoom/Meet/Teams transcripts, call notes, or long meeting chats to generate share-ready outputs.
Also in 4 projects that use this
- +4 more from Hussain-Elfalah
Other versions99 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 99
- ComposioHQ/awesome-claude-skills★ 75ksame name
- ComposioHQ/awesome-codex-skills★ 17ksame name
- composio-community/awesome-codex-skills★ 16ksame name
- didi/mpx★ 4ksame name
- Prat011/awesome-llm-skills★ 1.7ksame name
- jewbetcha/openflight★ 1.2ksame name
- MoizIbnYousaf/Ai-Agent-Skills★ 1.1ksame name
- skillcreatorai/Ai-Agent-Skills★ 1.1ksame name
- MoizIbnYousaf/ai-agent-skills★ 1.1ksame name
- decebals/claude-code-java★ 763same name
89 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 repository3 other files it gives its agents.
- code-review-checklistSkill
- tdd-expertSkill
- typescript-strictSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 8 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 93 edited versions we read keep these.
8
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 21
Drop invisible commits: Remove chores, CI tweaks, test-only changes, dependency bumps, refactors, and formatting - unless one produced a …
- Distinctive: line 71
Do not paste commit messages verbatim - a changelog is written for the reader of the release, not the author of the commit.
- Distinctive: line 72
Do not bury a breaking change in Changed prose.
- Distinctive: line 73
Do not merge Security fixes into Fixed - their own section is what makes them findable.
- Distinctive: line 74
Do not put one change in two categories.
- Distinctive: line 75
Do not write "various improvements and bug fixes" - an entry that conveys nothing erodes trust in every future entry.
- Distinctive: line 76
Do not backfill or reformat old released sections when appending a new one.
- Distinctive: line 80
Every entry is one line, symptom/benefit-phrased, free of internal class and service names, with a PR link where one exists.
“Common” is measured: kept by at least 6 in 10 of the 93 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 Generator
A changelog exists so a human deciding whether to upgrade can answer "what breaks, what's fixed, what's new" in thirty seconds. The costly failure is dumping git log into a file: raw commit messages describe the code's history, not the release's meaning, and they bury the one breaking change under forty chores. This skill turns commit history into a Keep a Changelog-formatted CHANGELOG.md and a defensible version bump.
Inputs to collect
Gather before writing: the repo (or the raw log), the last released tag (git describe --tags --abbrev=0 - if there are no tags, the whole history is the first release), the existing CHANGELOG.md if any (append to its conventions rather than reformatting history), whether commits follow Conventional Commits (feat:, fix: prefixes make categorization mechanical; otherwise categorize by reading each diff's intent), and the project's versioning scheme (default: SemVer). Label any inferred categorization from an ambiguous commit as a guess for the maintainer to confirm.
Operating procedure
Order matters: categorize before writing, and decide the version last, because the bump is a function of the finished category lists.
- Collect the range.
git log <last-tag>..HEAD --oneline --no-merges. Pull PR numbers from merge commits or squash-commit suffixes like(#123). - Drop invisible commits. Remove chores, CI tweaks, test-only changes, dependency bumps, refactors, and formatting - unless one produced a user-visible result, in which case describe the result, not the work ("Reduced install size by 40%", not "Switched bundler").
- Categorize every surviving commit into exactly one Keep a Changelog category:
- Added - new features and capabilities (
feat:). - Changed - existing behavior that now works differently.
- Deprecated - still works, will be removed; say what to use instead.
- Removed - gone; this is breaking.
- Fixed - bug fixes (
fix:), described by the symptom the user saw. - Security - vulnerability fixes always get their own section, never hidden under Fixed, because scanners and humans grep for it.
- Added - new features and capabilities (
- Rewrite each commit as a user-facing entry. One line, what changed from the consumer's perspective, ending with the PR link when available. Consumers of a library "see" the API, so API changes are user-facing here even when no end user notices.
- Decide the version bump from the categories, strictest rule wins: anything in Removed, or any breaking change in Changed (or a
BREAKING CHANGE:footer) → major; anything in Added or Deprecated → minor; only Fixed/Security/perf → patch. Pre-1.0 projects: breaking changes bump minor, everything else patch. - Assemble the file: newest version at top,
## [Unreleased]section always present (and emptied into the new release section when cutting one), categories ordered Added > Changed > Deprecated > Removed > Fixed > Security, ISO dates. - Flag what you dropped. List the commits excluded as internal-only so the maintainer can confirm nothing user-facing was lost.
Format
# Changelog
All notable changes to this project are documented in this file,
following the Keep a Changelog format and Semantic Versioning.
## [Unreleased]
## [1.2.0] - 2026-06-15
### Added
- Export reports as CSV in addition to PDF (#123)
### Changed
- Session timeout is now configurable; the default remains 30 minutes (#127)
### Deprecated
- `client.fetchAll()` - use `client.list({ paginate: true })` instead; removal planned for the next major (#130)
### Fixed
- Exporting an empty report no longer fails with a blank error page (#125)
### Security
- Upgraded the JWT library to patch a signature-bypass vulnerability (#131)Worked contrast - translating a commit
Commit: fix: handle NPE in ExportService when rows==0 (#125)
Bad entry: - fix: handle NPE in ExportService when rows==0 (#125) - internal class name, internal jargon, describes the code, tells an upgrader nothing.
Good entry: - Exporting an empty report no longer fails with a blank error page (#125) - the symptom the user hit, in their vocabulary, with the reference preserved.
Deliverable
Produce: the updated CHANGELOG.md section (or full file for a first release) in the exact format above, the recommended version number with the one-line rule that justifies it ("Removed section non-empty → major"), and the list of dropped internal-only commits for confirmation.
Do NOT
- Do not paste commit messages verbatim - a changelog is written for the reader of the release, not the author of the commit.
- Do not bury a breaking change in Changed prose; breaking changes lead their section and force the major bump.
- Do not merge Security fixes into Fixed - their own section is what makes them findable.
- Do not put one change in two categories; pick the one that matches how a consumer experiences it.
- Do not write "various improvements and bug fixes" - an entry that conveys nothing erodes trust in every future entry.
- Do not backfill or reformat old released sections when appending a new one; released history is immutable.
Quality bar
- Every entry is one line, symptom/benefit-phrased, free of internal class and service names, with a PR link where one exists.
- Categories appear in the canonical order and none is empty (omit empty sections).
- The version bump follows mechanically from the categories, and the justification names the triggering rule.
[Unreleased]exists at the top of the file after the update.- The dropped-commit list is included, so the maintainer can audit the cut in under a minute.
Hand off adjacent jobs: for a marketing-facing announcement version of the same release, route to changelog-writer; the semantic-version decision for API surface changes can be sanity-checked with api-versioning-strategist.
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.

