Retour aux mises à jour
New releaseSep 8, 2026

preflight v0.22.0

Outil CLI basé sur Go qui analyse les bases de code pour vérifier leur état de préparation au lancement, en détectant les configurations manquantes, les problèmes d'hygiène de sécurité, les fuites de secrets et les lacunes d'intégration avant le déploiement en production.

Partager

Preflight.sh

Agent skill on skills.sh

Preflight.sh est un outil en ligne de commande qui analyse votre codebase pour vérifier sa préparation au lancement. Il identifie les configurations manquantes, les problèmes d'intégration, les préoccupations de sécurité, les lacunes de métadonnées SEO et d'autres erreurs courantes avant que vous ne déployiez en production.

Ne vous ridiculisez pas en production. Exécutez simplement la commande.

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

Script Shell

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

Téléchargement manuel

Téléchargez la dernière version depuis GitHub Releases.

Démarrage rapide

# Initialisez dans votre répertoire de projet
cd your-project
preflight init

# Exécutez toutes les vérifications
preflight scan

# Analysez un répertoire spécifique
preflight scan /path/to/project

# Exécutez avec une sortie détaillée (affiche les fichiers correspondant à chaque vérification)
preflight scan --verbose
preflight scan -v  # forme courte

# Exécutez en mode CI avec une sortie JSON
preflight scan --ci --format json

# Exécutez uniquement certaines vérifications, ou ignorez-en certaines, pour une itération rapide
# (ponctuel ; contrairement à `preflight ignore`, cela ne modifie pas preflight.yml)
preflight scan --only seo_meta,og_twitter
preflight scan --skip vulnerability,secrets

# Silencez une vérification
preflight ignore sitemap

# Réactivez une vérification
preflight unignore sitemap

# Listez tous les identifiants de vérification
preflight checks

Compétence d'agent

Ce dépôt inclut une compétence d'agent compatible skills.sh dans skills/preflight/SKILL.md. Elle fournit aux agents de codage un flux de travail Preflight reproductible : inspecter preflight.yml, exécuter des analyses sûres pour CI, trier les constatations, éviter les ignorances dangereuses, relancer la validation et signaler le risque résiduel de lancement.

Listez la compétence depuis ce dépôt :

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

# Ou avec npm
npx --yes skills add preflightsh/preflight --list

Installez uniquement la compétence Preflight :

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

# Ou avec npm
npx --yes skills add preflightsh/preflight --skill preflight

Tableau de bord et suggestions IA

Preflight est entièrement utilisable depuis la ligne de commande sans compte. Le tableau de bord optionnel sur app.preflight.sh ajoute un historique hébergé de vos analyses et des suggestions de correctifs générées par IA pour chaque constatation. Votre code ne quitte jamais votre machine : l'analyse s'exécute localement, et seul un résumé expurgé des résultats (identifiants de vérification, statuts et messages, jamais les valeurs secrètes ni le contenu des fichiers) est envoyé lorsque vous publiez.

Créez un compte gratuit, puis connectez le CLI :

preflight auth login    # ouvre votre navigateur pour autoriser ce CLI
preflight auth status   # affiche l'utilisateur connecté
preflight auth logout   # supprime les informations d'identification stockées

Publiez une analyse sur votre tableau de bord avec --publish. Cela affiche un lien pour consulter l'exécution. La publication est au mieux : si vous êtes hors ligne ou non connecté, l'analyse s'exécute quand même et se termine normalement.

preflight scan --publish

Sur le tableau de bord, vous obtenez la répartition réussite/avertissement/échec de chaque exécution, la liste complète des constatations et un historique par projet afin de voir ce qui a changé entre les déploiements.

Vous pouvez également lire cet historique depuis le terminal avec preflight history :

preflight history                       # exécutions récentes sur vos projets
preflight history --here                # uniquement les exécutions du projet actuel
preflight history <run-id>              # résultats complets des vérifications d'une exécution
preflight history --here --format json  # lisible par machine, pour les agents

Nécessite preflight auth login. --here fait correspondre les exécutions au dépôt actuel via son remote git, la même clé utilisée lors de la publication.

Ouvrez toute vérification en échec ou avec avertissement sur une exécution publiée pour générer un correctif étape par étape adapté à votre pile détectée, avec des commandes et du code prêts à copier.

  • Gratuit inclut 5 exécutions publiées par mois.
  • Apportez votre propre clé : ajoutez une clé API OpenAI ou Anthropic dans les paramètres de votre tableau de bord et la publication reste gratuite et illimitée (vous payez votre fournisseur directement).
  • Géré (5 $/mois) : nous couvrons les coûts IA et les exécutions sont illimitées, sans clé API requise.

Ce qu'il vérifie

