Automação de Fluxo de Trabalho Git

Automação completa do ciclo de vida de desenvolvimento de funcionalidades usando Git, desde a criação de branch até o merge.

O que é Automação de Fluxo de Trabalho Git?

Esta skill automatiza todo o ciclo de desenvolvimento de funcionalidades no Git, desde a criação do branch até o merge, incluindo commits com emojis convencionais, criação de PRs, tratamento de revisões e monitoramento de status. Ela é suportada pelo Claude Code e utiliza comandos Git e GitHub CLI (gh) para operar. A skill garante que todas as 11 etapas do fluxo sejam executadas sequencialmente, com tratamento automático de comentários de revisão e loops de verificação. É ideal para desenvolvedores que desejam automatizar tarefas repetitivas do Git e melhorar a produtividade.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add tupacalypse187/tupacalypse187-claude-skills

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Automação de Fluxo de Trabalho Git faz?

Automação completa do fluxo de trabalho Git para o ciclo de vida de desenvolvimento de funcionalidades, desde a criação do branch até o merge.


Visão Geral

Esta skill automatiza o fluxo de trabalho completo de desenvolvimento de funcionalidades:

  1. Criar branch de funcionalidade a partir do branch padrão
  2. Fazer commit das alterações com commits convencionais com emoji
  3. Enviar para o remoto
  4. Criar PR com template markdown estruturado
  5. Verificar revisões — aguardar comentários de revisão de código
  6. Avaliar e corrigir — categorizar e corrigir cada comentário
  7. Enviar correções e responder — enviar alterações, responder a cada comentário
  8. Loop — verificar novamente se há novos feedbacks sobre as correções
  9. Monitorar status (UNSTABLE -> CLEAN)
  10. Fazer merge do PR (squash + excluir branch)
  11. Limpeza dos branches local e remoto

⚠️ OBRIGATÓRIO: Ao executar o fluxo completo, TODAS as 11 etapas DEVEM ser executadas sequencialmente. NÃO pare após criar o PR (Etapa 4). As etapas 5 a 11 (revisão, correção, merge, limpeza) são partes obrigatórias do fluxo, não acompanhamentos opcionais. Continue de cada etapa para a próxima sem parar.


Acionando a Skill

Use linguagem natural para invocar qualquer parte do fluxo:

Fluxo Completo

  • "Complete o fluxo de trabalho Git para a funcionalidade X"
  • "Crie branch de funcionalidade, faça commit, crie PR e faça merge"
  • "Execute o ciclo completo de PR"

Etapas Individuais

  • "Crie um branch de funcionalidade para X"
  • "Faça commit das minhas alterações com commits convencionais com emoji"
  • "Crie um PR com template estruturado"
  • "Monitore o status do meu PR"
  • "Faça o merge do PR e limpe"

Tratamento de Revisões

  • "Verifique comentários do PR e resolva-os"
  • "Corrija comentários de revisão no PR #123"
  • "Responda ao feedback no PR atual"

Etapa 1: Criar Branch de Funcionalidade

# Detecta o branch padrão (main, master, etc.)
DEFAULT_BRANCH=$(git remote show origin 2>/dev/null | grep 'HEAD branch' | sed 's/.*: //' || echo "main")
git checkout "$DEFAULT_BRANCH"
git pull origin "$DEFAULT_BRANCH"
git checkout -b feat/nome-descritivo

Convenções de nomenclatura de branches:

  • feat/ - Novas funcionalidades
  • fix/ - Correções de bugs
  • docs/ - Alterações na documentação
  • refactor/ - Refatoração de código
  • perf/ - Melhorias de desempenho
  • test/ - Adição/alteração de testes
  • chore/ - Tarefas de manutenção
  • ci/ - Alterações em CI/CD

Etapa 2: Commits com Emoji e Convencionais

Preparar e Fazer Commit

git add <arquivos>
git commit -m "<emoji> <tipo>[escopo opcional]: <descrição>"

Tipos de Commit e Emojis

TipoEmojiDescriçãoExemplo
feat✨Nova funcionalidade✨ feat(auth): adicionar validação de token JWT
fix🐛Correção de bug🐛 fix(api): resolver vazamento de memória no handler
docs📝Documentação📝 docs: atualizar documentação de endpoints da API
style🎨Estilo de código🎨 style: formatar código com prettier
refactor♻️Refatoração de código♻️ refactor: simplificar lógica de autenticação
perf⚡️Desempenho⚡️ perf: otimizar desempenho de consulta no banco
test✅Testes✅ test: adicionar testes unitários para serviço de usuário
chore🔧Manutenção🔧 chore: atualizar dependências de build
ci👷CI/CD👷 ci: adicionar workflow do GitHub Actions
build📦Sistema de build📦 build: atualizar para webpack 5
revert⏪Reverter⏪ revert: reverter integração de pagamento

