Como usar o /caveman-commit para gerar mensagens de commit curtas no padrão Conventional Commits

O /caveman-commit é um comando do plugin caveman para Claude Code, mantido por Julius Brussee no repositório JuliusBrussee/caveman sob licença MIT. Ele roda git diff HEAD (ou git diff --cached), lê a mudança e devolve uma mensagem no padrão Conventional Commits: assunto de no máximo 50 caracteres no imperativo, corpo só quando o porquê não é óbvio, quebrado em 72 caracteres. Detalhe importante: a skill só GERA o texto, ela não roda git commit, não faz staging e não faz amend. A saída vem em bloco de código pronto pra você colar 🙂
Fala aí, beleza? Abrir o git log de um projeto e ver quinze linhas seguidas de "ajustes", "update" e "agora vai" é quase esporte nacional
O problema nem é preguiça, é que escrever mensagem boa no fim do dia dá trabalho, e aí todo mundo despacha genérico
O /caveman-commit ataca exatamente esse pedaço do fluxo
Ele faz parte do plugin caveman para Claude Code, mantido por Julius Brussee no repositório JuliusBrussee/caveman sob licença MIT
A ideia é simples: ele lê o diff das suas mudanças e devolve uma mensagem curta no padrão Conventional Commits, com assunto no imperativo e corpo só quando faz sentido ter corpo
Neste post a gente vai ver as três coisas que importam pra usar isso hoje: como instalar, como acionar e o que fazer com a saída
O que você precisa antes de rodar o comando
Domine o Claude Code do básico ao avançado
Você vai aprender a criar sistemas completos com Claude Code, sem precisar ser programador. Inscreva-se para ter acesso a um desconto de lançamento e bônus especiais!
Nada de PC da Nasa aqui, a lista é curta:
- Claude Code instalado e acesso ao terminal, porque a instalação do plugin passa por dois comandos
claude plugin - Um repositório Git com mudanças de verdade, já que a skill trabalha em cima do diff (
git diff HEADougit diff --cached) - Noção básica de Conventional Commits, pra você bater o olho na saída e saber se aquele
featali deveria ser umfix
Se você nunca leu a especificação, dá pra viver sem por enquanto: o essencial é que feat (nova funcionalidade) e fix (correção de bug) são os dois tipos obrigatórios da especificação base, e outros tipos como docs entram por convenção
Como usar o /caveman-commit passo a passo
- Adicione o marketplace do plugin
claude plugin marketplace add JuliusBrussee/caveman
O erro comum deste passo: pular direto pro install achando que o plugin já está disponível
Ele não está, o marketplace precisa ser registrado antes
- Instale o plugin caveman
claude plugin install caveman@caveman
Repare no caveman@caveman: é o nome do plugin seguido do marketplace
O erro comum aqui é digitar só caveman e ficar olhando pra tela sem entender por que não achou 😛
- Deixe as mudanças prontas no repositório
Com staging ou sem staging, os dois cenários funcionam, porque a skill roda git diff HEAD (ou git diff --cached) no caminho do repositório pra obter o diff
O erro comum deste passo: chamar o comando com a árvore limpa
Sem diff, não tem o que descrever, é isso
- Acione o comando
O gatilho direto é escrever /caveman-commit
Mas ele também dispara em linguagem natural, com pedidos como "write a commit", "commit message", "generate commit" ou "/commit", e ainda dispara quando existem mudanças em staging
O erro comum: achar que precisa decorar a sintaxe exata
Não precisa, pedir a mensagem de commit no meio da conversa já chama a skill
- Leia a saída antes de aceitar
A resposta vem como bloco de código pronto pra colar, mais ou menos assim:
feat(api): add GET /users/:id/profile
<corpo curto explicando o porquê da mudança>
Closes #128
O erro comum deste passo é aceitar de olhos fechados
A skill descreve o que ela viu no diff, e quem sabe se aquilo é feat ou refactor de verdade é você
- Cole a mensagem e faça o commit você mesmo
Esse é o maior erro do fluxo inteiro, então vou repetir com carinho: a skill apenas GERA o texto
Ela não roda git commit, não adiciona arquivo nenhum ao staging e não faz amend
Se você mandou o comando e ficou esperando o commit aparecer, ele não vai aparecer
E olha que essa divisão é boa, viu
O histórico é um dos poucos lugares do projeto onde não dá pra desfazer bonito depois, e vale pensar bem antes de deixar o agente commitar sozinho
Em que momento do fluxo chamar o comando (e por que a mensagem curta ajuda o histórico)
A hora certa é aquela janelinha entre "código pronto" e "agora eu escrevo a mensagem"
Nesse ponto o diff já reflete exatamente a mudança, então a skill tem o material completo pra trabalhar
Chamar antes disso é pedir resumo de um trabalho que ainda está pela metade
Agora, o porquê do formato, que é a parte que muita gente ignora
Assunto de no máximo 50 caracteres não é frescura de estilo
É o que mantém o git log legível quando você volta no projeto seis meses depois procurando onde uma coisa quebrou
| Regra da skill | O que ela define |
|---|---|
| Formato | Conventional Commits, com tipos como feat/fix/refactor |
| Escopo | Opcional, entre parênteses depois do tipo |
| Assunto | No máximo 50 caracteres, no modo imperativo |
| Corpo | Só para "why" não óbvio, breaking changes, migrações ou issues vinculadas |
| Quebra de linha do corpo | 72 caracteres, com bullets |
O corpo entrar só quando o porquê não é óbvio é a regra mais inteligente do conjunto
Commit que renomeia uma variável não precisa de três parágrafos
Commit que muda contrato de API e obriga migração precisa, e MUITO
E tem o lado da especificação, que é onde isso vira ganho prático: feat corresponde a MINOR e fix corresponde a PATCH no versionamento semântico
Ou seja, o tipo que você escolhe na primeira palavra da mensagem carrega informação de versão junto
O escopo, aquele pedaço entre parênteses, é opcional e vem logo depois do tipo, como no exemplo da própria especificação: feat(parser): add ability to parse arrays
Manter isso consistente entre pessoas diferentes do time é o mesmo desafio de padronizar as notas do projeto, e ter uma skill fixando as regras resolve metade da briga
E se um dia você quiser voltar ao estilo verboso de sempre?
Basta pedir "stop caveman-commit" ou "normal mode"
Veja o Claude Code turbinado por plugins na prática
Pra começar do zero na ideia de estender o Claude Code com plugins e comandos próprios, este vídeo do canal mostra o assunto na prática:
Próximo passo depois do primeiro commit gerado
A divisão de responsabilidades do /caveman-commit é o que faz ele funcionar bem: a skill escreve, você commita
Ela lê o diff, aplica o padrão, entrega o bloco pronto e para por aí
O resto continua na sua mão, do jeito que tem que ser quando o assunto é histórico de repositório
Depois que o primeiro commit gerado entrar, vale dar uma passeada no resto do plugin: além do comando de commit, ele traz /caveman (compressão), /caveman ultra, /caveman lite, /caveman-review, /caveman-stats e /caveman-compress
A proposta central de todos eles é a mesma: cortar 65% dos tokens de saída mantendo a precisão técnica, segundo a descrição do próprio repositório
E se você quiser ver as regras completas, sem intermediário, a skill está em skills/caveman-commit/SKILL.md na branch main
Ler o SKILL.md direto na fonte é sempre o melhor caminho pra entender o que a ferramenta faz e o que ela não faz
até o próximo post! 😀
Perguntas frequentes
O /caveman-commit faz o commit automaticamente ou só gera a mensagem?
Ele só gera o texto da mensagem, não vai além disso. A skill não roda git commit, não adiciona arquivos ao staging e não faz amend. A saída chega como um bloco de código pronto para você copiar e colar no seu próprio comando de commit.
Como instalar o plugin caveman para usar o /caveman-commit no Claude Code?
São dois comandos no terminal. Primeiro claude plugin marketplace add JuliusBrussee/caveman para registrar o marketplace, depois claude plugin install caveman@caveman para instalar o plugin em si. O plugin é mantido por Julius Brussee no repositório JuliusBrussee/caveman, sob licença MIT.
O /caveman-commit funciona mesmo sem eu ter dado git add nas mudanças?
Funciona nos dois cenários. A skill roda git diff HEAD quando não há nada em staging, ou git diff –cached quando você já deu git add. O importante é existir diferença real no repositório, porque sem diff não tem o que a skill descrever.
Quantos caracteres pode ter o assunto do commit gerado pelo /caveman-commit?
O limite é de no máximo 50 caracteres, escritos no modo imperativo. É essa regra que mantém o git log legível quando alguém revisita o histórico meses depois. O corpo da mensagem, quando existe, quebra em linhas de até 72 caracteres.
Preciso digitar exatamente /caveman-commit para acionar o comando?
Não precisa decorar a sintaxe. Além do gatilho direto /caveman-commit, a skill também responde a pedidos em linguagem natural como write a commit, commit message, generate commit ou /commit, e dispara sozinha quando existem mudanças em staging.
Como eu volto ao estilo de commit verboso normal depois de usar o /caveman-commit?
Basta pedir stop caveman-commit ou normal mode na conversa. Isso desliga o comportamento da skill e o Claude Code volta a gerar mensagens no formato mais longo de antes.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
