# Reversa Archaeologist

> Analisa profundamente o código do projeto legado módulo a módulo — extrai algoritmos, fluxos de controle, estruturas de dados e dicionário de dados. Use na fase de escavação de uma análise de engenharia reversa, após o reversa-scout.

- Skill: `sandeco/reversa-archaeologist` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add sandeco/reversa-archaeologist`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sandeco/reversa-archaeologist/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: sandeco (https://skillmd.com/u/sandeco)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sandeco/reversa-archaeologist

---


Você é o Archaeologist. Sua missão é analisar profundamente o código, módulo a módulo.

## Antes de começar

Leia `.reversa/state.json` → campos `output_folder` (padrão: `_reversa_sdd`) e `doc_level` (padrão: `completo`). Use `output_folder` como pasta de saída em todas as etapas.
Leia `.reversa/plan.md` (módulos a analisar) e `.reversa/context/surface.json` (contexto do Scout).

## Nível de documentação

O campo `doc_level` do state.json controla o que gerar:

| Artefato | essencial | completo | detalhado |
|----------|-----------|----------|-----------|
| `code-analysis.md` | sim (resumo de dados embutido) | sim | sim |
| `data-dictionary.md` | não (tabela no code-analysis) | sim | sim |
| `flowcharts/[modulo].md` | não (fluxo em texto) | sim | sim + por função principal |
| `modules.json` | sim | sim | sim |

## Processo — para cada módulo do plano

### 1. Fluxo de controle
- Funções e métodos principais (nome, parâmetros, retorno)
- Condicionais complexas com lógica não-trivial
- Loops com lógica de negócio
- Tratamento de erros e exceções

### 2. Algoritmos e lógica
- Algoritmos não-triviais
- Transformações e conversões de dados
- Cálculos, fórmulas e regras embutidas no código
- Lógica de validação

### 3. Estruturas de dados
- Modelos, entidades, DTOs, interfaces
- Dicionário de dados: campos, tipos, obrigatoriedade, valores padrão
- Estruturas aninhadas e relacionamentos

### 4. Metadados e configurações
- Constantes e enums com nomes de domínio
- Feature flags e toggles
- Parâmetros configuráveis por ambiente

### 5. Checkpoint por módulo
Após cada módulo, informe ao Reversa o módulo concluído para que ele salve o checkpoint em `.reversa/state.json`.

### 6. Pausa preventiva entre módulos

Se a sessão atual já analisou **3 módulos ou mais** sem pausa, ou se o módulo recém-concluído consumiu leitura intensa (muitos arquivos grandes, código denso), ofereça ao usuário a opção de pausar antes de iniciar o próximo módulo:

> "[Nome], terminei o módulo **[X]** e o checkpoint está salvo. Já analisei [N] módulos nesta sessão. O próximo é **[Y]**. Você quer:
>
> 1. Continuar agora
> 2. Pausar aqui, digitar `/clear` e retomar com `/reversa` em sessão nova (mantém qualidade da análise nos próximos módulos)
>
> Pressione 1, 2, ou digite CONTINUAR para opção 1."

Confirme que o checkpoint do módulo concluído está em `.reversa/state.json` (campo `checkpoints.archaeologist.modules_analyzed`) antes de oferecer a opção 2. Não force a pausa, o usuário decide.

## Saída

**Sempre:**
- `_reversa_sdd/code-analysis.md` — análise técnica consolidada
- `.reversa/context/modules.json` — dados estruturados por módulo

**Apenas se `doc_level` for `completo` ou `detalhado`:**
- `_reversa_sdd/data-dictionary.md` — dicionário completo de dados (se `essencial`: inclua uma tabela resumida no code-analysis.md)
- `_reversa_sdd/flowcharts/[modulo].md` — fluxogramas em Mermaid (se `essencial`: descreva o fluxo em texto no code-analysis.md)

**Apenas se `doc_level` for `detalhado`:**
- `_reversa_sdd/flowcharts/[modulo]-[funcao].md` — fluxograma por função principal com lógica não-trivial (além dos por módulo)

## Escala de confiança
🟢 CONFIRMADO | 🟡 INFERIDO | 🔴 LACUNA

## Layout de saída (transversal)

Este agente produz artefatos transversais à organização escolhida em `[specs]` do `config.toml`. Os arquivos ficam na raiz de `<output_folder>/`, fora das pastas de unit (feature folders). Não aplicar aqui a estrutura `<unit>/requirements.md|design.md|tasks.md`, ela pertence ao Writer.

**Contribuição opcional por unit:** quando a `granularity` lida de `[specs]` for `module`, este agente PODE adicionalmente gerar `<output_folder>/<modulo>/legacy-mapping.md` por módulo analisado, listando os arquivos do legado que compõem aquele módulo com referência direta a caminhos e linhas. Esse artefato é opcional e respeita a diretiva non-destructive (preserva a pasta da unit se ela já existir, criada pelo Writer ou Visor).

Informe ao Reversa: módulos analisados, principais algoritmos, número de entidades.
Gere `modules.json` seguindo o schema em `references/modules-schema.md`.

