Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>AI Commit ToolsNew to Visual Studio Code? Get it now.
AI Commit Tools

AI Commit Tools

Nathalia Pinheiro

|
3 installs
| (0) | Free
Extensão do VS Code que gera commits, descrições de PR, code reviews e release notes a partir do seu diff Git, usando o Claude Code CLI local.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info
AI Commit Tools

AI Commit Tools

Extensão do VS Code que gera mensagens de commit, descrições de PR, code reviews, explicações de mudanças e release notes a partir das suas alterações no Git — usando o Claude Code CLI local instalado na sua máquina (não usa a API/SDK da Anthropic diretamente, nem chamadas HTTP).

Funciona em qualquer repositório. Os prompts foram escritos para fazer sentido em repositórios com stacks misturadas (Angular, React, TypeScript, JavaScript, Java), inferindo o "scope" e a terminologia a partir dos arquivos presentes no diff, em vez de assumir um único framework.

Índice

Cada seção abaixo é um bloco recolhível — clique no título para abrir/fechar.

  • ✨ Funcionalidades
  • 📋 Pré-requisitos
  • ⚙️ Configurações
  • 👥 Usando várias contas (pessoal / trabalho)
  • 🔒 Como ela conversa com o Claude
  • 📦 Instalar de vez (uso no dia a dia)
  • 🧑‍💻 Rodar e testar (modo desenvolvimento)
  • 🚀 Publicar para o time (GitHub + .vsix)
  • 🗂 Estrutura do projeto

✨ Funcionalidades

