| name | ag-10-benchmark-software |
| description | Maquina de benchmark de software. Crawl SaaS plataformas — navigate all pages, screenshot, analyze with AI, generate detailed SPEC |
| user_invocable | true |
| model | sonnet |
ag-10-benchmark-software — BENCHMARK Machine
Maquina replicavel para navegar, documentar e especificar qualquer plataforma SaaS.
Uso
/crawl-platform <nome> <url> [--max-pages N] [--depth N]
Exemplos:
/crawl-platform gupy https://app.gupy.io
/crawl-platform reportei https://app.reportei.com --max-pages 30
/crawl-platform qrcodefacil https://qrcodefacil.com --depth 2
Algoritmo
Ao receber este comando, execute o seguinte processo EXATAMENTE:
FASE 0: Setup
- Parsear argumentos:
name (1o arg), url (2o arg), flags opcionais
- Defaults:
maxPages=50, depth=3
- Criar diretorio de output:
~/Claude/projetos/vibecoding-roadmap/docs/specs/{name}/
~/Claude/projetos/vibecoding-roadmap/docs/specs/{name}/screenshots/
~/Claude/projetos/vibecoding-roadmap/docs/specs/{name}/screens/
- Ler config se existir:
~/Claude/projetos/vibecoding-roadmap/src/lib/crawler/configs/{name}.json
- Inicializar contadores:
visited=0, queue=[], pages=[]
FASE 1: Login
- Navegar para a URL fornecida:
mcp__plugin_playwright_playwright__browser_navigate({ url: "<url>" })
- Tirar screenshot da tela de login:
mcp__plugin_playwright_playwright__browser_take_screenshot({ type: "png", filename: "docs/specs/{name}/screenshots/000-login.png" })
- Pedir ao usuario: "Faca login na plataforma. Quando estiver logado, me avise."
- Aguardar resposta do usuario
- Apos confirmacao, tirar screenshot da pagina pos-login:
mcp__plugin_playwright_playwright__browser_take_screenshot({ type: "png", filename: "docs/specs/{name}/screenshots/001-home.png" })
FASE 2: Crawl (BFS)
Para cada pagina na fila (comecando pela pagina pos-login):
-
Capturar estado da pagina:
mcp__plugin_playwright_playwright__browser_snapshot()
→ Salvar snapshot (accessibility tree com refs)
-
Screenshot:
mcp__plugin_playwright_playwright__browser_take_screenshot({
type: "png",
filename: "docs/specs/{name}/screenshots/{NNN}-{slug}.png"
})
-
Extrair dados via JavaScript:
mcp__plugin_playwright_playwright__browser_evaluate({
function: "<EXTRACT_LINKS_JS from engine.ts>"
})
Repetir para: EXTRACT_FORMS_JS, EXTRACT_TABLES_JS, EXTRACT_META_JS
-
Descobrir links navegaveis:
- Filtrar: mesmo dominio, nao visitado, nao em ignorePaths
- Adicionar a fila se depth < maxDepth
-
Interagir com elementos na pagina (se habilitado):
- Clicar em tabs nao selecionadas → screenshot de cada tab
- Abrir dropdowns → screenshot do estado expandido
- NUNCA submeter formularios ou clicar em "Delete", "Remove", "Excluir"
-
Registrar PageState com todos os dados coletados
-
Navegar para proximo item da fila:
mcp__plugin_playwright_playwright__browser_navigate({ url: "<next_url>" })
Aguardar waitAfterNavigate ms
-
Reportar progresso a cada 5 paginas:
"Progresso: {visited}/{total} paginas visitadas. Ultimo: {titulo}"
-
Parar quando: fila vazia OU visited >= maxPages
FASE 3: Analise
Para cada PageState coletado:
- Ler o screenshot correspondente (Read tool no PNG)
- Analisar com AI usando o prompt de
buildAnalysisPrompt() de engine.ts
- Classificar: pageType, module, complexity
- Descrever: o que o usuario ve, acoes disponiveis, dados exibidos
- Identificar features: nome, descricao, inputs, outputs, fluxo
- Salvar analise em
docs/specs/{name}/screens/{NNN}-{slug}.md
FASE 4: Geracao de SPEC
- sitemap.md — Lista hierarquica de todas as paginas descobertas com tipo e modulo
- features.md — Inventario completo de features por modulo
- flows.md — Fluxos de usuario em formato Mermaid (usar mcp__mermaid__generate)
- data-model.md — Entidades e campos inferidos dos formularios e tabelas
- spec-completa.md — Documento consolidado com tudo acima + observacoes UX
- README.md — Resumo executivo (3-5 paragrafos)
FASE 5: Report
Exibir ao usuario:
- Total de paginas visitadas
- Total de screenshots
- Total de features identificadas
- Modulos descobertos
- Path do output:
docs/specs/{name}/
Regras Criticas
- READ-ONLY — NUNCA submeter formularios, clicar em delete, alterar dados
- Respeitar maxPages — Parar ao atingir o limite, nao ficar em loop infinito
- Deduplicar URLs — Normalizar antes de adicionar a fila
- Ignorar externos — Nao sair do dominio da plataforma
- Screenshots organizados — Numerados sequencialmente (000, 001, 002...)
- Analise detalhada — Cada campo, botao, coluna deve ser documentado
- Salvar progresso — Se interrompido, os screenshots e analises parciais ficam
- Perguntar ao usuario — Se encontrar paywall, 2FA, ou bloqueio, parar e perguntar
Output Esperado
docs/specs/{name}/
├── README.md — Resumo executivo
├── sitemap.md — Mapa completo de paginas
├── features.md — Inventario de features
├── screens/ — Analise detalhada de cada tela
│ ├── 001-home.md
│ ├── 002-dashboard.md
│ └── ...
├── screenshots/ — PNGs de cada tela
│ ├── 000-login.png
│ ├── 001-home.png
│ └── ...
├── flows.md — Fluxos Mermaid
├── data-model.md — Entidades inferidas
└── spec-completa.md — SPEC consolidada
Referencia Tecnica
- Tipos:
~/Claude/projetos/vibecoding-roadmap/src/lib/crawler/types.ts
- Engine (JS snippets, prompts):
~/Claude/projetos/vibecoding-roadmap/src/lib/crawler/engine.ts
- Configs:
~/Claude/projetos/vibecoding-roadmap/src/lib/crawler/configs/{name}.json