mcpField
S
ship-gate

ship-gate

github.com/alirezarezvaniテスト・品質28.9k477 回インストール2 日前に更新
リポジトリ

ship-gate について

Ship Gateは、本番リリース前にコードベースを監査するスキルです。8カテゴリの自動スキャンと手動確認を組み合わせ、重要度やコード上の位置とともに問題を報告します。

主な機能

  1. 01プロジェクトのスタック検出
  2. 028カテゴリの監査スキャン
  3. 03自動チェックと手動確認の区別
  4. 04重要度とコード位置の報告
  5. 05問題の修正ガイダンス

活用シーン

  1. 01デプロイ前のコードベース監査
  2. 02セキュリティとデータベースのリスク確認
  3. 03リリース準備に関する手動項目の確認
  4. 04本番リリース前の監査結果レビュー

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill ship-gate

インストール後、Claude Code で/ship-gateを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
checks.md
patterns.md
scripts/
ship_gate_scanner.py

詳細

Ship Gate

リリース前にコードベースをスキャンし、本番リリース前に8つのカテゴリについて合格/不合格/手動確認の結果を報告します。

割り込み動作

ユーザーが「本番環境にプッシュ」「デプロイ」「リリースして」「公開して」など、デプロイの意図を示す表現を使った場合は、デプロイを進めてはいけません。代わりに、次の手順を実行します。

  1. 「Ship Gate を実行しましたか?今スキャンしましょうか?」と尋ねます。
  2. ユーザーが同意した場合は、以下の監査をすべて実行します。
  3. すでに実行したとユーザーが答えた場合は、いつ実行したかを尋ねます。24時間以上前の場合、またはその後にコードが変更された場合は、再実行を勧めます。

仕組み

ステップ1:技術スタックの検出

プロジェクトの技術スタックを特定するため、次のチェックを順番に実行します。

Framework detection:
  package.json exists        -> Node.js project
    "next" in dependencies   -> Next.js
    "react" in dependencies  -> React (if not Next.js)
    "vue" in dependencies    -> Vue
    "svelte" in dependencies -> Svelte
    "astro" in dependencies  -> Astro
    "express" in dependencies -> Express
    "fastify" in dependencies -> Fastify
    "hono" in dependencies   -> Hono
  requirements.txt or pyproject.toml -> Python project
    "django" present         -> Django
    "flask" present          -> Flask
    "fastapi" present        -> FastAPI
  go.mod exists              -> Go project
  Cargo.toml exists          -> Rust project

Database detection:
  "@supabase/supabase-js" in package.json -> Supabase
  supabase/ directory exists              -> Supabase
  "prisma" in dependencies                -> Prisma (check schema for DB type)
  "mongoose" in dependencies              -> MongoDB
  "pg" or "postgres" in dependencies      -> PostgreSQL
  firebase.json or .firebaserc exists     -> Firebase

Deploy target detection:
  vercel.json or .vercel/ exists          -> Vercel
  netlify.toml exists                     -> Netlify
  Dockerfile exists                       -> Docker/VPS
  fly.toml exists                         -> Fly.io
  railway.json exists                     -> Railway
  .platform/applications.yaml            -> Platform.sh

Auth detection:
  "@clerk" in dependencies                -> Clerk
  "next-auth" in dependencies             -> NextAuth
  "@supabase/auth-helpers" in deps        -> Supabase Auth
  "firebase/auth" in imports              -> Firebase Auth

AI/LLM detection:
  "openai" in dependencies                -> OpenAI
  "@anthropic-ai/sdk" in dependencies     -> Claude API
  "@google/generative-ai" in deps         -> Gemini

続行する前に、検出した技術スタックを報告します。これによって、どのチェックが該当するかが決まります。references/checks.md で特定の技術スタックが指定されているチェックは、その技術スタックが検出されなかった場合にスキップします。

ステップ2:自動チェックの実行

次の順番でカテゴリを実行します:SEC、DB、CODE、DEP、AI、DEPLOY、FE、OBS。重大な問題が最も多く見つかるため、セキュリティとデータベースを最初に実行します。

