Mensagem de commit
Cole um diff e receba uma mensagem de commit escrita a partir do que mudou de verdade, como fix(auth): handle expired refresh tokens, com tipo e escopo já escolhidos, para o histórico continuar legível. Você paga por uso, sem assinatura.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Cole a saída do git diff e receba uma mensagem de commit que resume o que mudou e por quê — no formato que o seu time usa, do texto livre ao Conventional Commits. Chega de histórico cheio de “ajustes”, “fix” e “alterações finais 2”: a mensagem nasce do próprio diff.
Por que uma boa mensagem de commit faz falta
Uma mensagem de commit é lida muito mais vezes do que escrita: por um colega que percorre o histórico atrás de contexto, por uma ferramenta de changelog que decide se a mudança é um recurso ou uma correção, e por quem roda git blame numa linha quebrada dois anos depois tentando entender a intenção. Uma mensagem vaga como «fix stuff» apaga esse contexto justamente quando ele era mais barato de registrar. Em vez de pedir que você descreva o que fez, a ferramenta lê as linhas adicionadas e removidas no diff, seja das mudanças preparadas para o commit, seja de um intervalo de commits. Assim a mensagem reflete o que mudou, e não o que alguém lembra ter mudado com o prazo apertado.
O formato Conventional Commits, sem decorar regras
O padrão organiza a mensagem em um tipo, um escopo opcional e uma descrição curta, como fix(auth): handle expired refresh tokens. Ferramentas como o semantic-release leem o tipo para decidir se a nova versão é de correção, menor ou maior, e os geradores de changelog agrupam as entradas por tipo. A ferramenta escolhe o tipo, como feat, fix, refactor, chore, docs ou test, pelo que o diff realmente faz, e deduz o escopo pelos arquivos tocados. Funciona bem para preencher a mensagem antes de cada commit, para reescrever quinze commits «wip» antes de juntar um ramo e para resumir a atualização de uma dependência de terceiros antes do merge.
Do diff ao texto
A mensagem descreve o que de fato está no diff, não o que você acha que fez. É útil justamente no fim do dia, quando o commit reúne dez arquivos e a memória já era.
Padronize o time inteiro sem brigar
Adotar Conventional Commits ou outro padrão costuma morrer na praia porque cada dev escreve de um jeito. O padrão vira o caminho de menor esforço, e o changelog gerado a partir do histórico finalmente faz sentido.
Preço de centavos, histórico de gente grande
Sem mensalidade: o pagamento é por uso, direto e sem cadastro, com o valor publicado nesta página. Se o histórico legível economizar uma única sessão de arqueologia no git blame, já se pagou.
Casos de uso
Auditoria e rastreabilidade
Uma software house que atende instituição financeira precisa justificar cada mudança em produção. Mensagens geradas a partir do diff descrevem com precisão o que cada commit altera — e a resposta para “o que entrou na versão de terça?” sai do próprio git log.
Squash de fim de sprint
Na hora de fazer squash de vinte commits bagunçados antes do merge, cole o diff acumulado e receba uma mensagem única que resume a feature inteira. O revisor agradece.
Perguntas frequentes
A mensagem sai em português ou inglês?
Você escolhe na chamada. Times brasileiros que commitam em inglês por convenção recebem o título em inglês; quem prefere histórico em português, idem. O formato — Conventional Commits ou livre — também é configurável.
Meu diff pode conter dados sensíveis?
Pode, e vale prestar atenção nisso: diffs às vezes carregam senhas, chaves e URLs internas. O conteúdo é usado só para gerar a mensagem da sua tarefa, mas a boa prática vale aqui como em qualquer lugar: mantenha segredos fora do código — e, portanto, fora do diff.
Funciona com diff grande, de monorepo?
Funciona; o serviço resume o conjunto. Mas mensagem boa descreve mudança coesa: se o diff mistura três assuntos, o melhor conserto é dividir o commit, não a mensagem.
Quanto custa e como pago?
Preço em dólares americanos, publicado aqui, sem letra miúda.
A mensagem explica o motivo da mudança?
Não. Ela descreve o que o diff altera, porque é isso que está no código. O número do chamado ou o motivo de negócio não aparecem ali; acrescente essas informações depois da linha de resumo gerada.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/commit-message \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}'const res = await fetch("https://api.kit.forhosting.com/dev/commit-message", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/commit-message",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/commit-message", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/commit-message", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.commit_message",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
422 | task_failed | A tarefa falhou do nosso lado. Você não paga nada por ela. |
Notas técnicas
Do diff ao texto
Você envia o diff — a saída de um git diff --staged, por exemplo — e a API devolve a mensagem pronta: um título curto no imperativo e, quando a mudança pede, um corpo explicando o contexto.
Padronize o time inteiro sem brigar
Chamando a API em um hook de prepare-commit-msg, a mensagem já nasce no formato combinado — feat, fix, chore, escopo entre parênteses — e o dev só edita se quiser.
Preço de centavos, histórico de gente grande
Cada mensagem custa US$ 0,003 pela chamada mais US$ 0,0135 pelo diff processado — menos de US$ 0,02 por commit, em dólares americanos. Um time que faz 200 commits por mês gasta uns US$ 3,30.
Casos de integração
Hook local que escreve por você
Rafael Almeida Costa plugou a API no hook de commit do repositório: ao commitar, o diff staged vai para o serviço e a mensagem sugerida aparece no editor. Ele aceita, ajusta uma palavra ou outra e pronto — o histórico ficou legível sem esforço.
Perguntas técnicas
Dá para usar direto no editor ou no CI?
Sim. É uma chamada HTTP com resposta em JSON: cabe em hook de git, em extensão de editor ou em uma etapa de pipeline que valida e sugere mensagens em pull requests.