Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
girijashankarj avatar

Changelog Generator

  • 1 installs
  • 27 repo stars
  • Updated April 25, 2026
  • girijashankarj/cursor-handbook

Generates a CHANGELOG.md from Conventional Commit history with grouped sections and version headers following the Keep a Changelog format.

About

Parses git commit history to produce a structured CHANGELOG following Keep a Changelog and Conventional Commits. A developer uses it to create or update a changelog, typically before a release.

  • Bundled generate-changelog.sh script builds the changelog from recent commits or since a tag
  • Groups changes into sections with version headers

Changelog Generator by the numbers

  • 1 all-time installs (skills.sh)
  • Ranked #210 of 248 Release Management skills by installs in the Skillselion catalog
  • Data as of Jul 22, 2026 (Skillselion catalog sync)
npx skills add https://github.com/girijashankarj/cursor-handbook --skill changelog-generator

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1
repo stars27
Last updatedApril 25, 2026
Repositorygirijashankarj/cursor-handbook

What it does

Generates a CHANGELOG.md from Conventional Commit history with grouped sections and version headers following the Keep a Changelog format.

Files

SKILL.mdMarkdownGitHub ↗

Skill: Changelog Generator

Parse git commit history and produce a structured CHANGELOG following Keep a Changelog format and Conventional Commits.

Trigger

When the user asks to generate, update, or create a changelog — or before a release.

Prerequisites

  • [ ] Git repository with Conventional Commit messages
  • [ ] Previous version tag known (or first release)

Quick Usage

For a quick changelog from recent commits, run the bundled script:

scripts/generate-changelog.sh [output-file] [since-tag]

Examples:

scripts/generate-changelog.sh                    # Last 20 commits → CHANGELOG.md
scripts/generate-changelog.sh CHANGELOG.md v1.0  # Commits since v1.0

For a fully structured Keep a Changelog output, follow the detailed steps below.

Steps

Step 1: Determine Version Range

  • [ ] Get the latest tag: git describe --tags --abbrev=0 2>/dev/null || echo "none"
  • [ ] Get all tags sorted: git tag --sort=-v:refname | head -10
  • [ ] Determine range: {last-tag}..HEAD (or all commits if no tag)
  • [ ] Ask user for the new version number or suggest based on changes:
  • Has feat → minor bump
  • Has fix only → patch bump
  • Has BREAKING CHANGE or ! → major bump

Step 2: Collect Commits

  • [ ] Run: git log {range} --pretty=format:"%H|%s|%an|%ad" --date=short
  • [ ] Parse each commit into: hash, type, scope, description, author, date
  • [ ] Identify breaking changes (footer or ! in type)

Step 3: Categorize Changes

SectionCommit TypesEmoji (optional)
Addedfeat
Fixedfix
Changedrefactor, perf
DeprecatedCommits mentioning deprecation
RemovedCommits removing features
Securityfix with security scope
Documentationdocs
Internalchore, ci, test, style, build

Step 4: Generate Changelog Entry

## [X.Y.Z] - YYYY-MM-DD

### Added
- **scope:** description ([hash](commit-url)) — @author

### Fixed
- **scope:** description ([hash](commit-url)) — @author

### Changed
- **scope:** description ([hash](commit-url)) — @author

### Breaking Changes
- **scope:** description of what broke and migration path

Step 5: Handle Edge Cases

  • [ ] Commits with no type prefix → categorize as Internal
  • [ ] Merge commits → skip (use --no-merges flag)
  • [ ] Multiple scopes → list under primary scope
  • [ ] Very long descriptions → truncate to first sentence

Step 6: Assemble Full Changelog

  • [ ] If CHANGELOG.md exists, prepend new entry after the header
  • [ ] If new file, add header:
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/),
and this project adheres to [Semantic Versioning](https://semver.org/).
  • [ ] Include comparison link: [X.Y.Z]: https://github.com/org/repo/compare/vPREV...vX.Y.Z

Step 7: Validate & Output

  • [ ] Verify no PII, secrets, or internal URLs in entries
  • [ ] Verify markdown renders correctly
  • [ ] Present as copyable output or write to CHANGELOG.md

Rules

  • ALWAYS follow Keep a Changelog format
  • ALWAYS group by change type, not by date or author
  • NEVER include merge commits or version bump commits
  • NEVER include secrets, internal URLs, or PII
  • Skip chore/ci/style commits by default (include if user requests)
  • Most recent version goes at the top

Completion

CHANGELOG.md entry ready to paste or written to file. Includes version header, grouped changes, and comparison links.

If a Step Fails

  • No tags exist: Treat all commits as the first release (v0.1.0 or v1.0.0)
  • Non-conventional commits: Group under "Other" with the raw message
  • Too many commits: Summarize by scope, list top 20, note "and N more"
  • No new commits since last tag: Report "No changes since vX.Y.Z"

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.