Changelog Curator
Maintains and formats a CHANGELOG.md following Keep a Changelog conventions from git history or PR list.
Best use case
Changelog Curator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Maintains and formats a CHANGELOG.md following Keep a Changelog conventions from git history or PR list.
Teams using Changelog Curator should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/changelog-curator/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Changelog Curator Compares
| Feature / Agent | Changelog Curator | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Maintains and formats a CHANGELOG.md following Keep a Changelog conventions from git history or PR list.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Changelog Curator
## What this skill does
This skill directs the agent to write or update a `CHANGELOG.md` that follows the [Keep a Changelog](https://keepachangelog.com) format. It takes a list of commits, PR titles, or a git log dump, groups changes into the correct categories (Added, Changed, Fixed, Removed, Deprecated, Security), writes them in clear human-readable language, and formats the file correctly with semantic versioning and dates.
Use this before cutting a release, during sprint wrap-up, or when your changelog has fallen behind and you need to bring it up to date.
## How to use
### Claude Code / Cline
Copy this file to `.agents/skills/changelog-curator/SKILL.md` in your project root.
Then ask:
- *"Use the Changelog Curator skill to update CHANGELOG.md for the v2.3.0 release. Here's the git log: [paste log]."*
- *"Use the Changelog Curator skill to create a CHANGELOG.md for these PRs: [list PRs]."*
Provide:
- The git log (`git log --oneline vX.Y.Z..HEAD`) or a list of PR titles/descriptions
- The new version number and release date (or "Unreleased")
- The existing `CHANGELOG.md` if one exists (so the agent can append, not overwrite)
### Cursor
Add the instructions below to your `.cursorrules` or paste them into the Cursor AI pane. Paste the git log or PR list along with the version number.
### Codex
Paste the git log or PR list, the current `CHANGELOG.md` if it exists, and the version number. Ask Codex to follow the instructions below.
## The Prompt / Instructions for the Agent
When asked to write or update a changelog, follow these steps:
### Step 1 — Parse the input
The input may be:
- A raw `git log --oneline` dump
- A list of PR titles
- A mix of both
For each item, extract:
- The core change (ignore ticket numbers, PR numbers, merge commit boilerplate like "Merge branch X")
- The type of change (what category does it belong to?)
- The user-facing impact (what does a user or developer actually experience?)
### Step 2 — Categorize each change
Use exactly these Keep a Changelog categories:
- **Added** — New features, new endpoints, new configuration options, new pages
- **Changed** — Changes to existing functionality, updated behavior, updated dependencies (when behavior changes)
- **Deprecated** — Features that still work but will be removed in a future version
- **Removed** — Features, endpoints, or fields that are gone
- **Fixed** — Bug fixes
- **Security** — Fixes for security vulnerabilities (always list separately and first if present)
If a commit is unclear (e.g., "misc cleanup"), use your best judgment or place it under "Changed."
### Step 3 — Write each entry
Rules for writing changelog entries:
- Write in the **past tense** ("Added", "Fixed", "Removed" — not "Add", "Fix", "Remove")
- Write from the **user's perspective** — what changed for them, not what the developer did internally
- Be **specific** — "Fixed crash when uploading files larger than 10 MB" not "Fixed file upload bug"
- Do not include commit hashes, PR numbers, or developer names (unless the project convention includes them)
- Remove redundant prefixes like "feat:", "fix:", "chore:" from conventional commits
- If multiple commits address the same issue, combine them into one entry
### Step 4 — Format the CHANGELOG.md section
```markdown
## [X.Y.Z] - YYYY-MM-DD
### Security
- [Security fixes first, if any]
### Added
- [New feature 1]
- [New feature 2]
### Changed
- [Change 1]
### Deprecated
- [Deprecation 1]
### Removed
- [Removal 1]
### Fixed
- [Bug fix 1]
- [Bug fix 2]
```
Only include sections that have entries. Don't include empty sections.
### Step 5 — Handle the full file
If an existing `CHANGELOG.md` is provided:
- Insert the new version section **above** the previous most-recent version
- Keep the `[Unreleased]` section at the top if it exists; convert it to the new version
- Do not modify any existing version sections
- Ensure the `[Unreleased]` section remains (empty or reset) at the top after inserting
If no `CHANGELOG.md` exists, create one with this header:
```markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
[new version section here]
```
## Example
**Input to Agent:**
> "Use the Changelog Curator skill for v1.4.0 released today. Git log:
> ```
> a1b2c3d feat: add CSV export to reports page
> d4e5f6g fix: crash when user has no profile picture
> h7i8j9k fix: login redirect loop on mobile Safari
> l0m1n2o chore: upgrade lodash to 4.17.21
> p3q4r5s feat: add dark mode toggle
> t6u7v8w security: patch XSS in comment renderer
> x9y0z1a feat: new /api/v2/users endpoint with pagination
> b2c3d4e fix: orders not showing for guest users
> ```"
**Output from Agent:**
> ## [1.4.0] - 2026-03-15
>
> ### Security
> - Patched XSS vulnerability in the comment renderer
>
> ### Added
> - Added CSV export to the reports page
> - Added dark mode toggle
> - Added new `/api/v2/users` endpoint with pagination support
>
> ### Changed
> - Updated lodash dependency to 4.17.21
>
> ### Fixed
> - Fixed crash when a user has no profile picture set
> - Fixed login redirect loop on mobile Safari
> - Fixed orders not displaying for guest users
## Notes
- Changelog entries are written for readers (users, developers consuming the API), not for the author. If a change only affects CI configuration or internal test setup, it's usually fine to omit it.
- For breaking changes, add a `⚠ Breaking` prefix to the entry and consider adding a migration note.
- Run `git log vX.Y.Z..HEAD --oneline` to get the commit list for a specific range.Related Skills
Unit Test Writer
Generates comprehensive unit tests for any function or module with edge cases.
Unit Test Improver
Reviews existing unit tests for gaps, weak assertions, and missing edge cases, then rewrites them to be more robust.
Troubleshooting Guide Builder
Builds a structured troubleshooting guide with symptom → cause → fix format for any tool or system.
Tech Debt Auditor
Identifies and prioritizes technical debt in a codebase with an effort/impact matrix.
Technical Blog Post Writer
Writes engaging, accurate technical blog posts targeted at developer audiences.
Stack Trace Analyzer
Interprets error stack traces to pinpoint root cause, explain what went wrong, and suggest fixes.
SQL Query Optimizer
Reviews SQL queries for performance issues and rewrites them with optimized execution plans.
Sprint Summary Generator
Converts a list of completed tickets or commits into a clear sprint summary for stakeholders.
Social Post Thread Writer
Converts a blog post, idea, or document into an engaging Twitter/X or LinkedIn thread with hooks and CTAs.
SEO Metadata Generator
Generates optimized title tags, meta descriptions, Open Graph tags, and structured data for any web page.
SEO Content Optimizer
Analyzes and rewrites content to maximize search engine visibility without sounding robotic.
SDK Quickstart Writer
Generates a concise, copy-paste-ready quickstart guide for any SDK or library.