Keep a changelog, stupid!
A minimal Python CLI tool that generates changelogs from git commit messages using LLM analysis. Perfect for CI/CD pipelines and automated release workflows.
- 🚀 Minimal dependencies - Only requires
ask2api+ Python stdlib - 📝 Multiple formats - Keep a Changelog, GitHub, GitLab, or custom templates
- 🤖 LLM-powered analysis - Automatically categorizes commits into Added, Changed, Fixed, etc.
- ⚡ CI/CD ready - Fast execution suitable for automated workflows
- 🎯 Git tag based - Extract commits between any two git tags
pip install kacsSet your API key as an environment variable:
export ASK2API_API_KEY="your-api-key"
# or
export OPENAI_API_KEY="your-openai-key"# Generate changelog between two tags
kacs --from-tag v1.0.0 --to-tag v1.1.0
# With custom date
kacs --from-tag v1.0.0 --to-tag v1.1.0 --date 2017-07-17
# Save to file
kacs --from-tag v1.0.0 --to-tag v1.1.0 --output CHANGELOG.md# Use GitHub format
kacs --from-tag v1.0.0 --to-tag v1.1.0 --template github
# Use GitLab format
kacs --from-tag v1.0.0 --to-tag v1.1.0 --template gitlab
# Use custom template
kacs --from-tag v1.0.0 --to-tag v1.1.0 --custom-template ./my-template.j2# Include commit links (auto-detects repository URL)
kacs --from-tag v1.0.0 --to-tag v1.1.0 --include-links
# With explicit repository URL
kacs --from-tag v1.0.0 --to-tag v1.1.0 --include-links --repo-url https://github.com/user/repoKeep a Changelog format (default):
## [1.1.0] - 2024-01-15
### Added
- New user authentication system
- Support for multiple database backends
### Changed
- Improved error handling in API endpoints
- Updated documentation structure
### Fixed
- Fixed memory leak in background tasks
- Resolved issue with concurrent requestsGitHub format:
## What's Changed in 1.1.0
### ✨ New Features
* New user authentication system
* Support for multiple database backends
### 🐛 Bug Fixes
* Fixed memory leak in background tasks
**Full Changelog**: https://github.com/user/repo/compare/v1.0.0...v1.1.0# GitHub Actions example
- name: Generate Changelog
run: |
pip install kacs
kacs --from-tag ${{ github.event.release.tag_name }} --to-tag HEAD --output CHANGELOG.md
env:
ASK2API_API_KEY: ${{ secrets.ASK2API_API_KEY }}- Template System - Learn about built-in templates and creating custom ones
MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request