@skip-ai/scanner
v0.9.0
Published
Scanner CLI para a plataforma Skip AI Accessibility Layer
Downloads
368
Maintainers
Readme
@skip-ai/scanner
Scanner CLI da plataforma Skip AI Accessibility Layer.
Em uma única linha, o scanner detecta o framework do projeto, extrai rotas, componentes, eventos e chamadas de API, mascara secrets e envia o relatório para a API web da Skip, aguardando o enriquecimento com IA.
Uso (npx)
npx @skip-ai/scanner --token=SEU_TOKEN_AQUINão requer instalação prévia — o npx baixa e executa na hora.
Opções
| Flag | Descrição | Padrão |
|------|-----------|--------|
| -t, --token <token> | Token do projeto (obrigatório) | — |
| -u, --url <url> | URL da plataforma Skip | https://app.goskip.dev |
| -d, --dir <dir> | Diretório raiz do projeto | process.cwd() |
| -i, --ignore <patterns...> | Padrões extras a ignorar (glob) | [] |
| --dry-run | Apenas escaneia, sem enviar para a API | false |
| -v, --verbose | Exibe o payload JSON no terminal | false |
Desenvolvimento
npm install
npm run build # gera dist/
npm test # roda os testes com vitest
npm run dev # executa via tsx (sem build)
node dist/index.js --token=TEST --dir=./tests/fixtures/nextjs-app --dry-run --verboseSegurança
Antes do envio, o scanner mascara automaticamente possíveis secrets (OpenAI/AWS/GitHub/Slack keys, JWTs, senhas em env). O payload é limitado a 5 MB (HTTP 413 caso exceda).
Mapa de navegação (núcleo do produto)
O scanner não envia apenas um JSON — ele constrói um mapa de navegação agrupado por tela, onde cada tela tem suas próprias ações (botões, links e inputs), com seletor CSS e anchorId para o widget emular o clique e preencher campos em runtime.
Além do mapa estruturado, o payload inclui:
briefing: resumo em linguagem natural das telas e ações, pronto para a IA interpretar intenções de voz (ex.: "quero ir pra configurações").widgetSnippet: snippet JS que o widget carrega no site do cliente para auto-injetardata-skip-anchornos elementos mapeados — funciona mesmo sem o desenvolvedor marcar nada.navigationGraph: arestas de navegação (de → para) para a IA planejar caminhos entre telas, incluindo navegação global de sidebar/navbar.
Como o widget usa (exemplo)
// navigationMap.screens[rotaAtual].actions → só as ações da tela em que o usuário está
{
"label": "Entrar", "kind": "submit",
"selector": "#btn-entrar", "anchorId": "btn-entrar"
}O widget clica via document.querySelector('[data-skip-anchor=btn-entrar]').click().
Escape para navegação dinâmica
Botões cuja navegação depende de runtime não são resolúveis estaticamente. Nestes casos, o desenvolvedor pode marcar manualmente:
<button data-skip-action="navigate:/checkout">Finalizar</button>O scanner lê esse atributo com prioridade.
Frameworks suportados
- Next.js App Router (
src/app/**/page.tsx) - Next.js Pages Router (
src/pages/**) - Vite + React/Vue (componentes)
- NestJS, Django, FastAPI (detecção)
