changelog-ai
Generate professional CHANGELOG entries from git history — in seconds.
changelog-ai # unreleased since last tag
changelog-ai --release-version v1.2.0 # label the release
changelog-ai --format github # GitHub Releases format
changelog-ai --prepend CHANGELOG.md # write to file
The problem
Writing a CHANGELOG is one of the most tedious tasks in software development:
"Okay, I have 43 commits since v1.0.0... let me read each one and figure out what to say."
You already wrote the commits. Why are you also writing about them?
changelog-ai reads your git history and writes the CHANGELOG for you.
Even with messy commit messages. Even without conventional commits.
Why changelog-ai?
git-cliff (3.2k stars) and conventional-changelog are great — if you write perfect conventional commits.
changelog-ai goes further:
| Feature | changelog-ai | git-cliff | conv-changelog |
|---|---|---|---|
| Works with messy commits | ✅ | ❌ | ❌ |
| AI-summarized descriptions | ✅ | ❌ | ❌ |
| Groups related commits | ✅ | limited | limited |
| Keep a Changelog format | ✅ | ✅ | ✅ |
| GitHub Releases format | ✅ | ✅ | ✅ |
| Local LLM support (Ollama) | ✅ | ❌ | ❌ |
| Breaking change detection | ✅ | ✅ | ✅ |
Install
pip install changelog-ai
Or with pipx (recommended):
pipx install changelog-ai
Quick Start
# Auto-detects provider from env (ANTHROPIC_API_KEY or OPENAI_API_KEY)
changelog-ai
# Label the release version
changelog-ai --release-version v1.2.0
# Generate for a specific range
changelog-ai --from v1.0.0 --to v1.1.0
# GitHub Releases format
changelog-ai --format github
# Write to CHANGELOG.md
changelog-ai --release-version v1.2.0 --prepend CHANGELOG.md
# Preview without writing
changelog-ai --prepend CHANGELOG.md --dry-run
# List available tags
changelog-ai --list-tags
# No API key needed
changelog-ai --provider ollama --model llama3.2
Formats
--format keepachangelog (default)
Follows Keep a Changelog spec with Added, Changed, Fixed, Security, Breaking Changes sections.
--format github
GitHub Release Notes style with "What's Changed" summary.
--format minimal
Simple bullet list — great for internal changelogs.
Providers
| Provider | Flag | Requires |
|---|---|---|
| Claude (default if key exists) | --provider claude |
ANTHROPIC_API_KEY |
| OpenAI | --provider openai |
OPENAI_API_KEY |
| Ollama (local, free) | --provider ollama |
Ollama running |
Options
changelog-ai [PATH] [OPTIONS]
Ref range:
--from REF Start ref (tag, SHA, branch). Defaults to latest tag.
--to REF End ref [default: HEAD]
Release info:
--release-version VER Version label (e.g. v1.2.0) [default: Unreleased]
--date DATE Release date YYYY-MM-DD [default: today]
Format:
--format keepachangelog | github | minimal [default: keepachangelog]
Output:
--prepend FILE Prepend entry to this file
--dry-run Preview without writing
--raw Plain text output (no formatting)
Utilities:
--list-tags List recent tags and exit
--show-commits Show commits found before generating
-V, --version Show version
-h, --help Show help
Tips
# Release workflow
changelog-ai --list-tags # see last release
changelog-ai --release-version v1.3.0 --dry-run # preview
changelog-ai --release-version v1.3.0 --prepend CHANGELOG.md # commit it
# GitHub Release automation
changelog-ai --format github --raw > release-notes.txt
gh release create v1.3.0 --notes-file release-notes.txt
Related Tools
gitbrief — Pack the right files from any repo into LLM-ready context.
gpr — AI-powered PR descriptions and commit messages.
standup-ai — Generate daily standups from git commits.
# The complete AI-powered git workflow:
standup-ai --yesterday # 1. morning standup
gitbrief . --changed-only # 2. pack context for review
gpr # 3. generate PR description
gpr --commit-run # 4. commit with AI message
changelog-ai --release-version v1.x.0 --prepend CHANGELOG.md # 5. update changelog
Development
git clone https://github.com/faw21/changelog-ai
cd changelog-ai
python -m venv .venv && source .venv/bin/activate
.venv/bin/pip install -e ".[dev]"
pytest tests/ # 49 tests, 87% coverage
License
MIT
Metadata
Release files for changelog-ai 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| changelog_ai-0.1.0.tar.gz | 12.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| changelog_ai-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.4 kB
Release files / changelog_ai-0.1.0.tar.gz
| Download URL | changelog_ai-0.1.0.tar.gz |
|---|---|
| Size | 12.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
597829dedc38088718eab1007ed6c17bf2444531d5bf99fe046f33a6b8c16568
|
|
BLAKE2b-256 checksum How to use checksums |
bac16da168f14d4d1be78646efec994f882777c9e0ceb0fa90ba3c79060f7869
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Release files / changelog_ai-0.1.0-py3-none-any.whl
| Download URL | changelog_ai-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d53f259cfe26362f8f36d9a4fa8dd4e3c0196dcadaa8f06d1d8f7a91325dfa2
|
|
BLAKE2b-256 checksum How to use checksums |
fce328183256c8167deb0ecd3915f72025f782383072a0b03d52a5ece0bd889a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|