Skip to main content

AI-powered git commit message generator using Claude Agent SDK

Project description

claude-commit PyPI version

🤖 AI-powered git commit message generator using Claude Agent SDK and Claude Code CLI

What is this?

claude-commit uses Claude AI to analyze your code changes and write meaningful commit messages. Claude reads your files, understands the context, and generates commit messages following best practices.

Installation

Prerequisites

  • Python 3.10+
  • Node.js
  • Git

Recommended: pipx (for CLI tools)

pipx is the best way to install Python CLI tools. It creates isolated environments automatically:

# 1. Install pipx
brew install pipx              # macOS
# or
pip install --user pipx        # Linux/Windows
pipx ensurepath

# 2. Install Claude Code CLI (required)
npm install -g @anthropic-ai/claude-code

# 3. Install claude-commit
pipx install claude-commit

Alternative: pip

If you prefer pip, use one of these methods:

Option 1: User installation (no admin rights needed)

# Install to user directory
pip install --user claude-commit

# Make sure ~/.local/bin is in your PATH
export PATH="$HOME/.local/bin:$PATH"

Option 2: Virtual environment

python3 -m venv ~/.venvs/claude-commit
source ~/.venvs/claude-commit/bin/activate
pip install claude-commit

Authentication

claude-commit supports two ways to authenticate with Claude:

Option 1: Official Claude Code Login (Recommended)

Option 2: Custom API Endpoint (Environment Variables)

For custom Claude API endpoints or proxies, set these environment variables:

# Required: Set custom endpoint and credentials
export ANTHROPIC_BASE_URL="https://your-endpoint.com"
export ANTHROPIC_AUTH_TOKEN="your-auth-token"

# Optional: Specify custom model name
export ANTHROPIC_MODEL="your-model-name"

# Then use claude-commit normally
claude-commit --commit

Add these to your ~/.zshrc or ~/.bashrc to persist across sessions.

Usage

Basic Commands

# Generate commit message (default: staged changes only)
claude-commit

# Auto-commit with generated message
claude-commit --commit

# Include all changes (staged + unstaged)
claude-commit --all

# Copy message to clipboard
claude-commit --copy

Common Options

Option Description
-a, --all Include unstaged changes
-c, --commit Auto-commit with generated message
--copy Copy message to clipboard
--preview Preview message only
-v, --verbose Show detailed analysis
-p, --path PATH Specify repository path
--max-diff-lines N Limit diff lines (default: 500)

Aliases

Create shortcuts for common commands:

Install Shell Aliases

# Install to your shell config
claude-commit alias install

# Activate in current terminal. Very important!
source ~/.zshrc    # zsh
source ~/.bashrc   # bash

Default Aliases

Alias Command Description
ccc claude-commit --commit Quick commit
ccp claude-commit --preview Preview message
cca claude-commit --all Include all changes
ccac claude-commit --all --commit Commit all changes
ccopy claude-commit --copy Copy to clipboard

After installation, just use:

git add .
ccc  # analyzes and commits

Custom Aliases

# Create your own aliases
claude-commit alias set quick --all --commit
claude-commit alias list
claude-commit alias unset quick

How It Works

Claude autonomously analyzes your changes using subagents for parallel analysis:

  1. Detects style — a lightweight subagent checks git history for commit conventions (conventional commits, gitmoji, language, etc.)
  2. Analyzes changes — a dedicated subagent reads modified files, searches for context, and understands the intent
  3. Runs in parallel — both subagents execute concurrently for faster results
  4. Generates a clear commit message combining style and change analysis

Example:

feat: add JWT authentication

Implement secure authentication system with token refresh.
Includes login, logout, and session management.

Examples

Typical Workflow

# Make changes
git add .

# Preview message
claude-commit --preview

# Commit if satisfied
claude-commit --commit

With Aliases

# Make changes
git add .

# Quick commit
ccc

Large Changes

# Limit analysis for faster results
claude-commit --max-diff-lines 200 --commit

