GitFlow Toolkit is a CLI tool written in Go for standardizing git commit messages following the Conventional Commits 1.0.0 specification. It provides an interactive TUI for creating commits, branches, and managing git operations.
git ci, git ps, git feat, etc.)brew install mritd/gitflow-toolkit/gitflow-toolkit
Download the latest binary from the Release page and run the install command:
# Download the latest release (replace PLATFORM with: linux-amd64, darwin-arm64, etc.)
curl -fsSL https://github.com/mritd/gitflow-toolkit/releases/latest/download/gitflow-toolkit-PLATFORM -o gitflow-toolkit
chmod +x gitflow-toolkit
# Install (creates symlinks for git subcommands)
sudo ./gitflow-toolkit install
go install github.com/mritd/gitflow-toolkit/v3@latest
Note: When installing via go install, you need to manually run gitflow-toolkit install to create git subcommand symlinks.
After installation, you can use the following git subcommands:
git ci
This opens an interactive TUI to create a commit message with:
Ctrl+E)! marker)git ps
Push the current branch to origin with a progress indicator.
git feat my-feature # Creates feat/my-feature
git fix bug-123 # Creates fix/bug-123
git docs readme # Creates docs/readme
| Command | Description |
|---|---|
git ci | Interactive commit message creation |
git ps | Push current branch to remote |
git feat NAME | Create branch feat/NAME |
git fix NAME | Create branch fix/NAME |
git hotfix NAME | Create branch hotfix/NAME |
git docs NAME | Create branch docs/NAME |
git style NAME | Create branch style/NAME |
git refactor NAME | Create branch refactor/NAME |
git chore NAME | Create branch chore/NAME |
git perf NAME | Create branch perf/NAME |
git test NAME | Create branch test/NAME |
git build NAME | Create branch build/NAME |
The tool follows the Conventional Commits 1.0.0 specification:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Supported types: feat, fix, docs, style, refactor, test, chore, perf, hotfix, build
All settings are configured via ~/.gitconfig under the [gitflow] section.
[gitflow]
# LLM API key (required for cloud providers)
llm-api-key = sk-or-v1-xxxxx
# LLM settings
llm-api-host = https://openrouter.ai
llm-api-path = /api/v1/chat/completions
llm-model = mistralai/devstral-2512:free
llm-temperature = 0.3
llm-diff-context = 5
llm-max-diff-lines = 500
llm-request-timeout = 2m
llm-max-retries = 0
llm-output-lang = en
llm-max-concurrency = 3
llm-api-debug = false
# Custom prompts (optional, language-specific)
llm-file-analysis-prompt = "Summarize this diff briefly."
llm-commit-prompt-en = "Your custom English commit prompt."
llm-commit-prompt-zh = "Your custom Chinese commit prompt."
llm-commit-prompt-bilingual = "Your custom bilingual commit prompt."
# Lucky commit prefix (hex characters, max 12)
lucky-commit-prefix = abc
# SSH strict host key checking (default: false)
ssh-strict-host-key = false
# Auto-detect commit type from branch name (default: false)
branch-auto-detect = true
# Require optional fields (default: false)
require-scope = false
require-body = false
require-footer = false
| Key | Description | Default |
|---|---|---|
llm-api-key | API key for cloud LLM providers | - |
llm-api-host | LLM API endpoint | see below |
llm-api-path | API path (auto-detected for known providers) | see below |
llm-model | LLM model name | see below |
llm-temperature | Model temperature | 0.3 |
llm-diff-context | Diff context lines | 5 |
llm-request-timeout | Request timeout (Go duration, e.g., 2m, 30s) | 2m |
llm-max-retries | Max retry count on failure | 0 |
llm-output-lang | Output language (en, zh, bilingual) | en |
llm-max-concurrency | Max parallel file analysis | 3 |
llm-max-diff-lines | Max diff lines to analyze | 500 |
llm-api-debug | Enable debug logging to temp file | false |
llm-file-analysis-prompt | Custom file analysis prompt | - |
llm-commit-prompt-en | Custom English commit prompt | - |
llm-commit-prompt-zh | Custom Chinese commit prompt | - |
llm-commit-prompt-bilingual | Custom bilingual commit prompt | - |
lucky-commit-prefix | Lucky commit hex prefix (max 12 chars) | - |
ssh-strict-host-key | SSH strict host key checking | false |
branch-auto-detect | Auto-detect commit type from branch name | false |
require-scope | Require scope field | false |
require-body | Require body field | false |
require-footer | Require footer field | false |
Generate commit messages automatically using LLM:
git ci and press Tab to switch to the Auto Generate button (or press a)$EDITOR for modificationsProvider Selection:
| Provider | When | Default Path | Default Model |
|---|---|---|---|
| OpenRouter | API key set, no custom host | /api/v1/chat/completions | mistralai/devstral-2512:free |
| Groq | Host contains groq.com | /openai/v1/chat/completions | - |
| Ollama | No API key | /api/chat | deepseek-coder-v2:16b |
| OpenAI-compatible | Other hosts (openai.com, deepseek.com, mistral.ai, etc.) | /v1/chat/completions | - |
Custom API Path:
If your provider uses a non-standard path, set it explicitly:
git config --global gitflow.llm-api-path "/custom/v1/chat/completions"
Quick Start with OpenRouter (recommended):
git config --global gitflow.llm-api-key "sk-or-v1-xxxxx"
git ci # Press 'a' or Tab to Auto Generate
Quick Start with Local Ollama:
ollama pull deepseek-coder-v2:16b
git ci
Language Options:
en - English only (default)zh - Chinese subject and body (type/scope remain English)bilingual - Bilingual subject english (中文) with Chinese bodyGenerate commit hashes with a specific prefix using lucky_commit:
# Install lucky_commit first
cargo install lucky_commit
# Set the desired prefix (hex characters, max 12)
git config --global gitflow.lucky-commit-prefix abc
# Commit as usual - hash will start with "abc"
git ci
Automatically pre-select the commit type based on your current branch name:
# Enable the feature
git config --global gitflow.branch-auto-detect true
# Now when you're on a branch like "feat/login" or "feature-new-ui"
git ci # Cursor will auto-select "feat" type
Supported branch prefixes:
| Branch Prefix | Commit Type |
|---|---|
feat, feature | feat |
fix, bugfix, bug | fix |
docs, doc, document | docs |
style | style |
refactor, refact | refactor |
test, testing | test |
chore | chore |
perf, performance | perf |
hotfix | hotfix |
build | build |
Supports separators: /, -, _ (e.g., feat/login, fix-bug-123, docs_readme)
brew uninstall gitflow-toolkit
brew untap mritd/gitflow-toolkit
sudo gitflow-toolkit uninstall
MIT
145 commits
1 commits
Go
97.9%
Shell
1.8%
GitFlow Toolkit is a CLI tool written in Go for standardizing git commit messages following the Conventional Commits 1.0.0 specification. It provides an interactive TUI for creating commits, branches, and managing git operations.
git ci, git ps, git feat, etc.)brew install mritd/gitflow-toolkit/gitflow-toolkit
Download the latest binary from the Release page and run the install command:
# Download the latest release (replace PLATFORM with: linux-amd64, darwin-arm64, etc.)
curl -fsSL https://github.com/mritd/gitflow-toolkit/releases/latest/download/gitflow-toolkit-PLATFORM -o gitflow-toolkit
chmod +x gitflow-toolkit
# Install (creates symlinks for git subcommands)
sudo ./gitflow-toolkit install
go install github.com/mritd/gitflow-toolkit/v3@latest
Note: When installing via go install, you need to manually run gitflow-toolkit install to create git subcommand symlinks.
After installation, you can use the following git subcommands:
git ci
This opens an interactive TUI to create a commit message with:
Ctrl+E)! marker)git ps
Push the current branch to origin with a progress indicator.
git feat my-feature # Creates feat/my-feature
git fix bug-123 # Creates fix/bug-123
git docs readme # Creates docs/readme
| Command | Description |
|---|---|
git ci | Interactive commit message creation |
git ps | Push current branch to remote |
git feat NAME | Create branch feat/NAME |
git fix NAME | Create branch fix/NAME |
git hotfix NAME | Create branch hotfix/NAME |
git docs NAME | Create branch docs/NAME |
git style NAME | Create branch style/NAME |
git refactor NAME | Create branch refactor/NAME |
git chore NAME | Create branch chore/NAME |
git perf NAME | Create branch perf/NAME |
git test NAME | Create branch test/NAME |
git build NAME | Create branch build/NAME |
The tool follows the Conventional Commits 1.0.0 specification:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Supported types: feat, fix, docs, style, refactor, test, chore, perf, hotfix, build
All settings are configured via ~/.gitconfig under the [gitflow] section.
[gitflow]
# LLM API key (required for cloud providers)
llm-api-key = sk-or-v1-xxxxx
# LLM settings
llm-api-host = https://openrouter.ai
llm-api-path = /api/v1/chat/completions
llm-model = mistralai/devstral-2512:free
llm-temperature = 0.3
llm-diff-context = 5
llm-max-diff-lines = 500
llm-request-timeout = 2m
llm-max-retries = 0
llm-output-lang = en
llm-max-concurrency = 3
llm-api-debug = false
# Custom prompts (optional, language-specific)
llm-file-analysis-prompt = "Summarize this diff briefly."
llm-commit-prompt-en = "Your custom English commit prompt."
llm-commit-prompt-zh = "Your custom Chinese commit prompt."
llm-commit-prompt-bilingual = "Your custom bilingual commit prompt."
# Lucky commit prefix (hex characters, max 12)
lucky-commit-prefix = abc
# SSH strict host key checking (default: false)
ssh-strict-host-key = false
# Auto-detect commit type from branch name (default: false)
branch-auto-detect = true
# Require optional fields (default: false)
require-scope = false
require-body = false
require-footer = false
| Key | Description | Default |
|---|---|---|
llm-api-key | API key for cloud LLM providers | - |
llm-api-host | LLM API endpoint | see below |
llm-api-path | API path (auto-detected for known providers) | see below |
llm-model | LLM model name | see below |
llm-temperature | Model temperature | 0.3 |
llm-diff-context | Diff context lines | 5 |
llm-request-timeout | Request timeout (Go duration, e.g., 2m, 30s) | 2m |
llm-max-retries | Max retry count on failure | 0 |
llm-output-lang | Output language (en, zh, bilingual) | en |
llm-max-concurrency | Max parallel file analysis | 3 |
llm-max-diff-lines | Max diff lines to analyze | 500 |
llm-api-debug | Enable debug logging to temp file | false |
llm-file-analysis-prompt | Custom file analysis prompt | - |
llm-commit-prompt-en | Custom English commit prompt | - |
llm-commit-prompt-zh | Custom Chinese commit prompt | - |
llm-commit-prompt-bilingual | Custom bilingual commit prompt | - |
lucky-commit-prefix | Lucky commit hex prefix (max 12 chars) | - |
ssh-strict-host-key | SSH strict host key checking | false |
branch-auto-detect | Auto-detect commit type from branch name | false |
require-scope | Require scope field | false |
require-body | Require body field | false |
require-footer | Require footer field | false |
Generate commit messages automatically using LLM:
git ci and press Tab to switch to the Auto Generate button (or press a)$EDITOR for modificationsProvider Selection:
| Provider | When | Default Path | Default Model |
|---|---|---|---|
| OpenRouter | API key set, no custom host | /api/v1/chat/completions | mistralai/devstral-2512:free |
| Groq | Host contains groq.com | /openai/v1/chat/completions | - |
| Ollama | No API key | /api/chat | deepseek-coder-v2:16b |
| OpenAI-compatible | Other hosts (openai.com, deepseek.com, mistral.ai, etc.) | /v1/chat/completions | - |
Custom API Path:
If your provider uses a non-standard path, set it explicitly:
git config --global gitflow.llm-api-path "/custom/v1/chat/completions"
Quick Start with OpenRouter (recommended):
git config --global gitflow.llm-api-key "sk-or-v1-xxxxx"
git ci # Press 'a' or Tab to Auto Generate
Quick Start with Local Ollama:
ollama pull deepseek-coder-v2:16b
git ci
Language Options:
en - English only (default)zh - Chinese subject and body (type/scope remain English)bilingual - Bilingual subject english (中文) with Chinese bodyGenerate commit hashes with a specific prefix using lucky_commit:
# Install lucky_commit first
cargo install lucky_commit
# Set the desired prefix (hex characters, max 12)
git config --global gitflow.lucky-commit-prefix abc
# Commit as usual - hash will start with "abc"
git ci
Automatically pre-select the commit type based on your current branch name:
# Enable the feature
git config --global gitflow.branch-auto-detect true
# Now when you're on a branch like "feat/login" or "feature-new-ui"
git ci # Cursor will auto-select "feat" type
Supported branch prefixes:
| Branch Prefix | Commit Type |
|---|---|
feat, feature | feat |
fix, bugfix, bug | fix |
docs, doc, document | docs |
style | style |
refactor, refact | refactor |
test, testing | test |
chore | chore |
perf, performance | perf |
hotfix | hotfix |
build | build |
Supports separators: /, -, _ (e.g., feat/login, fix-bug-123, docs_readme)
brew uninstall gitflow-toolkit
brew untap mritd/gitflow-toolkit
sudo gitflow-toolkit uninstall
MIT
145 commits
1 commits
Go
97.9%
Shell
1.8%