Zurück zu den Updates
New releaseJul 21, 2026

preflight v0.19.4

Go-basiertes CLI-Tool, das Codebasen auf Startbereitschaft scannt und fehlende Konfiguration, Sicherheitshygiene-Probleme, geheime Leaks und Integrationslücken vor der Produktionsbereitstellung erkennt.

Teilen

Preflight.sh

Agent skill on skills.sh

Preflight.sh ist ein Kommandozeilen-Tool, das Ihre Codebasis auf Startbereitschaft prüft. Es erkennt fehlende Konfiguration, Integrationsprobleme, Sicherheitsbedenken, SEO-Metadaten-Lücken und andere häufige Fehler, bevor Sie in Produktion gehen.

Blamieren Sie sich nicht in der Produktion. Führen Sie einfach den Befehl aus.

Installation

Homebrew (macOS/Linux)

brew install preflightsh/preflight/preflight

npm

npm install -g @preflightsh/preflight

Go

go install github.com/preflightsh/preflight@latest

Docker

docker pull ghcr.io/preflightsh/preflight

Shell-Skript

curl -sSL https://preflight.sh/install.sh | sh

Manueller Download

Laden Sie die neueste Version von GitHub Releases herunter.

Schnellstart

# In Ihrem Projektverzeichnis initialisieren
cd your-project
preflight init

# Alle Prüfungen ausführen
preflight scan

# Ein bestimmtes Verzeichnis scannen
preflight scan /path/to/project

# Mit ausführlicher Ausgabe ausführen (zeigt, welche Dateien zu jeder Prüfung gehören)
preflight scan --verbose
preflight scan -v  # Kurzform

# Im CI-Modus mit JSON-Ausgabe ausführen
preflight scan --ci --format json

# Nur bestimmte Prüfungen ausführen oder einige überspringen, für schnelle Iteration
# (einmalig; ändert im Gegensatz zu `preflight ignore` nicht die preflight.yml)
preflight scan --only seo_meta,og_twitter
preflight scan --skip vulnerability,secrets

# Eine Prüfung stummschalten
preflight ignore sitemap

# Stummschaltung einer Prüfung aufheben
preflight unignore sitemap

# Alle Prüfungs-IDs auflisten
preflight checks

Agent-Fähigkeit

Dieses Repository enthält eine skills.sh-kompatible Agent-Fähigkeit unter skills/preflight/SKILL.md. Sie gibt Coding-Agenten einen wiederholbaren Preflight-Workflow: preflight.yml inspizieren, CI-sichere Scans ausführen, Befunde triagieren, unsichere Ignorierungen vermeiden, Validierung erneut ausführen und das verbleibende Startrisiko melden.

Die Fähigkeit aus diesem Repository auflisten:

# Mit Bun
bunx --yes skills add preflightsh/preflight --list

# Oder mit npm
npx --yes skills add preflightsh/preflight --list

Nur die Preflight-Fähigkeit installieren:

# Mit Bun
bunx --yes skills add preflightsh/preflight --skill preflight

# Oder mit npm
npx --yes skills add preflightsh/preflight --skill preflight

Dashboard & KI-Vorschläge

Preflight ist vollständig über die Kommandozeile nutzbar, ohne Konto. Das optionale Dashboard unter app.preflight.sh fügt einen gehosteten Verlauf Ihrer Scans und KI-generierte Korrekturvorschläge für jeden Befund hinzu. Ihr Code verlässt niemals Ihren Rechner: Das Scannen läuft lokal, und nur eine geschwärzte Zusammenfassung der Ergebnisse (Prüfungs-IDs, Status und Meldungen, niemals geheime Werte oder Dateiinhalte) wird gesendet, wenn Sie veröffentlichen.

Erstellen Sie ein kostenloses Konto und verbinden Sie dann die CLI:

