Generate structured changelogs from git history. Supports conventional commits, semantic versioning, and multiple output formats. Use when preparing releases, writing release notes, or documenting project history.
bash
# Generate changelog for latest unreleased changes
python3 scripts/generate_changelog.py
# Generate changelog between two tags
python3 scripts/generate_changelog.py --from v1.2.0 --to v1.3.0
# Generate for last N commits
python3 scripts/generate_changelog.py --last 20
# Generate since a date
python3 scripts/generate_changelog.py --since 2026-04-01
bash
# Markdown (default)
python3 scripts/generate_changelog.py --format markdown
# Keep a Changelog format (keepachangelog.com)
python3 scripts/generate_changelog.py --format keepachangelog
# GitHub Release format
python3 scripts/generate_changelog.py --format github-release
# JSON (for programmatic use)
python3 scripts/generate_changelog.py --format json
Parses standard prefixes:
feat: → Featuresfix: → Bug Fixesrefactor: → Code Refactoringdocs: → Documentationtest: → Testsperf: → Performanceci: → CI/CDchore: → MaintenanceBREAKING CHANGE: → Breaking Changes (highlighted)Non-conventional commits are categorized as "Other Changes" with AI-assisted categorization.
ParameterDescriptionDefault--fromStart tag/commitLast tag--toEnd tag/commitHEAD--lastLast N commitsAll since last tag--sinceStart date (YYYY-MM-DD)None--formatOutput formatmarkdown``--outputWrite to filestdout--repoRepository pathCurrent directory--include-authorsShow commit authorsfalse--include-hashesShow commit hashesfalse--group-byGroup by type or scope``type
When used as an agent skill, the AI can: