commit
/octopus:commit lê o diff staged, redige uma mensagem em
Conventional Commits (type(scope): description + corpo
explicando o porquê), mostra para confirmação e executa
git commit quando aprovado. Ele cuida das etapas em volta do
commit que são fáceis de esquecer: detectar o idioma em que
escrever, escolher o type certo, anexar trailers de co-autoria
de AI e recusar --no-verify.
Por que isso existe
Conventional Commits é um formato pequeno com impacto desproporcional — o fluxo de release lê os types dos commits para sugerir bumps de semver, o título do pull request deriva do type dominante no branch e o CHANGELOG agrupa entradas por emoji de type. Uma mensagem em formato livre quebra tudo isso.
O custo de lembrar o formato manualmente não é trivial na prática (especialmente no meio de um debug). Delegar para um comando que lê o diff e propõe uma mensagem remove esse atrito sem abrir mão da estrutura.
Resolução de idioma
O idioma da mensagem de commit não é o mesmo idioma da conversa. O comando resolve nesta ordem:
.octopus/rules/common/language.local.mdse presente- Valor
language.code:em.octopus.yml - Detecção a partir de
git log --oneline -20— bate com o idioma dominante já presente no histórico do projeto - Default: English
Isso importa porque o projeto pode ter um time que fala português e documenta em pt-BR, mas faz commits em inglês (um padrão comum em projetos com pegada open source). O comando separa os dois canais de propósito.
Trailers de co-autoria de AI
Quando o assistente gerou ou modificou substancialmente o código, o comando anexa o trailer correspondente ao corpo do commit:
Co-authored-by: claude <claude@anthropic.com>Co-authored-by: octopus[bot] <octopus[bot]@users.noreply.github.com>O humano permanece como autor do commit; o assistente fica como
co-autor. Trailers não são adicionados em casos de assistência
apenas com sugestões. O trailer octopus[bot] é automático para
qualquer mensagem de commit que tenha passado por este comando —
ele marca a participação da ferramenta, o que é separado da
autoria de AI.
O que ele recusa
- Staging area vazia sem instrução clara para fazer staging
--no-verify— pre-commit hooks existem por um motivo- Commit de arquivos que parecem secrets (.env, credentials.json)
- Misturar múltiplas mudanças lógicas em um commit quando o diff cobre áreas não relacionadas (propõe dividir em vez disso)