preflight auth login    # öffnet Ihren Browser, um diese CLI zu autorisieren
preflight auth status   # zeigt an, mit wem Sie angemeldet sind
preflight auth logout   # entfernt gespeicherte Anmeldedaten

Veröffentlichen Sie einen Scan mit --publish auf Ihrem Dashboard. Es wird ein Link zur Ansicht des Laufs ausgegeben. Das Veröffentlichen ist ein Best-Effort-Vorgang: Wenn Sie offline oder nicht angemeldet sind, läuft der Scan trotzdem und wird normal beendet.

preflight scan --publish

Auf dem Dashboard erhalten Sie die Bestanden/Warnung/Fehler-Aufschlüsselung jedes Laufs, die vollständige Liste der Befunde und einen projektbezogenen Verlauf, sodass Sie sehen können, was sich zwischen Deployments geändert hat.

Sie können diesen Verlauf auch über das Terminal mit preflight history lesen:

preflight history                       # letzte Läufe über Ihre Projekte hinweg
preflight history --here                # nur die Läufe des aktuellen Projekts
preflight history <run-id>              # vollständige Prüfungsergebnisse eines Laufs
preflight history --here --format json  # maschinenlesbar, für Agenten

Erfordert preflight auth login. --here ordnet Läufe dem aktuellen Repository über sein Git-Remote zu, demselben Schlüssel, der auch beim Veröffentlichen verwendet wird.

Öffnen Sie eine fehlgeschlagene Prüfung oder Warnung eines veröffentlichten Laufs, um eine schrittweise, auf Ihren erkannten Stack zugeschnittene Korrektur mit kopierfertigen Befehlen und Code zu generieren.

  • Kostenlos umfasst 5 veröffentlichte Läufe pro Monat.
  • Bring your own key: Fügen Sie einen OpenAI- oder Anthropic-API-Schlüssel in Ihren Dashboard-Einstellungen hinzu, und das Veröffentlichen bleibt kostenlos und unbegrenzt (Sie zahlen direkt an Ihren Anbieter).
  • Verwaltet ($5/Monat): Wir übernehmen die KI-Kosten, und die Läufe sind unbegrenzt, ohne API-Schlüssel.

Was geprüft wird

PrüfungBeschreibung
ENV-ParitätVergleicht .env und .env.example auf fehlende Variablen
Health-EndpunktStellt sicher, dass die Website erreichbar ist; erkennt automatisch /health, /healthz, /api/health oder fällt auf die Root zurück
SchwachstellenscanPrüft auf Abhängigkeits-Schwachstellen (bundle audit, npm audit usw.)
SEO-MetadatenPrüft auf Titel, Beschreibung und Open-Graph-Tags
OG- & Twitter-CardsValidiert og:image, twitter:card und Social-Sharing-Metadaten
Kanonische URLStellt sicher, dass das kanonische Link-Tag vorhanden ist
ViewportPrüft auf korrektes Viewport-Meta-Tag für Mobilgeräte
Lang-AttributValidiert das html-lang-Attribut für Barrierefreiheit
Strukturierte DatenPrüft auf JSON-LD-Schema.org-Markup
Sicherheits-HeaderValidiert HSTS, CSP, X-Content-Type-Options sowohl auf Produktion als auch auf Staging
SSL-ZertifikatPrüft die SSL-Gültigkeit und warnt vor Ablauf
WWW-WeiterleitungStellt sicher, dass www/non-www auf die kanonische URL weiterleitet
E-Mail-AuthentifizierungPrüft SPF/DMARC-DNS-Einträge für die E-Mail-Zustellbarkeit (Opt-in)
Geheimnis-ScanFindet geleakte API-Schlüssel und Anmeldedaten im Code
Debug-AnweisungenErkennt console.log, var_dump, debugger, die im Code verblieben sind
FehlerseitenPrüft auf benutzerdefinierte 404/500-Fehlerseiten
BildoptimierungFindet große Bilder (>500KB), die die Ladezeiten beeinträchtigen
Rechtliche SeitenPrüft auf Datenschutzerklärung und Nutzungsbedingungen
Cookie-EinwilligungErkennt eine Cookie-Einwilligungslösung (GDPR/CCPA-Konformität)
Favicon & IconsPrüft auf Favicon, apple-touch-icon (.png, .webp, .svg) und Web-Manifest
robots.txtStellt sicher, dass robots.txt existiert und Inhalt hat
sitemap.xmlPrüft auf das Vorhandensein einer Sitemap oder eines Generators
llms.txtPrüft auf die LLM-Crawler-Anleitungsdatei
ads.txtValidiert ads.txt für werbefinanzierte Websites (Opt-in)
humans.txtPrüft auf humans.txt, um das Team zu würdigen (Opt-in)
IndexNowStellt die IndexNow-Schlüsseldatei für schnellere Suchindexierung sicher (Opt-in)
LICENSEPrüft auf die Lizenzdatei (Opt-in, für Open-Source-Projekte)

