--- name: Git-Commit-Push description: 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. --- # 🚀 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:** ```regex /^(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 ```bash # 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 ```bash # 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:** ```bash # 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:** ```bash # 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:** ```bash # 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:** ```bash # 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 ``` ():