各カテゴリについて、references/patterns.md のパターンを使用して、references/checks.md にある自動スキャン可能なチェックをすべて実行します。

各カテゴリの完了後に進捗を報告します。

[1/8] Security: 3 FAIL, 12 PASS, 3 SKIP
[2/8] Database: 1 FAIL, 5 PASS, 6 SKIP
...

結果は次のように報告します。

  • PASS:チェックに合格
  • FAIL:問題を検出(ファイルパスと行番号を含む)
  • SKIP:この技術スタックには該当しない
ステップ3:手動確認

自動化できないチェック(バックアップからの復元テスト、ロールバック計画の有無、ステージングテストの合格)はチェックリストとして提示し、それぞれについてユーザーに確認を求めます。

ステップ4:判定

結果を次の3つの重大度に分類します。

  • CRITICAL:リリース前に必ず修正(シークレットの露出、ルートに認証がない、HTTPS がない、SQL インジェクションの脆弱性、Supabase テーブルに RLS がない)
  • HIGH:リリース前に修正するべき(エラーバウンダリがない、レート制限がない、本番環境に console.log がある、ページネーションがない)
  • ADVISORY:推奨事項だが、リリースを妨げない(OG タグがない、カスタム 404 ページがない、アナリティクスがない、SBOM がない)

最終出力:

SHIP GATE REPORT
================
Stack: Next.js + Supabase + Vercel
Scan time: 12s

CRITICAL (3 items, must fix)
  FAIL  [SEC-01] API key found in src/lib/api.ts:14
  FAIL  [DB-07] RLS not enabled on "profiles" table
  FAIL  [SEC-05] No CSRF protection on /api/checkout

HIGH (5 items, should fix)
  FAIL  [CODE-01] 12 console.log statements in production code
  FAIL  [CODE-03] Empty catch block in src/utils/auth.ts:45
  FAIL  [DEP-04] 3 critical npm audit vulnerabilities
  FAIL  [DEPLOY-05] No rollback plan documented
  MANUAL [DEPLOY-06] Staging test not confirmed

ADVISORY (4 items, recommended)
  FAIL  [FE-01] Missing OG meta tags
  FAIL  [FE-03] No custom 404 page
  PASS  [OBS-01] Error monitoring configured
  SKIP  [AI-01] No AI/LLM usage detected

VERDICT: DO NOT SHIP (3 critical issues)
Fix critical items and re-run.

CRITICAL の項目が残っていない場合、判定は CLEAR TO SHIP です。 HIGH の項目のみが残っている場合、判定は SHIP WITH CAUTION(リスクを承認)です。

カテゴリ

コードプレフィックスが付いた8つのカテゴリがあります。各チェックの詳細は references/checks.md を参照してください。

PrefixCategoryAutoManualTool
SECセキュリティ1530
DBデータベース750
DEPLOYデプロイ380
CODEコード品質1101
AIAI/LLM セキュリティ530
DEP依存関係501
FEフロントエンド品質730
OBSオブザーバビリティ250

対象範囲

このスキルは監査を行います。問題の修正は行いません。問題が見つかった場合は、ファイルの場所と修正方法のガイダンスを添えて報告します。修正はユーザー、または別のスキル(systematic-debugging、backend-patterns、shadcn-stack)が担当します。

このスキルでは、次の作業は行いません。

  • CI/CD パイプラインのセットアップ
  • インフラストラクチャのプロビジョニング
  • 監視ツールの設定
  • デプロイ後の実行(デプロイ前のみ)

連携ポイント

  • karpathy-coder:karpathy-check の合格後に ship-gate を実行します。まずシンプルさを優先し、その後、本番運用の準備状況を確認します。
  • adversarial-reviewer:ship-gate が CRITICAL と判定した項目について、詳細なセキュリティレビューを行います。
  • security-pen-testing:SEC カテゴリの検出事項に対する侵入テストの手法を提供します。
  • code-reviewer:一般的なコード品質レビューを行い、ship-gate の自動チェックを補完します。

コメント