launch-security · git:20261002.c0e127d · 2026-10-02 · sha256 dc790aea623b80c4
launch-security git:20261002.c0e127dA
Immutable. This exact content never changes and is served at /api/v1/blob/dc790aea623b80c4.
--- name: launch-security description: > アプリの本番品質を保証する統合スキル。セキュリティ監査・例外/エラー処理設計・攻撃別対処・ サーバーコスト最適化・パフォーマンス最適化を1つのゲートで検査する。 「セキュリティチェックして」「リリースしていい?」「本番公開前の確認」「脆弱性診断」「監査して」 「エラー処理を設計して」「例外処理を入れて」「攻撃対策」「レート制限」「コストを抑えたい」 「無料枠に収めたい」「パフォーマンス改善」「重い」などの文脈で必ず使用する。 また、認証・ユーザー入力・API・決済・機密データを扱うコードを書いた直後、およびデプロイ前には ユーザーが明示しなくても本スキルの該当セクションを適用する。 デプロイ手順自体は Skill cloudflare-secure-deploy、認証実装は Skill better-auth-google-gate、 LLMコストは Skill llm-api-integration / llm-cost-simulator を併用する。 --- # Launch Security — 本番品質ゲート(セキュリティ・例外処理・コスト・パフォーマンス) リリース前に「攻撃に耐えるか」「壊れたとき正しく振る舞うか」「請求とクォータが破綻しないか」「速いか」の4軸を一度に検査する。MCP/CLI経由でClaude Codeが自律実装する場面でも、この基準を実装時から満たすこと。 ## 使い方(2モード) - **実装時モード**: 認証・入力処理・API・DBを書くとき、該当セクションの基準を最初から満たして書く。後付け監査で直すより安い。 - **監査モード**: リリース前・大きな変更後に、下記の監査プロセスを全部実行して GO / NO-GO を判定する。 ## 監査プロセス ### 手順1: 偵察(構成把握) プロジェクトを分析して適用範囲を決める: テックスタック / 認証方式 / API構成 / デプロイ先(Workers・Pages・Vercel等)/ DB(D1・Supabase等)/ ファイルアップロード有無 / 決済有無 / LLM API利用有無。 ### 手順2: 自動スキャン `references/scan-commands.md` のgrep/auditコマンド群を並列実行する(secrets検出、SQLi、XSS、コマンドインジェクション、認証/セッション、依存脆弱性、セキュリティヘッダー、ファイルアップロード、API保護、DB、ソースマップ、オープンリダイレクト)。 並列エージェントを使う場合の分担: ①secrets+injection ②フロント+API ③インフラ+依存関係。 security-reviewer / code-reviewer / database-reviewer エージェントを併用してよい。 ### 手順3: 4軸チェックリスト(+ 倫理ガード) #### A. セキュリティ - [ ] ハードコードされたSecretなし(環境変数+Wrangler Secrets。`.dev.vars`/`.env`はGit除外) - [ ] 全ユーザー入力をzodで検証(クライアントとサーバー両方。サーバーが正) - [ ] SQLはprepared statementのみ(D1: `prepare().bind()`) - [ ] アクセス制御は `better-auth-google-gate` §0 の単一決定表と一致。Better Auth を選んだ場合は認証・認可をサーバー側で毎回検証し、Access を選んだ場合はエッジ遮断の許可/拒否を実機で確認 - [ ] XSS対策(dangerouslySetInnerHTMLはsanitize必須)+ セキュリティヘッダー(CSP/HSTS/X-Frame-Options/X-Content-Type-Options/Referrer-Policy) - [ ] CSRF保護有効・状態変更はPOST/PUT/DELETE - [ ] 認証・公開フォーム・コスト発生エンドポイントにレート制限(公開フォームはTurnstile検討 → Skill turnstile-spin) - [ ] CORSは明示的な許可オリジンリスト - [ ] ファイルアップロードは型・サイズ検証+R2キー正規化 - [ ] `pnpm audit` の high/critical を全件評価。v0 は CRITICAL ゼロ、v1 は悪用可能な HIGH もゼロ(例外は期限つき明示的リスク受容のみ) - [ ] インフラ・CI/CD・WAFは `references/cloud-infrastructure-security.md` #### B. 例外処理・エラー設計・攻撃対処 `references/error-handling-and-resilience.md` を適用する: - [ ] グローバルエラーハンドラ設置(未捕捉例外→500+相関ID。スタックトレース非公開) - [ ] 401/403/400/404/429/500 の出し分けと情報漏えい防止 - [ ] ミドルウェア標準順序(CORS→ヘッダー→サイズ上限→レート制限→認証→認可→検証→ハンドラ) - [ ] 攻撃別対処表の該当項目をすべて実装(SQLi/XSS/CSRF/SSRF/IDOR/ブルートフォース/DoS/パストラバーサル) - [ ] 外部API: タイムアウト+指数バックオフ+リトライ上限 - [ ] 削除は論理削除基本。べき等性が必要な操作は重複実行防止 - [ ] ログにSecret・トークン・個人情報を出さない #### C. サーバーコスト `references/cost-and-performance.md` §1 を適用する: - [ ] Workers/D1無料枠の見積り(DAU×リクエスト数×クエリ数がクォータに収まる) - [ ] ポーリング・無限リトライ・毎リクエスト書き込みなし - [ ] 一覧APIにLIMIT+ページネーション、`SELECT *`なし、インデックスあり - [ ] LLM API利用時はモデル選定とコスト試算済み(Skill llm-api-integration / llm-cost-simulator) #### D. パフォーマンス `references/cost-and-performance.md` §2 を適用する: - [ ] キャッシュ戦略(静的アセット/CDN/KV/D1の階層)が設計されている - [ ] N+1なし・重い集計は事前計算 - [ ] 初期バンドル最小化・画像最適化・スケルトン表示 - [ ] リリース前にCore Web Vitals実測(Skill web-perf)でLCP 2.5s以内 #### E. 倫理ガード(体験) - [ ] app-excellence `references/checklists/ux-psychology.md` §C のダークパターン禁止リストに1つも該当しない(該当は CRITICAL。v0・v1 とも NO-GO) ### 手順4: レポート ```text ## 本番品質監査レポート Project / Tech Stack / Date ### CRITICAL(リリースブロック) … file:line付き ### HIGH(v0は記録して限定公開可 / v1は悪用可能なら遮断) ### MEDIUM(リリース後1スプリント内) ### LOW(ベストプラクティス) ### PASS(確認済み項目) Summary: 件数と内訳 Target stage: v0 / v1 Launch readiness: GO / CONDITIONAL / NO-GO ``` **Severity基準** - CRITICAL: ハードコードSecret、SQLi、認証欠落、.env流出、認可バイパス、クォータ即死する設計、ダークパターン該当(手順3 E) - HIGH: XSS、CSRF欠落、レート制限なし、localStorageトークン、high/critical CVE、スタックトレース公開 - MEDIUM: ヘッダー不足、過剰CORS、一部入力未検証、ソースマップ公開、N+1 - LOW: Referrer-Policy欠落、監査ログなし、CSP微調整 **段階別判定**(INV-3 の正本。app-orchestrator 裁定ルール1と mvp-first §4 はここを参照する。`INVARIANTS.md`): - **v0(関係者限定)**: GO = CRITICAL 0。HIGH は T4 と `docs/product/backlog.md` へ全件記録し、利用者を限定して公開できる。CRITICAL が1件でも残れば NO-GO。 - **v1(本来の利用者へ公開)**: GO = CRITICAL 0 + **悪用可能な HIGH 0**。認証/認可、XSS、CSRF、Secret露出、到達可能な高危険度依存脆弱性など、入力や公開経路から再現・攻撃できる HIGH はリリース前に遮断する。それ以外の HIGH に対処計画がある場合は CONDITIONAL。 - **例外**: 悪用可能な HIGH を残して v1 へ進めるのは、T4 に「責任者 / 受容理由 / 補償統制 / 解消期限」を書き、責任者が明示受容した場合だけ。期限なし、担当不明、「急ぐため」だけの受容は無効で NO-GO。 各CRITICAL/HIGHには「リスク・該当箇所・修正コード例・参照標準(OWASP等)」を添える。 ## 関連スキル | 場面 | スキル | |---|---| | デプロイ手順・wrangler・migration | cloudflare-secure-deploy | | 認証・認可の実装と不変条件 | better-auth-google-gate | | LLM APIのコスト・キー管理 | llm-api-integration / llm-cost-simulator | | Core Web Vitals実測 | web-perf | | Bot対策 | turnstile-spin | | リリース前テスト全般 | testing-excellence |