Formato da Mensagem de Commit

Simples (padrão):

✨ feat(auth): adicionar validação de token JWT

Completo (com corpo):

✨ feat(auth): adicionar validação de token JWT

Implementar middleware de validação de token JWT que:
- Valida a assinatura e expiração do token
- Extrai claims do usuário do payload
- Adiciona contexto do usuário ao objeto de requisição

Isso melhora a segurança garantindo que todas as rotas protegidas
validem tokens de autenticação corretamente.

Co-authored-by: Claude <[email protected]>

Melhores Práticas

  • ✅ Use tempo presente, modo imperativo ("adicione" e não "adicionou")
  • ✅ Mantenha a primeira linha com menos de 50 caracteres (72 no máximo)
  • ✅ Comece com letra maiúscula
  • ✅ Sem ponto final na linha de assunto
  • ✅ Use escopo para contexto (ex: feat(auth):)
  • ✅ Inclua rodapé Co-authored-by: para commits assistidos por IA

Etapa 3: Enviar para o Remoto

git push -u origin feat/nome-descritivo

Etapa 4: Criar PR com Template Estruturado

Antes de criar o PR, analise as alterações reais:

# Veja todas as alterações neste branch em relação ao branch padrão
git diff "$DEFAULT_BRANCH"...HEAD

# Veja as mensagens de commit
git log "$DEFAULT_BRANCH"..HEAD --pretty=format:"%s"

Você DEVE gerar o título e o corpo do PR a partir do diff real — nunca use texto de espaço reservado.

  • Título: Use o emoji e o tipo do commit principal (ex: ✨ feat:, 🐛 fix:). Inclua o emoji.
  • Corpo: Preencha cada seção com conteúdo REAL derivado do diff. Não escreva [Resumo de uma linha] ou [Primeira alteração] — escreva descrições reais das alterações.
gh pr create \
  --title "<EMOJI> <TIPO>: <descrição breve>" \
  --body "$(cat <<EOF
## 📝 Resumo

[Escreva um RESUMO REAL de uma frase com base no diff real]

## 🔄 Alterações

[Liste cada alteração significativa como um ponto de lista com prefixo de emoji. Baseie-se na saída do git diff]

## ✅ Verificação

[Forneça etapas de verificação específicas e executáveis baseadas no que realmente mudou]

## 🔗 Fontes

