Back Original

Show HN: Build the habit of writing meaningful commit messages

smartcommit is an intelligent, AI-powered CLI tool that helps you write semantic, Conventional Commits messages effortlessly. It analyzes your staged changes, asks clarifying questions to understand the "why" behind your code, and generates a structured commit message for you.

Future you will thank you for deciding to use smartcommit!

smartcommit Demo

  • AI-Powered Analysis: Automatically analyzes your staged git diff to understand what changed.
  • Interactive Q&A: Asks you specific, relevant questions to gather context that isn't obvious from the code alone (the "why" and "intent").
  • Multi-Provider Support:
    • OpenAI (GPT-4o): For top-tier accuracy and performance.
    • Ollama (Llama 3.1): Run locally and privately for free.
  • Conventional Commits: strictly enforces the Conventional Commits specification (feat, fix, chore, etc.).
  • Beautiful TUI: A responsive, easy-to-use Terminal User Interface built with Bubble Tea.
  • Go (1.21 or later)
  • Git installed and available in your PATH.
  • (Optional) Ollama installed locally if you plan to use the local model.
go install github.com/arpxspace/smartcommit@latest
  1. Clone the repository:

    git clone https://github.com/arpxspace/smartcommit.git
    cd smartcommit
  2. Build the binary:

  3. Move to your PATH (optional):

    mv smartcommit /usr/local/bin/

Use instead of git commit

To use smartcommit as your default git commit command, run:

git config --global alias.ci '!smartcommit'

Or for this repository only:

git config alias.ci '!smartcommit'

Usage:

  • To commit with smartcommit: git ci
  1. Stage your changes:

  2. Run smartcommit:

  3. Follow the TUI:

    • First Run: You'll be asked to choose your AI provider (OpenAI or Ollama) and configure it.
    • Analysis: The AI will analyze your changes.
    • Questions: Answer a few questions to provide context.
    • Review: The AI generates a commit message. You can edit it or confirm it to commit immediately.

If you already know what you want to write, you can select "I already know what to write" from the main menu to open your default git editor.

smartcommit stores its configuration in a local file (usually ~/.smartcommit/config.json).

  • OPENAI_API_KEY: If set, smartcommit can detect this during setup and ask if you want to use it, saving you from pasting it manually.

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'feat: Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Distributed under the MIT License. See LICENSE for more information.