site-endpoint-scan
Skill0 starsChanged 4 months agoMITView on GitHub
Varre TODOS os endpoints expostos de um site analisando o tráfego de rede real (XHR/fetch/ WebSocket) com Playwright e PARSEANDO os bundles JavaScript — você navega/loga uma vez, a skill registra o network e devolve um inventário: endpoints.json (catálogo estruturado: método, URL-template, params, auth, content-type, protocolo) + REPORT.md (tabela legível). Distingue endpoint OBSERVADO (trafegou de fato) de REFERENCIADO (string achada no JS, ainda não chamada). É read-only e para no inventário — NÃO gera CLI (isso é a site-to-cli). Use quando o usuário quiser: "varrer/listar todos os endpoints expostos de um site", "mapear a superfície de API", "descobrir os endpoints do backend analisando o network", "achar endpoints escondidos no JS". Gatilhos: /site-endpoint-scan, "varre os endpoints desse site", "mapeia os endpoints pela rede", "quais endpoints esse site expõe", "scan de endpoints", "lista as rotas de API que o site usa".
In this repository17 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- agent-skills-and-subagentsSkill
- anthropic-api-handbookSkill
- app-to-cliSkill
- claude-code-handbookSkill
- docs-to-skillSkill
- install-skillSkill
- mcp-handbookSkill
- session-handoffSkill
- site-to-cliSkill
- skill-evalSkill
- skilljar-transcriptsSkill
- skill-lintSkill
- skill-prospectorSkill
- skill-scoutSkill
- ui-reskinSkill
- video-curriculumSkill
The file
Files
site-endpoint-scan — inventário de endpoints via análise de network
Descobre a superfície de endpoints de um site observando o tráfego de rede real (você navega/loga, a skill registra cada XHR/fetch/WebSocket) e parseando os bundles JS atrás de rotas referenciadas no código. Saída = inventário read-only, não um pacote executável.
Guardrails (não negociáveis). Só rode contra sites onde o usuário tem conta e autorização, com as credenciais dele. Respeite ToS/
robots.txte não faça mass-scraping nem mire contas de terceiros. A sessão/cookies ficam locais em<out>/.session/e nunca são commitados. Headers de credencial (Authorization/Cookie/API-key) nunca entram no inventário — só registramos que existem. Se o alvo proíbe automação no ToS, avise o usuário e pare.
Irmã da site-to-cli
Esta skill é a versão leve e read-only: para no catálogo/relatório. Se o usuário quiser
gerar uma CLI/OpenAPI a partir do site, é a site-to-cli — não reimplemente aqui.
O fluxo (3 passos)
[Capturar network] → [Consolidar inventário] → [Relatório]
(Playwright/HAR) (endpoints.json) (REPORT.md)Tudo passa pelo orquestrador scripts/run.ps1 (resolve Node, garante o Playwright na 1ª captura
reusando os browsers já instalados). Saídas vão para um run dir <out> (default ./<slug>-scan/).
Antes de tudo: pwsh -NoProfile -File scripts/run.ps1 doctor — confere Node/Playwright/browser.
Passo 1 — Capturar o tráfego
(a) Gravação dirigida por você [principal]. Abre um browser headed; você loga e usa as
funções que quer mapear. Ao fechar a janela (ou esgotar --duration), salva o network + a sessão.
pwsh -NoProfile -File scripts/run.ps1 record --url "<URL>" --out "<run>" [--duration 0] [--filter "api|graphql"] [--no-js]--duration 0 = grava até você fechar a janela. --no-js pula a coleta de bundles (sem JS-parsing).
Quanto mais funções você exercitar, mais completo o inventário — clique nas áreas que importam.
(b) Import de HAR pronto. Você já exportou um .har (DevTools → Network → Export HAR, ou Burp):
pwsh -NoProfile -File scripts/run.ps1 import-har --har "<arquivo.har>" --out "<run>"Passo 2 — Consolidar o inventário
pwsh -NoProfile -File scripts/run.ps1 analyze --out "<run>"Deduplica os requests, infere path-templates (/orders/123 → /orders/{id}), classifica por
protocolo (rest/graphql/websocket), extrai operações GraphQL, detecta o padrão de auth, e
parseia os bundles JS atrás de endpoints referenciados mas não chamados. Resultado:
<run>/endpoints.json. Contrato do arquivo: references/ENDPOINTS_SCHEMA.md.
Opcional (seu julgamento): antes do relatório, você (modelo) pode preencher o campo summary
de cada endpoint em 1 linha e revisar a coluna source — confirmar se um referenced-js é rota
real ou código morto. Não invente: marque como incerto o que não trafegou.
Passo 3 — Relatório legível
pwsh -NoProfile -File scripts/run.ps1 report --out "<run>"Gera <run>/REPORT.md: cabeçalho (base URL, auth, contagens) + tabelas por protocolo
(REST · GraphQL · WebSockets · Referenciados-em-JS), separando observado de referenciado.
Atalho
pwsh -NoProfile -File scripts/run.ps1 scan --url "<URL>" --out "<run>" # record → analyze → reportComo ler a saída
- Observado = o site chamou de fato durante a sua sessão. Alta confiança.
- Referenciado (JS) = string de endpoint encontrada no código mas não disparada. Superfície potencial (rota atrás de um fluxo/role que você não exercitou, ou código morto) — confirme.
auth: true/🔒 = o request carregava credencial (o valor nunca é gravado).- GraphQL aparece como um endpoint com a lista de operações; um
/graphql≠ N rotas REST.
Fim
A skill fica inerte no ateliê. Para usá-la num projeto: /install-skill site-endpoint-scan lá dentro.
Créditos de inspiração (MIT) nos cabeçalhos dos scripts: AUTO_REVERSE/web-api-analyzer (captura),
claude-skill-registry/reverse-engineering-api (filtro de ruído), shuvonsec/claude-bug-bounty
(parsing de endpoints em JS).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

