アップデート一覧に戻る
New releaseSep 8, 2026

preflight v0.22.0

GoベースのCLIツールで、コードベースをスキャンしてリリース準備状況を確認し、本番デプロイ前に設定漏れ、セキュリティ衛生問題、機密情報漏洩、統合のギャップを検出します。

共有

Preflight.sh

Agent skill on skills.sh

Preflight.sh は、コードベースを本番環境へのデプロイ前にスキャンして、起動準備が整っているかを確認するコマンドラインツールです。設定の欠落、統合の問題、セキュリティ上の懸念、SEOメタデータの欠落、その他のよくあるミスを検出します。

本番環境で恥をかかないように。コマンドを実行するだけです。

インストール

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

シェルスクリプト

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

手動ダウンロード

GitHub Releases から最新リリースをダウンロードしてください。

クイックスタート

# プロジェクトディレクトリで初期化
cd your-project
preflight init

# すべてのチェックを実行
preflight scan

# 特定のディレクトリをスキャン
preflight scan /path/to/project

# 詳細出力で実行(各チェックに一致したファイルを表示)
preflight scan --verbose
preflight scan -v  # 短縮形

# CIモードでJSON出力を使用して実行
preflight scan --ci --format json

# 特定のチェックのみを実行、または一部をスキップして素早く反復
# (一時的な指定。`preflight ignore` とは異なり preflight.yml は変更されません)
preflight scan --only seo_meta,og_twitter
preflight scan --skip vulnerability,secrets

# チェックを無効化
preflight ignore sitemap

# チェックを再有効化
preflight unignore sitemap

# すべてのチェックIDを一覧表示
preflight checks

エージェントスキル

このリポジトリには、skills/preflight/SKILL.md に skills.sh 互換のエージェントスキルが含まれています。コーディングエージェントに再現可能な Preflight ワークフローを提供します: preflight.yml の検査、CI セーフなスキャンの実行、結果のトリアージ、安全でない ignore の回避、再検証の実行、残存する起動リスクの報告。

このリポジトリからスキルを一覧表示:

# Bun を使用
bunx --yes skills add preflightsh/preflight --list

# または npm を使用
npx --yes skills add preflightsh/preflight --list

Preflight スキルのみをインストール:

# Bun を使用
bunx --yes skills add preflightsh/preflight --skill preflight

# または npm を使用
npx --yes skills add preflightsh/preflight --skill preflight

ダッシュボードとAI提案

Preflight はアカウントなしでコマンドラインから完全に使用できます。app.preflight.sh のオプションのダッシュボードでは、スキャンのホスト型履歴と、各検出結果に対する AI 生成の修正提案が追加されます。コードがマシンの外に出ることはありません: スキャンはローカルで実行され、公開時に送信されるのは結果の編集済みサマリー(チェックID、ステータス、メッセージのみ。シークレット値やファイル内容は決して送信されません)のみです。

無料アカウントを作成し、CLI を接続します:

preflight auth login    # ブラウザを開いてこのCLIを認証
preflight auth status   # ログイン中のユーザーを表示
preflight auth logout   # 保存された認証情報を削除

--publish を使用してスキャンをダッシュボードに公開します。実行結果を表示するリンクが出力されます。公開はベストエフォート方式です: オフラインまたは未ログインの場合でも、スキャンは実行され、正常に終了します。

preflight scan --publish

ダッシュボードでは、各実行の pass/warn/fail の内訳、検出結果の完全なリスト、プロジェクトごとの履歴を確認でき、デプロイ間の変更点を把握できます。

また、preflight history を使用してターミナルからその履歴を読むこともできます:

preflight history                       # 全プロジェクトの最近の実行
preflight history --here                # 現在のプロジェクトの実行のみ
preflight history <run-id>              # 1回の実行の完全なチェック結果
preflight history --here --format json  # 機械可読形式(エージェント用)

preflight auth login が必要です。--here は git リモートを使用して実行を現在のリポジトリに一致させます。これは公開時と同じキーです。

公開された実行で失敗または警告のチェックを開くと、検出されたスタックに合わせたステップバイステップの修正が生成され、コピーしてすぐ使えるコマンドとコードが提供されます。

  • 無料 には月5回の公開実行が含まれます。
  • 独自キーの使用: ダッシュボード設定で OpenAI または Anthropic API キーを追加すると、公開は無料で無制限になります(プロバイダーに直接支払います)。
  • マネージド ($5/月): AI コストを当社が負担し、実行は無制限。API キーは不要です。

チェック内容

チェック説明
ENV Parity.env.env.example を比較して欠落している変数を検出
Health Endpointサイトに到達可能か検証。/health/healthz/api/health を自動検出し、見つからない場合はルートにフォールバック
Vulnerability Scan依存関係の脆弱性をチェック(bundle audit、npm audit など)
SEO Metadatatitle、description、Open Graph タグをチェック
OG & Twitter Cardsog:image、twitter:card、ソーシャル共有メタデータを検証
Canonical URLcanonical リンクタグの存在を検証
Viewportモバイル用の適切な viewport メタタグをチェック
Lang Attributeアクセシビリティ用の html lang 属性を検証
Structured DataJSON-LD Schema.org マークアップをチェック
Security Headers本番環境とステージング環境の両方で HSTS、CSP、X-Content-Type-Options を検証
SSL CertificateSSL の有効性をチェックし、期限切れ前に警告
WWW Redirectwww/non-www が canonical URL にリダイレクトされるか検証
Email Authメール配信性のための SPF/DMARC DNS レコードをチェック(オプトイン)
Secret Scanningコード内の漏洩した API キーと認証情報を検出
Debug Statementsコードに残された console.log、var_dump、debugger を検出
Error Pagesカスタム 404/500 エラーページをチェック
Image Optimization読み込み時間に悪影響を与える大きな画像(>500KB)を検出
Legal Pagesプライバシーポリシーと利用規約のページをチェック
Cookie ConsentCookie 同意ソリューションを検出(GDPR/CCPA 準拠)
Favicon & Iconsfavicon、apple-touch-icon(.png、.webp、.svg)、web manifest をチェック
robots.txtrobots.txt が存在し、コンテンツがあるか検証
sitemap.xmlsitemap の存在またはジェネレーターをチェック
llms.txtLLM クローラーガイダンスファイルをチェック
ads.txt広告サポートサイト用の ads.txt を検証(オプトイン)
humans.txtチームへのクレジット用の humans.txt をチェック(オプトイン)
IndexNow検索インデックス高速化用の IndexNow キーファイルを検証(オプトイン)
LICENSEライセンスファイルをチェック(オプトイン、オープンソースプロジェクト用)

サポート対象サービス (72)

Preflight は以下のサービスの設定を自動検出して検証します:

決済

  • Stripe、PayPal、Braintree、Paddle、LemonSqueezy

エラー追跡と監視

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

メールとニュースレター

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

アナリティクス

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

認証

  • Auth0、Clerk、WorkOS

チャット

  • Intercom、Crisp

通知

  • Slack、Discord、Twilio

インフラストラクチャ

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

ストレージとCDN

  • AWS S3、Cloudinary、Cloudflare

検索

  • Algolia

SEO

  • IndexNow

AI / LLM

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

設定

Preflight はプロジェクトルートの preflight.yml ファイルを使用します:

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"  # オプション - 未設定の場合は一般的なパスを自動検出

  stripeWebhook:
    enabled: true
    url: "https://api.example.com/webhooks/stripe"  # オプション - GETでプローブ。404または応答なしが報告されます

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

  security:
    enabled: true

  secrets:
    enabled: true
    # シークレットスキャン用のファイル単位の許可リスト。チェック全体を
    # 無効にせずに個別の検出結果(例: リファラー制限付き公開キー)を
    # 抑制するために使用します。
    allowlist:
      - path: web/js/golden-hour.js
        fingerprint: "sha256:<hex>"   # 推奨 - 正確なシークレットに固定
        reason: "HTTPリファラー制限付きGoogle Timezoneキー"
      - path: "web/tools/**/*.php"    # doublestar グロブがサポートされています

  indexNow:
    enabled: true
    key: "your32characterhexkeyhere00000"

  emailAuth:
    enabled: true  # オプトイン、本番ドメインのSPF/DMARCをチェック

  humansTxt:
    enabled: false  # オプトイン、チームへのクレジット

  license:
    enabled: false  # オプトイン、オープンソースプロジェクト用

# IDで特定のチェックまたはサービスを無効化
ignore:
  - sitemap
  - llms_txt
  - google_analytics

チェックとサービスの無効化

preflight ignore <id> を使用して特定のチェックまたはサービスを無効化します:

preflight ignore sitemap        # sitemapチェックを無効化
preflight ignore sentry         # Sentryサービスの検証を無効化
preflight unignore sitemap      # sitemapチェックを再有効化
preflight checks                # 無効化可能なすべてのIDを一覧表示

単一のシークレット検出結果の許可リスト登録

secrets チェック全体を無効化するよりも、個別の検出結果を許可リストに登録することをお勧めします。コマンドラインから一時的な例外を追加します:

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

これにより、preflight.ymlchecks.secrets.allowlist にパスエントリが追加されます。path フィールドは doublestar グロブ(** はディレクトリをまたいで一致)で、プロジェクト相対ファイルパスに対して解決されます。

フィンガープリントを固定してください。 パスのみの許可リストは、そのファイルに将来追加されるあらゆるシークレットを黙って受け入れます。エントリを編集して fingerprint: "sha256:<hex>" を追加してください — これは検出されたシークレット値の SHA-256 です。これで、キーがローテーションされたり、同じファイルに別のシークレットが出現した場合、preflight は再び警告します。

検出結果はパス + フィンガープリントで照合され、ファイル全体ではありません。ファイル内の許可リスト登録されたフィンガープリントは、同じファイルの他の行にある他のシークレットを抑制しません。

無効化可能なチェックID

SEOとソーシャル: seo_metacanonicalstructured_dataindex_now(オプトイン)、og_twitterviewportlang

セキュリティとインフラストラクチャ: security_headerssslwww_redirectemail_auth(オプトイン)、secrets

環境とヘルス: env_parityhealth_endpoint

コード品質とパフォーマンス: vulnerabilitydebug_statementserror_pagesimage_optimization

法務とコンプライアンス: legal_pages

Web標準ファイル: faviconrobots_txtsitemapllms_txtads_txt(オプトイン)、humans_txt(オプトイン)、license(オプトイン)

0.22でリネームされたチェックID

すべてのチェックIDは現在 snake_case です。以前の camelCase 名は、ID が受け入れられるすべての場所(ignore: リスト、--only--skippreflight ignore)で 1.x 系を通じて引き続き機能し、stderr にメモが表示され、2.0 で削除されます。preflight ignore は新しい名前を書き込みます。preflight.ymlchecks: の下のキー(healthEndpointseoMeta、...)は別のスキーマであり、変更されていません。

seoMetaseo_meta
ogTwitterog_twitter
securityHeaderssecurity_headers
envParityenv_parity
healthEndpointhealth_endpoint
robotsTxtrobots_txt
llmsTxtllms_txt
adsTxtads_txt
humansTxthumans_txt
indexNowindex_now

信頼できないコードのスキャンに関する注意

すべてのチェックはファイルを読み取ります。1つはプログラムを実行します。vulnerability チェックは、プロジェクトディレクトリ内でプロジェクト自身のパッケージマネージャー(npm audityarn auditcomposer auditbundle auditpip-auditgovulncheckcargo audit)を、環境をスクラブし、一時的なホームディレクトリを使用して実行するため、トークンを読み取ることはできません。パッケージマネージャーはプロジェクトローカルの設定を尊重し続けますが、その設定の一部はリポジトリからコードを実行できます(Yarn の yarnPath、Cargo エイリアス、Composer プラグイン)。自分のプロジェクトをスキャンすることが Preflight の目的です。フォークのプルリクエストなど、信頼できないリポジトリを CI でスキャンする場合は、--skip vulnerability を追加してください。

無効化可能なサービスID

すべてのサービスには、適切な統合(環境変数、SDKパターン、設定ファイル)を検証するチェックがあります:

決済: stripepaypalbraintreepaddlelemonsqueezy

エラー追跡: sentrybugsnagrollbarhoneybadgerdatadognewreliclogrocket

トランザクションメール: postmarksendgridmailgunaws_sesresend

メールマーケティング: mailchimpconvertkitbeehiivaweberactivecampaigncampaignmonitordripklaviyobuttondown

アナリティクス: plausiblefathomgoogle_analyticsfullresdatafastposthogmixpanelamplitudesegmenthotjar

認証: auth0clerkworkosfirebasesupabase

コミュニケーション: twilioslackdiscordintercomcrisp

インフラストラクチャ: redissidekiqrabbitmqelasticsearchconvex

ストレージとCDN: aws_s3cloudinarycloudflare

検索: algolia

AI: openaianthropicgoogle_aimistralcoherereplicatehuggingfacegrokperplexitytogether_ai

SEO: index_now

Cookie同意: cookieconsentcookiebotonetrusttermlycookieyesiubenda

終了コード

コード意味
0すべてのチェックが合格
1警告のみ
2エラーが検出された
64Preflight を実行できなかった(パスが不正、設定が読み取れない、不明なチェックID)
130スキャンがキャンセルされた(Ctrl-C / SIGTERM)

コード 1 と 2 は、スキャンが実行され、何かが報告されたことを意味します。コード 64 は、そこに到達しなかったことを意味するため、CI は「このプロジェクトに問題がある」と「この呼び出しが間違っていた」を区別できます。

シェル補完

コマンド、フラグ、チェックID(--only--skip の値も含む)のタブ補完:

# bash (~/.bashrc に追加)
source <(preflight completion bash)

# zsh (~/.zshrc に追加)
source <(preflight completion zsh)

# fish
preflight completion fish | source

出力は NO_COLOR 環境変数も尊重します。

サポート対象スタック

バックエンドフレームワーク

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

フロントエンドフレームワーク

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

従来型CMS

  • WordPress、Craft CMS、Drupal、Ghost

静的サイトジェネレーター

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

ヘッドレスCMS

  • Strapi、Sanity、Contentful、Prismic

その他

  • 静的サイト

CI統合

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

ライセンス

MIT

カテゴリ