[Inclua links relevantes: referências de issues (Closes #N), documentação, PRs relacionados. Remova a seção se não houver]

---

🤖 Gerado com [Claude Code](https://claude.com/claude-code)
EOF
)""

Exemplos de Template de PR

PR de Funcionalidade:

## 📝 Resumo

Adicionar fluxo de autenticação OAuth2 com suporte aos provedores Google e GitHub.

## 🔄 Alterações

- ✨ Adicionar fluxo de código de autorização OAuth2 com PKCE
- 🔐 Implementar armazenamento seguro de tokens com cookies criptografados
- 📝 Adicionar sincronização de perfil de usuário no primeiro login
- 🎨 Atualizar UI de login com botões de provedores

## ✅ Verificação

1. Execute localmente: `npm run dev`
2. Visite `/login` e clique em "Fazer login com Google"
3. Complete o fluxo OAuth
4. Verifique se o perfil do usuário foi criado corretamente
5. Verifique se a atualização do token funciona ao recarregar a página

```bash
# Suite de testes
npm run test:auth

🔗 Fontes


**PR de Correção de Bug:**
```markdown
## 📝 Resumo

Corrigir vazamento de memória no handler de eventos que causava aumento de uso de memória ao longo do tempo.

## 🔄 Alterações

- 🐛 Corrigir listener de evento que não era removido corretamente
- ✅ Adicionar limpeza em componentWillUnmount
- 📝 Adicionar documentação para ciclo de vida do handler de eventos

## ✅ Verificação

1. Abra DevTools do navegador → Memória
2. Tire um snapshot do heap
3. Navegue pelo aplicativo 10 vezes
4. Tire outro snapshot
5. Verifique se não há nós DOM destacados

## 🔗 Fontes

- Corrige #789
- Issue relacionada: #123

Etapa 5: Verificar Revisões de Código

Aguarde a conclusão das revisões de código antes de verificar os comentários:

echo "⏳ Aguardando revisões de código..."
sleep 180

Buscar Comentários de Revisão

# Resolve o slug do repositório
REPO_SLUG=$(gh repo view --json nameWithOwner --jq '.nameWithOwner')

# Lista PRs
gh pr list

# Visualiza detalhes do PR
gh pr view <NUMERO_DO_PR>

# Obtém comentários de revisão inline no código (filtra respostas para obter apenas originais)
gh api repos/$REPO_SLUG/pulls/$NUMERO_DO_PR/comments --jq '.[] | select(.in_reply_to_id == null) | {id: .id, path: .path, line: .line, body: .body}'

# Obtém comentários em nível de issue (comentários gerais do PR)
gh api repos/$REPO_SLUG/issues/$NUMERO_DO_PR/comments --jq '.[] | {id: .id, body: .body}'

# Obtém estado da revisão
gh pr view $NUMERO_DO_PR --json reviews --jq '.reviews[] | {state: .state, body: .body, author: .author.login}'

Etapa 6: Avaliar e Corrigir Comentários de Revisão

Categorizar Cada Comentário

CategoriaAçãoExemplos
Deve corrigirAlteração de código necessáriaBugs, problemas de segurança, erros de lógica, testes quebrados
Deveria corrigirAlteração de código recomendadaEstilo de código, nomenclatura, tratamento de erro ausente
SugestãoOpcional, aplique julgamentoAbordagens alternativas, padrões mais elegantes
PerguntaApenas responder, sem alteração no códigoRevisor pedindo esclarecimento
Já resolvidoApenas responderComentário se refere a código já corrigido

Processo para Cada Comentário

  1. Leia o arquivo referenciado no número de linha especificado
  2. Faça a correção mínima necessária para atender ao feedback
  3. Prepare e faça commit com o emoji de commit apropriado
  4. Rastreie o ID do comentário para responder depois
# Faça a correção
# ... alterações no código ...

# Faça commit da correção
git add <arquivos-alterados>
git commit -m "🐛 fix: corrigir feedback da revisão - tratar caso extremo"

Etapa 7: Enviar Correções e Responder a Todos os Comentários

Após todas as correções serem commitadas:

# Envie todos os commits de correção
git push

Antes de responder, calcule o hash da correção:

FIX_HASH=$(git rev-parse --short HEAD)

Então, para cada comentário, responda usando a variável de shell $FIX_HASH e o id numérico literal da busca da Etapa 5:

# Responder a comentário de revisão inline
gh api repos/$REPO_SLUG/pulls/$NUMERO_DO_PR/comments \
  --method POST \
  --field body="✅ Corrigido em $FIX_HASH. <descreva o que foi realmente alterado>" \
  --field in_reply_to=$ID_COMENTARIO

# Responder a comentário geral do PR (nota: a API do GitHub cria um novo comentário de nível superior, não uma resposta encadeada — isso é uma limitação da API)
gh api repos/$REPO_SLUG/issues/$NUMERO_DO_PR/comments \
  --method POST \
  --field body="✅ Resolvido em $FIX_HASH. <descreva o que foi realmente alterado>"

Formato de resposta:

  • Correções: ✅ Corrigido em <hash_curto> — <o que foi alterado>
  • Perguntas: 💡 <resposta>
  • Sugestões não aplicadas: 🙏 Boa sugestão, mas <motivo>. Feliz em revisitar se necessário.

Etapa 8: Loop — Verificar Novamente Novos Feedbacks

Após enviar as correções:

# Re-buscar comentários e comparar com IDs já processados
gh api repos/$REPO_SLUG/pulls/$NUMERO_DO_PR/comments --jq '.[] | select(.in_reply_to_id == null) | .id'
  • Se novos IDs de comentários forem encontrados → repita a partir da Etapa 6
  • Se não houver novos comentários → prossiga para a Etapa 9

Respostas Comuns de Revisão

Tipo de ComentárioAbordagem de Resposta
Estilo de códigoCorrigir + commit 🎨 style:
Relatório de bugCorrigir + commit 🐛 fix:
Testes ausentesAdicionar testes + commit ✅ test:
DocumentaçãoAtualizar docs + commit 📝 docs:
DesempenhoOtimizar + commit ⚡️ perf:
RefatoraçãoRefatorar + commit ♻️ refactor:

Etapa 9: Monitorar Status do PR (UNSTABLE -> CLEAN)

Use este loop de monitoramento para aguardar a aprovação de todas as verificações de CI:

#!/bin/bash
NUMERO_DO_PR="<NUMERO_DO_PR>"

for i in {1..60}; do
  pr_status=$(gh pr view $NUMERO_DO_PR --json mergeStateStatus --jq '.mergeStateStatus')

  if [ "$pr_status" = "CLEAN" ]; then
    echo "✅ Todas as verificações passaram! Pronto para merge."
    exit 0
  fi

  echo "⏳ Aguardando... ($i/60) - status: $pr_status"
  sleep 10
done

echo "❌ Tempo limite excedido - as verificações não passaram em 10 minutos"
exit 1

Status possíveis:

  • UNKNOWN - Status ainda não determinado
  • BEHIND - Branch está atrás do branch base
  • BLOCKED - Bloqueado por verificações com falha
  • DIRTY - Conflito de merge
  • DRAFT - PR está em estado de rascunho
  • UNSTABLE - As verificações ainda não passaram
  • CLEAN - Todas as verificações passaram, pronto para merge

Etapa 10: Fazer Merge do PR (Squash + Excluir Branch)

gh pr merge <NUMERO_DO_PR> --squash --delete-branch

Nota: Omitir --subject permite que o GitHub use o título do PR como padrão, que já tem o prefixo de emoji/tipo correto.

Opções de merge:

  • --squash - Combinar todos os commits em um (recomendado)
  • --merge - Fazer merge com histórico completo de commits
  • --rebase - Rebase dos commits no branch base
  • --delete-branch - Excluir branch após o merge

Etapa 11: Limpeza dos Branches Local e Remoto

# Voltar para o branch padrão
git checkout "$DEFAULT_BRANCH"

# Puxar as alterações mais recentes
git pull origin "$DEFAULT_BRANCH"

# Excluir branch local
git branch -d feat/nome-descritivo

# Forçar exclusão se necessário
git branch -D feat/nome-descritivo

# Excluir branch remoto (se ainda não foi excluído)
git push origin --delete feat/nome-descritivo

Script de Fluxo Completo

Aqui está um script completo que combina o fluxo completo (monitoramento, correção, merge, limpeza):

#!/bin/bash
set -e

NUMERO_DO_PR="<NUMERO_DO_PR>"
REPO_SLUG=$(gh repo view --json nameWithOwner --jq '.nameWithOwner')

# Etapa 5: Aguardar revisões
echo "⏳ Aguardando 120 segundos para revisões de código..."
sleep 180

# Etapas 6-8: Loop de correção (máximo 5 iterações)
PROCESSED_IDS=""
MAX_ITERATIONS=5
iteration=0
while [ $iteration -lt $MAX_ITERATIONS ]; do
  iteration=$((iteration + 1))
  COMMENT_IDS=$(gh api repos/$REPO_SLUG/pulls/$NUMERO_DO_PR/comments --jq '.[] | select(.in_reply_to_id == null) | .id')
  NEW_IDS=$(comm -23 <(echo "$COMMENT_IDS" | sort) <(echo "$PROCESSED_IDS" | sort) || true)

  if [ -z "$NEW_IDS" ]; then
    echo "✅ Nenhum novo comentário de revisão."
    break
  fi

  echo "📝 Novos comentários de revisão encontrados. Resolvendo..."
  # (Claude Code avalia e corrige cada comentário aqui)

  git push
  PROCESSED_IDS="${PROCESSED_IDS}
${NEW_IDS}"

  echo "⏳ Aguardando CI e re-revisão..."
  sleep 60
done

if [ $iteration -ge $MAX_ITERATIONS ]; then
  echo "⚠️ Número máximo de iterações de correção atingido. Pode ser necessária revisão manual."
fi

# Etapa 9: Monitorar status do PR
echo "🔍 Monitorando status do PR #$NUMERO_DO_PR..."
HEAD_BRANCH=$(gh pr view $NUMERO_DO_PR --json headRefName --jq '.headRefName')
for i in {1..60}; do
  pr_status=$(gh pr view $NUMERO_DO_PR --json mergeStateStatus --jq '.mergeStateStatus')

  if [ "$pr_status" = "CLEAN" ]; then
    echo "✅ Todas as verificações passaram!"
    break
  fi

  echo "⏳ Aguardando... ($i/60) - status: $pr_status"
  sleep 10
done

# Etapa 10: Fazer merge do PR
echo "🔀 Fazendo merge do PR #$NUMERO_DO_PR..."
gh pr merge $NUMERO_DO_PR --squash --delete-branch

# Etapa 11: Limpeza
echo "🧹 Limpando..."
git checkout "$DEFAULT_BRANCH"
git pull origin "$DEFAULT_BRANCH"
git branch -D "$HEAD_BRANCH" 2>/dev/null || true
echo "✅ Pronto! Pronto para próxima funcionalidade."

Comandos de Referência Rápida

Operações com Branch

git checkout -b feat/nome-da-funcionalidade    # Criar branch de funcionalidade
git checkout "$DEFAULT_BRANCH" && git pull    # Sincronizar com branch padrão
git br

… (truncado para tradução)

Habilidades Relacionadas