{"id":35828702,"url":"https://github.com/atasoglu/kacs","last_synced_at":"2026-01-31T05:39:58.741Z","repository":{"id":332413518,"uuid":"1129847447","full_name":"atasoglu/kacs","owner":"atasoglu","description":"Keep a changelog, stupid! Generate changelogs from git commits using LLM.","archived":false,"fork":false,"pushed_at":"2026-01-09T19:04:33.000Z","size":121,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T20:02:59.262Z","etag":null,"topics":["artificial-intelligence","changelog","changelog-generator","cicd","git","llm","structured-output"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/kacs/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atasoglu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-07T17:05:53.000Z","updated_at":"2026-01-09T19:04:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/atasoglu/kacs","commit_stats":null,"previous_names":["atasoglu/kacs"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/atasoglu/kacs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atasoglu%2Fkacs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atasoglu%2Fkacs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atasoglu%2Fkacs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atasoglu%2Fkacs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atasoglu","download_url":"https://codeload.github.com/atasoglu/kacs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atasoglu%2Fkacs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28930572,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T04:05:25.756Z","status":"ssl_error","status_checked_at":"2026-01-31T04:02:35.005Z","response_time":128,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artificial-intelligence","changelog","changelog-generator","cicd","git","llm","structured-output"],"created_at":"2026-01-07T21:15:02.429Z","updated_at":"2026-01-31T05:39:58.731Z","avatar_url":"https://github.com/atasoglu.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kacs\n\n[![CI](https://github.com/atasoglu/kacs/actions/workflows/pre-commit.yml/badge.svg)](https://github.com/atasoglu/kacs/actions/workflows/pre-commit.yml)\n[![PyPI version](https://img.shields.io/pypi/v/kacs)](https://pypi.org/project/kacs/)\n[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**Keep a changelog, stupid!**\n\nA minimal Python CLI tool that generates changelogs from git commit messages using LLM analysis. Perfect for CI/CD pipelines and automated release workflows.\n\n## Features\n\n- 🚀 **Minimal dependencies** - Only requires `ask2api` + Python stdlib\n- 📝 **Multiple formats** - Keep a Changelog, GitHub, GitLab, or custom templates\n- 🤖 **LLM-powered analysis** - Automatically categorizes commits into Added, Changed, Fixed, etc.\n- ⚡ **CI/CD ready** - Fast execution suitable for automated workflows\n- 🎯 **Git tag based** - Extract commits between any two git tags\n\n## Installation\n\n```bash\npip install kacs\n```\n\n## Setup\n\nSet your API key as an environment variable:\n\n```bash\nexport ASK2API_API_KEY=\"your-api-key\"\n# or\nexport OPENAI_API_KEY=\"your-openai-key\"\n```\n\n## Usage\n\n### Basic Usage\n\n```bash\n# Generate changelog between two tags\nkacs --from-tag v1.0.0 --to-tag v1.1.0\n\n# With custom date\nkacs --from-tag v1.0.0 --to-tag v1.1.0 --date 2017-07-17\n\n# Save to file\nkacs --from-tag v1.0.0 --to-tag v1.1.0 --output CHANGELOG.md\n```\n\n### Templates\n\n```bash\n# Use GitHub format\nkacs --from-tag v1.0.0 --to-tag v1.1.0 --template github\n\n# Use GitLab format\nkacs --from-tag v1.0.0 --to-tag v1.1.0 --template gitlab\n\n# Use custom template\nkacs --from-tag v1.0.0 --to-tag v1.1.0 --custom-template ./my-template.j2\n```\n\n### Commit Links\n\n```bash\n# Include commit links (auto-detects repository URL)\nkacs --from-tag v1.0.0 --to-tag v1.1.0 --include-links\n\n# With explicit repository URL\nkacs --from-tag v1.0.0 --to-tag v1.1.0 --include-links --repo-url https://github.com/user/repo\n```\n\n### Example Output\n\n**Keep a Changelog format (default):**\n```markdown\n## [1.1.0] - 2024-01-15\n\n### Added\n- New user authentication system\n- Support for multiple database backends\n\n### Changed\n- Improved error handling in API endpoints\n- Updated documentation structure\n\n### Fixed\n- Fixed memory leak in background tasks\n- Resolved issue with concurrent requests\n```\n\n**GitHub format:**\n```markdown\n## What's Changed in 1.1.0\n\n### ✨ New Features\n* New user authentication system\n* Support for multiple database backends\n\n### 🐛 Bug Fixes\n* Fixed memory leak in background tasks\n\n**Full Changelog**: https://github.com/user/repo/compare/v1.0.0...v1.1.0\n```\n\n### CI/CD Integration\n\n```yaml\n# GitHub Actions example\n- name: Generate Changelog\n  run: |\n    pip install kacs\n    kacs --from-tag ${{ github.event.release.tag_name }} --to-tag HEAD --output CHANGELOG.md\n  env:\n    ASK2API_API_KEY: ${{ secrets.ASK2API_API_KEY }}\n```\n\n## Documentation\n\n- [Template System](docs/TEMPLATES.md) - Learn about built-in templates and creating custom ones\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Run tests and linting\n5. Submit a pull request\n\n## Links\n\n- [PyPI Package](https://pypi.org/project/kacs/)\n- [GitHub Repository](https://github.com/atasoglu/kacs)\n- [Keep a Changelog](https://keepachangelog.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatasoglu%2Fkacs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatasoglu%2Fkacs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatasoglu%2Fkacs/lists"}