From dev-team-kit-fv
Reverse engineers executable specs, business rules, module contracts, flows, and retroactive ADRs from undocumented legacy codebases. Use before migrations, onboarding, or evolving critical features.
npx claudepluginhub felvieira/claude-skills-fvThis skill is limited to using the following tools:
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.
Reverse-engineers existing codebases to extract specifications, map dependencies, generate API docs, and document business logic using Read, Grep, Glob, Bash. For legacy, undocumented, or inherited projects.
Reverse-engineers legacy or undocumented codebases: scopes boundaries, explores with Glob/Grep/Read/Bash, traces data flows, documents requirements in EARS format, flags uncertainties.
Extracts Allium specifications from existing codebases. Use to distill behavior into specs, reverse-engineer from implementation, generate specs from code, or document codebase behavior in Allium terms.
Share bugs, ideas, or general feedback.
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 humana