CI/CD Skills
Habilidades para resolver problemas relacionados a pipelines de CI/CD.
Condições de Ativação
- "CI caiu" / "GitHub Actions falhou"
- "Erro de build" / "Teste não passa"
- "Conserte o pipeline"
Detalhes das Funcionalidades
| Funcionalidade | Detalhes | Gatilho |
|---|---|---|
| Análise de falhas | Veja references/analyzing-failures.md | "Olhe os logs", "Descubra a causa" |
| Correção de testes | Veja references/fixing-tests.md | "Corrija o teste", "Dê uma sugestão de correção" |
Procedimento de Execução
- Julgamento: teste vs. implementação (Etapa 0)
- Classificar a intenção do usuário (análise ou correção)
- Determinar a complexidade (veja abaixo)
- Ler o arquivo de referência apropriado dos "Detalhes das Funcionalidades" acima ou iniciar o subagente ci-cd-fixer
- Verificar o resultado e, se necessário, reexecutar
Etapa 0: Julgamento: teste vs. implementação (Portão de Qualidade)
Ao falhar no CI, primeiro isole a causa:
Relatório de falha de CI
↓
┌─────────────────────────────────────────┐
│ Julgamento: teste vs. implementação │
├─────────────────────────────────────────┤
│ Analise a causa do erro: │
│ ├── Implementação incorreta → Corrigir implementação │
│ ├── Teste desatualizado → Confirmar com o usuário │
│ └── Problema de ambiente → Corrigir ambiente │
└─────────────────────────────────────────┘
Itens Proibidos (Prevenção de Adulteração)
⚠️ Itens proibidos ao falhar no CI
As seguintes "soluções" são proibidas:
| Proibido | Exemplo | Ação Correta |
|----------|---------|--------------|
| Pular teste | `it.skip(...)` | Corrigir implementação |
| Remover asserção | Deletar `expect()` | Verificar valor esperado |
| Ignorar verificação de CI | `continue-on-error` | Corrigir causa raiz |
| Relaxar regra de lint | `eslint-disable` | Corrigir código |
Fluxo de Julgamento
🔴 O CI está falhando
**É necessário julgar**:
1. **Implementação incorreta** → Corrigir implementação ✅
2. **Valor esperado do teste desatualizado** → Pedir confirmação ao usuário
3. **Problema de ambiente** → Corrigir configuração do ambiente
⚠️ Adulteração de teste (pular, remover asserção) é proibida
Qual se aplica?
Quando Aprovação é Necessária
Se a alteração no teste/configuração for inevitável:
## 🚨 Solicitação de Aprovação para Alteração de Teste/Configuração
### Motivo
[Por que esta alteração é necessária]
### Conteúdo da Alteração
[Diff]
### Consideração de Alternativas
- [ ] Verifiquei se a correção da implementação não resolve o problema
Aguardar aprovação explícita do usuário
Uso de Flags Estendidas do Git Log (CC 2.1.49+)
Use logs estruturados para identificar o commit causador da falha de CI.
Identificação do Commit Causador
# Análise de commits em formato estruturado
git log --format="%h|%s|%an|%ad" --date=short -10
# Análise de linha do tempo com ordem topológica
git log --topo-order --oneline -20
# Associação de arquivos alterados com a causa
git log --raw --oneline -5
Principais Cenários de Uso
| Uso | Flag | Efeito |
|---|---|---|
| Identificar causa da falha | `--format="%h | %s"` |
| Rastrear na linha do tempo | --topo-order | Rastrear considerando ordem de merge |
| Entender impacto das alterações | --raw | Exibir detalhes das alterações de arquivos |
| Análise excluindo merges | --cherry-pick --no-merges | Extrair apenas commits reais |
Exemplo de Saída
🔍 Análise de causa de falha de CI
Commits recentes (estruturados):
| Hash | Assunto | Autor | Data |
|------|---------|-------|------|
| a1b2c3d | feat: atualizar API | Alice | 2026-02-04 |
| e4f5g6h | test: adicionar testes | Bob | 2026-02-03 |
Arquivos alterados (--raw):
├── src/api/endpoint.ts (Modificado) ← Erro de tipo ocorreu
├── tests/api.test.ts (Modificado)
└── package.json (Modificado)
→ O commit a1b2c3d é provavelmente a causa
Erro de tipo: src/api/endpoint.ts:42
Integração com Subagente
Inicie o ci-cd-fixer com a ferramenta Task quando as seguintes condições forem atendidas:
- O loop de correção → reexecução → falha ocorre 2 vezes ou mais
- Ou, o erro abrange vários arquivos em um caso complexo
Padrão de Inicialização:
Task tool:
subagent_type="ci-cd-fixer"
prompt="Diagnostique e corrija a falha de CI. Log de erro: {error_log}"
O ci-cd-fixer opera com segurança em primeiro lugar (modo dry-run padrão).
Consulte agents/ci-cd-fixer.md para detalhes.
Para VibeCoders
🔧 Como dizer quando o CI quebrar
1. **"O CI caiu" / "Ficou vermelho"**
- Os testes automatizados estão falhando
2. **"Por que está falhando?"**
- Quer que eu descubra a causa
3. **"Conserte"**
- Tentarei corrigir automaticamente
💡 Importante: Correções que "enganam" os testes são proibidas
- ❌ Deletar ou pular testes
- ⭕ Corrigir o código corretamente
Se você acha que "o teste está errado",
primeiro confirme antes de decidir a ação