Skill

changelog-generator

Auto-generate changelogs from git commits using conventional commit format. Groups by Added/Changed/Fixed/Security. Use when the user says "generate changelog", "CHANGELOG.md", "release notes from commits", "what changed", or needs to create a changelog for a release.

From project-orchestrator
Install
1
Run in your terminal
$
npx claudepluginhub vivekmano27/agent-orchestrator --plugin project-orchestrator
Tool Access

This skill is limited to using the following tools:

ReadWriteEditBashGrepGlob
Skill Content

Changelog Generator Skill

Auto-generate changelogs from git history using conventional commit format. Parses commit messages, groups them by type and scope, and produces a CHANGELOG.md following the Keep a Changelog standard.

When to Use

  • A release is being prepared and a changelog is needed
  • User asks to generate or update the CHANGELOG.md
  • A version tag is about to be created
  • Stakeholders need a summary of what changed since the last release
  • CI/CD pipeline needs automated release notes

Patterns

Conventional Commit Parsing

Map commit prefixes to changelog sections:

Commit PrefixChangelog SectionSemver Impact
featAddedminor
fixFixedpatch
refactorChangedpatch
perfChangedpatch
docsDocumentationnone
securitySecuritypatch
BREAKING CHANGEBreaking Changesmajor
deprecateDeprecatedminor
revertRevertedpatch

Commits with chore, ci, test, or build prefixes are excluded from user-facing changelogs.

Extract Commits Since Last Tag

# Get the latest tag
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")

# List commits since that tag (or all commits if no tag exists)
if [ -n "$LAST_TAG" ]; then
  git log "${LAST_TAG}..HEAD" --pretty=format:"%h|%s|%an|%ad" --date=short
else
  git log --pretty=format:"%h|%s|%an|%ad" --date=short
fi

Grouping by Scope

When the project is a monorepo, group entries by scope derived from the conventional commit:

feat(core-service): add project archiving endpoint
fix(ai-service): handle timeout on large inference requests
feat(web): add dark mode toggle to settings page
fix(mobile): correct bottom nav badge count on iOS

This produces a changelog organized by service:

### Core Service
- **Added:** Project archiving endpoint (#142)

### AI Service
- **Fixed:** Handle timeout on large inference requests (#156)

### Web
- **Added:** Dark mode toggle to settings page (#161)

### Mobile
- **Fixed:** Correct bottom nav badge count on iOS (#158)

Version Numbering (Semver)

Determine the next version automatically:

# If any commit contains "BREAKING CHANGE" or has a "!" after the type → major bump
# If any commit starts with "feat" → minor bump
# Otherwise → patch bump

Example logic:

COMMITS=$(git log "${LAST_TAG}..HEAD" --pretty=format:"%s")

if echo "$COMMITS" | grep -qE "^.*!:|BREAKING CHANGE"; then
  BUMP="major"
elif echo "$COMMITS" | grep -qE "^feat"; then
  BUMP="minor"
else
  BUMP="patch"
fi

CHANGELOG.md Template (Keep a Changelog)

# 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.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.2.0] - 2026-03-14

### Added
- Project archiving endpoint with soft-delete support (#142)
- Dark mode toggle to settings page (#161)

### Fixed
- Handle timeout on large AI inference requests (#156)
- Correct bottom nav badge count on iOS (#158)

### Changed
- Refactor user authentication flow to use refresh token rotation (#149)

### Security
- Upgrade jsonwebtoken to patch CVE-2026-XXXX (#163)

## [1.1.0] - 2026-02-28
...

Linking to Commits and PRs

Always include the short hash or PR number so readers can trace changes:

- **Added:** User profile avatars ([#134](https://github.com/org/repo/pull/134))
- **Fixed:** Race condition in queue consumer (`a1b2c3d`)

Anti-patterns

  • Manual changelogs — hand-writing entries leads to drift and missing items; always generate from git history
  • No version tags — without tags there is no anchor for "since last release"; tag every release
  • Mixing unrelated changes in one release — prefer single-responsibility releases; if scope is too broad, split the release
  • Including internal choreschore, ci, test commits clutter user-facing changelogs; filter them out
  • No PR or commit references — entries without traceability make debugging regressions harder
  • Inconsistent date format — always use ISO 8601 (YYYY-MM-DD)

Checklist

  • All commits since the last tag follow conventional commit format
  • Commits are parsed and grouped into the correct changelog sections
  • Version bump is calculated from commit types (major/minor/patch)
  • Entries are grouped by scope (service) in monorepo projects
  • Each entry includes a PR number or commit hash for traceability
  • chore, ci, test, and build commits are excluded
  • CHANGELOG.md follows Keep a Changelog format
  • Date uses ISO 8601 format
  • New version is prepended (not appended) to the changelog
  • A git tag is created for the new version after the changelog is finalized
Stats
Parent Repo Stars0
Parent Repo Forks0
Last CommitMar 15, 2026