Use quando encontrar um bug, falha em teste ou comportamento inesperado, antes de propor correções
Scanned 9/8/2026
Install to Claude Code
npx -y skills add artubss/SKILLS-CLAUDE-CODE --skill systematic-debugging --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Systematic Debugging?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/artubss-systematic-debugging)More formats (shields.io, HTML) on the badges page.
---
name: systematic-debugging
description: Use quando encontrar um bug, falha em teste ou comportamento inesperado, antes de propor correções
---
# Depuração Sistemática
## Visão Geral
Correções aleatórias desperdiçam tempo e criam novos bugs. Patches rápidos mascaram problemas subjacentes.
**Princípio central:** SEMPRE encontre a causa raiz antes de tentar correções. Correções de sintomas são fracasso.
**Violar a letra deste processo é violar o espírito da depuração.**
## A Lei de Ferro
```
SEM CORREÇÕES SEM INVESTIGAÇÃO DE CAUSA RAIZ PRIMEIRO
```
Se você não completou a Fase 1, não pode propor correções.
## Quando Usar
Use para QUALQUER problema técnico:
- Falhas em testes
- Bugs em produção
- Comportamento inesperado
- Problemas de desempenho
- Falhas de build
- Problemas de integração
**Use isto ESPECIALMENTE quando:**
- Sob pressão de tempo (emergências tornam adivinhações tentadoras)
- "Apenas uma correção rápida" parece óbvia
- Você já tentou múltiplas correções
- A correção anterior não funcionou
- Você não compreende completamente o problema
**Não pule quando:**
- O problema parece simples (bugs simples têm causas raiz também)
- Você está com pressa (pressa garante retrabalho)
- O gerente quer resolvido AGORA (sistemático é mais rápido que caos)
## As Quatro Fases
Você DEVE completar cada fase antes de prosseguir para a próxima.
### Fase 1: Investigação de Causa Raiz
**ANTES de tentar QUALQUER correção:**
1. **Leia Mensagens de Erro Com Cuidado**
- Não pule erros ou avisos
- Frequentemente contêm a solução exata
- Leia stack traces completamente
- Anote números de linha, caminhos de arquivo, códigos de erro
2. **Reproduza Consistentemente**
- Você consegue disparar o erro confiabilmente?
- Quais são os passos exatos?
- Acontece toda vez?
- Se não for reproduzível → colete mais dados, não adivinhe
3. **Verifique Mudanças Recentes**
- O que mudou que poderia causar isto?
- Git diff, commits recentes
- Novas dependências, mudanças de config
- Diferenças ambientais
4. **Colete Evidências em Sistemas Multi-Componentes**
**QUANDO o sistema tem múltiplos componentes (CI → build → signing, API → service → database):**
**ANTES de propor correções, adicione instrumentação diagnóstica:**
```
Para CADA limite de componente:
- Log dos dados que entram no componente
- Log dos dados que saem do componente
- Verifique propagação de ambiente/config
- Verifique estado em cada camada
Execute uma vez para coletar evidências mostrando ONDE quebra
ENTÃO analise as evidências para identificar qual componente falha
ENTÃO investigue esse componente específico
```
**Exemplo (sistema multi-camada):**
```bash
# Camada 1: Workflow
echo "=== Secrets disponíveis no workflow: ==="
echo "IDENTITY: ${IDENTITY:+SET}${IDENTITY:-UNSET}"
# Camada 2: Build script
echo "=== Env vars no build script: ==="
env | grep IDENTITY || echo "IDENTITY not in environment"
# Camada 3: Signing script
echo "=== Keychain state: ==="
security list-keychains
security find-identity -v
# Camada 4: Signing atual
codesign --sign "$IDENTITY" --verbose=4 "$APP"
```
**Isto revela:** Qual camada falha (secrets → workflow ✓, workflow → build ✗)
5. **Trace Data Flow**
**QUANDO erro é profundo na call stack:**
Veja `root-cause-tracing.md` neste diretório para a técnica completa de tracing reverso.
**Versão rápida:**
- De onde vem o valor ruim?
- O que chamou isto com valor ruim?
- Continue tracendo para cima até encontrar a fonte
- Corrija na fonte, não no sintoma
### Fase 2: Análise de Padrão
**Encontre o padrão antes de corrigir:**
1. **Encontre Exemplos Funcionando**
- Localize código similar funcionando no mesmo codebase
- O que funciona similar ao que está quebrado?
2. **Compare Contra Referências**
- Se implementando padrão, leia implementação de referência COMPLETAMENTE
- Não escaneie - leia cada linha
- Entenda o padrão completamente antes de aplicar
3. **Identifique Diferenças**
- O que é diferente entre funcionando e quebrado?
- Liste cada diferença, por menor que seja
- Não assuma "aquilo não pode importar"
4. **Entenda Dependências**
- Quais outros componentes isto precisa?
- Quais settings, config, ambiente?
- Quais suposições faz?
### Fase 3: Hipótese e Testes
**Método científico:**
1. **Forme Hipótese Única**
- Declare claramente: "Acho que X é a causa raiz porque Y"
- Escreva
- Seja específico, não vago
2. **Teste Minimamente**
- Faça a MENOR mudança possível para testar hipótese
- Uma variável por vez
- Não corrija múltiplas coisas de uma vez
3. **Verifique Antes de Continuar**
- Funcionou? Sim → Fase 4
- Não funcionou? Forme NOVA hipótese
- NÃO adicione mais correções por cima
4. **Quando Não Souber**
- Diga "Não entendo X"
- Não fingi saber
- Peça ajuda
- Pesquise mais
### Fase 4: Implementação
**Corrija a causa raiz, não o sintoma:**
1. **Crie Caso de Teste Falhando**
- Reprodução mais simples possível
- Teste automatizado se possível
- Script único se sem framework
- DEVE ter antes de corrigir
- Use o skill `superpowers:test-driven-development` para escrever testes falhando apropriadamente
2. **Implemente Correção Única**
- Endereça a causa raiz identificada
- UMA mudança por vez
- Sem melhorias "enquanto estou aqui"
- Sem refatoração bundled
3. **Verifique Correção**
- Teste passa agora?
- Nenhum outro teste quebrado?
- Problema realmente resolvido?
4. **Se Correção Não Funcionar**
- PARE
- Conte: Quantas correções você já tentou?
- Se < 3: Retorne à Fase 1, reanalise com novas informações
- **Se ≥ 3: PARE e questione a arquitetura (passo 5 abaixo)**
- NÃO tente Correção #4 sem discussão arquitetural
5. **Se 3+ Correções Falharam: Questione Arquitetura**
**Padrão indicando problema arquitetural:**
- Cada correção revela novo estado compartilhado/acoplamento/problema em lugar diferente
- Correções requerem "refatoração massiva" para implementar
- Cada correção cria novos sintomas em outro lugar
**PARE e questione fundamentos:**
- Este padrão é fundamentalmente correto?
- Estamos "nos agarrando a isto por inércia pura"?
- Devemos refatorar arquitetura vs. continuar corrigindo sintomas?
**Discuta com seu parceiro humano antes de tentar mais correções**
Isto NÃO é uma hipótese falhada - isto é uma arquitetura errada.
## Red Flags - PARE e Siga o Processo
Se pegar a si mesmo pensando:
- "Correção rápida por enquanto, investigue depois"
- "Apenas tente mudar X e veja se funciona"
- "Adicione múltiplas mudanças, execute testes"
- "Pule o teste, vou verificar manualmente"
- "Provavelmente é X, deixa eu corrigir"
- "Não entendo completamente mas isto pode funcionar"
- "Padrão diz X mas vou adaptar diferentemente"
- "Aqui estão os principais problemas: [lista correções sem investigação]"
- Propondo soluções antes de traçar data flow
- **"Uma tentativa de correção a mais" (quando já tentou 2+)**
- **Cada correção revela novo problema em lugar diferente**
**TODOS estes significam: PARE. Retorne à Fase 1.**
**Se 3+ correções falharam:** Questione a arquitetura (veja Fase 4.5)
## Sinais do seu Parceiro Humano que Você Está Fazendo Errado
**Fique atento a estas redirecionamentos:**
- "Isto não está acontecendo?" - Você assumiu sem verificar
- "Vai mostrar para nós...?" - Você deveria ter adicionado coleta de evidências
- "Pare de adivinhar" - Você está propondo correções sem entender
- "Ultrapense isto" - Questione fundamentos, não apenas sintomas
- "Estamos presos?" (frustrado) - Sua abordagem não está funcionando
**Quando vir estes:** PARE. Retorne à Fase 1.
## Racionalizações Comuns
| Desculpa | Realidade |
|----------|-----------|
| "Problema é simples, não precisa processo" | Problemas simples têm causas raiz também. Processo é rápido para bugs simples. |
| "Emergência, sem tempo para processo" | Depuração sistemática é MAIS RÁPIDA que thrashing de adivinhação. |
| "Apenas tente isto primeiro, depois investigue" | Primeira correção define o padrão. Faça certo desde o início. |
| "Vou escrever teste depois de confirmar correção" | Correções não testadas não fixam. Teste primeiro prova. |
| "Múltiplas correções de uma vez economiza tempo" | Não consegue isolar o que funcionou. Causa novos bugs. |
| "Referência muito longa, vou adaptar padrão" | Entendimento parcial garante bugs. Leia completamente. |
| "Vejo o problema, deixa eu corrigir" | Ver sintomas ≠ entender causa raiz. |
| "Uma tentativa de correção a mais" (após 2+ falhas) | 3+ falhas = problema arquitetural. Questione padrão, não corrija novamente. |
## Referência Rápida
| Fase | Atividades Chave | Critérios de Sucesso |
|------|------------------|----------------------|
| **1. Causa Raiz** | Leia erros, reproduza, verifique mudanças, colete evidências | Entenda O QUÊ e POR QUÊ |
| **2. Padrão** | Encontre exemplos funcionando, compare | Identifique diferenças |
| **3. Hipótese** | Forme teoria, teste minimamente | Confirmada ou nova hipótese |
| **4. Implementação** | Crie teste, corrija, verifique | Bug resolvido, testes passam |
## Quando Processo Revela "Sem Causa Raiz"
Se investigação sistemática revelar que o problema é verdadeiramente ambiental, dependente de timing, ou externo:
1. Você completou o processo
2. Documente o que investigou
3. Implemente tratamento apropriado (retry, timeout, mensagem de erro)
4. Adicione monitoramento/logging para investigação futura
**Mas:** 95% dos casos "sem causa raiz" são investigação incompleta.
## Técnicas de Apoio
Estas técnicas são parte da depuração sistemática e disponíveis neste diretório:
- **`root-cause-tracing.md`** - Trace bugs para trás através de call stack para encontrar trigger original
- **`defense-in-depth.md`** - Adicione validação em múltiplas camadas após encontrar causa raiz
- **`condition-based-waiting.md`** - Substitua timeouts arbitrários por condition polling
**Skills relacionadas:**
- **superpowers:test-driven-development** - Para criar caso de teste falhando (Fase 4, Passo 1)
- **superpowers:verification-before-completion** - Verifique que correção funcionou antes de reclamar sucesso
## Impacto Real
De sessões de depuração:
- Abordagem sistemática: 15-30 minutos para corrigir
- Abordagem random fixes: 2-3 horas de caos
- Taxa de correção primeira vez: 95% vs 40%
- Novos bugs introduzidos: Próximo de zero vs comumIs this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!