Unterstützte Dienste (72)

Preflight erkennt und validiert automatisch die Konfiguration für diese Dienste:

Zahlungen

  • Stripe, PayPal, Braintree, Paddle, LemonSqueezy

Fehlerverfolgung & Monitoring

  • Sentry, Bugsnag, Rollbar, Honeybadger, Datadog, New Relic, LogRocket

E-Mail & Newsletter

  • Postmark, SendGrid, Mailgun, AWS SES, Resend, Mailchimp, Kit, Beehiiv, AWeber, ActiveCampaign, Campaign Monitor, Drip, Klaviyo, Buttondown

Analytics

  • Plausible, Fathom, Umami, Fullres Analytics, Datafa.st Analytics, Google Analytics, PostHog, Mixpanel, Amplitude, Segment, Hotjar

Authentifizierung

  • Auth0, Clerk, WorkOS

Chat

  • Intercom, Crisp

Benachrichtigungen

  • Slack, Discord, Twilio

Infrastruktur

  • Firebase, Supabase, Redis, Sidekiq, RabbitMQ, Elasticsearch, Convex

Speicher & CDN

  • AWS S3, Cloudinary, Cloudflare

Suche

  • Algolia

SEO

  • IndexNow

KI / LLMs

  • OpenAI, Anthropic Claude, Google AI (Gemini), Mistral, Cohere, Replicate, Hugging Face, Grok (X/Twitter), Perplexity, Together AI

Konfiguration

Preflight verwendet eine preflight.yml-Datei im Projektstamm:

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 - erkennt automatisch gängige Pfade, wenn nicht gesetzt

  stripeWebhook:
    enabled: true
    url: "https://api.example.com/webhooks/stripe"  # optional - wird mit einem GET abgefragt; ein 404 oder keine Antwort wird gemeldet

  seoMeta:
    enabled: true
    mainLayout: "app/views/layouts/application.html.erb"

  security:
    enabled: true

  secrets:
    enabled: true
    # Pro-Datei-Allowlist für den Geheimnis-Scan. Verwenden Sie dies, um einen
    # einzelnen Befund zu unterdrücken (z. B. einen referrer-beschränkten öffentlichen Schlüssel),
    # ohne die gesamte Prüfung zu deaktivieren.
    allowlist:
      - path: web/js/golden-hour.js
        fingerprint: "sha256:<hex>"   # empfohlen - bindet an das genaue Geheimnis
        reason: "HTTP-referrer-beschränkter Google-Time-Zone-Schlüssel"
      - path: "web/tools/**/*.php"    # Doublestar-Globs werden unterstützt

  indexNow:
    enabled: true
    key: "your32characterhexkeyhere00000"

  emailAuth:
    enabled: true  # Opt-in, prüft SPF/DMARC auf der Produktionsdomain

  humansTxt:
    enabled: false  # Opt-in, würdigt das Team

  license:
    enabled: false  # Opt-in, für Open-Source-Projekte

