
preflight v0.19.4
GoベースのCLIツールで、コードベースをスキャンして起動準備状態を確認し、本番デプロイ前に設定漏れ、セキュリティ衛生問題、シークレット漏洩、統合ギャップを検出します。
Preflight.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 Metadata | title、description、Open Graph タグをチェック |
| OG & Twitter Cards | og:image、twitter:card、ソーシャル共有メタデータを検証 |
| Canonical URL | canonical リンクタグの存在を検証 |
| Viewport | モバイル用の適切な viewport メタタグをチェック |
| Lang Attribute | アクセシビリティ用の html lang 属性を検証 |
| Structured Data | JSON-LD Schema.org マークアップをチェック |
| Security Headers | 本番環境とステージング環境の両方で HSTS、CSP、X-Content-Type-Options を検証 |
| SSL Certificate | SSL の有効性をチェックし、期限切れ前に警告 |
| WWW Redirect | www/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 Consent | Cookie 同意ソリューションを検出(GDPR/CCPA 準拠) |
| Favicon & Icons | favicon、apple-touch-icon(.png、.webp、.svg)、web manifest をチェック |
| robots.txt | robots.txt が存在し、コンテンツがあるか検証 |
| sitemap.xml | sitemap の存在またはジェネレーターをチェック |
| llms.txt | LLM クローラーガイダンスファイルをチェック |
| 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.yml の checks.secrets.allowlist にパスエントリが追加されます。path フィールドは doublestar グロブ(** はディレクトリをまたいで一致)で、プロジェクト相対ファイルパスに対して解決されます。