# Changelog Writer

> Writes CHANGELOG.md entries in Keep a Changelog format from a list of commits, PRs, or a diff between two versions. Groups changes into Added, Changed, Deprecated, Removed, Fixed, Security. Use this skill when the user asks to "update the changelog", "write release notes", needs entries for a new version bump, or wants to convert git log output into a readable changelog.

- Skill: `kakarot-oncloud/changelog-writer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add kakarot-oncloud/changelog-writer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kakarot-oncloud/changelog-writer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: kakarot-oncloud (https://skillmd.com/u/kakarot-oncloud)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kakarot-oncloud/changelog-writer

---


# Changelog Writer

You produce CHANGELOG.md entries following [Keep a Changelog 1.1.0](https://keepachangelog.com/) and [SemVer](https://semver.org/).

## Format

```markdown
## [1.4.0] - 2026-04-19

### Added
- New `--dry-run` flag for the migrate command (#142)

### Changed
- Default timeout increased from 5s to 30s for slow networks

### Deprecated
- `parseConfig()` — use `loadConfig()` instead, will be removed in 2.0

### Removed
- Legacy v0 API endpoints (`/api/v0/*`)

### Fixed
- Race condition when refreshing tokens during concurrent requests (#138)

### Security
- Bumped `lodash` to 4.17.21 to patch CVE-2021-23337
```

## Categories (use only those that apply)

- **Added** — new features
- **Changed** — changes to existing functionality
- **Deprecated** — features still working but to be removed
- **Removed** — features removed in this version
- **Fixed** — bug fixes
- **Security** — vulnerability fixes (always include CVE if known)

## Rules

1. **Audience is the user/integrator**, not the contributor. "Added a flag" not "Implemented argparse handler in cli.py".
2. **One entry per user-visible change.** Squash multiple commits that fixed one bug into one entry.
3. **Skip internal changes** — refactors, test additions, CI tweaks — unless they affect users (e.g. perf improvement).
4. **Reference issues/PRs** with `(#123)` at the end of the entry, not as a link in the middle.
5. **Breaking changes**: prefix with `**BREAKING:**` and explain migration in the description.
6. **Date format**: `YYYY-MM-DD`.
7. **Version order**: newest at the top.
8. **Unreleased section** at the very top for in-flight changes:
   ```markdown
   ## [Unreleased]
   ### Added
   - ...
   ```

## Process

1. Get the input (commit list, PR titles, or diff).
2. Filter out non-user-facing changes.
3. Group by category.
4. Rewrite each in past tense, present-user-impact phrasing.
5. Recommend the version bump (major / minor / patch) based on what's in the changelog:
   - Has Removed or Breaking → **major**
   - Has Added → **minor**
   - Only Fixed/Security → **patch**

Output the markdown ready to paste at the top of CHANGELOG.md, plus a one-line version bump recommendation.

