All tools
SkillCurated · reviewed

Changelog Skill

Updated Jul 7, 2026

A Claude Code skill that drafts a CHANGELOG.md entry in Keep-a-Changelog format from a list of commits, a commit range, or a diff. Changes are grouped into Added, Changed, Deprecated, Removed, Fixed, and Security — with user-facing language, not internal jargon.

What it does

  • /changelog

    Draft a Keep-a-Changelog entry from pasted commits or a diff, grouped by Added/Changed/Fixed.

  • /changelog <version>

    Draft a changelog entry for a specific version number, with optional release date.

Files (1)

SKILL.mdprimary · markdown · 3.3 KB
# Changelog Skill

---
slug: changelog-skill
version: 1.0.0
category: engineering
command: /changelog
---

## What it does
Drafts a changelog entry in [Keep a Changelog](https://keepachangelog.com) format from a
set of commits, a commit range, or a diff. Groups changes into the standard sections —
Added, Changed, Deprecated, Removed, Fixed, Security — using user-facing language that
describes impact, not implementation details.

## Trigger
Use this skill when asked to write, draft, or update a changelog.
Typical invocations:
- "Write a changelog entry for version 2.4.0"
- "Draft CHANGELOG entries from these commits"
- `/changelog` in Claude Code
- `/changelog <version>` to target a specific version header

## Input
Provide one or more of:
1. A list of commit messages or `git log --oneline` output
2. A diff (`git diff <base>..<head>`)
3. The version number for the entry header
4. The release date (defaults to today if omitted)
5. The audience (end users vs. API consumers vs. developers — affects language)

If no commits or diff are provided, ask for them before proceeding.

## Method

1. **Classify each commit** — map to Keep-a-Changelog sections:
   - **Added** — new features, new endpoints, new config options
   - **Changed** — behavior changes to existing features; breaking changes must be called out
   - **Deprecated** — features still present but marked for removal
   - **Removed** — things deleted in this version
   - **Fixed** — bug fixes
   - **Security** — vulnerability fixes, auth/authz changes, dependency security updates
2. **Translate to user language** — replace internal ticket IDs and variable names with what the
   user observes. "Fix NPE in UserService.findById()" → "Fixed a crash when looking up a user by ID".
3. **Omit chore/ci/test commits** — unless they affect behavior visible to users.
4. **Flag breaking changes** — prefix with **Breaking** and describe the migration step.

## Output format

Produce a Markdown snippet ready to paste into CHANGELOG.md:

```markdown
## [<version>] - <date>

### Added
- ...

### Changed
- ...

### Fixed
- ...
```

Omit empty sections. Add a **Skipped** note at the end listing commits classified as
internal (chore, test, ci) that were intentionally excluded.

## Example output

```markdown
## [2.4.0] - 2026-07-07

### Added
- Export setup bundles directly to a `.zip` file from the Export page.
- New "Changelog Skill" in the developer registry for generating Keep-a-Changelog entries.

### Changed
- **Breaking**: the `/api/export` endpoint now returns `application/zip` instead of `application/json`.
  Clients that parse the JSON response must switch to downloading the zip. See the migration guide.
- Browse page now sorts by popularity by default instead of alphabetical.

### Fixed
- Fixed a crash when opening a setup that had no knowledge files.
- Category filter no longer resets to "All" after navigating back from a setup detail page.
```

**Skipped** (internal, no user-facing impact):
- chore: bump vitest to 2.1.0
- ci: add Node 22 to test matrix
- test: add edge-case coverage for slug validator

## Commands (Claude Code)

- `/changelog` — Draft a changelog entry from the pasted commits or diff.
- `/changelog <version>` — Draft a changelog entry for a specific version number and optional release date.