Configuration

Configuration files:

  • Aliases: ~/.claude-commit/config.json
  • Shell integration: ~/.zshrc, ~/.bashrc, or $PROFILE

Platform Support

Platform Status Shells
macOS zsh, bash, fish
Linux bash, zsh, fish
Windows PowerShell, Git Bash

Windows PowerShell first-time setup:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Troubleshooting

Fatal error in message reader: Command failed with exit code 1 (exit code: 1)

Fatal error in message reader: Command failed with exit code 1 (exit code: 1)
Error output: Check stderr output for details
Traceback (most recent call last):

Solution: This error means you haven't authenticated with Claude. Choose one method:

Method A: Official Claude Code login (recommended)

claude

Method B: Set custom API endpoint

export ANTHROPIC_BASE_URL="https://your-endpoint.com/api/v1"
export ANTHROPIC_AUTH_TOKEN="your-auth-token"
# model name (optional)
export ANTHROPIC_MODEL="your-model-name"

# Add to ~/.zshrc or ~/.bashrc to persist
echo 'export ANTHROPIC_BASE_URL="https://your-endpoint.com/api/v1"' >> ~/.zshrc
echo 'export ANTHROPIC_AUTH_TOKEN="your-auth-token"' >> ~/.zshrc

"externally-managed-environment" error (macOS/Linux)

If you see this error when using pip install:

error: externally-managed-environment

Solution: Use pipx (recommended for CLI tools):

brew install pipx
pipx install claude-commit

Or use pip install --user:

pip install --user claude-commit

Why this happens: Modern Python installations (Python 3.11+) protect the system Python to prevent conflicts. This is not a bug in claude-commit.

Claude Code not found

npm install -g @anthropic-ai/claude-code

No changes detected

git add .              # stage changes
# or
claude-commit --all    # include unstaged

Analysis too slow

claude-commit --max-diff-lines 200

Command not found after installation

If claude-commit is not found after installation:

With pipx:

pipx ensurepath
# Restart your terminal

With pip --user:

# Add to ~/.zshrc or ~/.bashrc
export PATH="$HOME/.local/bin:$PATH"
source ~/.zshrc  # or ~/.bashrc

Aliases not working

claude-commit alias install
source ~/.zshrc  # or ~/.bashrc

Development

# Clone and setup
git clone https://github.com/JohannLai/claude-commit.git
cd claude-commit
python -m venv venv
source venv/bin/activate
pip install -e ".[dev]"

# Run tests
pytest tests/

Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a Pull Request

License

MIT License - see LICENSE file

Links


Made with ❤️ by Johann Lai

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claude_commit-0.8.0.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claude_commit-0.8.0-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file claude_commit-0.8.0.tar.gz.

File metadata

  • Download URL: claude_commit-0.8.0.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for claude_commit-0.8.0.tar.gz
Algorithm Hash digest
SHA256 8c081584d6cda40424da4dcf74c66293c5f95c44ba0025f0bf1657ff53bc5ff8
MD5 4ccedf976513ef793e7d5b1fbdcf6c2e
BLAKE2b-256 ffbb86481e70721348887fba36463355fd373dea24a85759f7dc239d09c99e67

See more details on using hashes here.

Provenance

The following attestation bundles were made for claude_commit-0.8.0.tar.gz:

Publisher: auto-release.yml on JohannLai/claude-commit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file claude_commit-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: claude_commit-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for claude_commit-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0eed90effd6a89e8ac39baa9e0b3f953d3a83789e0442617b71ee5b39e859e22
MD5 c8ca95b3fe159d405ee3afcf79902a5f
BLAKE2b-256 4755d4faeee97057fb8dfa6f8bf178d5d8c9a8b47fe87e79799de1f517bb0a00

See more details on using hashes here.

Provenance

The following attestation bundles were made for claude_commit-0.8.0-py3-none-any.whl:

Publisher: auto-release.yml on JohannLai/claude-commit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page