Interactive terminal UI for writing conventional commits.
I launch it via a custom zsh alias gcm, targeting the binary.
- Type — search and select a commit type. Fuzzy search filters the list with prefix-first priority.
- Scope — optional scope, with suggestions from your git log history. Navigate suggestions with
↑ / ↓. Type a space and pressenterto skip the scope without selecting a suggestion. - Subject — commit message subject. A character counter tracks the total commit message length against the 72-character limit.
On the last step, pressing enter runs the commit immediately with output streamed live to the terminal.
Output format: type(scope): subject
| Flag | Short | Description |
|---|---|---|
--no-verify |
-nv |
Skip pre-commit and commit-msg hooks |
--dry-run |
-dr |
Print the commit message without committing |
--amend |
-am |
Amend the last commit with a new message from the wizard |
--no-edit |
-ne |
Skip the wizard and commit as-is (useful with --amend) |
--allow-empty |
-ae |
Allow committing with no staged changes |
- Scope suggestions from your git log, sorted by frequency.
- Fuzzy search on commit types — prefix matches are ranked first.
- Live preview of the full commit message at every step.
- Character counter right-aligned to the 72-character limit, turns red when exceeded.
- Staged files list at the bottom — color-coded by status: green
+for added, orange~for modified, red-for deleted. Shows a warning when nothing is staged. - Commit message displayed in the UI after the commit runs.
- Vim Motions.
| Key | Action |
|---|---|
↑/↓ ctrl+k/j |
Navigate list |
enter ctrl+l |
Confirm / next step |
esc ctrl+h |
Clear input / go back |
ctrl+c |
Quit |
go build .