# Bestimmte Prüfungen oder Dienste per ID stummschalten
ignore:
  - sitemap
  - llms_txt
  - google_analytics

Prüfungen & Dienste ignorieren

Schalten Sie bestimmte Prüfungen oder Dienste mit preflight ignore <id> stumm:

preflight ignore sitemap        # Sitemap-Prüfung ignorieren
preflight ignore sentry         # Sentry-Dienstvalidierung ignorieren
preflight unignore sitemap      # Sitemap-Prüfung wieder aktivieren
preflight checks                # Alle ignorierbaren IDs auflisten

Einzelnen Geheimnis-Befund auf die Allowlist setzen

Bevorzugen Sie die Allowlist für einen einzelnen Befund gegenüber dem Stummschalten der gesamten secrets-Prüfung. Fügen Sie einmalige Ausnahmen über die Kommandozeile hinzu:

preflight ignore secrets web/js/golden-hour.js

Das hängt einen Pfadeintrag unter checks.secrets.allowlist in Ihrer preflight.yml an. Das Feld path ist ein doublestar-Glob (** stimmt über Verzeichnisse hinweg überein), das relativ zum Projektdateipfad aufgelöst wird.

Fingerprint festlegen. Eine reine Pfad-Allowlist akzeptiert stillschweigend jedes zukünftige Geheimnis, das in dieser Datei landet. Bearbeiten Sie den Eintrag und fügen Sie einen fingerprint: "sha256:<hex>" hinzu — die SHA-256 des erkannten Geheimniswerts. Wenn der Schlüssel nun rotiert wird oder ein anderes Geheimnis in derselben Datei auftaucht, meldet Preflight erneut.

Befunde werden nach Pfad + Fingerprint abgeglichen, nicht nach ganzer Datei. Ein allowlisteter Fingerprint in einer Datei unterdrückt keine anderen Geheimnisse auf anderen Zeilen in derselben Datei.

Ignorierbare Prüfungs-IDs

SEO & Social: seo_meta, canonical, structured_data, index_now (Opt-in), og_twitter, viewport, lang

Sicherheit & Infrastruktur: security_headers, ssl, www_redirect, email_auth (Opt-in), secrets

Umgebung & Gesundheit: env_parity, health_endpoint

Codequalität & Leistung: vulnerability, debug_statements, error_pages, image_optimization

Recht & Compliance: legal_pages

Web-Standarddateien: favicon, robots_txt, sitemap, llms_txt, ads_txt (Opt-in), humans_txt (Opt-in), license (Opt-in)

In 0.22 umbenannte Prüfungs-IDs

Jede Prüfungs-ID ist jetzt snake_case. Die alten camelCase-Namen funktionieren weiterhin überall dort, wo eine ID akzeptiert wird (ignore:-Listen, --only, --skip, preflight ignore) bis zur 1.x-Linie, mit einem Hinweis auf stderr, und verschwinden in 2.0. preflight ignore schreibt den neuen Namen. Die Schlüssel unter checks: in preflight.yml (healthEndpoint, seoMeta, ...) sind ein separates Schema und haben sich nicht geändert.

AltNeu
seoMetaseo_meta
ogTwitterog_twitter
securityHeaderssecurity_headers
envParityenv_parity
healthEndpointhealth_endpoint
robotsTxtrobots_txt
llmsTxtllms_txt
adsTxtads_txt
humansTxthumans_txt
indexNowindex_now

Ein Hinweis zum Scannen von Code, dem Sie nicht vertrauen

