Skip to main content

/release-iterate-changelog

Generate user-facing changelogs with impact notes and support guidance from git history.


What It Does

Analyzes git commits since the last tag, classifies them using Conventional Commits parsing and freeform heuristics, and generates a Keep a Changelog-formatted file with user impact assessment and support guidance.

The skill writes a single living CHANGELOG.md file that gets updated on each run — not versioned snapshots. It supports 5 input modes for different workflows.


Quick Start

# Auto-generate from git history (most common)
/release-iterate-changelog

# Create a new changelog from scratch
/release-iterate-changelog create

# Promote Unreleased to a version
/release-iterate-changelog release v1.2.0

# Add a single entry manually
/release-iterate-changelog add "New dark mode toggle"

# Parse a list of changes
/release-iterate-changelog "Added export feature, fixed login timeout, removed legacy API"

Input Modes

ModeFormatDescription
Auto-generate(no args)Analyze git commits since last tag
CreatecreateCreate a new CHANGELOG.md from scratch
Releaserelease vX.Y.ZPromote [Unreleased] to versioned section
Addadd "<description>"Add entry to [Unreleased] manually
From inputFree textParse provided text into changelog format

What It Asks

QuestionWhenWhy
Project namecreate modeHeader for new changelog
Repository URLcreate modeComparison links in footer
Initial versioncreate modeFirst version entry

In auto-generate mode, the skill works without questions — it reads git history directly.


How It Classifies Changes

Conventional Commits (tried first)

Commits matching type(scope): description are mapped automatically:

Commit TypeChangelog Category
featAdded
fixFixed
feat! / BREAKING CHANGEChanged or Removed
perfChanged
securitySecurity
deprecateDeprecated

Commits like docs, test, ci, chore are filtered as non-user-facing.

Freeform Commits (fallback)

For non-conventional commits, the skill uses:

  1. Keyword matching ("add", "fix", "remove", etc.)
  2. File path analysis (new files → Added, deleted → Removed)
  3. Diff statistics (small patch → Fixed, large change → Changed)
  4. LLM classification for ambiguous cases

Output

Path: $JAAN_OUTPUTS_DIR/CHANGELOG.md

Follows Keep a Changelog format with 6 standard change types: Added, Changed, Deprecated, Removed, Fixed, Security.

The output also includes:

  • User Impact Notes — High/Medium/Low impact classification per change
  • Support Guidance — FAQ entries, migration steps, known issues
  • Skipped Commits — Filtered non-user-facing commits with rationale

Example

Input:

/release-iterate-changelog

Git history analyzed (5 commits since v1.1.0):

feat(auth): add OAuth2 login support
fix(api): prevent race condition in request handler
docs: update README with new API endpoints
chore: bump dependencies
perf: optimize dashboard query by 40%

Draft presented at HARD STOP:

Suggested Version: 1.2.0 (MINOR — new feature added)

### Added
- OAuth2 login support for third-party authentication

### Changed
- Dashboard query optimized, reducing load time by 40%

### Fixed
- Race condition in API request handler that caused intermittent failures

Skipped: 2 commits (docs-only, chore)

Written to: $JAAN_OUTPUTS_DIR/CHANGELOG.md


Tips

  • Run with no arguments for the most common workflow — auto-generate from git
  • Use release vX.Y.Z after accumulating entries in [Unreleased]
  • The skill suggests a SemVer bump based on change types — review it before accepting
  • Skipped commits are tracked transparently so nothing is silently lost
  • Feed the output into /support-help-article for user documentation

Chain Context

This skill sits in the release iteration chain:

release-iterate-top-fixes → release-iterate-changelog → support-help-article

The changelog output feeds support documentation downstream.


Learning

This skill reads from:

$JAAN_LEARN_DIR/jaan-to-release-iterate-changelog.learn.md

Add feedback:

/learn-add release-iterate-changelog "Always include migration steps for breaking changes"


Technical Details

  • Logical Name: release-iterate-changelog
  • Command: /release-iterate-changelog
  • Role: release
  • Output: $JAAN_OUTPUTS_DIR/CHANGELOG.md (single living file)
  • Standards: Keep a Changelog 1.1.0, SemVer 2.0.0, Conventional Commits 1.0.0
  • Research: $JAAN_OUTPUTS_DIR/research/66-release-iterate-changelog.md