Skip to main content

Keep a changelog, stupid! Generate changelogs from git commits using LLM.

Project description

kacs

CI PyPI version Python 3.9+ License: MIT

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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests and linting
  5. Submit a pull request

Links

Project details


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kacs-0.6.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

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

Hashes for kacs-0.6.0.tar.gz
Algorithm Hash digest
SHA256 dc3a1d113cdd7351ec6e1ca4e9e8bc0bf508cd96f41fe2dec1111519c1fa44f1
MD5 aeb4981943e0c132dd2426740c410517
BLAKE2b-256 f4b5f9f5cf3cc4e5cb61546f715fa0149efebe3a7edae5ac18404d6d55fd1f26

See more details on using hashes here.

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

Hashes for kacs-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f0315e8903b519abb95fc14efdc14200cdcc0830bf97a24dcdd8d046cc560a0d
MD5 173a4a4f43af3b7236a8fcd36dbb4c26
BLAKE2b-256 9a409f3e8af3b8266daad3607edbcb55d745e28e650f8ab57831e6bb939c0ff6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page