kacs
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.
Features
- 🚀 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
Installation
pip install kacs
Setup
Set your API key as an environment variable:
export ASK2API_API_KEY="your-api-key"
# or
export OPENAI_API_KEY="your-openai-key"
Usage
Basic Usage
# 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
Templates
# 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
Commit Links
# 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/repo
Example Output
Keep 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 requests
GitHub 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
CI/CD Integration
# 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 }}
Documentation
- Template System - Learn about built-in templates and creating custom ones
License
MIT License - see LICENSE file for details.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
Links
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
kacs-0.6.0.tar.gz
(13.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
kacs-0.6.0-py3-none-any.whl
(10.5 kB
view details)
File details
Details for the file kacs-0.6.0.tar.gz.
File metadata
- Download URL: kacs-0.6.0.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc3a1d113cdd7351ec6e1ca4e9e8bc0bf508cd96f41fe2dec1111519c1fa44f1
|
|
| MD5 |
aeb4981943e0c132dd2426740c410517
|
|
| BLAKE2b-256 |
f4b5f9f5cf3cc4e5cb61546f715fa0149efebe3a7edae5ac18404d6d55fd1f26
|
File details
Details for the file kacs-0.6.0-py3-none-any.whl.
File metadata
- Download URL: kacs-0.6.0-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0315e8903b519abb95fc14efdc14200cdcc0830bf97a24dcdd8d046cc560a0d
|
|
| MD5 |
173a4a4f43af3b7236a8fcd36dbb4c26
|
|
| BLAKE2b-256 |
9a409f3e8af3b8266daad3607edbcb55d745e28e650f8ab57831e6bb939c0ff6
|