systematic-debugging (obra/superpowers)
Investiga de forma sistemática bugs, falhas de teste e comportamentos inesperados antes de propor correções.
superpowers systematic-debugging: nenhum ganho mensurável em três bugs pequenos, cerca de 1.3x os tokens
Codex CLI · gpt-6-astra
22.4 / 30
Ganho sobre sem skill: +0.00 · Situacional · 18 execuções
Situacional: o ganho +0.00 está abaixo de +1.0. Para ser recomendado, é preciso total de 22/30, qualidade da saída de 3.5 e ganho de +1.0.
SOTA
AprovadoTestado com Codex.
Cobre Codex, Claude Code
Codex CLI 0.166 (nível SOTA): 18 execuções avaliadas. Uma aprovação aqui também vale para o Claude Code pela nossa regra de níveis; ela não diz nada sobre o segundo nível.
Notas
Cada dimensão vai de 0 a 5, e as seis somam o total de 30. 5 é melhor em todas as dimensões. Custo 5 significa barato e rápido. Instalação 5 significa fácil.
- Confiabilidade do acionamento
- 5.0
- Ganho sobre sem skill
- 2.0
- Qualidade da saída
- 4.5
- Custo de tokens e tempo
- 3.0
- Instalação e portabilidade
- 4.0
- Segurança
- 4.0
Revisão de segurança
SeguroVarredura estática: 0 CRÍTICO / 0 ALTO / 0 MÉDIO. Revisão manual: seguro para executar em sandbox sem rede (nenhum achado). Uma varredura limpa não prova que a skill é segura.
Instalar
npx skills@latest add obra/superpowers --skill systematic-debugging
Commit fixado: 2ce8aa15d05bd57213e6f746f953aafb7ded7a8b
Testado: 2026-11-02
O que testamos
- Off-by-one em uma função pequena — moving_average em movavg.py retorna números errados: moving_average([2, 4, 6, 8, 10], 3) deveria ser [2, 3, 4, 6, 8], mas os valores seguintes saem errados. Encontre a causa e corrija. Testes: python3 -m unittest.
- Bug de data entre arquivos — Os cabeçalhos do nosso relatório semanal mostram datas erradas perto da virada do ano, por exemplo header('2026-W01') deveria ser 'Week 2026-W01: Dec 29 - Jan 04, 2026'. Encontre a causa e corrija.
- Falha de teste dependente de ordem — Os testes em tests/test_settings.py passam sozinhos, mas test_b falha quando o arquivo inteiro roda, e as configs parecem carregar tags de chamadas anteriores. Diagnostique e corrija.
Prós
- A skill foi acionada sem ser nomeada: o arquivo da skill foi lido em 6/6 execuções de tratamento.
Contras
- Nenhum ganho mensurável em relação ao grupo sem skill (+0.00, dentro do ruído).
- Um prompt de uma frase marcou 4.86, contra 4.45 com a skill (-0.42).
- Ressalva do teste: o braço de uma frase (6 execuções) foi adicionado depois, em uma máquina diferente dos braços de controle e tratamento.
- n=2 por tarefa por braço; diferenças abaixo de cerca de 1 ponto são ruído.
Avaliação
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em uma máquina de teste Mac, com um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (tratamento) ou ausente (grupo de controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo prompt de uma frase), 2 execuções por grupo por tarefa, rede desligada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill. A pontuação é programática (testes ocultos / detecção de problemas plantados / checagens de restrição / render+OCR quando relevante), de 0 a 5 por execução. Nenhum juiz LLM atribuiu nenhuma nota.
Comparação entre os braços
| Braço | Nota média (0-5) | Tokens por execução |
|---|---|---|
| Sem a skill | 4.45 | 75k |
| Prompt de uma frase | 4.86 | 98k |
| Com a skill | 4.45 | 99k |
Medido com Codex CLI em 18 execuções, com pontuação por verificações baseadas em regras e sem juiz LLM. Total 22.4 / 30, veredito Situacional.
Divulgação: O braço de uma frase (6 execuções) foi adicionado depois, em uma máquina diferente da dos braços de controle e de tratamento.
Veredito: Situacional (22.4 / 30). Fonte: obra/superpowers, skills/systematic-debugging, fixada no commit 2ce8aa1. Instalação: npx skills@latest add obra/superpowers --skill systematic-debugging. Licença: MIT (LICENSE do repositório).
O que é
A skill systematic-debugging de obra/superpowers: 'use ao encontrar qualquer bug, falha de teste ou comportamento inesperado, antes de propor correções'. Quatro fases (investigar a causa raiz, encontrar padrões, hipótese, correção), uma regra contra empilhar correções e notas complementares (rastreamento de causa raiz, defesa em profundidade, espera baseada em condição) mais cenários de pressão de teste e um script de shell (find-polluter.sh, um bisect local sobre arquivos de teste).
Como testamos
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em um Mac de teste, um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (grupo com skill), ausente (controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo de uma frase), 2 execuções por grupo por tarefa, rede desativada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill.
- Erro de off-by-one em uma função pequena —
moving_averageem movavg.py retorna números errados: moving_average([2, 4, 6, 8, 10], 3) deveria ser [2, 3, 4, 6, 8] mas os valores do fim saem errados. Encontre a causa e corrija. Testes:python3 -m unittest. - Bug de data entre arquivos — Os cabeçalhos do nosso relatório semanal mostram datas erradas perto da virada do ano, por exemplo header('2026-W01') deveria ser 'Week 2026-W01: Dec 29 - Jan 04, 2026'. Encontre a causa e corrija.
- Falha de teste dependente de ordem — Os testes em tests/test_settings.py passam sozinhos, mas
test_bfalha quando o arquivo inteiro roda, e as configs parecem carregar tags de chamadas anteriores. Diagnostique e corrija.
A pontuação é programática (testes ocultos / detecção de problemas plantados / verificações de restrições / renderização+OCR quando aplicável), de 0 a 5 por execução. Nenhum juiz LLM decidiu qualquer nota.
Resultados
A frase única dada ao terceiro grupo: "Depure sistematicamente: reproduza a falha primeiro, investigue a causa raiz e forme uma hipótese por vez com evidências antes de mudar o código, faça a menor correção para a causa raiz (sem palpites empilhados) e verifique com os testes."
| Tarefa | Nota do controle | Uma frase | Com a skill | Tokens do controle | Tokens da frase | Tokens com a skill | Skill lida |
|---|---|---|---|---|---|---|---|
| t1-moving-average | 4.17 | 4.58 | 4.58 | 60k | 62k | 69k | 2/2 |
| t2-weekly-dates | 4.17 | 5.0 | 4.17 | 78k | 104k | 109k | 2/2 |
| t3-shared-state | 5.0 | 5.0 | 4.58 | 85k | 127k | 118k | 2/2 |
Nota média: 4.45 sem vs 4.45 com a skill (delta +0.0). Tokens por execução: 75k vs 99k (1.33x); tempo 34s vs 45s. Grupo de uma frase: 4.86 (ganho da skill sobre a frase: -0.42; ganho da própria frase sobre sem skill: +0.42); tokens da frase: 98k por execução, então a skill custa 1.01x a frase.
O que aconteceu
- Resultado: os testes ocultos passaram em todas as execuções dos dois grupos, então a correção não diferiu.
- Verificação de processo 'rodou os testes antes de editar o código' (reproduzir primeiro): o controle falhou em 4/6 execuções, o grupo com a skill em 4/6. A primeira fase da skill é 'reproduzir', mas os agentes com a skill ainda muitas vezes aplicaram um patch antes de rodar qualquer coisa.
- A skill foi lida em 6/6 execuções com a skill, então o acionamento não é o problema; ela simplesmente não mudou o comportamento nesses bugs pequenos (dava para encontrar os bugs lendo o código).
- Custo: cerca de 1.3x tokens por execução (89k vs 67k).
- Versão de uma frase (reproduza primeiro, uma hipótese por vez, menor correção, verifique): média 4.86 contra 4.45 do controle e 4.45 da skill, com 98k tokens por execução contra 75k (1.3x) e 99k da skill (1.0x).
- A diferença está em rodar os testes antes de editar: 5 de 6 execuções da frase fizeram isso contra 2 de 6 do controle e 2 de 6 da skill. A skill não mudou esse comportamento; a frase que o nomeia mudou. Todos os grupos explicaram a causa raiz em todas as execuções e passaram em todos os testes ocultos, com diffs pequenos.
Notas por dimensão
| Dimensão | Nota | Por quê |
|---|---|---|
| 1_output_quality | 4.45 | Nota média 4.45/5 com a skill (verificações programáticas, veja a tabela por tarefa). |
| 2_lift_vs_no_skill | 2.0 | +0.00 pontos vs 4.45 sem a skill (n=2 por tarefa; abaixo de ~1 ponto é ruído). |
| 3_trigger | 5.0 | Arquivo da skill lido em 6/6 execuções com a skill. |
| 4_instructions_portability | 4 | |
| 5_efficiency | 3 | 1.33x tokens (99k vs 75k por execução) e 1.32x tempo (45s vs 34s). |
| 6_safety_hygiene | 4 |
Limitações deste teste
- Três bugs pequenos plantados (off-by-one, lógica de data entre arquivos, poluição de teste dependente de ordem) — todos fáceis o bastante para que a linha de base os corrija.
- A skill foi projetada para bugs difíceis, de múltiplas tentativas; não testamos esses.
find-polluter.shnão foi exercitado.- n = 2 por grupo por tarefa: diferenças abaixo de cerca de 1 ponto são ruído.
- A pontuação baseada em regras mede o que as verificações conseguem ver; não avalia gosto nem se o resultado é o melhor possível.
Segurança
Veja security.md. Varredura: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Veredito: seguro para executar (sandbox sem rede). Uma varredura limpa não prova que a skill é segura.
Conclusão
Em três bugs pequenos, a skill acrescentou cerca de 1.3x tokens e nenhuma mudança mensurável: controle e skill tiraram 4.45 e ambos rodaram os testes antes de editar em apenas 2 de 6 execuções. A versão de uma frase que diz 'reproduza primeiro' foi melhor (4.86, 5 de 6). Pode compensar em bugs mais difíceis, que não testamos.
Transcrição
Log de execuções: systematic-debugging (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Colunas: tarefa, grupo-execução, nota (0-5), tokens, segundos, verificações aprovadas, arquivos da skill abertos pelo agente. t1-moving-average control-1: nota 4.17, tokens 60337, s 30.6, verificações 3/4, nada aberto t1-moving-average control-2: nota 4.17, tokens 60293, s 24.1, verificações 3/4, nada aberto t1-moving-average oneliner-1: nota 4.17, tokens 62543, s 30.2, verificações 3/4, nada aberto t1-moving-average oneliner-2: nota 5.0, tokens 62033, s 32.0, verificações 4/4, nada aberto t1-moving-average treatment-1: nota 5.0, tokens 69716, s 31.0, verificações 4/4, abriu systematic-debugging t1-moving-average treatment-2: nota 4.17, tokens 69385, s 26.6, verificações 3/4, abriu systematic-debugging t2-weekly-dates control-1: nota 4.17, tokens 78575, s 38.8, verificações 3/4, nada aberto t2-weekly-dates control-2: nota 4.17, tokens 78005, s 39.5, verificações 3/4, nada aberto t2-weekly-dates oneliner-1: nota 5.0, tokens 96141, s 41.5, verificações 4/4, nada aberto
18 execuções, 3 artefatos
Resultado de exemplo
SOTA · With the skill: movavg.py (t1-moving-average, run 1, Codex)
def moving_average(values, window): """Trailing moving average. Output i is the mean of the last `window` values ending at index i. For i < window - 1 only the values available so far are used. Raises ValueError if window < 1. """ if window < 1: raise ValueError("window must be >= 1") out = [] for i in range(len(values)): start = max(0, i - window + 1) chunk = values[start:i + 1] out.append(sum(chunk) / len(chunk)) return out