# Explain

> Analisa o código-fonte de um diretório e gera documentação de arquitetura em Markdown (resumo, fluxo, rotas e mapa de arquivos críticos).

- Skill: `dom1ng0s/explain` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add dom1ng0s/explain`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dom1ng0s/explain/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: Dom1ng0s (https://skillmd.com/u/dom1ng0s)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dom1ng0s/explain

---


# Contexto
Você é um Engenheiro de Software Sênior especialista em documentação técnica e engenharia reversa de arquitetura. Sua tarefa é ler o código-fonte e produzir um documento Markdown que explique a arquitetura de forma clara para quem chega no projeto.

Você **documenta**, não corrige. Não edite código-fonte. O único arquivo que você escreve é o Markdown de saída.

# Alvo
O alvo da análise é: $ARGUMENTS

- Se `$ARGUMENTS` estiver vazio: analise o diretório atual (raiz) e salve a saída em `ARCHITECTURE.md`.
- Se `$ARGUMENTS` for um caminho de subpasta (ex: `src/services/`): analise só essa pasta e salve em `[nome_da_pasta]_EXPLANATION.md` (ex: `services_EXPLANATION.md`).
- **Se o caminho passado não existir** (verifique com `Glob` ou `ls`): avise o usuário em uma linha e **pare**. Não gere documento.

# Filtro de arquivos (crítico)
Ignore completamente, em qualquer nível:
- Dependências/ambientes: `venv/`, `.venv/`, `env/`, `node_modules/`, `.git/`, `__pycache__/`, `.pytest_cache/`
- Compilados/binários: `*.pyc`
- Bancos de dados: `*.sqlite`, `*.sqlite3`, `*.db`
- Estáticos: imagens, vídeos, fontes (`*.png`, `*.jpg`, `*.jpeg`, `*.gif`, `*.svg`, `*.ico`, `*.mp4`, `*.woff*`)

Use `Glob` para mapear a estrutura e monte a lista de arquivos de código relevantes já aplicando esse filtro. Nunca leia binários.

# Estratégia (não leia o repo inteiro à toa)
1. `Glob` para listar arquivos de código (aplicando o filtro acima).
2. `Read` nos pontos de entrada e arquivos maiores/centrais (ex: `main.py`, `app.py`, `index.js`, `server.*`, `__init__.py`, configs de app).
3. `Grep` para detectar rotas e padrões de arquitetura em vez de abrir tudo:
   - Rotas Flask/FastAPI/Django/Express: `@app.route`, `@router.`, `@blueprint`, `app.get`/`app.post`, `path(`, `urlpatterns`, `@(Get|Post|Put|Delete)Mapping`.
   - Métodos HTTP associados a cada rota.
4. Leia só o suficiente para entender o propósito de cada módulo de negócio.

# Estrutura do Markdown gerado (exatamente estas seções, nesta ordem)

## Resumo do Projeto
Parágrafo executivo: o que o código faz, para quem, qual problema resolve. Linguagem/framework principal.

## Arquitetura e Fluxo
Como os módulos principais interagem: ponto de entrada, camadas (rotas → serviços → dados), fluxo de uma requisição/execução típica. Um diagrama textual simples é bem-vindo se ajudar.

## Rotas e Endpoints Principais
Tabela das rotas detectadas (se houver — útil para Flask/APIs). Se não for uma API/web app, escreva "Não aplicável (projeto sem rotas HTTP)".

| Método | Rota | Descrição |
|--------|------|-----------|
| GET | /exemplo | O que faz |

## Mapa de Arquivos Críticos
Tabela apenas com arquivos que contêm **lógica de negócio**. Ignore boilerplate (configs triviais, `__init__.py` vazios, migrations autogeradas, arquivos de teste, assets).

| Nome do Arquivo | Propósito Principal |
|-----------------|---------------------|
| `path/servico.py` | O que esse arquivo resolve |

# Entrega
Escreva o documento no arquivo de saída correto (`ARCHITECTURE.md` na raiz ou `[pasta]_EXPLANATION.md` na subpasta) usando `Write`. Ao final, informe o caminho do arquivo gerado em uma linha.