VérificationDescription
Parité ENVCompare .env et .env.example pour les variables manquantes
Point de terminaison de santéVérifie que le site est accessible ; détecte automatiquement /health, /healthz, /api/health ou revient à la racine
Analyse de vulnérabilitésVérifie les vulnérabilités des dépendances (bundle audit, npm audit, etc.)
Métadonnées SEOVérifie la présence du titre, de la description et des balises Open Graph
Cartes OG et TwitterValide og:image, twitter:card et les métadonnées de partage social
URL canoniqueVérifie la présence de la balise de lien canonique
ViewportVérifie la présence d'une balise meta viewport appropriée pour mobile
Attribut LangValide l'attribut html lang pour l'accessibilité
Données structuréesVérifie la présence de balisage JSON-LD Schema.org
En-têtes de sécuritéValide HSTS, CSP, X-Content-Type-Options sur la production et la préproduction
Certificat SSLVérifie la validité SSL et avertit avant l'expiration
Redirection WWWVérifie la redirection www/non-www vers l'URL canonique
Authentification e-mailVérifie les enregistrements DNS SPF/DMARC pour la délivrabilité des e-mails (optionnel)
Analyse des secretsDétecte les clés API et informations d'identification divulguées dans le code
Instructions de débogageDétecte console.log, var_dump, debugger laissés dans le code
Pages d'erreurVérifie la présence de pages d'erreur personnalisées 404/500
Optimisation des imagesDétecte les grandes images (>500 Ko) qui nuisent aux temps de chargement
Pages légalesVérifie la présence des pages de politique de confidentialité et de conditions d'utilisation
Consentement aux cookiesDétecte la solution de consentement aux cookies (conformité GDPR/CCPA)
Favicon et icônesVérifie la présence de favicon, apple-touch-icon (.png, .webp, .svg) et du manifeste web
robots.txtVérifie que robots.txt existe et contient du contenu
sitemap.xmlVérifie la présence du sitemap ou d'un générateur
llms.txtVérifie la présence du fichier de directives pour les robots d'exploration LLM
ads.txtValide ads.txt pour les sites financés par la publicité (optionnel)
humans.txtVérifie la présence de humans.txt pour créditer l'équipe (optionnel)
IndexNowVérifie le fichier de clé IndexNow pour un indexage de recherche plus rapide (optionnel)
LICENSEVérifie la présence du fichier de licence (optionnel, pour les projets open source)

Services pris en charge (72)

Preflight détecte et valide automatiquement la configuration de ces services :

Paiements

  • Stripe, PayPal, Braintree, Paddle, LemonSqueezy

Suivi d'erreurs et surveillance

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

E-mail et newsletters

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

Analytique

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

Authentification

  • Auth0, Clerk, WorkOS

Chat

  • Intercom, Crisp

Notifications

  • Slack, Discord, Twilio

Infrastructure

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

Stockage et CDN

  • AWS S3, Cloudinary, Cloudflare

Recherche

  • Algolia

SEO

  • IndexNow

IA / LLM

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

Configuration

Preflight utilise un fichier preflight.yml à la racine de votre projet :

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"  # optionnel - détecte automatiquement les chemins courants si non défini

  stripeWebhook:
    enabled: true
    url: "https://api.example.com/webhooks/stripe"  # optionnel - sondé avec un GET ; une 404 ou aucune réponse est signalée

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

  security:
    enabled: true

  secrets:
    enabled: true
    # Liste blanche par fichier pour l'analyse des secrets. Utilisez-la pour supprimer une
    # constatation individuelle (par exemple une clé publique restreinte par référent) sans
    # désactiver toute la vérification.
    allowlist:
      - path: web/js/golden-hour.js
        fingerprint: "sha256:<hex>"   # recommandé — épingle le secret exact
        reason: "Clé Google Timezone restreinte par référent HTTP"
      - path: "web/tools/**/*.php"    # les globs doublestar sont pris en charge

  indexNow:
    enabled: true
    key: "your32characterhexkeyhere00000"

  emailAuth:
    enabled: true  # optionnel, vérifie SPF/DMARC sur le domaine de production

  humansTxt:
    enabled: false  # optionnel, crédite l'équipe

  license:
    enabled: false  # optionnel, pour les projets open source

# Silencez des vérifications ou services spécifiques par identifiant
ignore:
  - sitemap
  - llms_txt
  - google_analytics

Ignorer des vérifications et services

Silencez des vérifications ou services spécifiques avec preflight ignore <id> :

preflight ignore sitemap        # Ignore la vérification du sitemap
preflight ignore sentry         # Ignore la validation du service Sentry
preflight unignore sitemap      # Réactive la vérification du sitemap
preflight checks                # Liste tous les identifiants ignorables

Mettre un seul résultat de secrets sur liste blanche

Préférez mettre une constatation individuelle sur liste blanche plutôt que de silencer toute la vérification secrets. Ajoutez des exceptions ponctuelles depuis la ligne de commande :

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

Cela ajoute une entrée de chemin sous checks.secrets.allowlist dans votre preflight.yml. Le champ path est un glob doublestar (** correspond à travers les répertoires) résolu par rapport au chemin de fichier relatif au projet.

