{"id":30940794,"url":"https://github.com/cellwebb/gac","last_synced_at":"2026-03-09T03:31:11.405Z","repository":{"id":284275474,"uuid":"902155585","full_name":"cellwebb/gac","owner":"cellwebb","description":"Intelligent LLM-powered git commit message generator that understands your code!","archived":false,"fork":false,"pushed_at":"2026-02-26T18:17:41.000Z","size":9507,"stargazers_count":294,"open_issues_count":0,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-27T00:24:32.035Z","etag":null,"topics":["ai","aitools","genai","generative-ai","generative-ai-tools","git","gittools","llm","llmtools","vibe-coding","vibecoding"],"latest_commit_sha":null,"homepage":"","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/cellwebb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-12-12T02:41:28.000Z","updated_at":"2026-02-26T18:17:44.000Z","dependencies_parsed_at":"2025-07-03T23:25:48.571Z","dependency_job_id":"73fb6cb4-2636-4b45-a1eb-58698933f020","html_url":"https://github.com/cellwebb/gac","commit_stats":null,"previous_names":["cellwebb/gac","criteria-dev/gac"],"tags_count":206,"template":false,"template_full_name":null,"purl":"pkg:github/cellwebb/gac","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cellwebb%2Fgac","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cellwebb%2Fgac/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cellwebb%2Fgac/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cellwebb%2Fgac/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cellwebb","download_url":"https://codeload.github.com/cellwebb/gac/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cellwebb%2Fgac/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30281484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"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":["ai","aitools","genai","generative-ai","generative-ai-tools","git","gittools","llm","llmtools","vibe-coding","vibecoding"],"created_at":"2025-09-10T21:01:35.466Z","updated_at":"2026-03-09T03:31:11.394Z","avatar_url":"https://github.com/cellwebb.png","language":"Python","funding_links":[],"categories":["Development Workflows \u0026 Agents"],"sub_categories":["Other IDEs"],"readme":"\u003c!-- markdownlint-disable MD013 --\u003e\n\u003c!-- markdownlint-disable MD033 MD036 --\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n# 🚀 Git Auto Commit (gac)\n\n[![PyPI version](https://img.shields.io/pypi/v/gac.svg)](https://pypi.org/project/gac/)\n[![Python](https://img.shields.io/badge/python-3.10--3.14-blue.svg)](https://www.python.org/downloads/)\n[![Build Status](https://github.com/cellwebb/gac/actions/workflows/ci.yml/badge.svg)](https://github.com/cellwebb/gac/actions)\n[![codecov](https://codecov.io/gh/cellwebb/gac/branch/main/graph/badge.svg)](https://app.codecov.io/gh/cellwebb/gac)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![mypy](https://img.shields.io/badge/mypy-checked-blue.svg)](https://mypy-lang.org/)\n[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](docs/en/CONTRIBUTING.md)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n**English** | [简体中文](docs/zh-CN/README.md) | [繁體中文](docs/zh-TW/README.md) | [日本語](docs/ja/README.md) | [한국어](docs/ko/README.md) | [हिन्दी](docs/hi/README.md) | [Tiếng Việt](docs/vi/README.md) | [Français](docs/fr/README.md) | [Русский](docs/ru/README.md) | [Español](docs/es/README.md) | [Português](docs/pt/README.md) | [Norsk](docs/no/README.md) | [Svenska](docs/sv/README.md) | [Deutsch](docs/de/README.md) | [Nederlands](docs/nl/README.md) | [Italiano](docs/it/README.md)\n\n**LLM-powered commit messages that understand your code!**\n\n**Automate your commits!** Replace `git commit -m \"...\"` with `gac` for contextual, well-formatted commit messages generated by large language models!\n\n---\n\n## What You Get\n\nIntelligent, contextual messages that explain the **why** behind your changes:\n\n![GAC generating a contextual commit message](assets/gac-simple-usage.png)\n\n---\n\n\u003c/div\u003e\n\n\u003c!-- markdownlint-enable MD033 MD036 --\u003e\n\n## Quick Start\n\n### Use gac without installing\n\n```bash\nuvx gac init   # Configure your provider, model, and language\nuvx gac  # Generate and commit with LLM\n```\n\nThat's it! Review the generated message and confirm with `y`.\n\n### Install and use gac\n\n```bash\nuv tool install gac\ngac init\ngac\n```\n\n### Upgrade installed gac\n\n```bash\nuv tool upgrade gac\n```\n\n---\n\n## Key Features\n\n### 🌐 **25+ Supported Providers**\n\n- **Anthropic** • **Azure OpenAI** • **Cerebras** • **Chutes.ai** • **Claude Code (OAuth)**\n- **DeepSeek** • **Fireworks** • **Gemini** • **Groq** • **Kimi for Coding** • **LM Studio**\n- **MiniMax.io** • **Mistral AI** • **Moonshot AI** • **Ollama** • **OpenAI** • **OpenRouter**\n- **Qwen.ai (OAuth)** • **Replicate** • **Streamlake** • **Synthetic.new** • **Together AI**\n- **Z.AI** • **Z.AI Coding** • **Custom Endpoints (Anthropic/OpenAI)**\n\n### 🧠 **Smart LLM Analysis**\n\n- **Understands intent**: Analyzes code structure, logic, and patterns to understand the \"why\" behind your changes, not just what changed\n- **Semantic awareness**: Recognizes refactoring, bug fixes, features, and breaking changes to generate contextually appropriate messages\n- **Intelligent filtering**: Prioritizes meaningful changes while ignoring generated files, dependencies, and artifacts\n- **Intelligent commit grouping** - Automatically group related changes into multiple logical commits with `--group`\n\n### 📝 **Multiple Message Formats**\n\n- **One-liner** (-o flag): Single-line commit message following conventional commit format\n- **Standard** (default): Summary with bullet points explaining implementation details\n- **Verbose** (-v flag): Comprehensive explanations including motivation, technical approach, and impact analysis\n- **50/72 rule** (--50-72 flag): Enforce the classic commit message format for optimal readability in git log and GitHub UI\n\n### 🌍 **Multilingual Support**\n\n- **25+ languages**: Generate commit messages in English, Chinese, Japanese, Korean, Spanish, French, German, and 20+ more languages\n- **Flexible translation**: Choose to keep conventional commit prefixes in English for tool compatibility, or fully translate them\n- **Multiple workflows**: Set a default language with `gac language`, or use `-l \u003clanguage\u003e` flag for one-time overrides\n- **Native script support**: Full support for non-Latin scripts including CJK, Cyrillic, Thai, and more\n\n### 💻 **Developer Experience**\n\n- **Interactive feedback**: Type `r` to reroll, `e` to edit in-place with vi/emacs keybindings, or directly type your feedback like `make it shorter` or `focus on the bug fix`\n- **Interactive questioning**: Use `--interactive` (`-i`) to answer targeted questions about your changes for more contextual commit messages\n- **One-command workflows**: Complete workflows with flags like `gac -ayp` (stage all, auto-confirm, push)\n- **Git integration**: Respects pre-commit and lefthook hooks, running them before expensive LLM operations\n\n### 🛡️ **Built-in Security**\n\n- **Automatic secret detection**: Scans for API keys, passwords, and tokens before committing\n- **Interactive protection**: Prompts before committing potentially sensitive data with clear remediation options\n- **Smart filtering**: Ignores example files, template files, and placeholder text to reduce false positives\n\n---\n\n## Usage Examples\n\n### Basic Workflow\n\n```bash\n# Stage your changes\ngit add .\n\n# Generate and commit with LLM\ngac\n\n# Review → y (commit) | n (cancel) | r (reroll) | e (edit) | or type feedback\n```\n\n### Common Commands\n\n| Command         | Description                                                             |\n| --------------- | ----------------------------------------------------------------------- |\n| `gac`           | Generate commit message                                                 |\n| `gac -y`        | Auto-confirm (no review needed)                                         |\n| `gac -a`        | Stage all before generating commit message                              |\n| `gac -o`        | One-line message for trivial changes                                    |\n| `gac -v`        | Verbose format with Motivation, Technical Approach, and Impact Analysis |\n| `gac -h \"hint\"` | Add context for LLM (e.g., `gac -h \"bug fix\"`)                          |\n| `gac -s`        | Include scope (e.g., feat(auth):)                                       |\n| `gac -i`        | Ask questions about changes for better context                          |\n| `gac -g`        | Group changes into multiple logical commits                             |\n| `gac -p`        | Commit and push                                                         |\n\n### Power User Examples\n\n```bash\n# Complete workflow in one command\ngac -ayp -h \"release preparation\"\n\n# Detailed explanation with scope\ngac -v -s\n\n# Quick one-liner for small changes\ngac -o\n\n# Group changes into logically related commits\ngac -ag\n\n# Interactive mode with verbose output for detailed explanations\ngac -iv\n\n# Debug what the LLM sees\ngac --show-prompt\n\n# Skip security scan (use carefully)\ngac --skip-secret-scan\n```\n\n### Interactive Feedback System\n\nNot happy with the result? You have several options:\n\n```bash\n# Simple reroll (no feedback)\nr\n\n# Edit in-place with rich terminal editing\ne\n# Uses prompt_toolkit for multi-line editing with vi/emacs keybindings\n# Press Esc+Enter or Ctrl+S to submit, Ctrl+C to cancel\n\n# Or just type your feedback directly!\nmake it shorter and focus on the performance improvement\nuse conventional commit format with scope\nexplain the security implications\n\n# Press Enter on empty input to see the prompt again\n```\n\nThe edit feature (`e`) provides rich in-place terminal editing, allowing you to:\n\n- **Edit naturally**: Multi-line editing with familiar vi/emacs key bindings\n- **Make quick fixes**: Correct typos, adjust wording, or refine formatting\n- **Add details**: Include information the LLM might have missed\n- **Restructure**: Reorganize bullet points or change the message structure\n\n---\n\n## Configuration\n\nRun `gac init` to configure your provider interactively, or set environment variables:\n\nNeed to change providers or models later without touching language settings? Use `gac model` for a streamlined flow that skips the language prompts.\n\n```bash\n# Example configuration\nGAC_MODEL=anthropic:your-model-name\nOPENAI_API_KEY=your_key_here\nANTHROPIC_API_KEY=your_key_here\n```\n\nSee `.gac.env.example` for all available options.\n\n**Want commit messages in another language?** Run `gac language` to select from 25+ languages including Español, Français, 日本語, and more.\n\n**Want to customize commit message style?** See [docs/CUSTOM_SYSTEM_PROMPTS.md](docs/en/CUSTOM_SYSTEM_PROMPTS.md) for guidance on writing custom system prompts.\n\n---\n\n## Project Analytics\n\n📊 **[View live usage analytics and statistics →](https://clickpy.clickhouse.com/dashboard/gac)**\n\nTrack real-time installation metrics and package download statistics.\n\n---\n\n## Getting Help\n\n- **Full documentation**: [docs/USAGE.md](docs/en/USAGE.md) - Complete CLI reference\n- **Claude Code OAuth**: [docs/CLAUDE_CODE.md](docs/en/CLAUDE_CODE.md) - Claude Code setup and authentication\n- **Qwen.ai OAuth**: [docs/QWEN.md](docs/en/QWEN.md) - Qwen.ai setup and authentication\n- **Custom prompts**: [docs/CUSTOM_SYSTEM_PROMPTS.md](docs/en/CUSTOM_SYSTEM_PROMPTS.md) - Customize commit message style\n- **Troubleshooting**: [docs/TROUBLESHOOTING.md](docs/en/TROUBLESHOOTING.md) - Common issues and solutions\n- **Contributing**: [docs/CONTRIBUTING.md](docs/en/CONTRIBUTING.md) - Development setup and guidelines\n\n---\n\n\u003c!-- markdownlint-disable MD033 MD036 --\u003e\n\n\u003cdiv align=\"center\"\u003e\n\nMade with ❤️ for developers who want better commit messages\n\n[⭐ Star us on GitHub](https://github.com/cellwebb/gac) • [🐛 Report issues](https://github.com/cellwebb/gac/issues) • [📖 Full docs](docs/en/USAGE.md)\n\n\u003c/div\u003e\n\n\u003c!-- markdownlint-enable MD033 MD036 --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcellwebb%2Fgac","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcellwebb%2Fgac","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcellwebb%2Fgac/lists"}