commit-per-file
Analisa os arquivos alterados no repositório e cria um commit semântico individual para cada um, seguindo as regras de docs/commits.md (tipo, emoji e apenas a mensagem principal).
SKILL.md.claude/skills/commit-per-file/SKILL.md
GitHubCommit por arquivo
Cria um commit separado para cada arquivo alterado no repositório, classificando cada mudança de acordo com as regras de commits semânticos definidas em docs/commits.md.
Passos
- Leia
docs/commits.mdna raiz do projeto para obter a tabela atual de tipos, emojis e palavras-chave, além das recomendações de formatação. Releia sempre — não presuma que uma versão vista anteriormente na conversa ainda é a atual. - Rode
git status --porcelainpara listar todos os arquivos com mudanças (staged, unstaged e untracked). - Para cada arquivo alterado, processe individualmente, um de cada vez:
a. Rode
git diff -- <arquivo>(ougit diff --cached -- <arquivo>se já estiver staged; leia o conteúdo se for um arquivo novo/untracked) para entender exatamente o que mudou. b. Classifique a mudança em um dos tipos da tabela do documento (feat,fix,docs,test,build,perf,style,refactor,chore,ci,raw,cleanup,remove) com base no que a mudança realmente faz, não no nome do arquivo. c. Escreva a mensagem do commit em português, no formato:emoji: tipo: descrição curta, seguindo as recomendações do documento (descrição idealmente com até ~4 palavras, consistente com o tipo escolhido). Use apenas a mensagem principal — sem corpo nem rodapé — a menos que o usuário peça explicitamente mais detalhes. d. Rodegit add -- <arquivo>egit commit -m "<mensagem>"contendo somente esse arquivo. - Ao final, rode
git log --oneline -n <quantidade de arquivos commitados>e mostre ao usuário a lista de commits criados.
Regras importantes
- Um commit por arquivo — nunca agrupe múltiplos arquivos no mesmo commit, mesmo que pareçam parte da mesma mudança lógica. Se o usuário quiser agrupar arquivos, ele pedirá isso explicitamente.
- Se um único arquivo misturar tipos diferentes de mudança (ex.: um bugfix e uma refatoração), escolha o tipo predominante; não tente dividir o mesmo arquivo em múltiplos commits sem que o usuário peça.
- Nunca faça
git pushautomaticamente. - Nunca use
--no-verifyou outras flags que pulem hooks/verificações. - Se não houver arquivos alterados, informe o usuário e não crie nenhum commit.
- Siga a ordem em que os arquivos aparecem em
git status --porcelain, salvo alguma razão clara para priorizar um arquivo específico.