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!
- AI-Powered Analysis: Automatically analyzes your staged
git diffto 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
-
Clone the repository:
git clone https://github.com/arpxspace/smartcommit.git cd smartcommit -
Build the binary:
-
Move to your PATH (optional):
mv smartcommit /usr/local/bin/
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
-
Stage your changes:
-
Run smartcommit:
-
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.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'feat: Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
