gitwhisper 0.0.10
gitwhisper: ^0.0.10 copied to clipboard
AI-powered Git commit message generator that whispers the perfect commit message for your changes
gitwhisper #
Generated by the Very Good CLI π€
Git Whisper is an AI-powered Git commit message generator that whispers the perfect commit message based on your staged changes.
Getting Started π #
If the CLI application is available on pub, activate globally via:
dart pub global activate gitwhisper
Or locally via:
dart pub global activate --source=path <path to this package>
Features #
- π€ Leverages various AI models to analyze your code changes and generate meaningful commit messages
- π Follows conventional commit format:
<type>: <description> - π Pre-fills the Git commit editor for easy review and modification
- π« Supports ticket number prefixing for commit messages
- π§© Choose specific model variants (gpt-4o, claude-3-opus, etc.)
- π Securely saves API keys for future use
- π Supports multiple AI models:
- Claude (Anthropic)
- OpenAI (GPT)
- Gemini (Google)
- Grok (xAI)
- Llama (Meta)
Usage #
# Generate a commit message (main command)
gitwhisper commit --model openai
gitwhisper # if defaults have been set before
# Choose a specific model variant
gitwhisper commit --model openai --model-variant gpt-4o
# Add a ticket number prefix to your commit message
gitwhisper commit --prefix "JIRA-123"
# List available models
gitwhisper list-models
# List available variants for a specific model
gitwhisper list-variants --model claude
# Save an API key for future use
gitwhisper save-key --model claude --key "your-claude-key"
# Set defaults
gitwhisper set-defaults --model openai --model-variant gpt-4o
# Clear defaults
gitwhisper clear-defaults
# Get help
gitwhisper --help
Shorter Command #
Instead of using the full gitwhisper command you can also use the shortened one gw.
Command Structure #
GitWhisper uses a command-based structure:
commit: Generate and apply a commit message (main command)list-models: Show all supported AI modelslist-variants: Show available variants for each AI modelsave-key: Store an API key for future useupdate: Update GitWhisper to the latest versionset-defaults: Set default model and variant for future useclear-defaults: Clear any set default preferences
API Keys #
You can provide API keys in several ways:
- Command line argument:
--key "your-api-key" - Environment variables:
ANTHROPIC_API_KEY(for Claude)OPENAI_API_KEY(for OpenAI)GEMINI_API_KEY(for Gemini)GROK_API_KEY(for Grok)LLAMA_API_KEY(for Llama)
- Saved configuration: Use the
save-keycommand to store your API key permanently
Model Variants #
GitWhisper supports a comprehensive range of model variants:
OpenAI #
gpt-4(default)gpt-4-turbo-2024-04-09gpt-4ogpt-4o-minigpt-4.5-previewgpt-3.5-turbo-0125gpt-3.5-turbo-instructo1-previewo1-minio3-mini
Claude (Anthropic) #
claude-3-opus-20240307(default)claude-3-sonnet-20240307claude-3-haiku-20240307claude-3-5-sonnet-20240620claude-3-5-sonnet-20241022claude-3-7-sonnet-20250219
Gemini (Google) #
gemini-1.0-pro(default)gemini-1.0-ultragemini-1.5-pro-002gemini-1.5-flash-002gemini-1.5-flash-8bgemini-2.0-progemini-2.0-flashgemini-2.0-flash-litegemini-2.0-flash-thinking
Grok (xAI) #
grok-1(default)grok-2grok-3grok-2-mini
Llama (Meta) #
llama-3-70b-instruct(default)llama-3-8b-instructllama-3.1-8b-instructllama-3.1-70b-instructllama-3.1-405b-instructllama-3.2-1b-instructllama-3.2-3b-instructllama-3.3-70b-instruct
How It Works #
Git Whisper:
- Checks if you have staged changes in your repository
- Retrieves the diff of your staged changes
- Sends the diff to the selected AI model
- Generates a commit message following the conventional commit format
- Applies any prefix/ticket number if specified
- Submits the commit with the generated message
Configuration #
Configuration is stored in ~/.git_whisper.yaml and typically contains your saved API keys:
api_keys:
claude: "your-claude-key"
openai: "your-openai-key"
# ...
Requirements #
- Dart SDK (^3.5.0)
- Git installed and available in your PATH
Conventional Commit Format #
Git Whisper generates commit messages following the conventional commit format:
<type>: <description>
With prefix option:
<type>: PREFIX-123 -> <description>
Common types include:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code changes that neither fix bugs nor add featurestest: Adding or fixing testschore: Changes to the build process or auxiliary tools
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License #
This project is licensed under the MIT License - see the LICENSE file for details.