A Git-native CLI that suggests conventional commit messages from staged changes.
npm install @alcanivorax/git-msg
src="https://raw.githubusercontent.com/alcanivorax/git-msg/main/assets/git-msg-preview.gif"
alt="git-msg demo"
width="900"
/>
A Git-native CLI that suggests conventional commit messages from staged changes.
git-msg removes the pause before git commit. It shows a clear, editable commit message based on what you staged, then lets you use it, edit it, or cancel — instantly.
No AI. No editors. No config.
Most bad commit messages aren't written out of laziness — they're written because there's no obvious starting point.
``bash`
git commit -m "..."
git-msg fixes that by giving you a reasonable default:
- looks at what changed
- suggests a conventional commit message
- keeps the developer in control
It doesn't decide for you — it removes friction.
- a commit message idea generator
- fast, deterministic, and explainable
- language-agnostic
- editable by default
- an AI tool
- a diff / AST analyzer
- a rules engine
- a replacement for intent
All suggestions follow:
`bash`
Examples:
`bash`
feat: add auth module
fix: handle empty config
refactor: update commit flow
docs: update setup instructions
chore: update build config
Consistent, readable, easy to tweak.
Install:
`bash`
npm i -g @alcanivorax/git-msg
Stage changes as usual:
`bash`
git add .
Run:
`bash`
git msg
You'll see:
`bash
Suggested commit message:
feat: update auth logic
[e]dit / [u]se / [c]ancel
`
- u — commit immediatelye
- — edit inline, then commitc
- — abort
No editor. No prompts. No Enter for the choice.
Choosing edit opens a single-line prompt:
`bash`
Edit commit message:
> feat: update auth logic
- edit like a shell input
- Enter to commit
- Ctrl+C to cancel
No vim. No nano. No $EDITOR.
git-msg uses structural signals only:
- file status (A, M, D, R`)
- file paths
- rough change size
It intentionally avoids:
- diff or AST analysis
- language-specific logic
- semantic guessing
When unsure, it prefers being generic rather than wrong.
Language-agnostic. Works well for:
- JavaScript / TypeScript
- Go
- Python
- Rust
- Java
- monorepos and mixed codebases
Structure matters — language doesn't.
git-msg doesn't force good commit messages. It makes bad ones uncomfortable.
The goal isn't perfection — it's clarity by default.
- v0.1 — heuristic-based core
- no AI
- no config
- built for daily use
MIT