---
title: "Gerar mensagem de commit com IA: criei uma extensão de VS Code com Claude"
description: "Toda vez que eu parava pra pensar na mensagem de commit era um pesadelo. Criei uma extensão de VS Code que gera o commit com o Claude num clique, lendo o próprio diff. Gratuita e open source."
published: "2026-06-17"
tags: ["claude", "ia", "produtividade", "ferramenta"]
source: "https://marciotoledo.com/blog/extensao-vscode-claude-commit-button"
---

# Gerar mensagem de commit com IA: criei uma extensão de VS Code com Claude

A hora de escrever a mensagem de commit é sempre um pesadelo pra mim. O código já está pronto, testado, funcionando, e aí eu travo uns segundos olhando pro campo vazio pensando "como resumo isso?". Quando o diff mexeu em três arquivos diferentes, os segundos viram um minuto.

Parece pouco. Mas multiplica por dezenas de commits por dia e vira troca de contexto constante: sair do modo "resolver o problema" pra entrar no modo "descrever o problema em uma linha". Resolvi simplificar esse processo.

## O que é a extensão

Criei uma extensão de VS Code chamada **Claude Commit Button**. Ela coloca um botão de estrelinha (✨) no painel de Source Control. Você clica, ela lê o diff (o que está staged, ou todas as mudanças se nada estiver staged), manda pro Claude e preenche o campo da mensagem de commit. Você revisa, ajusta se quiser, e commita.

Sem sair do VS Code, sem copiar diff pra canto nenhum, sem pensar na frase. O fluxo continua sendo seu: a extensão só elimina a parte chata.

Ela é gratuita e o código está aberto no meu GitHub: [github.com/toledox82/claude-commit-button](https://github.com/toledox82/claude-commit-button). Tem o `.vsix` pronto na aba de Releases pra instalar direto.

## Mas o GitHub Copilot já não faz isso?

Faz, é verdade. O Copilot tem um recurso parecido e gera a mensagem de commit praticamente do mesmo jeito. O problema é o limite: você passa duas ou três semanas usando de boa e, de repente, ele para de funcionar porque bateu a cota mensal do plano gratuito.

Cheguei a pensar em assinar o plano só pra não ficar perdendo tempo com isso. Só que, até o momento em que escrevo este post, eles tiraram os planos pagos do ar: não dá pra assinar. Quem já tem, tem; quem não tem, não consegue entrar. Foi o empurrão que faltava pra eu fazer a minha própria versão, sem limite e usando o Claude CLI que já roda na minha máquina.

## Como funciona por baixo

A extensão não usa nenhuma API paga separada. Ela chama o **Claude CLI** que você já tem instalado na máquina (o mesmo do Claude Code), em modo não interativo, joga o diff pra ele e recebe de volta uma mensagem curta no estilo conventional commit. Se você ainda está em cima do muro sobre usar o Claude no dia a dia, já escrevi sobre isso em [Claude Code ou crack code](/blog/claude-code-ou-crack-code).

O único pré-requisito é ter o Claude CLI instalado e logado. Se `claude --version` funciona no seu terminal, a extensão funciona.

## A parte que me surpreendeu: haiku x sonnet

Quando montei a extensão, deixei o **haiku** como modelo padrão. Fazia todo sentido: é o modelo mais leve e barato, e gerar uma frase de commit é uma tarefa minúscula. Pra que mandar um modelo grande nisso?

Aí eu medi. E o resultado foi o contrário do que eu esperava:

> **CALLOUT**
>
> **haiku:** ~10 a 12 segundos por commit, e às vezes errava o que o diff realmente mudou.
> **sonnet:** ~3 segundos, e descrevia a mudança com precisão.

Reproduzi várias vezes pra ter certeza que não era ruído de rede. Não era. O sonnet ganhou nos dois quesitos: mais rápido **e** mais acertivo. O provável é que o haiku estivesse com mais latência na fila da API naquele momento, mas o ponto prático é claro: modelo "maior" não significou mais lento aqui. Troquei o padrão pra sonnet e segui.

> **TIP**
>
> Se quiser testar na sua máquina, dá pra trocar o modelo e o nível de esforço nas configurações da extensão (`claudeCommitButton.model` e `claudeCommitButton.effort`). O padrão é sonnet com esforço baixo, que pra commit é o ponto doce entre velocidade e qualidade.

## Por que isso acelera o desenvolvimento

O ganho não é só o tempo de digitar. É não quebrar o foco. Escrever uma boa mensagem de commit exige parar e sintetizar, e essa pausa cobra um preço pequeno toda vez. Tirar essa fricção significa:

1. **Menos troca de contexto:** você fica no modo de construir, não no de redigir.
1. **Histórico mais consistente:** as mensagens saem todas no mesmo estilo, sem aquele commit "ajustes" preguiçoso de fim de dia.
1. **Mais commits pequenos:** quando descrever fica barato, você commita com mais frequência, que é exatamente o que torna o histórico útil depois.

Não é sobre terceirizar o pensamento. É sobre não gastar energia mental com a etiqueta quando ela pode ser gerada a partir do que você já fez.

## Como instalar

1. Baixe o `.vsix` na [aba de Releases](https://github.com/toledox82/claude-commit-button/releases) do repositório.
1. No VS Code: `Ctrl+Shift+P` → **Extensions: Install from VSIX…** e escolha o arquivo.
1. Recarregue a janela. O botão ✨ aparece na barra do painel de Source Control.

## Resumo

- Botão no Source Control que gera a mensagem de commit a partir do seu diff, num clique.
- Usa o Claude CLI que você já tem, sem API paga à parte.
- Padrão em sonnet: nos meus testes foi mais rápido e mais preciso que o haiku.
- Gratuita e open source em [github.com/toledox82/claude-commit-button](https://github.com/toledox82/claude-commit-button).

Se você instalar e tiver alguma ideia ou achar algum bug, o repositório está aberto. Fico feliz de ver outras pessoas usando.
