一键导入
debug-investigation
Skill para investigação e debug sistemático de bugs — reproduzir, isolar, corrigir e validar com scripts.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Skill para investigação e debug sistemático de bugs — reproduzir, isolar, corrigir e validar com scripts.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Skill para criar novos geradores de dados seguindo as convenções do projeto Fill All.
Skill para planejamento de roadmap, gestão de features, milestones e priorização de tarefas do projeto Fill All.
Skill para validação de regressão em testes — verificar que mudanças não quebraram funcionalidades existentes.
Skill para realizar code reviews alinhados com as convenções e padrões de qualidade do projeto Fill All.
Skill para gerenciamento seguro de dependências npm — auditoria, atualização, lock files e breaking changes.
Skill para gerenciamento de internacionalização (i18n) — traduções, chaves de locale, chrome.i18n API e boas práticas.
| name | debug-investigation |
| description | Skill para investigação e debug sistemático de bugs — reproduzir, isolar, corrigir e validar com scripts. |
| license | MIT |
| compatibility | Node.js 18+, TypeScript 5.x, Chrome Extension Manifest V3 |
| metadata | {"author":"marcusp","version":"1.0","project":"fill-all","category":"debugging"} |
Processo estruturado para investigar e resolver bugs de forma sistemática, com scripts de validação em cada etapa para garantir que a correção é completa e sem regressões.
snapshot-health.sh --compareAntes de investigar, documentar o que se sabe:
### Bug Report
**Comportamento esperado**: <o que deveria acontecer>
**Comportamento atual**: <o que está acontecendo>
**Módulo afetado**: <módulo(s) suspeito(s)>
**Reproduzível**: Sempre | Às vezes | Raro
**Severidade**: 🔴 Crítico | 🟡 Importante | 🟢 Menor
# Salvar estado atual
./scripts/snapshot-health.sh --save
# Rodar testes do módulo afetado com verbose
npx vitest run src/lib/<modulo> --reporter=verbose
# Se não tem teste que reproduz, criar um:
# src/lib/<modulo>/__tests__/<bug-description>.test.ts
import { describe, it, expect } from "vitest";
import { funcaoComBug } from "@/lib/<modulo>/<arquivo>";
describe("Bug: <descrição curta>", () => {
it("should <comportamento esperado>", () => {
// Arrange: setup que reproduz o bug
const input = /* dados que causam o bug */;
// Act
const result = funcaoComBug(input);
// Assert: o que DEVERIA retornar
expect(result).toBe(/* valor esperado */);
});
});
# Confirmar que o teste FALHA (bug reproduzido)
npx vitest run src/lib/<modulo>/__tests__/<bug>.test.ts || echo "✅ Bug reproduzido no teste"
# Build necessário
npm run build
# Rodar E2E com UI para debug visual
npx playwright test --ui
# Ou com trace
npx playwright test --trace on
npx playwright show-report
# Verificar handlers
npx vitest run src/background --reporter=verbose
# Verificar validators
npx vitest run src/lib/messaging --reporter=verbose
# Testar módulos isoladamente para encontrar o culpado
npx vitest run src/lib/generators --reporter=verbose
npx vitest run src/lib/storage --reporter=verbose
npx vitest run src/lib/messaging --reporter=verbose
npx vitest run src/lib/form/detectors --reporter=verbose
npx vitest run src/lib/dataset --reporter=verbose
npx vitest run src/lib/rules --reporter=verbose
# Buscar o padrão problemático no código
grep -rn "<padrão-suspeito>" src/ --include="*.ts"
# Buscar mudanças recentes em arquivo suspeito
git log --oneline -10 -- src/lib/<modulo>/<arquivo>.ts
# Ver diff da última mudança
git diff HEAD~1 -- src/lib/<modulo>/<arquivo>.ts
# Erros de tipo podem indicar a causa
npm run type-check 2>&1 | grep -i "error"
# Verificar se há 'any' implícitos
npm run type-check 2>&1 | grep "implicit"
Bug reportado
│
├─ Teste existente falha?
│ ├─ Sim → Ir para Etapa 5 (corrigir)
│ └─ Não → Criar teste que reproduz
│
├─ Bug é em lógica pura?
│ ├─ Sim → Rodar vitest com verbose
│ └─ Não → É DOM/UI?
│ ├─ Sim → Rodar E2E com trace
│ └─ Não → É messaging?
│ ├─ Sim → Verificar validators + handlers
│ └─ Não → É storage?
│ └─ Sim → Verificar mocks + chaves
│
└─ Causa isolada? → Etapa 5
# Após a correção — teste do bug deve passar
npx vitest run src/lib/<modulo>/__tests__/<bug>.test.ts
# Todos os testes do módulo devem continuar passando
npx vitest run src/lib/<modulo>
# Validação rápida
./scripts/validate-step.sh types unit
| Tipo de Bug | Correção Comum | Validação |
|---|---|---|
| Generator retorna inválido | Lógica de cálculo | vitest run generators + 30 iterações |
| Parser lança exceção | safeParse() + return null | vitest run messaging |
| Storage retorna undefined | Fallback + validação Zod | vitest run storage |
| Classificador com confidence errada | Ajustar threshold/lógica | vitest run detectors + dataset |
| Import não encontrado | Barrel export esquecido | type-check + build |
| Evento DOM não disparado | Dispatch event correto | E2E test |
# Validação completa
./scripts/validate-step.sh types unit build
# Comparar com baseline — deve ter MAIS testes (o de regressão)
./scripts/snapshot-health.sh --compare
Critérios de sucesso:
| Critério | Esperado |
|---|---|
| Teste de regressão | Passando |
| Testes existentes | Todos passando |
| Testes passando (total) | ≥ baseline + 1 |
| Type-check | Zero erros |
| Build | OK |
| Coverage | ≥ 85% |
# ─── Investigação ─────────────────────────────────────
# Rodar teste específico com detalhes
npx vitest run <path> --reporter=verbose
# Rodar teste em modo watch (re-executa ao salvar)
npx vitest <path>
# E2E com debug visual
npx playwright test --ui
# E2E com trace completo
npx playwright test --trace on && npx playwright show-report
# ─── Busca no Código ─────────────────────────────────
# Buscar string no código fonte
grep -rn "<texto>" src/ --include="*.ts"
# Buscar em testes
grep -rn "<texto>" src/ --include="*.test.ts"
# Buscar consumers de uma função
grep -rn "import.*<funcao>" src/ --include="*.ts"
# ─── Histórico ────────────────────────────────────────
# Últimas mudanças em arquivo
git log --oneline -10 -- <arquivo>
# Diff desde último commit
git diff HEAD -- <arquivo>
# Quem alterou uma linha específica
git blame <arquivo> | grep "<texto>"
# ─── Validação ────────────────────────────────────────
# Ciclo rápido
./scripts/validate-step.sh types unit
# Ciclo completo
./scripts/validate-step.sh types unit build
# Comparar saúde
./scripts/snapshot-health.sh --compare
### Bug: <descrição>
- [ ] Bug documentado (comportamento esperado vs atual)
- [ ] Baseline salva (`snapshot-health.sh --save`)
- [ ] Bug reproduzido (teste que FALHA)
- [ ] Causa isolada e documentada
- [ ] Correção aplicada (mudança mínima)
- [ ] Teste de regressão PASSA
- [ ] Testes existentes PASSAM
- [ ] `./scripts/validate-step.sh types unit build` OK
- [ ] `./scripts/snapshot-health.sh --compare` sem regressão
- [ ] Testes passando ≥ baseline + 1