Claude-skill-registry Git-Commit-Push

Skill para commits e pushes automatizados no GitHub. Analisa mudanças, gera mensagens descritivas seguindo convenções, valida código e executa git push com segurança. Acionado por "faça um git push" ou "commite tudo". Visão full-stack senior dev.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/git-commit-push" ~/.claude/skills/majiayu000-claude-skill-registry-git-commit-push && rm -rf "$T"
manifest: skills/data/git-commit-push/SKILL.md
source content

🚀 GIT COMMIT & PUSH PROTOCOL

🎯 Objetivo

Automatizar commits e pushes com mensagens descritivas, validações de código e boas práticas de versionamento.


⚡ ATIVAÇÃO AUTOMÁTICA

Comandos que Acionam a Skill

Termos Diretos (SEMPRE usar skill):

  • git push
  • git commit
  • push
  • commit
  • git e push
    IMPORTANTE: variação comum

Frases em Português:

  • "faça um git push"
  • "faça o push"
  • "faz um push"
  • "faça git e push"
  • "git e push"
  • "commite tudo"
  • "commit e push"
  • "suba as mudanças"
  • "subir mudanças"
  • "envie para o github"
  • "envia pro github"
  • "git push das alterações"
  • "commit das mudanças"
  • "salva no git"
  • "salvar no git"
  • "versiona isso"
  • "versionar"
  • "commitar"
  • "pushar"

Variações Curtas:

  • "push isso"
  • "commita"
  • "manda pro git"
  • "atualiza o repo"
  • "atualizar repositório"
  • "sobe isso"
  • "sobe pro git"
  • "joga no git"
  • "puxa e empurra" (pull + push)

Após Implementações:

  • "pronto, push"
  • "feito, commit"
  • "terminei, sobe"
  • "ok, git push"
  • "antes... git e push"
  • "antes, push"
  • "só falta o push"

Variações Implícitas (contexto de finalização):

  • "agora commita"
  • "pode commitar"
  • "manda ver no git"
  • "finaliza no github"
  • "fecha com push"

Regex de Detecção:

/^(antes\s*[\.,]?\s*)?(git\s*(e\s*)?)?((push|commit|commita|commitar|pushar|suba|subir|envie?|manda|versiona|sobe))/i
/(push|commit|github|repo|git)\s*(isso|tudo|mudanças|alterações)?$/i
/(só\s*falta|pode|agora|fecha\s*com)\s*(o\s*)?(push|commit)/i

Quando Usar

  • Após implementar funcionalidade completa
  • Após correções de bugs
  • Após refatorações
  • Quando solicitado explicitamente

📋 PROTOCOLO DE EXECUÇÃO

FASE 1: ANÁLISE DE MUDANÇAS

1.1 Verificar Status do Git

# Ver branch atual
bash git branch --show-current

# Ver mudanças
bash git status --short

# Ver diff detalhado
bash git diff --stat

# Ver arquivos staged (se houver)
bash git diff --cached --stat

1.2 Identificar Tipo de Mudança

# Analisar arquivos modificados
bash git diff --name-only

# Categorizar mudanças:
# - controllers/ → feat/fix backend
# - models/ → feat/fix database
# - routes/ → feat/fix routing
# - public/js/ → feat/fix frontend
# - public/css/ → style
# - *.md → docs
# - package.json → deps

1.3 Mapear Escopo da Mudança

  • Backend: Controllers, Models, Routes, Services
  • Frontend: JS modules, HTML, CSS
  • Config: package.json, .env.example, constants
  • Docs: README, CHANGELOG, markdown files
  • Infra: Deployment configs, Docker, scripts

FASE 2: VALIDAÇÕES PRÉ-COMMIT

2.1 Validação de Código

JavaScript/Node.js:

# Syntax check em arquivos modificados
bash for file in $(git diff --name-only --diff-filter=AM | grep "\.js$"); do node --check "$file" 2>&1 || echo "❌ Erro em $file"; done

# Verificar console.log esquecidos
bash git diff | grep -n "console\.log\|debugger" && echo "⚠️ Debug code detectado"

# Verificar TODO/FIXME
bash git diff | grep -n "TODO\|FIXME\|XXX" && echo "📝 Marcadores pendentes"

Multi-Tenant Validation:

