🔧 AutoCommit Genius
Smart Commit Message Generator for VS Code — Multiple AI Providers, Fully Customizable!
🚀 Overview
AutoCommit Genius is a powerful and extensible Visual Studio Code extension that automatically generates commit messages based on your code changes. Whether you prefer committing through the VS Code Source Control UI or the Git CLI, this extension ensures your messages are clean, contextual, and consistent — with optional, highly configurable AI assistance from providers like OpenAI and Gemini.
✅ Core Features
🔍 Code Change Detection:
- Uses
git diff
, git status
to detect added, modified, and deleted files, and specific line changes.
- Supports both staged and unstaged changes for message generation.
✍️ Smart Commit Message Generation:
- Heuristic-based: Rule/template-driven messages as a fallback or default.
- AI-powered: Connect to OpenAI, Gemini (or future providers) via their APIs.
- Fully customize the prompt sent to the AI.
- Configure model names, temperature, and other parameters.
🧩 Three Commit Pathways:
- Option A: VS Code Git Input Box: Auto-fills the generated message into
sourceControl.inputBox.value
, letting you review/edit before committing.
- Option B: Generate and Commit (CLI): Direct commit to cli with configurations.
- Option C: Generate and Show Commit Message (CLI): Shows the command in the terminal
⚙️ Installation
- Open Visual Studio Code.
- Go to the Extensions view (Ctrl+Shift+X or Cmd+Shift+X).
- Search for "AutoCommit Genius".
- Click "Install".
- Reload VS Code if prompted.
🛠️ Configuration
Configure AutoCommit Genius to your liking via VS Code settings (File > Preferences > Settings, or Ctrl+, / Cmd+,). Search for "AutoCommit Genius".
You can configure settings globally or per workspace.
General AI Settings (autocommit-genius.ai.*
):
Provider
(autocommit-genius.ai.provider
):
- Description: Select the AI provider for commit message generation.
- Options:
none
(uses heuristic mode), openai
, gemini
.
- Default:
none
Base Prompt
(autocommit-genius.ai.basePrompt
):
- Description: The master prompt template sent to the AI. Crucially, use
{diff_content}
as a placeholder where the actual git diff will be inserted.
- Default: A comprehensive Conventional Commits prompt (see settings for the full default).
- Example:
"Summarize these changes for a git commit: {diff_content}"
Max Diff Length
(autocommit-genius.ai.maxDiffLength
):
- Description: Maximum number of characters from the git diff to send to the AI. This helps manage API costs and token limits.
- Default:
15000
OpenAI Specific Settings (autocommit-genius.ai.openai.*
):
(Only applicable if Provider
is set to openai
)
API Key
: Your OpenAI API key.
Model Name
: e.g., gpt-3.5-turbo
, gpt-4
, gpt-4-turbo-preview
.
Temperature
: (0-2) Controls randomness. Lower is more deterministic. Default: 0.5
.
Max Tokens
: Max length of the generated message. Default: 60
.
Gemini Specific Settings (autocommit-genius.ai.gemini.*
):
(Only applicable if Provider
is set to gemini
)
API Key
: Your Google Gemini API key (obtain from Google AI Studio).
Model Name
: e.g., gemini-1.5-flash-latest
, gemini-1.5-pro-latest
, gemini-pro
.
Temperature
: (0-1 typically) Controls randomness. Default: 0.4
.
Max Output Tokens
: Max length of the generated message. Default: 70
.
CLI Settings (autocommit-genius.cli.*
):
Auto Stage Files
(autocommit-genius.cli.autoStageFiles
):
- Description: When using the CLI, automatically run 'git add .' to stage all changes.
- Default:
false
Auto Commit
(autocommit-genius.cli.autoCommit
):
- Description: When using the CLI, automatically commit the changes after generating the message. If false, just shows the message in a terminal.
- Default:
false
Customizing Keybindings
To customize the keybindings for AutoCommit Genius:
- Open the Command Palette (Ctrl+Shift+P or Cmd+Shift+P).
- Type "AutoCommit Genius: Customize Keybindings" and select the command.
- The Keyboard Shortcuts UI will open, filtered to show AutoCommit Genius commands.
- Double-click a command to change its keybinding, or click the "+" icon to add a new keybinding.
---# autocommit