skills/33-detective-spec/SKILL.md
Engenharia reversa de specs para sistemas legados. Use quando precisar extrair specs executaveis, regras de negocio, contratos de modulo, fluxos e ADRs retroativos a partir de codigo existente sem spec previa. Trigger em: "legado", "engenharia reversa", "extrair spec", "documentar codigo existente", "vibe coding sem doc", "detective", "reverse spec", "o que esse codigo faz", "spec a partir do codigo".
npx skillsauth add felvieira/claude-skills-fv detective-specInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
O Detetive entra em sistemas legados sem spec, investiga o codigo como cena de crime, e produz contratos operacionais que qualquer agente de coding pode usar para evoluir o sistema com fidelidade ao que ja existe.
Inspirado por Reversa, adaptado para o nosso pipeline (Graphify + repo-audit + memoria persistente).
Esta skill segue GLOBAL.md, policies/execution.md, policies/persistence.md, policies/handoffs.md, policies/token-efficiency.md, policies/tool-safety.md, policies/source-driven.md e policies/detective-write-guardrails.md.
Para exemplos longos e templates completos, consultar docs/skill-guides/detective-spec.md apenas quando necessario.
Codigo legado e cena de crime. Existe historia, decisoes implicitas, regras invisiveis. O Detetive nao inventa nem reescreve — ele observa, infere e documenta. Toda conclusao precisa apontar para evidencia (file:line ou commit-sha).
Specs nao sao documentacao. Sao contratos executaveis que outro agente pode consumir para implementar features sem quebrar o que ja existe.
/spec direto)/build ou debugger)/audit-repo)graphify-out/graph.json ja geradodocs/repo-audit/current.md ja existente.detective/state.json — checkpoint do progresso (resume-friendly).detective/plan.md — plano de exploracao personalizado_detective_sdd/ — output dir com specs:
00-overview.md — mapa do sistema01-modules/<name>.md — contratos de modulo02-business-rules/<domain>.md — regras de negocio extraidas03-flows/<flow>.md — fluxos end-to-end04-adrs/ADR-NNN.md — decisoes arquiteturais retroativas99-traceability.md — mapa spec → evidencia (file:line / commit).detective/ e _detective_sdd/. Qualquer outra escrita = violacao..detective/ (use checkpoint/resume).[evidence: src/foo.ts:42] ou [evidence: commit a1b2c3d].[confidence: low] e listar em 99-traceability.md como "needs human validation".Consultar policies/detective-write-guardrails.md.
O Detetive opera em 5 fases sequenciais. Cada fase faz checkpoint em .detective/state.json para permitir resume.
Fase 1: Reconhecimento → mapa estrutural + identificar suspeitos
Fase 2: Modulos → extrair contratos por modulo (interrogatorio)
Fase 3: Regras → extrair regras de negocio escondidas
Fase 4: Fluxos → reconstituir cena (fluxos end-to-end)
Fase 5: ADRs + Sintese → decisoes retroativas + spec consolidada
Detetive responsavel: orchestrator (esta skill)
Acoes:
graphify-out/graph.json existe — se sim, usar como mapa primario (god nodes, comunidades, hubs)docs/repo-audit/current.md — se valido, usar; senao, despachar repo-auditor primeiro.detective/plan.md com lista priorizada de modulos para investigarOutput: _detective_sdd/00-overview.md + .detective/plan.md
Checkpoint: state.json.phase = 1, status = done
Detetive responsavel: detective-contracts (persona)
Para cada modulo do .detective/plan.md:
Interrogar:
Output por modulo: _detective_sdd/01-modules/<name>.md
Estrutura:
# Modulo: <name>
**Path:** src/...
**Confidence:** high | medium | low
## Responsabilidade
[1-2 linhas — o que esse modulo faz no sistema]
## API Publica
- `fn(args): tipo` — [proposito] [evidence: file:line]
## Dependencias
- [modulo X]: usa para [proposito]
## Invariantes
- [regra que o codigo assume verdadeira] [evidence: file:line]
## Consumidores
- src/foo.ts:42 — [como usa]
## Estado Interno
- [vars de modulo, caches, singletons]
## Suspeitas (precisa validacao humana)
- [coisas que parecem dead code, comportamento ambiguo, TODOs antigos]
Checkpoint: state.json.modules[<name>] = done apos cada modulo
Detetive responsavel: detective-business-rules (persona)
Onde regras se escondem:
if (x < 0) throw)const TAX_RATE = 0.08)// HACK:, // FIXME:, // because <bug>Acoes:
throw new, raise, assert, Validate*)const [A-Z_]+ = )it(...) e uma regra_detective_sdd/02-business-rules/<domain>.mdEstrutura por dominio:
# Regras de Negocio — <dominio>
## RN-001: [nome curto]
**Confidence:** high | medium | low
**Evidence:** src/foo.ts:42
**Quando:** [condicao que ativa a regra]
**Entao:** [comportamento esperado]
**Por que (inferido):** [hipotese da motivacao — marcar como inferida]
**Testavel como:**
DADO [estado] QUANDO [acao] ENTAO [resultado]
Checkpoint: state.json.rules[<domain>] = done
Detetive responsavel: detective-flows (persona)
Reconstituir cenas: seguir uma requisicao/comando do ponto de entrada ate o efeito final.
Acoes:
Output por fluxo: _detective_sdd/03-flows/<flow>.md
Estrutura:
# Fluxo: <nome>
**Trigger:** [route POST /x | comando CLI | job cron | event]
**Confidence:** high | medium | low
## Happy Path
1. [step] — src/handler.ts:10
2. [step] — src/service.ts:42
→ side effect: [DB INSERT em tabela X]
3. [step] — [efeito final]
## Edge Cases
- [condicao] → [comportamento] [evidence: file:line]
## Estado Mutado
- tabela `users.last_login` (step 3)
- cache `session:<id>` (step 1)
## Falhas Possiveis
- [excecao] em step N → [tratamento ou propagacao]
Checkpoint: state.json.flows[<name>] = done
Detetive responsavel: detective-adrs (persona)
Acoes:
_detective_sdd/04-adrs/ADR-NNN.md_detective_sdd/99-traceability.md — tabela completa spec ↔ evidencia_detective_sdd/00-overview.md com sumario executivoEstrutura ADR:
# ADR-001: [decisao]
**Status:** Inferido (retroativo)
**Confidence:** high | medium | low
**Evidence:** [arquivos/commits que sustentam a inferencia]
## Contexto (inferido)
[problema que essa decisao parece resolver]
## Decisao
[o que foi escolhido]
## Consequencias observadas no codigo
- [acoplamento, restricao, beneficio observado]
## Alternativas (especulativas)
[se aplicavel, o que outra escolha implicaria]
Checkpoint: state.json.phase = 5, status = done
.detective/state.json{
"version": 1,
"started_at": "2026-05-02T12:00:00Z",
"last_checkpoint": "2026-05-02T12:34:00Z",
"scope": "full | module:<path> | feature:<name>",
"phase": 1 | 2 | 3 | 4 | 5,
"phase_status": "in_progress | done",
"modules": { "<name>": "pending|in_progress|done" },
"rules": { "<domain>": "pending|in_progress|done" },
"flows": { "<name>": "pending|in_progress|done" },
"evidence_count": 0,
"low_confidence_items": []
}
Se sessao for interrompida, ao re-invocar /detective-spec:
.detective/state.jsondoneSe graphify-out/graph.json existir:
01-modules/Se nao existir, sugerir gerar primeiro: pip install graphifyy && graphify update .
Se docs/repo-audit/current.md existir e estiver atualizado:
routes.md, schema.md) alimentam Fase 4 (fluxos) e Fase 2 (modulos)Cada spec deve declarar confidence:
Items low viram fila de validacao em 99-traceability.md secao "Needs Human Review".
[unknown — investigate].confidence: low..detective/state.json com phase: 5, status: done_detective_sdd/00-overview.md + todos os subdirs populados_detective_sdd/99-traceability.md com mapa completogit status --porcelain filtrado para untracked + git diff --name-only --diff-filter=MDARCT HEAD para tracked — ver policies/detective-write-guardrails.md secao "Verificacao")low confidence consolidada para validacao humanaApos conclusao, entregar para o usuario:
_detective_sdd/00-overview.md)low confidence que precisam validacao/spec para nova feature usando esses contratos como baseOutput deve ser legivel por humanos E consumivel por agentes. Markdown estruturado, links relativos para evidencias, sem prosa decorativa. Cada secao serve um proposito operacional.
_detective_sdd/ para nova feature em legado_detective_sdd/ para docs/ oficial apos validacao humanadevelopment
Skill compositora que pega texto/assunto e gera post de blog HTML completo no repo {blog_repo_path} ({github_user_repo_url}), com imagens (via skill 17 fal.ai ou skill 42 Playwright screenshot), commit+push automático, retorna URL pública via GitHub Pages. Trigger em: "post no blog", "publicar post", "escrever post", "blog post", "publish blog", "gera post", "criar post", "novo post no meu blog".
tools
Audita o peso de contexto carregado na sessão — CLAUDE.md, agents, MCP descriptions, rules ativas, skills invocadas e histórico acumulado. Estima tokens por componente, reporta headroom disponível e emite alertas de overflow. Distinto do cost-tracker (skill 30) que rastreia tokens gastos em completions runtime. Trigger em: "contexto inchado", "context overflow", "quanto contexto estou usando", "peso do contexto", "context budget", "tokens carregados", "sessao lenta", "respostas degradadas", "headroom de contexto", "custo fixo de contexto", "overhead de rules", "overhead dos agents", "impacto do MCP no contexto", "espaco no context window", "quanto cabe no context window"
development
Coleta e organiza informacao tecnica multi-fonte antes de escrever docs, PRDs, ADRs ou artigos. Busca em: docs oficiais, GitHub (repos + issues), Stack Overflow, papers e blogs de referencia. Ranqueia fontes por autoridade (oficial 40% + recencia 30% + profundidade 20% + comunidade 10%). Output: memory/research/<slug>.md pronto para alimentar skill 10 (documenter), skill 01 (po-feature-spec), skill 26 (prompt-engineer) ou skill 41 (blog-publisher). Trigger em: "pesquisa tecnica", "levanta informacao", "coleta docs", "busca referencias", "preciso de fontes", "research antes de escrever", "levanta o que existe sobre", "benchmark de solucoes", "o que existe sobre X", "quero entender o estado da arte", "compara abordagens", "levanta referencias", "faz um research de", "coleta fontes sobre", "pesquisa sobre", "quero saber o que existe de", "monta um dossie tecnico", "background tecnico", "due diligence tecnica", "levantamento de alternativas".
development
Extrai e codifica os padroes de coding do projeto existente (naming, estrutura de arquivos, error handling, testing style, import style, API design, async patterns) e usa esses padroes como restricao sobre novo codigo. Garante que o agente code "igual ao resto do projeto" em vez de inventar convencoes proprias. Produce um "code style map" salvo em memory/patterns.md que todas as skills de geracao de codigo devem consultar. Trigger em: "segue o padrao do projeto", "coda igual ao resto", "nao reinventa padrao", "detecta padroes do codebase", "code style do projeto", "padrao do projeto", "convencao do projeto", "coda consistente", "mesma convencao", "sem reinventar roda", "padrao de codigo", "patterns do codebase", "pattern enforcement", "conformidade de padrao", "convencoes de naming", "padrao de tratamento de erro", "mesma estrutura do projeto", "detecta as convencoes", "extrai padroes de coding", "como o projeto estrutura".