
Ferramenta CLI baseada em Go que verifica bases de código quanto à prontidão para lançamento, detectando configuração ausente, problemas de higiene de segurança, vazamentos de segredos e lacunas de integração antes da implantação em produção.
Preflight.sh é uma ferramenta de linha de comando que examina seu código em busca de prontidão para lançamento. Identifica configurações ausentes, problemas de integração, preocupações de segurança, lacunas de metadados de SEO e outros erros comuns antes de você fazer o deploy em produção.
Não se passe por constrangido em produção. Basta executar o comando.
brew install preflightsh/preflight/preflight
npm install -g @preflightsh/preflight
go install github.com/preflightsh/preflight@latest
docker pull ghcr.io/preflightsh/preflight
curl -sSL https://preflight.sh/install.sh | sh
Baixe a versão mais recente em GitHub Releases.
# Initialize in your project directory
cd your-project
preflight init
# Run all checks
preflight scan
# Scan a specific directory
preflight scan /path/to/project
# Run with verbose output (shows which files matched each check)
preflight scan --verbose
preflight scan -v # short form
# Run in CI mode with JSON output
preflight scan --ci --format json
# Run only specific checks, or skip some, for fast iteration
# (one-off; unlike `preflight ignore` it doesn't change preflight.yml)
preflight scan --only seoMeta,ogTwitter
preflight scan --skip vulnerability,secrets
# Silence a check
preflight ignore sitemap
# Unsilence a check
preflight unignore sitemap
# List all check IDs
preflight checks
Este repositório inclui uma skill de agente compatível com skills.sh em skills/preflight/SKILL.md. Ela oferece aos agentes de codificação um fluxo de trabalho Preflight repetível: inspecionar preflight.yml, executar varreduras seguras para CI, triar descobertas, evitar ignores inseguros, reexecutar a validação e relatar o risco residual de lançamento.
Liste a skill deste repositório:
# With Bun
bunx --yes skills add preflightsh/preflight --list
# Or with npm
npx --yes skills add preflightsh/preflight --list
Instale apenas a skill Preflight:
# With Bun
bunx --yes skills add preflightsh/preflight --skill preflight
# Or with npm
npx --yes skills add preflightsh/preflight --skill preflight
O Preflight é totalmente utilizável pela linha de comando sem conta. O dashboard opcional em app.preflight.sh adiciona um histórico hospedado de suas varreduras e sugestões de correção geradas por IA para cada descoberta. Seu código nunca sai da sua máquina: a varredura é executada localmente, e apenas um resumo editado dos resultados (IDs de verificação, status e mensagens, nunca valores secretos ou conteúdos de arquivos) é enviado quando você publica.
Crie uma conta gratuita e conecte a CLI:
preflight auth login # opens your browser to authorize this CLI
preflight auth status # show who you're logged in as
preflight auth logout # remove stored credentials
Publique uma varredura no seu dashboard com --publish. Ele imprime um link para visualizar a execução. A publicação é de melhor esforço: se você estiver offline ou não estiver conectado, a varredura ainda será executada e encerrada normalmente.
preflight scan --publish
No dashboard, você obtém o detalhamento de passou/avisou/falhou de cada execução, a lista completa de descobertas e um histórico por projeto para que possa ver o que mudou entre deploys.
Você também pode ler esse histórico pelo terminal com preflight history:
preflight history # recent runs across your projects
preflight history --here # only the current project's runs
preflight history <run-id> # one run's full check results
preflight history --here --format json # machine-readable, for agents
Requer preflight auth login. --here associa execuções ao repositório atual pelo git remote, a mesma chave usada na publicação.
Abra qualquer verificação falha ou com aviso em uma execução publicada para gerar uma correção passo a passo adaptada à sua stack detectada, com comandos e código prontos para copiar.
O Preflight detecta e valida automaticamente a configuração destes serviços:
Pagamentos
Rastreamento de Erros e Monitoramento
Email e Newsletters
Analytics
Autenticação
Chat
Notificações
Infraestrutura
Armazenamento e CDN
Busca
SEO
IA / LLMs
O Preflight usa um arquivo preflight.yml na raiz do seu projeto:
projectName: my-app
stack: rails # rails, next, react, vite, laravel, etc.
urls:
staging: "https://staging.example.com"
production: "https://example.com"
services:
stripe:
declared: true
sentry:
declared: true
checks:
envParity:
enabled: true
envFile: ".env"
exampleFile: ".env.example"
healthEndpoint:
enabled: true
path: "/health" # optional - auto-detects common paths if not set
stripeWebhook:
enabled: true
url: "https://api.example.com/webhooks/stripe"
seoMeta:
enabled: true
mainLayout: "app/views/layouts/application.html.erb"
security:
enabled: true
secrets:
enabled: true
# Per-file allowlist for the secrets scan. Use this to suppress an
# individual finding (e.g. a referrer-restricted public key) without
# disabling the whole check.
allowlist:
- path: web/js/golden-hour.js
fingerprint: "sha256:<hex>" # recommended — pins to the exact secret
reason: "HTTP-referrer-restricted Google Timezone key"
- path: "web/tools/**/*.php" # doublestar globs are supported
indexNow:
enabled: true
key: "your32characterhexkeyhere00000"
emailAuth:
enabled: true # opt-in, checks SPF/DMARC on production domain
humansTxt:
enabled: false # opt-in, credits the team
license:
enabled: false # opt-in, for open source projects
# Silence specific checks or services by ID
ignore:
- sitemap
- llmsTxt
- google_analytics
Silencie verificações ou serviços específicos usando preflight ignore <id>:
preflight ignore sitemap # Ignore sitemap check
preflight ignore sentry # Ignore Sentry service validation
preflight unignore sitemap # Re-enable sitemap check
preflight checks # List all ignorable IDs
Prefira permitir uma descoberta individual em vez de silenciar toda a
verificação secrets. Adicione exceções pontuais pela linha de comando:
preflight ignore secrets web/js/golden-hour.js
Isso adiciona uma entrada de caminho sob checks.secrets.allowlist no seu
preflight.yml. O campo path é um glob doublestar
(** corresponde a diretórios) resolvido em relação ao caminho do arquivo
relativo ao projeto.
Fixe a impressão digital (fingerprint). Uma allowlist apenas com caminho
aceita silenciosamente qualquer segredo futuro colocado nesse arquivo. Edite
a entrada e adicione fingerprint: "sha256:<hex>" — o SHA-256 do valor do
segredo detectado. Agora, se a chave for rotacionada ou um segredo diferente
aparecer no mesmo arquivo, o preflight volta a alertar.
As descobertas são correspondidas por caminho + fingerprint, não por arquivo inteiro. Uma fingerprint permitida em um arquivo não suprime outros segredos em outras linhas do mesmo arquivo.
SEO e Social:
seoMeta, canonical, structured_data, indexNow (opt-in), ogTwitter, viewport, lang
Segurança e Infraestrutura:
securityHeaders, ssl, www_redirect, email_auth (opt-in), secrets
Ambiente e Saúde:
envParity, healthEndpoint
Qualidade de Código e Desempenho:
vulnerability, debug_statements, error_pages, image_optimization
Jurídico e Conformidade:
legal_pages
Arquivos Padrão da Web:
favicon, robotsTxt, sitemap, llmsTxt, adsTxt (opt-in), humansTxt (opt-in), license (opt-in)
Todos os serviços têm verificações de validação que confirmam a integração correta (variáveis de ambiente, padrões de SDK, arquivos de configuração):
Pagamentos: stripe, paypal, braintree, paddle, lemonsqueezy
Rastreamento de Erros: sentry, bugsnag, rollbar, honeybadger, datadog, newrelic, logrocket
Email Transacional: postmark, sendgrid, mailgun, aws_ses, resend
Email Marketing: mailchimp, convertkit, beehiiv, aweber, activecampaign, campaignmonitor, drip, klaviyo, buttondown
Analytics: plausible, fathom, google_analytics, fullres, datafast, posthog, mixpanel, amplitude, segment, hotjar
Autenticação: auth0, clerk, workos, firebase, supabase
Comunicação: twilio, slack, discord, intercom, crisp
Infraestrutura: redis, sidekiq, rabbitmq, elasticsearch, convex
Armazenamento e CDN: aws_s3, cloudinary, cloudflare
Busca: algolia
IA: openai, anthropic, google_ai, mistral, cohere, replicate, huggingface, grok, perplexity, together_ai
SEO: indexNow
Consentimento de Cookies: cookieconsent, cookiebot, onetrust, termly, cookieyes, iubenda
| Código | Significado |
|---|---|
| 0 | Todas as verificações passaram |
| 1 | Apenas avisos |
| 2 |
Os códigos 1 e 2 significam que a varredura foi executada e relatou algo. O código 64 significa que ela nunca chegou lá, então o CI consegue distinguir "este projeto tem problemas" de "esta invocação estava errada".
Auto-completar por tabulação para comandos, flags e IDs de verificação (incluindo valores de --only e --skip):
# bash (add to ~/.bashrc)
source <(preflight completion bash)
# zsh (add to ~/.zshrc)
source <(preflight completion zsh)
# fish
preflight completion fish | source
A saída também respeita a variável de ambiente NO_COLOR.
Frameworks de Backend
Frameworks de Frontend
CMS Tradicionais
Geradores de Sites Estáticos
CMS Headless
Outros
# GitHub Actions example (curl)
- name: Run Preflight
run: |
curl -sSL https://preflight.sh/install.sh | sh
preflight scan --ci --format json
# GitHub Actions example (Docker)
- name: Run Preflight
run: docker run -v ${{ github.workspace }}:/app ghcr.io/preflightsh/preflight scan --ci --format json
MIT
| Verificação | Descrição |
|---|
| Paridade de ENV | Compara .env e .env.example em busca de variáveis ausentes |
| Endpoint de Saúde | Verifica se o site está acessível; detecta automaticamente /health, /healthz, /api/health ou usa a raiz como fallback |
| Varredura de Vulnerabilidades | Verifica vulnerabilidades de dependências (bundle audit, npm audit, etc.) |
| Metadados de SEO | Verifica title, description e tags Open Graph |
| OG e Twitter Cards | Valida og:image, twitter:card e metadados de compartilhamento social |
| URL Canônica | Verifica se a tag de link canônico está presente |
| Viewport | Verifica a meta tag viewport adequada para mobile |
| Atributo Lang | Valida o atributo html lang para acessibilidade |
| Dados Estruturados | Verifica a marcação Schema.org JSON-LD |
| Cabeçalhos de Segurança | Valida HSTS, CSP, X-Content-Type-Options em produção e staging |
| Certificado SSL | Verifica a validade do SSL e alerta antes da expiração |
| Redirecionamento WWW | Verifica o redirecionamento www/não-www para a URL canônica |
| Autenticação de Email | Verifica registros DNS SPF/DMARC para entregabilidade de email (opt-in) |
| Varredura de Segredos | Encontra chaves de API e credenciais vazadas no código |
| Declarações de Depuração | Detecta console.log, var_dump, debugger deixados no código |
| Páginas de Erro | Verifica páginas de erro 404/500 personalizadas |
| Otimização de Imagens | Encontra imagens grandes (>500KB) que prejudicam o tempo de carregamento |
| Páginas Legais | Verifica páginas de política de privacidade e termos de serviço |
| Consentimento de Cookies | Detecta solução de consentimento de cookies (conformidade com GDPR/CCPA) |
| Favicon e Ícones | Verifica favicon, apple-touch-icon (.png, .webp, .svg) e web manifest |
| robots.txt | Verifica se robots.txt existe e tem conteúdo |
| sitemap.xml | Verifica a presença do sitemap ou do gerador |
| llms.txt | Verifica o arquivo de orientação para rastreadores de LLM |
| ads.txt | Valida ads.txt para sites com suporte a anúncios (opt-in) |
| humans.txt | Verifica humans.txt para creditar a equipe (opt-in) |
| IndexNow | Verifica o arquivo de chave IndexNow para indexação de busca mais rápida (opt-in) |
| LICENSE | Verifica o arquivo de licença (opt-in, para projetos de código aberto) |
| Erros encontrados |
| 64 | O Preflight não pôde ser executado (caminho inválido, config ilegível, ID de verificação desconhecido) |
| 130 | Varredura cancelada (Ctrl-C / SIGTERM) |