mcpField
S
ship-gate

ship-gate

github.com/alirezarezvani测试与质量28.9k477 次安装2 天前更新
代码仓库

关于 ship-gate

Ship Gate 是面向开发团队的部署前代码库审计 Skill,检查项目的生产就绪情况。它覆盖八类自动扫描与人工确认,并按严重程度和代码位置报告问题。

主要功能

  1. 01识别项目技术栈
  2. 02扫描八类审计项目
  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

详细介绍

发布门禁

上线前审计:扫描代码库,并在发布前对 8 个类别报告通过/失败/需手动确认。

拦截行为

当用户说“推送到生产环境”“部署”“发布吧”“上线”或类似表达部署意图的话时,不要继续部署。请改为:

  1. 询问:“你运行过发布门禁了吗?需要我现在扫描吗?”
  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:判定结果

将结果分为三个严重级别:

  • CRITICAL:发布前必须修复(密钥暴露、路由无身份验证、没有 HTTPS、存在 SQL 注入风险、Supabase 表没有 RLS)
  • HIGH:发布前应该修复(没有错误边界、没有速率限制、生产环境中存在 console.logs、没有分页)
  • 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 项,则判定结果为:可以发布。 如果只剩下 HIGH 项,则判定结果为:谨慎发布(确认已知风险)。

类别

共八个类别,每个类别都有代码前缀。完整检查详情见 references/checks.md。

前缀类别自动检查手动检查工具
SEC安全1530
DB数据库750
DEPLOY部署380
CODE代码质量1101
AIAI/大模型安全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 标记为关键的问题进行深入安全审查
  • security-pen-testing:为 SEC 类别的发现提供渗透测试方法
  • code-reviewer:通用代码质量审查,可补充 ship-gate 的自动化检查

评论

支持 Markdown