Antes de divulgar o link, deixe a IA fazer o que um auditor faria:
procurar chave exposta, banco aberto, rota sem login, e-mail que não chega e conta que pode estourar.
Uma skill para Claude, Codex, Cursor, Copilot, Gemini e outros agentes. Lê o seu código e o seu site e entrega um relatório com veredito, nota e as correções prontas para o próprio agente aplicar.
🧭 Como funciona
- Varredura. Um scanner (Python, sem instalar nada) lê o código e o histórico do git e, se você passar a URL, o site publicado. Ele procura chaves secretas, regras do banco, rotas, configurações e dependências vulneráveis.
- Revisão. O agente abre cada achado, descarta falso positivo e revisa rota a rota o que scanner nenhum resolve sozinho: quem pode ler o quê, o que entra sem validação, o que sai a mais.
- Relatório. O
check-report/RELATORIO.mdtraz o veredito (🔴 não lance · 🟡 ajuste antes · 🟢 pode lançar), a nota de segurança, a nota de prontidão e cada problema com arquivo:linha, risco e correção. - Correção. O
check-report/CORRECOES.mdé o plano para o agente: uma task por vez, com prompt pronto, critério de aceite e commit. Você diz "aplique as correções" e acompanha.
✅ O que ela checa
📋 O que cada item procura, em uma linha
| # | Segurança | O que procura |
|---|---|---|
| 01 | Esconder API Keys | chave da OpenAI, Anthropic, Stripe… no código, no .env com prefixo público (NEXT_PUBLIC_, VITE_), no next.config ou no JavaScript publicado |
| 02 | Limpar secrets do Git | .env, .pem e service account versionados, e chaves que ficaram no histórico |
| 03 | Usar apenas Public Key no DB | service role, sb_secret_, firebase-admin ou driver de banco no navegador |
| 04 | Ativar RLS | tabela sem RLS, policy using (true), regra do Firebase aberta, PocketBase/Appwrite públicos |
| 05 | Criptografia de dados | CPF, saúde, tokens de terceiros em texto puro; cartão guardado; cripto fraca |
| 06 | Auth server-side | rota, Server Action, controller ou função sem checar a sessão no servidor |
| 07 | Restringir acessos | usuário A lendo dados do B pelo id na URL, papel vindo do cliente, CORS aberto |
| 08 | Bloquear Mass Assignment | o body inteiro indo para o banco ($request->all(), data: body, @RequestBody Entity) |
| 09 | Proteger cookies | token em localStorage, cookie sem HttpOnly/Secure, CSRF desligado |
| 10 | Hash nas senhas | MD5/SHA em senha, texto puro, bcrypt fraco, senha mínima curta |
| 11 | Rate limit | login, cadastro, IA, e-mail e SMS sem limite |
| 12 | Bot protection | cadastro e formulários sem captcha, ou captcha sem verificação no servidor |
| 13 | Queries parametrizadas | SQL montado com string em JS, PHP, Python, Ruby, Java, C# e Go; NoSQL com objeto do request |
| 14 | Validação dos inputs | rota sem schema, XSS (dangerouslySetInnerHTML, v-html, {!! !!}), SSRF, path traversal |
| 15 | Evitar vazamento de conteúdo | debug ligado, stack trace na resposta, source maps, Actuator aberto, /.env público |
| 16 | Restringir uploads | sem limite de tamanho, sem checar tipo, nome original no caminho, bucket público |
| 17 | Limitar respostas de API | objeto de usuário inteiro (com hash de senha), listagem sem paginação, GraphQL sem limite |
| 18 | Security headers | CSP, HSTS, X-Frame-Options, nosniff, Referrer-Policy e Permissions-Policy |
| 19 | Forçar HTTPS | HTTP sem redirect, TLS desligado, app mobile aceitando tráfego sem HTTPS |
| 20 | Scan de dependências | npm audit, pip-audit, composer audit, osv-scanner, govulncheck; Next.js vulnerável |
| # | Prontidão | O que procura |
|---|---|---|
| P01 | Configuração de produção | variável não documentada, localhost no código, chave de teste em produção |
| P02 | Erros e logs monitorados | Sentry ou equivalente, tela de erro amigável |
| P03 | Backup e recuperação | backup automático, cópia fora do provedor, restauração testada |
| P04 | Deploy, migrations e rollback | migrations versionadas, CI, testes, caminho de volta |
| P05 | Uptime e alertas | health check, monitor externo, certificado vencendo |
| P06 | E-mail e domínio | SMTP próprio (o padrão do Supabase é só para teste), SPF, DKIM e DMARC |
| P07 | LGPD, privacidade e termos | política, termos, consentimento de cookies, exclusão de conta |
| P08 | SEO e compartilhamento | título do template ("Lovable App"), noindex esquecido, og:image, sitemap |
| P09 | Performance e experiência | imagens pesadas, JS grande, viewport, compressão, página 404 |
| P10 | Custos e limites de gasto | IA sem max_tokens, sem teto de gasto na nuvem e na API |
🚀 Instalar em 1 minuto
Escolha onde você usa IA. Todas as opções instalam a mesma skill, direto deste repositório.
Claude Code
Recomendado: ele lê o projeto inteiro, roda o scanner e já aplica as correções.
Como plugin (atualiza com um comando). Dentro do Claude Code:
/plugin marketplace add dantaspaulo/check-pre-lancamento
/plugin install check-pre-lancamento@check-pre-lancamento
Ou como skill pessoal (no terminal):
git clone https://github.com/dantaspaulo/check-pre-lancamento.git
cp -R check-pre-lancamento/skills/check-pre-lancamento ~/.claude/skills/
Depois, na pasta do projeto: /check-pre-lancamento ou "faz o check pré-lançamento". Como plugin, o comando é /check-pre-lancamento:check-pre-lancamento. Para atualizar o plugin: /plugin marketplace update check-pre-lancamento.
Claude.ai e app do Claude
Web, desktop e celular. Bom para quem não programa: você anexa o projeto e conversa.
- Em Configurações → Capacidades (Settings → Capabilities), ligue Execução de código e criação de arquivos (Code execution and file creation).
- Baixe o check-pre-lancamento.zip. Não use o botão "Download ZIP" do GitHub: ele traz o repositório inteiro, e não só a skill.
- Em Personalizar → Skills → + → Enviar uma skill (Customize → Skills → + → Upload a skill), escolha o
.zip. - Numa conversa nova, anexe o projeto zipado (ou conecte o repositório do GitHub) e peça: "faz o check pré-lançamento". Passe também a URL do site publicado.
O nome dos menus pode variar um pouco com a versão do app.
OpenAI Codex
CLI, extensão de IDE e app.
$skill-installer install https://github.com/dantaspaulo/check-pre-lancamento/tree/main/skills/check-pre-lancamento
Ou copie a pasta skills/check-pre-lancamento para ~/.agents/skills/ (no seu usuário) ou .agents/skills/ (no projeto). Para usar: $check-pre-lancamento, ou peça o check. Se não aparecer, reinicie o Codex.
Cursor, Copilot, Gemini e outros
Um comando para qualquer agente (Node 22.20+). Ele pergunta em quais ferramentas instalar:
npx skills add dantaspaulo/check-pre-lancamento
Ou copie a pasta skills/check-pre-lancamento para o lugar que a sua ferramenta lê:
| Ferramenta | No projeto | No seu usuário | Para chamar |
|---|---|---|---|
| Cursor | .cursor/skills/ ou .agents/skills/ |
~/.cursor/skills/ (também lê ~/.claude/skills/) |
/check-pre-lancamento |
| GitHub Copilot (VS Code e CLI) | .github/skills/ |
~/.copilot/skills/ |
/check-pre-lancamento |
| Gemini CLI | .gemini/skills/ ou .agents/skills/ |
~/.gemini/skills/ |
automático, ou /skills list |
| Antigravity | .agents/skills/ |
~/.gemini/config/skills/ |
/check-pre-lancamento |
| Windsurf | .windsurf/skills/ ou .agents/skills/ |
~/.codeium/windsurf/skills/ |
@check-pre-lancamento |
| OpenCode | .opencode/skills/ ou .agents/skills/ |
~/.config/opencode/skills/ |
automático |
| Kiro | .kiro/skills/ |
~/.kiro/skills/ |
automático |
| Amp / Goose | .agents/skills/ |
~/.agents/skills/ |
automático |
💡 .agents/skills/ é a pasta universal: Codex, Cursor, Copilot, Gemini, Antigravity, Windsurf, OpenCode, Amp e Goose leem dela.
Instaladores de cada ferramenta
# GitHub Copilot (gh 2.90 ou mais novo)
gh skill install dantaspaulo/check-pre-lancamento check-pre-lancamento
# Gemini CLI
gemini skills install https://github.com/dantaspaulo/check-pre-lancamento.git --path skills/check-pre-lancamento
# npx skills, escolhendo as ferramentas e instalando no seu usuário
npx skills add dantaspaulo/check-pre-lancamento -g -a claude-code -a codex -a cursor -a github-copilot
Lovable, Bolt e Replit
Essas plataformas importam skills, mas não rodam os scripts Python. A skill tem um modo manual: o agente segue as mesmas checagens lendo o código.
- Lovable: Configurações do workspace → Skills → Adicionar → Importar do GitHub, com o endereço
https://github.com/dantaspaulo/check-pre-lancamento/tree/main/skills/check-pre-lancamento. Ou envie o.zip. - Bolt: Configurações → Skills → Adicionar skill → Do GitHub, com o mesmo endereço.
- Replit: no Agent, + → Usar uma skill → cole o endereço → Importar.
Para a varredura completa (histórico do git, sondagem do banco, auditoria de dependências), sincronize o projeto com o GitHub e rode o check no Claude Code ou no Codex.
Sem agente nenhum
O scanner roda sozinho, inclusive no CI:
python3 skills/check-pre-lancamento/scripts/scan.py /caminho/do/projeto
python3 skills/check-pre-lancamento/scripts/check_url.py https://meuapp.com.br
Python 3.8+ só com a biblioteca padrão. No Windows, use python ou py -3 no lugar de python3. Git, npm, pip-audit, composer, osv-scanner e govulncheck são usados se existirem.
💬 Como usar
| Você diz | O que acontece |
|---|---|
"faz o check pré-lançamento" ou /check-pre-lancamento |
as 20 checagens + os 10 itens de prontidão no projeto aberto |
| "checa o projeto e o site https://meuapp.com.br" | também headers, HTTPS, cookies, CORS, /.env exposto, JavaScript público, SEO e DNS de e-mail |
| "pode testar se o banco está aberto, o app é meu" | conta quantas linhas do Supabase/Firebase um visitante lê sem login (só leitura) |
| "checa só o RLS" · "só os segredos" · "só a prontidão" | só o que você pediu |
| "ignora a pasta arquivos-locais" | tira a pasta das regras de código (o scanner já ignora o .gitignore, docs/ e examples/) |
| "aplique as correções do CORRECOES.md" | o agente corrige uma por vez, com build, teste e commit por task |
| "roda o PA04" | o agente segue um dos prompts prontos (o PA04 revisa as permissões do Supabase) |
O resultado fica em check-report/:
🔴 Veredito: NÃO LANCE AINDA
Nota de segurança: 49/100 · Nota de prontidão: 60/100
| # | Item | Status | Severidade | O que encontrei |
|-----|----------------------|------------|------------|----------------------------------------------------------|
| 01 | Esconder API Keys | ❌ FALHA | 🔴 CRÍTICO | chave da OpenAI no bundle via VITE_OPENAI_API_KEY |
| 04 | Ativar RLS | ❌ FALHA | 🔴 CRÍTICO | agendamentos sem RLS: 1.204 linhas visíveis sem login |
| 06 | Auth server-side | ⚠️ ATENÇÃO | 🟠 ALTO | Edge Function lembrete com verify_jwt = false |
| P06 | E-mail e domínio | ❌ FALHA | 🟠 ALTO | confirmação pelo SMTP padrão do Supabase; sem DMARC |
📄 Veja o exemplo completo (app fictício feito na Lovable): RELATORIO.md · CORRECOES.md
No seu projeto, o relatório fica fora do git (.git/info/exclude) porque mapeia as falhas do app.
🪄 Depois da análise: prompts prontos
O relatório termina com os prompts que combinam com o que foi achado. Copie, cole no seu agente aberto na pasta do projeto, e ele faz o próximo passo do jeito seguro. A lista completa está em PROMPTS.md:
| Para quê | |
|---|---|
| PA01 | resolver hoje só o que impede o lançamento |
| PA02 | trocar as chaves que vazaram, sem nunca mostrar a chave no chat |
| PA03 | aplicar o CORRECOES.md na ordem, uma task por vez, com prova |
| PA04 | revisar as permissões do Supabase tabela por tabela, sem reabrir funções internas |
| PA05 | deixar uma regra fixa para a IA não reabrir o banco na próxima tabela |
| PA06 | provar com teste que um usuário não vê dado de outro |
| PA07 | fechar o cadastro: captcha, e-mail confirmado e senha forte |
| PA08 | escrever Termos de Uso e Política de Privacidade a partir do que o app coleta |
| PA09 a PA12 | headers sem quebrar o site, dependências, backup testado, erro e queda com alerta |
| PA13 a PA15 | checklist do dia do lançamento, conferir de novo comparando, explicar para quem não é técnico |
| PA16 a PA21 | engenharia depois do lançamento: pedido duplicado, webhook repetido, regra que o navegador decide, testes de integração, dividir arquivo grande e um raio-x só de leitura |