Épinglez l'empreinte. Une liste blanche basée uniquement sur le chemin accepte silencieusement tout secret futur déposé dans ce fichier. Modifiez l'entrée et ajoutez un fingerprint: "sha256:<hex>" — le SHA-256 de la valeur du secret détecté. Désormais, si la clé est révoquée ou si un secret différent apparaît dans le même fichier, preflight ré-alerte.

Les constatations sont mises en correspondance par chemin + empreinte, pas par fichier entier. Une empreinte sur liste blanche dans un fichier ne supprime pas les autres secrets sur d'autres lignes du même fichier.

Identifiants de vérification ignorables

SEO et social : seo_meta, canonical, structured_data, index_now (optionnel), og_twitter, viewport, lang

Sécurité et infrastructure : security_headers, ssl, www_redirect, email_auth (optionnel), secrets

Environnement et santé : env_parity, health_endpoint

Qualité du code et performance : vulnerability, debug_statements, error_pages, image_optimization

Juridique et conformité : legal_pages

Fichiers standard du web : favicon, robots_txt, sitemap, llms_txt, ads_txt (optionnel), humans_txt (optionnel), license (optionnel)

Identifiants de vérification renommés en 0.22

Chaque identifiant de vérification est désormais en snake_case. Les anciens noms camelCase continuent de fonctionner partout où un identifiant est accepté (listes ignore:, --only, --skip, preflight ignore) jusqu'à la ligne 1.x, avec une note sur stderr, et disparaissent en 2.0. preflight ignore écrit le nouveau nom. Les clés sous checks: dans preflight.yml (healthEndpoint, seoMeta, ...) constituent un schéma distinct et n'ont pas changé.

AncienNouveau
seoMetaseo_meta
ogTwitterog_twitter
securityHeaderssecurity_headers
envParityenv_parity
healthEndpointhealth_endpoint
robotsTxtrobots_txt
llmsTxtllms_txt
adsTxtads_txt
humansTxthumans_txt
indexNowindex_now

Une note sur l'analyse de code que vous ne maîtrisez pas

Chaque vérification lit des fichiers ; une exécute un programme. La vérification vulnerability exécute le gestionnaire de paquets de votre propre projet (npm audit, yarn audit, composer audit, bundle audit, pip-audit, govulncheck, cargo audit) dans le répertoire du projet, avec un environnement nettoyé et un répertoire personnel temporaire afin qu'il ne puisse pas lire vos jetons. Les gestionnaires de paquets honorent néanmoins la configuration locale du projet, et une partie de cette configuration peut exécuter du code provenant du dépôt (un yarnPath Yarn, un alias Cargo, un plugin Composer). Analyser vos propres projets est précisément l'objectif de Preflight. Lorsque vous analysez un dépôt que vous ne maîtrisez pas, comme une demande de tirage d'un fork en CI, ajoutez --skip vulnerability.

Identifiants de service ignorables

Tous les services disposent de vérifications de validation qui confirment une intégration correcte (variables d'environnement, modèles SDK, fichiers de configuration) :

Paiements : stripe, paypal, braintree, paddle, lemonsqueezy

Suivi d'erreurs : sentry, bugsnag, rollbar, honeybadger, datadog, newrelic, logrocket

E-mail transactionnel : postmark, sendgrid, mailgun, aws_ses, resend

Marketing par e-mail : mailchimp, convertkit, beehiiv, aweber, activecampaign, campaignmonitor, drip, klaviyo, buttondown

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

Authentification : auth0, clerk, workos, firebase, supabase

Communication : twilio, slack, discord, intercom, crisp

Infrastructure : redis, sidekiq, rabbitmq, elasticsearch, convex

Stockage et CDN : aws_s3, cloudinary, cloudflare

Recherche : algolia

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

SEO : index_now

Consentement aux cookies : cookieconsent, cookiebot, onetrust, termly, cookieyes, iubenda

Codes de sortie

CodeSignification
0Toutes les vérifications ont réussi
1Avertissements uniquement
2Erreurs trouvées
64Preflight n'a pas pu s'exécuter (chemin invalide, configuration illisible, identifiant de vérification inconnu)
130Analyse annulée (Ctrl-C / SIGTERM)

Les codes 1 et 2 signifient que l'analyse s'est exécutée et a signalé quelque chose. Le code 64 signifie qu'elle n'est jamais allée aussi loin, afin que la CI puisse distinguer « ce projet a des problèmes » de « cette invocation était incorrecte ».

Complétions shell

Complétion par tabulation pour les commandes, les drapeaux et les identifiants de vérification (y compris les valeurs --only et --skip) :

# bash (ajoutez à ~/.bashrc)
source <(preflight completion bash)

# zsh (ajoutez à ~/.zshrc)
source <(preflight completion zsh)

# fish
preflight completion fish | source

La sortie respecte également la variable d'environnement NO_COLOR.

Piles prises en charge

Frameworks backend

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

Frameworks frontend

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

CMS traditionnels

  • WordPress, Craft CMS, Drupal, Ghost

Générateurs de sites statiques

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

CMS headless

  • Strapi, Sanity, Contentful, Prismic

Autres

  • Sites statiques

Intégration CI

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

Licence

MIT

Catégories