# Verificar queries sem liga_id
bash git diff | grep -A 5 "\.find\|\.findOne\|\.updateMany" | grep -v "liga_id" && echo "⚠️ Query sem liga_id detectada"

Security Checks:

# Verificar rotas desprotegidas
bash git diff routes/ | grep "router\.\(post\|put\|delete\)" | grep -v "verificar" && echo "⚠️ Rota sem middleware"

# Verificar secrets expostos
bash git diff | grep -iE "password|secret|key|token" | grep -v "\.env" && echo "🔒 Possível secret exposto"

2.2 Validação de Qualidade

Code Quality:

# Verificar arquivos > 500 linhas
bash for file in $(git diff --name-only --diff-filter=AM | grep "\.js$"); do lines=$(wc -l < "$file" 2>/dev/null); [ "$lines" -gt 500 ] && echo "📏 $file muito grande ($lines linhas)"; done

# Verificar funções muito complexas
bash git diff | grep -c "function\|=>" | awk '{if($1 > 20) print "⚠️ Muitas funções em um diff"}'

2.3 Decisão: Continuar ou Abortar

  • Syntax errors → ABORTAR, corrigir primeiro
  • ⚠️ Debug code → AVISAR usuário, continuar se confirmado
  • ⚠️ Security issues → AVISAR, aguardar confirmação
  • Tudo OK → Continuar

FASE 3: GERAÇÃO DE MENSAGEM DE COMMIT

3.1 Formato Conventional Commits

<tipo>(<escopo>): <descrição curta>

<corpo detalhado (opcional)>

<footer (opcional)>

3.2 Tipos Padronizados

  • feat
    : Nova funcionalidade
  • fix
    : Correção de bug
  • refactor
    : Refatoração sem mudança de comportamento
  • perf
    : Melhoria de performance
  • style
    : Formatação, espaçamento (não CSS)
  • docs
    : Apenas documentação
  • test
    : Adicionar/corrigir testes
  • build
    : Mudanças no build/deploy
  • ci
    : Mudanças em CI/CD
  • chore
    : Manutenção geral

3.3 Escopos do Projeto

  • extrato
    : Módulo de extratos financeiros
  • acertos
    : Sistema de acertos financeiros
  • rodadas
    : Gerenciamento de rodadas
  • mata-mata
    : Torneio mata-mata
  • pontos-corridos
    : Campeonato por pontos
  • artilheiro
    : Sistema de artilheiros/campeões
  • fluxo
    : Fluxo financeiro
  • melhor-mes
    : Melhor jogador do mês
  • export
    : Funcionalidades de exportação
  • pwa
    : Progressive Web App
  • auth
    : Autenticação
  • api
    : Integrações API
  • db
    : Database/models
  • ui
    : Interface geral

3.4 Algoritmo de Geração de Mensagem

Analisar arquivos modificados:

const mudancas = {
  controllers: arquivos.filter(f => f.includes('controllers/')),
  models: arquivos.filter(f => f.includes('models/')),
  frontend: arquivos.filter(f => f.includes('public/js/')),
  styles: arquivos.filter(f => f.includes('public/css/')),
  routes: arquivos.filter(f => f.includes('routes/')),
  docs: arquivos.filter(f => f.endsWith('.md'))
};

// Determinar tipo principal
let tipo = 'chore';
if (mudancas.controllers.length > 0 || mudancas.models.length > 0) {
  tipo = 'feat'; // ou 'fix' se contiver "fix", "bug", "erro"
}
if (mudancas.styles.length > 0 && mudancas.frontend.length === 0) {
  tipo = 'style';
}
if (mudancas.docs.length > 0 && Object.values(mudancas).flat().length === mudancas.docs.length) {
  tipo = 'docs';
}

// Determinar escopo (pasta principal modificada)
const escopo = identificarEscopoPrincipal(arquivos);

// Gerar descrição baseada em diffs
const descricao = gerarDescricaoInteligente(git.diff);

3.5 Exemplos de Mensagens Geradas

Exemplo 1: Nova feature

# Arquivos: controllers/extratoController.js, public/js/extrato/core.js
# Diff: +calcularSaldoAcertos(), +saldoAcertos

Mensagem gerada:
feat(extrato): adiciona cálculo de saldo de acertos

- Implementa função calcularSaldoAcertos() no controller
- Integra saldo de acertos no extrato do participante
- Atualiza frontend para exibir breakdown de saldos

Exemplo 2: Bug fix

# Arquivos: controllers/acertosController.js
# Diff: -bug no cálculo, +correção

Mensagem gerada:
fix(acertos): corrige cálculo de acertos com múltiplas parcelas

- Resolve erro ao calcular acertos com mais de 3 parcelas
- Adiciona validação para valores negativos

Exemplo 3: Refatoração

# Arquivos: public/js/extrato/core.js, public/js/extrato/ui.js
# Diff: reorganização de funções

Mensagem gerada:
refactor(extrato): separa lógica de apresentação da UI

- Move funções de cálculo para core.js
- Mantém apenas renderização em ui.js
- Melhora manutenibilidade do código

Exemplo 4: Múltiplos módulos

# Arquivos: controllers/mataMataController.js, controllers/acertosController.js
# Diff: mudanças em 2 módulos

Mensagem gerada:
feat(torneio): integra acertos financeiros no mata-mata

- Adiciona cálculo de acertos no ranking do mata-mata
- Sincroniza saldos entre módulos
- Atualiza UI para exibir pendências financeiras

FASE 4: EXECUÇÃO DE COMANDOS GIT

4.1 Staging Inteligente

Estratégia 1: Stage por categoria

# Backend primeiro
bash git add controllers/ models/ routes/ services/ 2>/dev/null

# Frontend depois
bash git add public/js/ public/css/ public/participante/ 2>/dev/null

# Config e docs
bash git add package.json *.md config/ 2>/dev/null

# Outros arquivos
bash git add . 2>/dev/null

Estratégia 2: Stage tudo de uma vez (padrão)

bash git add .

4.2 Commit com Mensagem Gerada

# Executar commit
bash git commit -m "[mensagem gerada]"

# Verificar se commit foi bem-sucedido
bash git log -1 --oneline

4.3 Verificações Pré-Push

# Ver branch atual
bash git branch --show-current

# Ver remote configurado
bash git remote -v

# Ver commits a serem enviados
bash git log origin/$(git branch --show-current)..HEAD --oneline

# Verificar se há divergências
bash git fetch origin
bash git status | grep "behind\|diverged"

4.4 Tratamento de Divergências

Cenário 1: Local ahead, remote não alterado

# Push direto
bash git push origin $(git branch --show-current)

Cenário 2: Remote alterado (behind)

# Pull com rebase
bash git pull --rebase origin $(git branch --show-current)

# Resolver conflitos se houver
bash git status | grep "both modified" && echo "⚠️ Conflitos detectados"

# Push após resolver
bash git push origin $(git branch --show-current)

Cenário 3: Divergência crítica

# Abortar e avisar usuário
bash git merge --abort 2>/dev/null
bash git rebase --abort 2>/dev/null

echo "🚫 PUSH ABORTADO: Divergência detectada"
echo "Ações necessárias:"
echo "1. git fetch origin"
echo "2. git rebase origin/main (ou merge)"
echo "3. Resolver conflitos"
echo "4. Tentar push novamente"

FASE 5: EXECUÇÃO DO PUSH

5.1 Push Padrão

# Push para branch atual
bash git push origin $(git branch --show-current)

# Verificar sucesso
bash echo $? | grep "0" && echo "✅ Push realizado com sucesso" || echo "❌ Push falhou"

5.2 Push com Tags (se aplicável)

# Se houver tags locais não enviadas
bash git push origin --tags

5.3 Confirmação Final

# Ver último commit no remote
bash git log origin/$(git branch --show-current) -1 --oneline

# Ver status limpo
bash git status

📊 OUTPUT FINAL

Template de Resposta

🚀 **GIT PUSH EXECUTADO**

✅ **Commit:** [hash] - [mensagem]
📂 **Arquivos:** [quantidade] modificados
🌿 **Branch:** [nome da branch]
📡 **Remote:** origin/[branch]

📋 **Resumo das Mudanças:**
- [módulo 1]: [descrição]
- [módulo 2]: [descrição]

🔍 **Validações:**
✅ Syntax check passou
✅ Multi-tenant validado
✅ Security checks OK

🔗 **GitHub:** https://github.com/[repo]/commit/[hash]

Exemplo Real

🚀 **GIT PUSH EXECUTADO**

✅ **Commit:** a3f2b91 - feat(extrato): adiciona cálculo de saldo de acertos
📂 **Arquivos:** 3 modificados
🌿 **Branch:** main
📡 **Remote:** origin/main

📋 **Resumo das Mudanças:**
- controllers/extratoController.js: nova função calcularSaldoAcertos()
- public/js/extrato/core.js: integração frontend
- routes/extrato-routes.js: endpoint para buscar acertos

🔍 **Validações:**
✅ Syntax check passou
✅ Multi-tenant validado
✅ Security checks OK

🔗 **GitHub:** https://github.com/paulinett1508-dev/SuperCartolaManagerv5/commit/a3f2b91

🔧 CONFIGURAÇÕES AVANÇADAS

Commit Hooks (Automatizado)

# Criar pre-commit hook (opcional)
bash cat > .git/hooks/pre-commit << 'EOF'
#!/bin/bash
# Syntax check antes de commitar
for file in $(git diff --cached --name-only --diff-filter=AM | grep "\.js$"); do
  node --check "$file" || exit 1
done
EOF

bash chmod +x .git/hooks/pre-commit

Aliases Úteis

# Criar aliases git úteis
bash git config alias.last 'log -1 HEAD'
bash git config alias.unstage 'reset HEAD --'
bash git config alias.visual 'log --oneline --graph --decorate'

⚙️ ESTRATÉGIAS POR CONTEXTO

Contexto 1: Desenvolvimento Solo (padrão)

# Push direto para main
bash git add .
bash git commit -m "[mensagem]"
bash git push origin main

Contexto 2: Feature Branches

# Verificar se está em feature branch
branch=$(git branch --show-current)
if [[ $branch != "main" && $branch != "master" ]]; then
  # Push para feature branch
  bash git push origin $branch
  echo "💡 Branch de feature: $branch"
  echo "Para merge: git checkout main && git merge $branch"
fi

Contexto 3: Hotfix Crítico

# Se mensagem contém "hotfix" ou "urgent"
echo "🚨 HOTFIX DETECTADO"
bash git add .
bash git commit -m "hotfix: [descrição]"
bash git push origin main
bash git tag -a "hotfix-$(date +%Y%m%d-%H%M)" -m "Hotfix crítico"
bash git push origin --tags

🚫 ANTI-PATTERNS (NUNCA FAZER)

❌ Commit sem Análise

# ERRADO:
bash git add . && git commit -m "updates" && git push

# CERTO:
# 1. Analisar mudanças
# 2. Validar código
# 3. Gerar mensagem descritiva
# 4. Executar push

❌ Mensagens Genéricas

# ERRADO:
git commit -m "fix"
git commit -m "updates"
git commit -m "changes"

# CERTO:
git commit -m "fix(extrato): corrige cálculo de saldo negativo"
git commit -m "feat(pwa): adiciona botão de instalação"

❌ Push sem Validação

# ERRADO:
git push (sem verificar syntax, conflitos, etc)

# CERTO:
# 1. Syntax check
# 2. Verificar divergências
# 3. Pull se necessário
# 4. Push

❌ Commit de Debug Code

# ERRADO: Commitar com console.log
console.log("DEBUG: saldo =", saldo);

# CERTO: Remover debug antes de commitar
bash git diff | grep "console\.log" && echo "⚠️ Remova debug code"

✅ CHECKLIST COMPLETO

Pré-Commit

  • Syntax check em todos arquivos .js
  • Sem console.log ou debugger
  • Queries com liga_id validadas
  • Rotas protegidas com middleware
  • Sem secrets expostos
  • Arquivos > 500 linhas revisados

Commit

  • Mensagem segue Conventional Commits
  • Tipo correto (feat/fix/refactor/etc)
  • Escopo identificado
  • Descrição clara e concisa
  • Corpo detalhado (se necessário)

Push

  • Branch verificado
  • Remote correto
  • Sem divergências ou conflitos
  • Push bem-sucedido
  • Status limpo (working tree clean)

🎯 FLUXO VISUAL

📝 SOLICITAÇÃO
   "faça um git push"
          ↓
🔍 FASE 1: ANÁLISE
   git status, git diff
          ↓
✅ FASE 2: VALIDAÇÕES
   syntax, multi-tenant, security
          ↓
   ❌ Falhou? → ABORTAR + avisar usuário
   ✅ Passou? → Continuar
          ↓
💬 FASE 3: MENSAGEM
   Gerar commit message descritiva
          ↓
