←back to thread

52 points merge-conflict | 5 comments | | HN request time: 0s | source

GAC is a tool I built to help users spend less time summing up what was done and more time building. It uses LLMs to generate contextual git commit messages from your code changes. And it can be a drop-in replacement for `git commit -m "..."`.

Example:

  feat(auth): add OAuth2 integration with GitHub and Google

  - Implement OAuth2 authentication flow

  - Add provider configuration for GitHub and Google

  - Create callback handler for token exchange

  - Update login UI with social auth buttons
Don't like it? Reroll with 'r', or type `r "focus on xyz"` and it rerolls the commit with your feedback.

You can try it out with uvx (no install):

  uvx gac init  # config wizard

  uvx gac
Note: `gac init` creates a .gac.env file in your home directory with your chosen provider, model, and API key.

Tech details:

14 providers - Supports local (Ollama & LM Studio) and cloud (OpenAI, Anthropic, Gemini, OpenRouter, Groq, Cerebras, Chutes, Fireworks, StreamLake, Synthetic, Together AI, & Z.ai (including their extremely cheap coding plans!)).

Three verbosity modes - Standard with bullets (default), one-liners (`-o`), or verbose (`-v`) with detailed Motivation/Architecture/Impact sections.

Secret detection - Scans for API keys, tokens, and credentials before committing. Has caught my API keys on a new project when I hadn't yet gitignored .env.

Flags - Automate common workflows:

  `gac -h "bug fix"` - pass hints to guide intent

  `gac -yo` - auto-accept the commit message in one-liner mode

  `gac -ayp` - stage all files, auto-accept the commit message, and push (yolo mode)
Would love to hear your feedback! Give it a try and let me know what you think! <3

GitHub: https://github.com/cellwebb/gac

1. seba_dos1 ◴[] No.45724220[source]
This misses the point of what a good commit message is so much that it could be a delightful satire.
replies(1): >>45724792 #
2. jacobsenscott ◴[] No.45724792[source]
Yeah - if these are better than your current commit messages, just don't write commit messages. Anyone can read the code.
replies(1): >>45725505 #
3. acoliver ◴[] No.45725505[source]
side-eye "anyone can read the code" -- usually the first words of someone who writes unreadable code. perl -e'$_=q/dk|jk`%fdk%w`da%qm`%fja`/;s/./chr(ord($&)^5)/seg;print'
replies(1): >>45741607 #
4. jacobsenscott ◴[] No.45741607{3}[source]
Well, my point is AI won't produce a better commit message than just reading the code. So either write a good commit message or don't write a message at all. AI just produces step by step descriptions that are easily gleaned by skimming the code. In your case it would say

* "Add perl to print the string anyone gan zea tne gode" (I'm impressed gemini got that close tbh)

A human would write:

"Wrote obfuscated perl to see if anyone actually reads the PRs. If they don't my next PR will include an obfuscated shell injection script."

replies(1): >>45742401 #
5. acoliver ◴[] No.45742401{4}[source]
pfth as if I'd use Gemini.