gitflow-toolkit

command module
v3.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 4, 2026 License: MIT Imports: 8 Imported by: 0

README

GitFlow Toolkit

GitFlow Toolkit is a CLI tool written in Go for standardizing git commit messages following the Angular commit message specification. It provides an interactive TUI for creating commits, branches, and managing git operations.

demo.webm

Features

  • Interactive commit message creation with type, scope, subject, body, and footer
  • AI-powered commit message generation using LLM (OpenRouter, Groq, OpenAI, or local Ollama)
  • Automatic Signed-off-by generation
  • Git subcommand integration (git ci, git ps, git feat, etc.)
  • Lucky commit hash prefix support
  • Adaptive terminal UI with light and dark theme support

Requirements

  • Git
  • macOS or Linux (Windows is not fully tested)

Installation

Homebrew (macOS/Linux)
brew install mritd/gitflow-toolkit/gitflow-toolkit
Manual

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
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.

Usage

After installation, you can use the following git subcommands:

Commit
git ci

This opens an interactive TUI to create a commit message with:

  • Type selection (feat, fix, docs, etc.)
  • Scope input
  • Subject line
  • Optional body (supports external editor with Ctrl+E)
  • Optional footer
Push
git ps

Push the current branch to origin with a progress indicator.

Create Branch
git feat my-feature    # Creates feat/my-feature
git fix bug-123        # Creates fix/bug-123
git docs readme        # Creates docs/readme

Commands

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

Commit Message Format

The tool enforces the Angular commit message format:

type(scope): subject

body

footer

Signed-off-by: Name <email>

Supported types: feat, fix, docs, style, refactor, test, chore, perf, hotfix

Configuration

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-request-timeout = 2m
    llm-max-retries = 0
    llm-output-lang = en
    llm-max-concurrency = 3
    
    # 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
Configuration Reference
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-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
Auto Generate (AI)

Generate commit messages automatically using LLM:

  1. Run git ci and press Tab to switch to the Auto Generate button (or press a)
  2. Wait for AI to generate the commit message
  3. Review the generated message, then choose:
    • Commit: Use the message as-is
    • Edit: Open in $EDITOR for modifications
    • Retry: Regenerate the message

Provider Selection:

Provider When Default Host Default Path Default Model
OpenRouter API key is set https://openrouter.ai /api/v1/chat/completions mistralai/devstral-2512:free
Groq Host contains groq.com https://api.groq.com /openai/v1/chat/completions -
OpenAI Host contains openai.com https://api.openai.com /v1/chat/completions -
DeepSeek Host contains deepseek.com https://api.deepseek.com /v1/chat/completions -
Mistral Host contains mistral.ai https://api.mistral.ai /v1/chat/completions -
Ollama No API key http://localhost:11434 /api/generate qwen2.5-coder:7b
Other Unknown host - /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 qwen2.5-coder:7b
git ci

Language Options:

  • en - English only (default)
  • zh - Chinese subject and body (type/scope remain English)
  • bilingual - Bilingual subject english (中文) with Chinese body
Lucky Commit

Generate 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
  • Prefix must be valid hex characters (0-9, a-f)
  • Maximum prefix length is 12 characters
  • Press Ctrl+C during search to skip and keep original commit
Branch Auto-Detection

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

Supports separators: /, -, _ (e.g., feat/login, fix-bug-123, docs_readme)

Uninstall

Homebrew
brew uninstall gitflow-toolkit
brew untap mritd/gitflow-toolkit
Manual
sudo gitflow-toolkit uninstall

License

MIT

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package cmd contains all CLI commands.
Package cmd contains all CLI commands.
Package consts defines constants for gitflow-toolkit.
Package consts defines constants for gitflow-toolkit.
internal
git
Package git provides Git command execution utilities.
Package git provides Git command execution utilities.
llm
Package llm provides a unified HTTP client for LLM APIs.
Package llm provides a unified HTTP client for LLM APIs.
ui/branch
Package branch provides the TUI for creating branches.
Package branch provides the TUI for creating branches.
ui/commit
Package commit provides the TUI for creating commits.
Package commit provides the TUI for creating commits.
ui/common
Package common provides shared UI components and styles.
Package common provides shared UI components and styles.
ui/install
Package install provides the TUI for installation tasks.
Package install provides the TUI for installation tasks.
ui/push
Package push provides the TUI for pushing branches.
Package push provides the TUI for pushing branches.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL