
Strumento CLI basato su Go che scansiona i codebase per verificare la prontezza al lancio, rilevando configurazioni mancanti, problemi di igiene della sicurezza, fughe di segreti e lacune di integrazione prima del dispiegamento in produzione.
Preflight.sh è uno strumento da riga di comando che analizza il tuo codebase per verificare la prontezza al lancio. Identifica configurazioni mancanti, problemi di integrazione, problematiche di sicurezza, lacune nei metadati SEO e altri errori comuni prima che tu vada in produzione.
Non farti imbarazzare in produzione. Basta eseguire il 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
Scarica l'ultima release da 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
Questo repository include una skill per agente compatibile con skills.sh in skills/preflight/SKILL.md. Fornisce agli agenti di codifica un flusso di lavoro Preflight ripetibile: ispezionare preflight.yml, eseguire scansioni sicure per CI, classificare i risultati, evitare ignoramenti non sicuri, rieseguire la validazione e segnalare il rischio residuo di lancio.
Elenca la skill da questo repository:
# With Bun
bunx --yes skills add preflightsh/preflight --list
# Or with npm
npx --yes skills add preflightsh/preflight --list
Installa solo la skill Preflight:
# With Bun
bunx --yes skills add preflightsh/preflight --skill preflight
# Or with npm
npx --yes skills add preflightsh/preflight --skill preflight
Preflight è completamente utilizzabile dalla riga di comando senza account. La dashboard opzionale su app.preflight.sh aggiunge una cronologia ospitata delle tue scansioni e suggerimenti di correzione generati dall'AI per ogni risultato. Il tuo codice non lascia mai la tua macchina: la scansione viene eseguita localmente e solo un riepilogo oscurato dei risultati (ID dei controlli, stati e messaggi, mai valori segreti o contenuti di file) viene inviato quando pubblichi.
Crea un account gratuito, poi connetti la 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
Pubblica una scansione sulla tua dashboard con --publish. Stampa un link per visualizzare l'esecuzione. La pubblicazione è best-effort: se sei offline o non hai effettuato l'accesso, la scansione viene comunque eseguita e termina normalmente.
preflight scan --publish
Nella dashboard ottieni la ripartizione pass/warn/fail di ogni esecuzione, l'elenco completo dei risultati e una cronologia per progetto in modo da vedere cosa è cambiato tra i deploy.
Puoi anche leggere quella cronologia dal terminale con 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
Richiede preflight auth login. --here abbina le esecuzioni al repository corrente tramite il suo git remote, la stessa chiave utilizzata durante la pubblicazione.
Apri qualsiasi controllo fallito o con avviso su un'esecuzione pubblicata per generare una correzione passo-passo adattata al tuo stack rilevato, con comandi e codice pronti per essere copiati.
Preflight rileva e convalida automaticamente la configurazione per questi servizi:
Pagamenti
Monitoraggio Errori e Tracciamento
Email e Newsletter
Analytics
Autenticazione
Chat
Notifiche
Infrastruttura
Storage e CDN
Ricerca
SEO
AI / LLM
Preflight utilizza un file preflight.yml nella radice del tuo progetto:
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
Silenzia controlli o servizi specifici 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
Preferisci inserire un singolo risultato nella whitelist piuttosto che silenziare l'intero controllo secrets. Aggiungi eccezioni una tantum dalla riga di comando:
preflight ignore secrets web/js/golden-hour.js
Ciò aggiunge un'entry di percorso sotto checks.secrets.allowlist nel tuo preflight.yml. Il campo path è un glob doublestar (** corrisponde attraverso le directory) risolto rispetto al percorso del file relativo al progetto.
Fissa l'impronta digitale. Una whitelist solo per percorso accetta silenziosamente qualsiasi futuro segreto inserito in quel file. Modifica l'entry e aggiungi un fingerprint: "sha256:<hex>" — l'SHA-256 del valore secret rilevato. Ora se la chiave viene ruotata o un secret diverso appare nello stesso file, preflight riavvisa.
I risultati vengono abbinati per percorso + impronta digitale, non per intero file. Un'impronta digitale inserita nella whitelist in un file non sopprime altri secret su altre righe dello stesso file.
SEO e Social:
seoMeta, canonical, structured_data, indexNow (opt-in), ogTwitter, viewport, lang
Sicurezza e Infrastruttura:
securityHeaders, ssl, www_redirect, email_auth (opt-in), secrets
Ambiente e Salute:
envParity, healthEndpoint
Qualità del Codice e Prestazioni:
vulnerability, debug_statements, error_pages, image_optimization
Legale e Conformità:
legal_pages
File Standard Web:
favicon, robotsTxt, sitemap, llmsTxt, adsTxt (opt-in), humansTxt (opt-in), license (opt-in)
Pagamenti:
stripe, paypal, braintree, paddle, lemonsqueezy
Monitoraggio Errori:
sentry, bugsnag, rollbar, honeybadger, datadog, newrelic, logrocket
Email Transazionali:
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
Autenticazione:
auth0, clerk, workos, firebase, supabase
Comunicazione:
twilio, slack, discord, intercom, crisp
Infrastruttura:
redis, sidekiq, rabbitmq, elasticsearch, convex
Storage e CDN:
aws_s3, cloudinary, cloudflare
Ricerca:
algolia
AI:
openai, anthropic, google_ai, mistral, cohere, replicate, huggingface, grok, perplexity, together_ai
SEO:
indexNow
Consenso Cookie:
cookieconsent, cookiebot, onetrust, termly, cookieyes, iubenda
| Codice | Significato |
|---|---|
| 0 | Tutti i controlli superati |
| 1 | Solo avvisi |
| 2 |
I codici 1 e 2 significano che la scansione è stata eseguita e ha riportato qualcosa. Il codice 64 significa che non è mai arrivata a quel punto, quindi la CI può distinguere 'questo progetto ha problemi' da 'questa invocazione era sbagliata'.
Completamento tramite tab per comandi, flag e ID controllo (inclusi i valori di --only e --skip):
# bash (add to ~/.bashrc)
source <(preflight completion bash)
# zsh (add to ~/.zshrc)
source <(preflight completion zsh)
# fish
preflight completion fish | source
L'output rispetta anche la variabile d'ambiente NO_COLOR.
Framework Backend
Framework Frontend
CMS Tradizionali
Generatori di Siti Statici
CMS Headless
Altro
# 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
| Check | Description |
|---|
| ENV Parity | Confronta .env e .env.example per variabili mancanti |
| Health Endpoint | Verifica che il sito sia raggiungibile; rileva automaticamente /health, /healthz, /api/health o torna alla radice |
| Vulnerability Scan | Controlla le vulnerabilità delle dipendenze (bundle audit, npm audit, ecc.) |
| SEO Metadata | Controlla titolo, descrizione e tag Open Graph |
| OG & Twitter Cards | Valida og:image, twitter:card e metadati di condivisione social |
| Canonical URL | Verifica che il tag canonical sia presente |
| Viewport | Controlla che il meta tag viewport sia corretto per mobile |
| Lang Attribute | Valida l'attributo html lang per l'accessibilità |
| Structured Data | Controlla la presenza di markup JSON-LD Schema.org |
| Security Headers | Valida HSTS, CSP, X-Content-Type-Options sia su produzione che staging |
| SSL Certificate | Controlla la validità SSL e avvisa prima della scadenza |
| WWW Redirect | Verifica il reindirizzamento www/non-www verso l'URL canonico |
| Email Auth | Controlla i record DNS SPF/DMARC per la deliverability delle email (opt-in) |
| Secret Scanning | Trova chiavi API e credenziali trapelate nel codice |
| Debug Statements | Rileva console.log, var_dump, debugger lasciati nel codice |
| Error Pages | Controlla pagine di errore personalizzate 404/500 |
| Image Optimization | Trova immagini grandi (>500KB) che rallentano i tempi di caricamento |
| Legal Pages | Controlla la presenza di pagine privacy policy e termini di servizio |
| Cookie Consent | Rileva la soluzione di consenso ai cookie (conformità GDPR/CCPA) |
| Favicon & Icons | Controlla favicon, apple-touch-icon (.png, .webp, .svg) e web manifest |
| robots.txt | Verifica che robots.txt esista e contenga dati |
| sitemap.xml | Controlla la presenza della sitemap o del generatore |
| llms.txt | Controlla il file di guida per crawler LLM |
| ads.txt | Valida ads.txt per siti supportati da pubblicità (opt-in) |
| humans.txt | Controlla humans.txt per accreditare il team (opt-in) |
| IndexNow | Verifica il file chiave IndexNow per un'indicizzazione più rapida (opt-in) |
| LICENSE | Controlla il file di licenza (opt-in, per progetti open source) |
| Errori trovati |
| 64 | Preflight non è riuscito a eseguire (percorso errato, configurazione illeggibile, ID controllo sconosciuto) |
| 130 | Scansione annullata (Ctrl-C / SIGTERM) |