https://github.com/accursedgalaxy/noidea
AI-powered commit message suggestions via git hooks.
https://github.com/accursedgalaxy/noidea
ai git git-hooks llm
Last synced: 3 months ago
JSON representation
AI-powered commit message suggestions via git hooks.
- Host: GitHub
- URL: https://github.com/accursedgalaxy/noidea
- Owner: AccursedGalaxy
- License: mit
- Created: 2026-03-17T19:01:35.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-28T15:25:07.000Z (3 months ago)
- Last Synced: 2026-03-28T17:44:43.630Z (3 months ago)
- Topics: ai, git, git-hooks, llm
- Language: Python
- Homepage: https://noidea-ai.readthedocs.io/en/latest/
- Size: 5.92 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# noidea
**Because you shouldn't have to think about commit messages.**
Stages your diff, sends it to an AI, and pre-fills your commit editor — so you never have to write a commit message again.
[](https://pypi.org/project/noidea/)
[](https://pypi.org/project/noidea/)
[](https://github.com/AccursedGalaxy/noidea/stargazers)
[](https://github.com/AccursedGalaxy/noidea/blob/main/LICENSE)

---
## Quick Start
```bash
pipx install noidea
noidea init
```
That's it. Every `git commit` now opens your editor with a suggested message pre-filled.
> Requires [pipx](https://pipx.pypa.io). Alternatively: `pip install noidea`
## API Key Setup
noidea needs an Anthropic API key. Three options (checked in order):
| Method | Command |
|--------|---------|
| **Keyring** (recommended) | `noidea keys add` |
| **Environment variable** | `export ANTHROPIC_API_KEY=sk-ant-...` |
| **`.env` file** | `ANTHROPIC_API_KEY=sk-ant-...` in a `.env` file |
## Commands
| Command | Description |
|---------|-------------|
| `noidea init` | Install the `prepare-commit-msg` hook. Backs up any existing hook. Respects `core.hooksPath`. |
| `noidea suggest` | Generate a commit message from the staged diff and print it. |
| `noidea status` | Show current config, API key status, and hook installation. |
| `noidea keys` | Manage API keys in the system keyring (`show` / `add` / `remove`). |
| `noidea test` | Send a test message to Claude to verify connectivity. |
| `noidea update` | Upgrade noidea via `pipx` (falls back to `pip`). |
| `noidea --version` | Print the current version. |
### `noidea suggest` options
```
-F, --file TEXT Write message to file instead of stdout (used by the hook)
-M, --model TEXT Override the model used for generation
```
## Config
Two optional config levels — both are `config.json` files:
- **User**: `~/.noidea/config.json` — applies everywhere
- **Repo**: `/.noidea/config.json` — overrides user config
Precedence: built-in defaults → user config → repo config.
```json
{
"llm": {
"max_tokens": 1024,
"small_model": "claude-haiku-4-5",
"large_model": "claude-sonnet-4-6",
"context_limit": 600000,
"temperature": 1.0,
"system_prompt": "Your custom prompt here"
}
}
```
Falls back to built-in defaults if no config file exists. The default prompt follows conventional commits style (`feat`/`fix`/`refactor`/etc.) with a 72-character subject line limit. Smaller diffs use `small_model` (Haiku) for speed; larger diffs automatically switch to `large_model` (Sonnet). `temperature` controls output creativity (0.0–1.0); the default of `1.0` maximises variety.
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines. This project follows [TigerStyle](STYLE.md) for coding standards.
## Requirements
- Python 3.10+
- Anthropic API key