Generate Git commit messages directly from the VS Code Source Control view following your personal conventions and repository rules. The extension runs your installed Antigravity CLI (agy) or Claude Code CLI (claude) in headless mode, reusing your existing CLI login with no separate API key required.
Prerequisites
Install and sign in to at least one supported CLI on your machine:
Antigravity CLI (agy): Run agy once in your terminal to complete sign-in.
Claude Code CLI (claude): Run claude once in your terminal to complete sign-in.
Quick Start
Open the Source Control panel (Ctrl+Shift+G / Cmd+Shift+G).
(Optional) Type a ticket ID (such as PROJ-123) or a short note in the commit input box before clicking generate; the extension keeps your hint in the generated message.
Click the wand icon (Generate Commit Message) on the Changes toolbar. While running, the button turns into a stop icon so you can cancel at any time.
Key Capabilities
Submodule-aware rule discovery. Walks from the clicked Git repository upward to the workspace root to load .commitrules, .agents/skills/commit-message/SKILL.md, or CLAUDE.md.
Smart Git diff collection. Uses staged changes when present (falling back to working-tree changes and new untracked files when nothing is staged) and excludes noisy lockfile bodies (package-lock.json, pnpm-lock.yaml, yarn.lock, *.lock, go.sum).
Fast isolated CLI execution. Runs agy (gemini-3.8-flash-low by default) or claude (haiku by default) inside os.tmpdir() with --effort low so workspace MCP servers do not slow down commit generation.
Clean output. Strips accidental Markdown code fences and removes Co-Authored-By: or AI-attribution lines automatically.
Example .commitrules File
Create a .commitrules file at your repository or workspace root:
Format: type(scope): short imperative description (TASK_ID)
- Allowed types: feat, fix, refactor, test, docs, chore.
- Keep the header line under 72 characters.
- Omit (TASK_ID) if neither the branch name nor the user hint contains a ticket ID.
- Add a 1-2 sentence body explaining WHY the change was made, not what lines changed.
Extension Settings
Open Settings (Ctrl+, / Cmd+,) and search for scmCommitGen:
Setting
Default
Description
scmCommitGen.provider
"agy"
CLI provider ("agy" or "claude").
scmCommitGen.agyModel
"gemini-3.8-flash-low"
Model used when provider is "agy". Set "default" to use your CLI default.
scmCommitGen.claudeModel
"haiku"
Model used when provider is "claude" ("haiku", "sonnet", "opus", or "default").
scmCommitGen.personalRules
""
Inline personal commit rules applied across all projects.
scmCommitGen.personalRulesFile
""
Path to a Markdown file with personal commit rules (supports ~/...).