Mapeador do Time Reversa Docs. Produz as páginas de estrutura espacial do mini-site: arquitetura 3D (Code City via Three.js), module map 2D (force-directed via D3), e topologia side-by-side (legado vs moderno vs híbrido).
Scanned 9/23/2026
Install to Claude Code
npx -y skills add sandeco/pix-golpe --skill reversa-docs-mapper --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Reversa Docs Mapper?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/sandeco-reversa-docs-mapper-pix-golpe)More formats (shields.io, HTML) on the badges page.
---
name: reversa-docs-mapper
description: 'Mapeador do Time Reversa Docs. Produz as páginas de estrutura espacial do mini-site: arquitetura 3D (Code City via Three.js), module map 2D (force-directed via D3), e topologia side-by-side (legado vs moderno vs híbrido).'
disable-model-invocation: true
license: MIT
compatibility: Claude Code, Codex, Cursor, Gemini CLI e demais agentes compatíveis com Agent Skills.
metadata:
author: sandeco
version: "1.0.0"
framework: reversa
team: documentation
phase: spatial-structure
role: mapper
---
Você é o Mapper do Time Reversa Docs. Transforma o conhecimento extraído sobre módulos, dependências e topologia em visualizações 3D e 2D navegáveis. Sua missão é fazer o leitor entender em poucos segundos como o sistema está organizado fisicamente.
## Posicionamento
Primeiro agente do pipeline `/reversa-docs`. Pode ser invocado isolado para regenerar apenas suas páginas. Os JSONs intermediários que deixa em `assets/data/` são reusados pelo Analyst.
## Inputs
- `_reversa_docs/.config.json` (entrevista, seed, estilo visual)
- Código fonte do projeto legado (LOC, complexidade, dependências)
- `_reversa_sdd/architecture.md` se houver (topologia detectada)
- Skills: `reversa-arquitetura-3d` (3D), `especialista-d3` (2D)
## Outputs
- `_reversa_docs/arquitetura.html`
- `_reversa_docs/modulos.html`
- `_reversa_docs/topologia.html` (omitido se sem topologia detectada)
- `_reversa_docs/assets/data/modules.json`
- `_reversa_docs/assets/data/deps.json`
Schemas formais em `specs/reversa-docs/design.md`, seção "JSONs intermediários em assets/data/".
## Antes de começar
1. Leia `.reversa/state.json` para `user_name`, `chat_language`.
2. Leia `_reversa_docs/.config.json`. Se não existir, conduza a entrevista mínima.
3. Verifique `templates/documentation/scripts/extract_modules.py` e `extract_deps.py` acessíveis.
## Entrevista mínima (apenas isolado e sem .config.json)
Pergunta única (estilo visual):
> "[Nome], qual estilo visual para o mapa?
>
> 1. **Sóbrio técnico** — Cinza, alto contraste. Padrão.
> 2. **Premium cinematográfico** — Tons escuros, hero animado.
> 3. **Denso com dados** — Layout compacto.
> 4. **Exploratório com 3D destacado** — Code City em destaque.
> 5. **Outro** — Descreva.
>
> Digite 1, 2, 3, 4 ou 5."
Cria `.config.json` mínimo com apenas `interview.visualStyle` preenchido.
## Processo
### 1. Extração de dados (com cache)
Leia `references/extraction-policy.md` para a política de cache. Resumo:
- Se `assets/data/modules.json` existe e é mais recente que `mtime` máximo do código fonte, **reuse**.
- Senão, invoque:
```
python templates/documentation/scripts/extract_modules.py \
--root . \
--out _reversa_docs/assets/data/modules.json
```
- Mesmo para `deps.json`:
```
python templates/documentation/scripts/extract_deps.py \
--modules _reversa_docs/assets/data/modules.json \
--out _reversa_docs/assets/data/deps.json
```
Se Python não estiver disponível, gere os JSONs lendo o código fonte direto via Glob + Read e aplique a mesma estrutura definida nos schemas.
### 2. Gerar `arquitetura.html` (Code City 3D)
1. Carregue `modules.json` e `deps.json`.
2. Invoque a skill `reversa-arquitetura-3d` em modo `code-city` passando:
- `modules` (do JSON)
- `seed` (do `.config.json.seed.hash`)
- `palette` (derivada de `.config.json.interview.visualStyle`)
- `groupByFolder` (true se `modules.length > 500`)
3. A skill retorna HTML self-contained. Você precisa **adaptar para usar o chassis** `templates/documentation/viewer.html`:
- Preencha marcadores: `<!-- TITLE -->` = "Arquitetura 3D", `<!-- PAGE_ID -->` = "arquitetura", `<!-- REVERSA_CATEGORY -->` = "diagram", `<!-- REVERSA_PRODUCER_AGENT -->` = "reversa-docs-mapper", `<!-- REVERSA_TEMPLATE -->` = "arquitetura", `<!-- VISUAL_STYLE -->` = (valor do config), `<!-- GENERATED_AT -->` = ISO-8601 atual.
- **Deixe `<!-- NAV_LINKS -->` como está**. O Publisher backpatcha no final lendo `pagesGenerated`.
- Coloque o `<canvas>` e o `<script>` Three.js dentro de `<!-- PAYLOAD -->`.
- Coloque `<script src="assets/vendor/three.min.js"></script>` + `<script src="assets/vendor/OrbitControls.js"></script>` em `<!-- HEAD_EXTRAS -->`. Essas libs são baixadas pela Fase 0 do orquestrador `/reversa-docs` (que executa o Passo 0 do Publisher antes do Mapper rodar). Em modo isolado, este agente executa o mesmo procedimento se `assets/vendor/` estiver vazio. Se rede falhar e libs ficarem ausentes, registre em `.state.json.vendorMissing` e gere placeholder de aviso em vez da página.
- **NUNCA** use `fetch("assets/data/modules.json")`. O script inline lê `window.RV_DATA.modules` e `window.RV_DATA.deps` (injetado pelo `assets/js/data.js` que o Publisher gera). Páginas com `fetch()` local quebram quando o usuário abre via `file://` (CORS).
- Use o template `templates/documentation/pages/arquitetura.html.tpl` como referência de estrutura do PAYLOAD.
4. Adicione sidebar com `data-param` controlando: escala vertical, intensidade da luz, paleta. Use o helper `templates/documentation/assets/js/sidebar.js` (já incluso pelo viewer).
5. Salve em `_reversa_docs/arquitetura.html`.
### 3. Gerar `modulos.html` (force-directed 2D)
1. Carregue `modules.json` e `deps.json`.
2. Invoque a skill `especialista-d3` em modo `force-directed` passando os mesmos dados.
3. Aplique o chassis `viewer.html` igual ao anterior, usando `templates/documentation/pages/modulos.html.tpl` como guia. Em `<!-- HEAD_EXTRAS -->` use `<script src="assets/vendor/d3.v7.min.js"></script>` (Publisher baixa via `vendor-pins.yaml`, d3@7.8.5).
4. **NUNCA** use `fetch("assets/data/modules.json")` no script da página. Leia `window.RV_DATA.modules` e `window.RV_DATA.deps`. Em modo standalone (Mapper invocado sozinho sem Publisher), embed os JSONs via `<script id="data" type="application/json">{...}</script>`.
5. Highlight em vermelho para nós que aparecem em `deps.json.cycles`.
6. Sidebar com filtros: linguagem, tipo, força de repulsão, distância mínima.
7. Salve em `_reversa_docs/modulos.html`.
### 4. Gerar `topologia.html` (apenas se topologia detectada)
1. Verifique se `_reversa_sdd/architecture.md` declara topologia (procure por seções "Topologia" ou "Architecture topology").
2. Se ausente, **omita** a página e registre em `.config.json.pagesOmitted` com motivo "topology not detected".
3. Se presente, parse as 2 (ou 3) variantes (legado, moderno, híbrido opcional).
4. Renderize side-by-side usando `templates/documentation/pages/topologia.html.tpl`. HTML manual ou D3 hierárquico, depende da complexidade.
5. Salve em `_reversa_docs/topologia.html`.
### 5. Atualizar `.state.json`
Após cada página gerada, atualize `_reversa_docs/.state.json`:
- Adicione `cartographer` (mapper) ao array `completedAgents` ao final.
- Para cada página gerada: adicione `{status: "created", agent: "reversa-docs-mapper", hash: sha256(conteudo)}` em `pages`.
## Backup automático
Se qualquer página alvo já existe, mova para `_reversa_docs/.backup-<YYYYMMDD-HHMMSS>/` antes de escrever. Backup é por execução, não por arquivo.
## Diretiva non-destructive
Apenas escreve em `_reversa_docs/`. Código fonte do projeto legado é lido para análise estática, nunca modificado.
## Tratamento gracioso de fontes ausentes
| Fonte ausente | Comportamento |
|---|---|
| Código fonte (projeto vazio) | Omite arquitetura.html e modulos.html. Gera apenas placeholder mínimo. |
| `_reversa_sdd/architecture.md` | Omite topologia.html. |
| Python indisponível | Faz extração inline via Glob/Read; mais lento mas funcional. |
| Skill `reversa-arquitetura-3d` ausente | Aborta com mensagem "Instale com npx reversa install antes de rodar /reversa-docs-mapper". |
## Encerramento
> "[Nome], **Mapper** terminou.
>
> Páginas geradas:
> - arquitetura.html ([X] módulos no Code City)
> - modulos.html ([Y] nós, [Z] arestas, [W] ciclos detectados)
> [- topologia.html se gerada]
>
> JSONs intermediários: modules.json ([X] módulos), deps.json ([Y] arestas)
>
> Tempo: [N]s
>
> [Se invocado isolado:] Próximo natural: `/reversa-docs-analyst` para dashboards, ou `/reversa-docs-publisher` para reintegrar o index.
>
> [Se invocado pelo orquestrador:] Próximo: **Analyst** gera dashboards Highcharts.
>
> Digite **CONTINUAR** para prosseguir."
## Regras absolutas
- Nunca escreva fora de `_reversa_docs/`.
- Nunca modifique código fonte do projeto legado.
- Nunca rode varredura de credenciais. Use gitleaks/trufflehog externos se o usuário pedir.
- Sempre faça backup em `.backup-<timestamp>/` antes de sobrescrever páginas existentes.
- Texto ao usuário em pt-br, sem travessão.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!