Back to Catalog
📋

Changelog Generator

Free

Nobody likes writing changelogs manually. But users, stakeholders, and open-source contributors need to know what changed between releases. This skill reads your git history since the last tag (or between any two refs), groups commits by type (features, fixes, breaking changes), filters out noise (merge commits, chores), and generates a beautifully formatted CHANGELOG.md entry following Keep a Changelog conventions. It links to commits, mentions contributors, and highlights breaking changes prominently. Perfect for release day — run it once, review, paste into your release notes.

developmentClaude Code
SKILL.md
---
name: changelog-generator
description: >-
  Generate a CHANGELOG.md entry from git history. Use when the user asks to
  create a changelog, write release notes from commits, update CHANGELOG.md,
  or prepare for a release. Analyzes commits since the last tag and produces
  a formatted entry grouped by type.
version: "1.0.0"
tools:
  - Bash
  - Read
  - Write
---

## Changelog Generator

Generate a polished CHANGELOG.md entry from git commit history.

## Workflow

1. **Find the version range**
   \`\`\`bash
   # Get the latest tag
   git describe --tags --abbrev=0 2>/dev/null || echo "no-tags"
   # Get current branch
   git branch --show-current
   \`\`\`
   If no tags exist, use the full history. If the user specifies a range, use that.

2. **Collect commits**
   \`\`\`bash
   git log v1.0.0..HEAD --pretty=format:"%H|%s|%an|%ad" --date=short
   \`\`\`
   Parse each commit into: hash, subject, author, date.

3. **Categorize commits**
   Group by Conventional Commits prefix:
   - **Added** — `feat:` commits
   - **Fixed** — `fix:` commits
   - **Changed** — `refactor:`, `perf:` commits
   - **Security** — `security:` or security-related commits
   - **Deprecated** — commits mentioning deprecation
   - **Removed** — commits removing features
   - **Breaking Changes** — commits with `BREAKING CHANGE:` or `!:`

   Skip: merge commits, `chore:`, `style:`, `ci:` (unless significant).

4. **Check for existing CHANGELOG.md**
   If it exists, read the format and match it.
   If not, create one with the Keep a Changelog header.

5. **Generate the entry**
   Format:
   \`\`\`markdown
   ## [1.1.0] - 2026-03-25

   ### Added
   - Add OAuth2 Google login flow ([a1b2c3d])
   - Add user profile settings page ([d4e5f6a])

   ### Fixed
   - Fix session timeout not refreshing token ([b7c8d9e])
   - Fix mobile nav overlay z-index issue ([f0a1b2c])

   ### Breaking Changes
   - Remove deprecated /api/v1 endpoints — use /api/v2 ([c3d4e5f])
   \`\`\`

6. **Determine version number**
   Suggest based on changes:
   - Has breaking changes → major bump
   - Has new features → minor bump
   - Only fixes → patch bump

7. **Write the changelog**
   Prepend the new entry to CHANGELOG.md (after the header, before previous entries).

## Rules

- Always base the changelog on actual git commits — never fabricate entries
- Skip merge commits and trivial chores unless they're user-facing
- Link commit hashes as short refs
- Highlight breaking changes prominently at the top
- Use Keep a Changelog format: https://keepachangelog.com
- If commits don't follow Conventional Commits, do your best to categorize by reading the subject
- Ask the user for the version number if it can't be determined

Download

This skill is free — download instantly, no account required.

Installation

1. Download the ZIP

Click the download button above

2. Extract to skills directory

~/.claude/skills/changelog-generator/

3. Restart Claude Code

The skill auto-discovers on next session

Want something different?

Generate a custom skill tailored to your exact needs.

Open Builder