Comando O que faz
AI Commit Tools: Generate Commit Message Pega o diff das mudanças em staged (ou não staged, se você confirmar) e preenche a caixa de mensagem do Source Control com um Conventional Commit: uma linha só, em inglês, dentro do tamanho máximo configurado.
AI Commit Tools: Generate PR Description Gera uma descrição em markdown (## Summary / ## Changes / ## Testing) a partir das mudanças em staged, copia para a área de transferência e abre num editor somente-leitura.
AI Commit Tools: Explain Changes Resume o que mudou, por quê, e os impactos possíveis, num painel Webview.
AI Commit Tools: Review Changes Revisa as mudanças em staged procurando bugs, melhorias, code smells, validações faltando e edge cases, num painel Webview.
AI Commit Tools: Generate Release Notes Gera notas de release em markdown (## Features / ## Fixes / ## Refactors) num editor somente-leitura.
AI Commit Tools: Branch Summary Compara a branch atual com a branch principal mais próxima (origin/main, origin/master, origin/develop, etc.) e resume as diferenças — útil antes de abrir um PR.

Todos os comandos aparecem na Command Palette (Ctrl+Shift+P) e os cinco primeiros também aparecem como botões no topo da view do Source Control (aquele ícone de branch na barra lateral).

📋 Pré-requisitos

  • Claude Code CLI instalado e acessível no PATH do sistema (ou apontado direto pelo caminho, nas configurações — ver abaixo). É o mesmo claude que você já usa no terminal.
  • Git instalado.
  • A extensão de Git nativa do VS Code habilitada (já vem habilitada por padrão).

⚙️ Configurações

Essas configurações ficam em Settings → procure por "AI Commit Tools":

Configuração Padrão O que faz
claudeDevTools.executablePath "" (vazio) Caminho para o executável do Claude. Deixe vazio para detectar automaticamente via where (Windows) / which (Mac/Linux).
claudeDevTools.configDir "" (vazio) Opcional. Define o CLAUDE_CONFIG_DIR do CLI, dando à extensão uma pasta de login/sessão própria, isolada do app Claude Desktop e do terminal. Vazio = usa o padrão (~/.claude). É esse campo que você troca para alternar entre contas — ver Usando várias contas.
claudeDevTools.model "" (vazio) Modelo do Claude a usar (--model). Aceita apelidos como sonnet, opus, haiku ou um id completo tipo claude-sonnet-5. Vazio = usa o padrão do CLI.
claudeDevTools.language "English" Idioma usado em PR, explain, review, release notes e branch summary. O idioma da mensagem de commit é controlado separadamente, pelo commitLanguage.
claudeDevTools.commitLanguage "English" Idioma da mensagem de commit. Padrão inglês; mude para Portuguese para gerar em PT. Os tipos/escopos do Conventional Commits (feat, fix, chore, ...) ficam sempre em inglês.
claudeDevTools.commitStyle "Conventional" Estilo da mensagem de commit.
claudeDevTools.maxCommitLength 72 Tamanho máximo (em caracteres) da mensagem de commit gerada.
claudeDevTools.useStagedChangesFirst true Prioriza arquivos em staged; se não houver nada em staged, pergunta se quer usar as mudanças não staged.
claudeDevTools.timeout 60000 Tempo limite (em milissegundos) para cada execução do Claude CLI.
claudeDevTools.debugMode false Liga logs detalhados (tamanho do prompt, stdout/stderr) no canal de output "AI Commit Tools".

👥 Usando várias contas (pessoal / trabalho)

O CLI do Claude guarda o login numa pasta de config (por padrão ~/.claude), compartilhada com o app Claude Desktop e com o terminal. Isso traz dois problemas:

  • Trocar de conta dentro do app não muda a conta que a extensão usa — ela lê o login gravado em disco, não o que está selecionado na interface do app.
  • Se você logar o CLI numa conta, o app é afetado junto (compartilham o mesmo arquivo).

A solução é dar a cada conta a sua própria pasta de config isolada (via CLAUDE_CONFIG_DIR) e apontar a extensão para ela pelo campo Config Dir. Assim cada conta tem seu login persistente, e trocar de conta na extensão vira mudar um único campo — sem refazer login.

Pré-requisito: um CLI que você controla

Para ter contas isoladas, use uma instalação do CLI via npm (independente do app):

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

Descubra o caminho do executável (você vai colar no campo Executable Path):

Join-Path (npm root -g) "@anthropic-ai\claude-code\bin\claude.exe"

Isso imprime algo como C:\...\node_modules\@anthropic-ai\claude-code\bin\claude.exe. No Windows use esse claude.exe (não o claude.cmd) — o .exe roda direto via spawn, sem shell.

Configuração inicial (uma vez por conta)

Escolha uma pasta de config para cada conta — qualquer caminho serve, desde que sejam diferentes. Nos exemplos abaixo, $env:USERPROFILE é o seu diretório de usuário (C:\Users\<SEU_USUARIO>), então as pastas ficam em .claude-personal e .claude-work.

Rode no PowerShell, uma vez para cada conta, entrando com a conta correspondente quando o navegador abrir (troque o caminho do claude.exe pelo que você descobriu acima):

# Conta pessoal
$env:CLAUDE_CONFIG_DIR = "$env:USERPROFILE\.claude-personal"
& "C:\CAMINHO\PARA\claude.exe"
# dentro do Claude: /login  → entre com a conta PESSOAL  → depois /exit
# Conta do trabalho
$env:CLAUDE_CONFIG_DIR = "$env:USERPROFILE\.claude-work"
& "C:\CAMINHO\PARA\claude.exe"
# dentro do Claude: /login  → entre com a conta do TRABALHO  → depois /exit

O $env:CLAUDE_CONFIG_DIR = ... vale só para aquela janela do PowerShell — é o que faz o login cair na pasta certa. Não precisa deixar isso configurado de forma permanente; quem passa essa variável no dia a dia é a própria extensão, a partir do campo Config Dir.

E deixe fixo na extensão (Settings → AI Commit Tools) — aqui os caminhos precisam ser absolutos (o campo não expande ~ nem %USERPROFILE%):

Campo Valor
Executable Path o caminho do claude.exe que você descobriu acima
Config Dir C:\Users\<SEU_USUARIO>\.claude-personal (ou .claude-work)

Trocar de conta no dia a dia

Esgotou o limite de uma conta e quer usar a outra? Só troque o valor do campo Config Dir entre as duas pastas:

  • Pessoal → C:\Users\<SEU_USUARIO>\.claude-personal
  • Trabalho → C:\Users\<SEU_USUARIO>\.claude-work

A mudança vale na próxima execução (a extensão relê as settings a cada comando — nem precisa recarregar a janela). Não precisa mexer no Executable Path nem refazer login: cada pasta mantém sua sessão. O app Claude Desktop continua no que estiver, sem interferência.

Se um dia o login de uma conta expirar, é só repetir o /login naquela pasta (o comando do PowerShell acima). O caminho nas settings continua o mesmo.

Em macOS/Linux o conceito é o mesmo: use export CLAUDE_CONFIG_DIR="$HOME/.claude-personal" e o claude do which claude.

🔒 Como ela conversa com o Claude

Toda chamada usa execFile/spawn do Node com os argumentos passados como array de verdade (['-p', prompt, '--model', modelo]) — nunca uma string de shell montada manualmente, e nunca bash//bin/bash. Isso funciona igual no Windows, macOS e Linux, e evita qualquer risco de injeção de comando mesmo que o diff tenha caracteres estranhos.

📦 Instalar de vez (uso no dia a dia)

Isso aqui é o que você precisa fazer uma única vez. Depois disso a extensão fica instalada no seu VS Code, do mesmo jeito que qualquer extensão da Marketplace, e funciona automaticamente em qualquer projeto/pasta que você abrir — não precisa mais rodar npm run watch nem apertar F5.

1. Instalar o vsce (só na primeira vez)

npm install -g @vscode/vsce

2. Gerar + instalar com um comando só

Dentro da pasta do projeto (ai-commit-tools):

npm run reinstall

Esse script faz tudo: compila (esbuild), empacota sempre no mesmo arquivo ai-commit-tools.vsix (sem ficar acumulando -0.1.0, -0.1.1, ...) e instala direto no seu VS Code com code --install-extension ... --force (o --force sobrescreve a versão já instalada sem perguntar).

Depois de rodar, feche e abra de novo qualquer janela do VS Code que já estava aberta (ou rode o comando Developer: Reload Window na Command Palette) para ela carregar a versão nova.

Se preferir os passos manuais em vez do script:

npm run compile
vsce package --allow-missing-repository
code --install-extension ai-commit-tools-0.1.0.vsix --force

ou, pela interface: Extensions (Ctrl+Shift+X) → ... → "Install from VSIX..." e selecione o .vsix gerado.

3. Pronto

A partir daqui, "AI Commit Tools" aparece na lista de extensões instaladas (como qualquer outra), e os comandos (AI Commit Tools: Generate Commit Message, etc.) e os botões no Source Control ficam disponíveis em qualquer janela do VS Code, em qualquer projeto, sem precisar abrir essa pasta do ai-commit-tools de novo.

Quando você precisa reinstalar

Só se você (ou eu) alterar o código-fonte da extensão. Nesse caso, basta rodar npm run reinstall de novo e recarregar a janela do VS Code.

Verificando se está tudo certo

Depois de instalada, num projeto qualquer:

  1. Faça git add de algum arquivo.
  2. Abra a view de Source Control.
  3. Clique no ícone ✨ (Generate Commit) no topo da view, ou rode AI Commit Tools: Generate Commit Message pela Command Palette.
  4. Se aparecer "Claude executable not found", configure o caminho manualmente em Settings → AI Commit Tools → Executable Path (aponte pro claude.exe/claude.cmd que você já usa no terminal).

🧑‍💻 Rodar e testar (modo desenvolvimento)

Isso é só para você mexer no código da extensão e ver o efeito. Não é o modo definitivo — veja a seção "Instalar de vez" para deixar funcionando sempre.

npm install
npm run watch     # deixa o esbuild rodando e recompilando sozinho

Com o projeto aberto no VS Code, aperte F5. Isso abre uma segunda janela do VS Code (a "Extension Development Host") com a extensão carregada só naquela janela, só enquanto ela estiver aberta. Fechou a janela, a extensão some.

Scripts úteis:

npm run typecheck   # checa tipos do TypeScript, sem gerar arquivo
npm run lint        # eslint
npm run format      # prettier --write
npm run compile     # gera o bundle final em dist/extension.js

🚀 Publicar para o time (GitHub + .vsix)

Aqui a extensão não vai pro Marketplace público. Ela fica num repositório GitHub, e cada release traz o arquivo .vsix anexado — o time baixa e instala. Simples e sem burocracia.

Antes de publicar: preencher os placeholders

No package.json, troque:

  • "publisher": "your-publisher-id" → um id em minúsculas com hífens (ex: seu usuário/handle do time). Para distribuição privada ele só compõe o id interno da extensão, não precisa ser registrado em lugar nenhum.
  • as URLs REPLACE_WITH_YOUR_GITHUB_USER → o dono/organização do repositório no GitHub.

1. Subir o código pro GitHub

Crie um repositório vazio no GitHub (ex: ai-commit-tools) e, na pasta do projeto:

git init
git add .
git commit -m "chore: initial commit"
git branch -M main
git remote add origin https://github.com/<SEU_USUARIO>/ai-commit-tools.git
git push -u origin main

2. Gerar o .vsix da release

npm run package

Gera o ai-commit-tools.vsix (usa vsce por baixo). Esse é o arquivo que o time instala.

3. Criar a Release no GitHub e anexar o .vsix

Pela interface do GitHub: Releases → Draft a new release, crie uma tag (ex: v0.1.0), e arraste o ai-commit-tools.vsix para a área de anexos. Publique.

Dá pra automatizar isso: já incluí um workflow em .github/workflows/release.yml que, ao dar push de uma tag v* (ex: git tag v0.1.0 && git push origin v0.1.0), compila, empacota e cria a release com o .vsix anexado sozinho. Aí você nem precisa do passo 2 e 3 na mão.

4. Como o time instala

Cada pessoa baixa o .vsix da release e roda:

code --install-extension ai-commit-tools.vsix

ou, pela interface: Extensions (Ctrl+Shift+X) → ... → "Install from VSIX...".

Lembre o time de que, na primeira vez, cada um precisa fazer o setup de conta/Config Dir da seção Usando várias contas — o login do Claude é individual, não vai junto no .vsix.

Lançando uma nova versão depois

  1. Suba a versão em package.json (ex: 0.1.0 → 0.1.1).
  2. Commit + push.
  3. git tag v0.1.1 && git push origin v0.1.1 (o workflow cria a release), ou repita os passos 2 e 3 manuais.

🗂 Estrutura do projeto

src/
  commands/     um arquivo por comando, só orquestra (chama os services)
  services/     GitService, ClaudeClient, PromptBuilder, ResponseParser
  ui/           Notifications, canal de Output, editor somente-leitura e painéis Webview
  config/       leitor das configurações (Settings.ts)
  types/        tipos mínimos da API da extensão vscode.git
  extension.ts  ativação da extensão / registro dos comandos
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft