launch-checklist は何をしますか?
自動監査を実行し、コード内で失敗した項目を修正し、クリアになるまで再実行、その後スクリプトでは確認できない手動項目を確認します。変更した内容と、まだユーザーに必要なことを報告してください。
ステップ1 — 監査の実行
本番URLが存在する場合は本番URLに対して、存在しない場合はローカルのプロダクションビルド(npm run build && npm start、開発サーバーは使用しない — 開発サーバーはスクリプトを追加しキャッシュをスキップします)に対して実行:
python3 scripts/audit_site.py https://example.com # テキストレポート
python3 scripts/audit_site.py http://localhost:3000 --max-pages 30 --json > audit.json
チェック項目(詳細は references/checks.md):
- ページごと:
<title>(10〜60文字)、メタディスクリプション(50〜160)、<h1>は1つだけ、<html lang>、ビューポート、canonical(絶対URL、同一ホスト)、og:title/description/image、twitter:card、<img>にaltがないもの、HTMLサイズ、レスポンス時間、インデックスしてほしいページにnoindexがあるか、ページ間で重複したタイトル/ディスクリプション。 - サイト全体:
/robots.txtが存在しDisallow: /ですべてを拒否していないか、sitemapを参照しているか;/sitemap.xml(またはrobotsに指定されたもの)がパースでき、そのURLが同一ホストで200を返すか;faviconが到達可能か;apple-touch-icon;ランダムなURLが 404 を返すか(200やホームへのリダイレクトではない);http→httpsリダイレクト(httpsサイトの場合);プライバシーポリシー / 利用規約へのリンク(サイトが何かを販売している場合は返金ポリシーも);/llms.txtの存在(情報提供のみ)。
FAILがある場合、終了コード1。クロールするページ:開始URL + 同一ホストのリンク、--max-pages(デフォルト20)まで。
ステップ2 — コードベースでの修正
フレームワークを検出し、対応するレシピを使用します。Next.js App Routerの場合、references/fixes-nextjs.md には robots.ts、sitemap.ts、not-found.tsx、metadata、アイコン規約のドロップイン設定があります。一般的なHTML/その他フレームワークの場合:references/fixes-generic.md。
ルール:
- 問題が繰り返し発生する場合は、ページごとに修正するのではなく、根本原因(共有レイアウト / メタデータヘルパー)を修正する。
- 許可なく
noindexを追加したりクローラーをブロックしたりしない。 - 法的ページがない場合:
legal-pagesスキルがインストールされていればそれを使って生成する;そうでなければユーザーに伝える — インラインで法的テキストを作成しない。 - OG画像がない場合:
og-image-kitスキルがインストールされていれば使用する。
ステップ3 — FAILがなくなるまで再実行
同じコマンドを再実行します。WARN項目:簡単に修正できるものは修正し、残りはユーザーにリストアップします。
ステップ4 — 手動項目(スクリプトでは確認不可)
references/manual-checklist.md をユーザーと一緒に確認 — アナリティクスインストール、エラートラッキング、トランザクションメールの到達性(SPF/DKIM/DMARC)、実際の少額支払いでのエンドツーエンドの支払いフロー、バックアップ、アップタイム監視、Search Console / Bing Webmasterの認証とsitemap送信、ドメイン更新のステータス。それぞれを「完了」「該当なし」「ユーザーが行う」としてマークします。
ステップ4b — 支払い自己診断(サイトが課金を行う場合)
python3 scripts/payment_check.py --src . --provider creem # コードスキャン
python3 scripts/payment_check.py --url http://localhost:3000 # 実行中のビルドをプローブ
python3 scripts/payment_check.py --url http://localhost:3000 --secret "$CREEM_WEBHOOK_SECRET" # テストモードシークレットのみ
FAIL:Webhookが署名なしまたは偽造リクエストを受け入れる、JSONを検証前にパースする、イベントIDで重複排除がない、成功ページがアクセスを許可する、支払いシークレットが NEXT_PUBLIC_* やコミットされている、Webhookがリダイレクトされるかボットチャレンジの背後にある。これらを修正し、再実行し、その後 references/payment-checks.md の手動カードテスト(成功カード、拒否カード、リファンド、ダッシュボード再送、キャンセル)を行います。ライブのWebhookシークレットを絶対に渡さないでください。scripts/test_payment_check.py はスクリプト自身のテストです。テスト、スペック、フィクスチャファイル(*.test.ts、*.spec.tsx、test_*.py、tests/、e2e/、__tests__/、fixtures/ 以下のファイル)はハンドラーや成功ページとして判断されません。これらは意図的に署名なしリクエストを送信したり行を挿入したりするためです。ただし、コミットされたライブキーはスキャンされます。レポートにはスキップされた数が表示されます(INFO test files)。
レポート形式
Launch audit for <url> — <date>
FAIL fixed: … (file:line changed)
WARN fixed: …
Still open (needs you): …
Manual checklist: x/y done