Jede Prüfung liest Dateien; eine führt ein Programm aus. Die vulnerability-Prüfung führt den eigenen Paketmanager Ihres Projekts aus (npm audit, yarn audit, composer audit, bundle audit, pip-audit, govulncheck, cargo audit) innerhalb des Projektverzeichnisses, mit einer bereinigten Umgebung und einem temporären Home, sodass er Ihre Tokens nicht lesen kann. Paketmanager berücksichtigen weiterhin projektlokale Konfiguration, und ein Teil dieser Konfiguration kann Code aus dem Repository ausführen (ein Yarn-yarnPath, ein Cargo-Alias, ein Composer-Plugin). Das Scannen eigener Projekte ist der Zweck von Preflight. Wenn Sie ein Repository scannen, dem Sie nicht vertrauen, z. B. einen Pull-Request eines Forks in CI, fügen Sie --skip vulnerability hinzu.

Ignorierbare Dienst-IDs

Alle Dienste haben Validierungsprüfungen, die die ordnungsgemäße Integration überprüfen (Env-Variablen, SDK-Muster, Konfigurationsdateien):

Zahlungen: stripe, paypal, braintree, paddle, lemonsqueezy

Fehlerverfolgung: sentry, bugsnag, rollbar, honeybadger, datadog, newrelic, logrocket

Transaktions-E-Mail: postmark, sendgrid, mailgun, aws_ses, resend

E-Mail-Marketing: mailchimp, convertkit, beehiiv, aweber, activecampaign, campaignmonitor, drip, klaviyo, buttondown

Analytics: plausible, fathom, google_analytics, fullres, datafast, posthog, mixpanel, amplitude, segment, hotjar

Authentifizierung: auth0, clerk, workos, firebase, supabase

Kommunikation: twilio, slack, discord, intercom, crisp

Infrastruktur: redis, sidekiq, rabbitmq, elasticsearch, convex

Speicher & CDN: aws_s3, cloudinary, cloudflare

Suche: algolia

KI: openai, anthropic, google_ai, mistral, cohere, replicate, huggingface, grok, perplexity, together_ai

SEO: index_now

Cookie-Einwilligung: cookieconsent, cookiebot, onetrust, termly, cookieyes, iubenda

Exit-Codes

CodeBedeutung
0Alle Prüfungen bestanden
1Nur Warnungen
2Fehler gefunden
64Preflight konnte nicht ausgeführt werden (ungültiger Pfad, nicht lesbare Konfiguration, unbekannte Prüfungs-ID)
130Scan abgebrochen (Ctrl-C / SIGTERM)

Die Codes 1 und 2 bedeuten, dass der Scan ausgeführt wurde und etwas gemeldet hat. Code 64 bedeutet, dass er nie so weit gekommen ist, sodass CI „dieses Projekt hat Probleme" von „dieser Aufruf war falsch" unterscheiden kann.

Shell-Vervollständigung

Tab-Vervollständigung für Befehle, Flags und Prüfungs-IDs (einschließlich --only- und --skip-Werte):

# bash (zu ~/.bashrc hinzufügen)
source <(preflight completion bash)

# zsh (zu ~/.zshrc hinzufügen)
source <(preflight completion zsh)

# fish
preflight completion fish | source

Die Ausgabe respektiert auch die NO_COLOR-Umgebungsvariable.

Unterstützte Stacks

Backend-Frameworks

  • Ruby on Rails, Laravel, PHP, Go, Python/Django, Rust, Node.js

Frontend-Frameworks

  • Next.js, Nuxt, Remix, React, Vue.js, Vite, Svelte, Angular

Traditionelle CMS

  • WordPress, Craft CMS, Drupal, Ghost

Statische Site-Generatoren

  • Hugo, Jekyll, Gatsby, Eleventy (11ty), Astro

Headless-CMS

  • Strapi, Sanity, Contentful, Prismic

Sonstiges

  • Statische Websites

CI-Integration

# GitHub Actions-Beispiel (curl)
- name: Run Preflight
  run: |
    curl -sSL https://preflight.sh/install.sh | sh
    preflight scan --ci --format json
# GitHub Actions-Beispiel (Docker)
- name: Run Preflight
  run: docker run -v ${{ github.workspace }}:/app ghcr.io/preflightsh/preflight scan --ci --format json

Lizenz

MIT

Kategorien