📦 FASE 4: STAGING
   git add (inteligente ou completo)
          ↓
💾 FASE 5: COMMIT
   git commit -m "[mensagem]"
          ↓
🔄 FASE 6: PRÉ-PUSH
   Verificar divergências
          ↓
   🔀 Divergência? → Pull/Rebase → Resolver
   ✅ Limpo? → Continuar
          ↓
🚀 FASE 7: PUSH
   git push origin [branch]
          ↓
✅ CONCLUSÃO
   Confirmar sucesso + resumo

🎓 CASOS DE USO

Caso 1: Push Simples

USUÁRIO: "faça um git push"

SKILL EXECUTA:
1. git status → 3 arquivos modificados
2. Validações → ✅ Tudo OK
3. Mensagem → "feat(extrato): adiciona exportação PDF"
4. git add .
5. git commit -m "[mensagem]"
6. git push origin main
7. Responde: ✅ Push realizado (commit a3f2b91)

Caso 2: Múltiplas Mudanças

USUÁRIO: "commite tudo"

SKILL EXECUTA:
1. git status → 12 arquivos em 3 módulos
2. Identifica: backend (extrato) + frontend (mata-mata)
3. Mensagem → "feat: integra acertos em extrato e mata-mata"
4. Adiciona bullets detalhando cada módulo
5. Executa commit + push
6. Responde: ✅ Push com 12 arquivos

Caso 3: Hotfix Urgente

USUÁRIO: "git push urgente do fix"

SKILL EXECUTA:
1. Detecta palavra "urgente"
2. Prioriza validação de security
3. Mensagem → "hotfix: corrige vazamento de dados multi-tenant"
4. Commit + push
5. Cria tag hotfix-YYYYMMDD-HHMM
6. Responde: 🚨 Hotfix enviado + tag criada

Caso 4: Conflitos Detectados

USUÁRIO: "faça um push"

SKILL EXECUTA:
1. git fetch → detecta divergência
2. git pull --rebase → conflitos em extrato.js
3. PARA e responde:
   "🚫 Push abortado: conflitos detectados em extrato.js
   
   Resolva manualmente:
   1. Abra extrato.js
   2. Resolva marcações <<< === >>>
   3. Execute: git add extrato.js && git rebase --continue
   4. Solicite novo push"

💡 DECISÕES INTELIGENTES

Escolher Tipo de Commit Automaticamente

const palavrasChave = {
  feat: ['adiciona', 'implementa', 'cria', 'novo', 'nova'],
  fix: ['corrige', 'resolve', 'fix', 'bug', 'erro'],
  refactor: ['refatora', 'reorganiza', 'melhora estrutura'],
  perf: ['otimiza', 'performance', 'melhora velocidade'],
  style: ['formata', 'ajusta estilo', 'spacing'],
  docs: ['documenta', 'atualiza README', 'adiciona comentários']
};

// Analisar commit message e diff para determinar tipo
const tipo = identificarTipoInteligente(diff, palavrasChave);

Detectar Escopo Automaticamente

// Arquivos modificados
const arquivos = getArquivosModificados();

// Mapear para escopos do projeto
const mapeamento = {
  'controllers/extratoController.js': 'extrato',
  'controllers/mataMataController.js': 'mata-mata',
  'public/js/fluxo-financeiro/': 'fluxo',
  'models/Rodada.js': 'rodadas'
};

const escopo = determinarEscopoPrincipal(arquivos, mapeamento);

STATUS: 🚀 GIT COMMIT & PUSH PROTOCOL - AUTOMATED & SMART

Versão: 1.0 (Senior Full-Stack Edition)

Última atualização: 2026-01-23


🔐 SEGURANÇA E COMPLIANCE

Regras de Proteção

  • ❌ Nunca commitar .env
  • ❌ Nunca commitar node_modules/
  • ❌ Nunca commitar arquivos > 100MB
  • ❌ Nunca commitar secrets/tokens
  • ✅ Sempre validar multi-tenant
  • ✅ Sempre validar security middleware

Validação de .gitignore

# Verificar se .gitignore está configurado
bash test -f .gitignore || echo "⚠️ .gitignore não encontrado"

# Verificar se node_modules está ignorado
bash grep -q "node_modules" .gitignore || echo "⚠️ Adicione node_modules ao .gitignore"

ATIVADO E PRONTO PARA USO! 🎯