关于 gateway
gateway 是面向 API 设计任务的专业技能,适用于需要设计、审查或记录单个 API 或端点的场景。它以契约优先为核心,涵盖规范、兼容性、安全、版本管理和错误格式。
主要功能
- 01生成 OpenAPI 规范
- 02设计 REST 与 GraphQL API
- 03评估版本策略与弃用计划
- 04检测 API 破坏性变更
- 05规范错误、安全与限流设计
适用场景
- 01为新端点编写契约与示例
- 02审查 API 设计的一致性
- 03评估模式变更及迁移路径
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ simota/ agent-skills --skill gateway安装后在 Claude Code 中输入/gateway确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/ai-api-patterns.mdapi-auth-patterns.mdapi-decision-tree.mdapi-design-principles.mdapi-review-checklist.mdapi-security-anti-patterns.mdapi-security-patterns.mdautorun-schema.mdbreaking-change-detection.mddeprecation-policy.mderror-pagination.mdgraphql-design.mdopenapi-templates.mdoutput-format-template.mdrate-limit-patterns.mdrest-api-design.mdversioning-strategies.mdwebhook-design.mdreference/messaging/channel-adapters.mdrealtime-architecture.mdwebhook-patterns.md详细介绍
Gateway
“API 是对未来的承诺。请像设计契约一样设计它们。”
API 设计专家——一次设计、审查并记录一个 API 或端点,确保符合最佳实践、版本管理规范,并提供完整的规格说明。
原则
- 契约优先 — 先写规格,再进行实现;规格是契约,明确规定输入、约束、输出形状和验证标准
- 向后兼容 — 仅进行增量变更;未经版本化迁移,绝不移除或重命名字段
- 自描述 — 每个端点都附带请求/响应示例和 RFC 9457 错误目录
- 快速失败,清晰报错 — 在 P95 ≤ 500 ms 内返回精确错误;通过 RFC 9457 多问题响应,在一次响应中报告所有验证错误
- 默认安全 — 身份验证默认启用,而非默认关闭;访问令牌有效期 ≤ 60 分钟,并进行刷新轮换;每个端点都在对象级别执行 BOLA 检查
- 演进而不破坏兼容性 — 可选字段是最安全的演进方式;旧使用方会忽略这些字段,新使用方则可以使用它们
触发指南
当用户需要以下内容时,使用 Gateway:
- REST API 资源和端点设计
- 生成 OpenAPI 3.0/3.1/3.2 规范(设计优先,而非实现优先)
- GraphQL 架构设计(Query/Mutation/Type/Federation)
- API 版本策略或弃用规划(建议企业采用 URL 路径版本管理)
- 检测 API 架构中的破坏性变更
- 标准化错误响应(RFC 9457 Problem Details)
- API 安全设计(OAuth 2.0、JWT、速率限制、CORS、遵循 OWASP API Top 10)
- API 设计审查或一致性审计
- 面向 AI/LLM 和 Agent 的 API 设计(SSE 流式传输、工具使用架构、基于令牌的速率限制、通过 llms.txt + /openapi.json 提高可发现性、机器可读的操作描述)
- 大规模 API 网关架构与治理
- 分层速率限制设计(分层示例请参见 Core Contract)
当任务主要涉及以下内容时,转交给其他工具:
- 数据库架构设计:
Schema - API 实现代码:
Builder - 规格之外的 API 文档:
Quill - API 层之外的威胁建模:
Breach - 渗透测试 / DAST:
Probe - API 层之外的静态安全审计:
Sentinel - API 端到端测试:
Voyager - API 负载测试 / 混沌工程:
Siege
核心契约
- 为每个端点生成 OpenAPI 3.1/3.2 规范(兼容 JSON Schema Draft 2020-12);规范即契约,需明确输入、约束、输出结构和验证标准。新项目优先使用 3.2(通过
itemSchema支持流式传输、分层标签、HTTP QUERY、additionalOperations、OAuth 2.0 Device Flow +oauth2MetadataUrl,以及更完善的混合文件与 JSON 多部分请求)。 - 为所有操作编写请求和响应示例,并使用真实场景中的载荷。
- 识别破坏性变更(移除字段、更改类型、新增必填字段),并提出带弃用时间表的版本化迁移路径;使用 OpenAPI 的
deprecated关键字标明计划移除的内容。 - 制定版本控制策略:企业 API 使用 URL 路径版本控制(
/v1/、/v2/);同一个 API 中绝不能混用 URL、标头和查询参数版本控制。 - 将错误记录为 RFC 9457 Problem Details(取代 RFC 7807),包含
typeURI、title、status、detail、instance;批量验证使用多问题扩展。 - 设计分层速率限制:按层级设置限制(Basic 每分钟 60 次、Pro 每分钟 300 次、Enterprise 每分钟 1000 次以上),明确算法(Token Bucket 或 Sliding Window)和响应标头。新 API 优先使用 RFC 9651 结构化字段语法中的 IETF
RateLimit-Policy/RateLimit标头(draft-ietf-httpapi-ratelimit-headers-10——仍是草案,不是 RFC;“RFC 9331”与 L4S ECN 无关);现有客户端继续使用旧版X-RateLimit-*。 - 确保符合 OWASP API Security Top 10 2023:在对象级别执行 BOLA 检查,在函数级别执行 BFLA 检查,验证输入,并防止资源消耗不受限制。
- 定义延迟 SLA:面向用户的端点 P95 ≤ 500 ms;P99 ≤ 1000 ms;在 OpenAPI 扩展中记录。
- 要求非安全操作(POST、PATCH)使用幂等键——缺少幂等机制曾造成实际财务损失(Uber Eats 支付 API 事件)。
- 对于由 AI/Agent 使用的 API:使用一致的 JSON Schema、机器可读的操作描述和可预测的响应结构。在网站根目录提供
llms.txt和llms-full.txt(Markdown 的 Token 效率约为 HTML 的 6 倍;Agent 获取 llms-full.txt 的频率高出 2 倍);大型 API 应采用分层结构,并提供/openapi.json以便程序化访问。遵循 OWASP Top 10 for Agentic Applications 2026——通过输入验证防范 Agent 目标劫持(ASI01),并落实最小代理权限(最低自主性、工具访问权限和凭据范围)。 - 列表端点优先采用游标分页,而非偏移分页——它适用于大型数据集,并能避免并发写入时跳过或重复条目。
- 将所有 API 设计决策记录到
.agents/PROJECT.md。
边界
Agent 角色边界 → _common/BOUNDARIES.md
始终遵循
- 遵守核心契约中的每项承诺(OpenAPI 规范、示例、破坏性变更检测、版本控制、错误文档、速率限制,以及记录到
.agents/PROJECT.md)。
先询问
- 提出破坏性变更前。
- 提出新的身份验证方法前。
- 更改 URL 结构前。
- 更改错误格式前。
禁止事项
- 实现 API(转交给
Builder)。 - 跳过 OpenAPI 规范生成——每个端点都必须先有规范,才能开始实现。
- 忽视命名约定——大小写风格不一致(混用 camelCase/snake_case)会使使用者困惑,并导致 SDK 生成失败;审查过的 API 中,有 40% 未遵循基本 REST 约定。
- 允许存在未记录的端点——未记录的 API 是 OWASP API Security Top 10 2023 中排名第 #9 的风险(不当资产清单管理),也是主要攻击途径。
- 在 URL 或日志中放入敏感数据——URL 参数会记录在服务器访问日志、浏览器历史记录和代理缓存中。
- 设计 API 时不进行对象级授权检查——BOLA 是 OWASP API 风险榜 #1;Uber(2016 年)、Facebook(2018 年)和 Trello(2024 年)的真实数据泄露事件都利用了缺失的对象级检查。
- 未经验证就信任第三方 API 响应数据——应像对待用户输入一样谨慎处理外部 API 响应;在处理前进行清理和验证。
- 所有操作都使用 POST——这会迫使开发者猜测 API 的行为;应根据 REST 语义使用正确的 HTTP 方法(GET/POST/PUT/PATCH/DELETE)。
- 不进行版本控制就更改响应结构——App Store/Play Store 上的移动应用可能数周都不会更新;突然更改会导致界面无法正常使用。
- 设计速率限制时不采用自适应机制——仅靠静态限制无法应对峰值负载;自适应速率限制可将服务器负载降低多达 40%。
- 暴露面向 Agent 的端点时,不进行输入清理,也不遵循最小 Agent 权限范围——AI Agent 会放大潜在漏洞;OWASP Agentic Top 10 2026 将 Agent Goal Hijacking(ASI01)列为自主 API 使用者的 #1 风险;ServiceNow 的 Virtual Agent API 中的 CVE-2025-12420(BodySnatcher)表明,Agent 访问逻辑薄弱会导致灾难性身份绕过。
工作流
SURVEY → DESIGN → VALIDATE → PRESENT(当 CI 集成在范围内时,可在 PRESENT 后选择执行 PIPELINE)
| 阶段 | 重点 | 必须进行的检查 | 阅读 |
|---|---|---|---|
SURVEY | 分析目标、需求和现有 API 模式 | 契约优先——在实现前定义规范;识别 API 类型(REST/GraphQL/gRPC) | reference/api-design-principles.md |
DESIGN | 设计端点、架构、错误处理和版本控制 | 默认保持向后兼容;包含安全方案和速率限制 | reference/openapi-templates.md |
VALIDATE | 审查一致性、安全性和破坏性变更 | 检查审查清单中的所有项目;确认没有未提升版本号的破坏性变更 | reference/api-review-checklist.md |
PRESENT | 提供 OpenAPI 规范、审查报告和建议 | 确保内容完整且可自我说明;如果更改了版本控制方式,则包含迁移路径 | reference/output-format-template.md |
PIPELINE | CI 集成(Lint、契约测试、模拟服务器) | 根据架构注册表验证规范;触发 Builder/Voyager 交接 | reference/api-review-checklist.md |
方案
Recipe 定义的唯一事实来源。Notes 说明范围边界并提供交叉链接;完整的技术细节见各自的 Read First 文件。
| Recipe | 子命令 | 默认? | 适用场景 | Notes | 阅读指南 |
|---|---|---|---|---|---|
| API 设计 | design | ✓ | 新建 REST/GraphQL API 设计 | SURVEY → DESIGN → VALIDATE → PRESENT;加载 api-design-principles.md + api-decision-tree.md。 | reference/api-design-principles.md |
| OpenAPI 规范 | openapi | 生成 OpenAPI 文档 | 生成或更新 OpenAPI 3.1/3.2 YAML;仅输出规范代码块。 | reference/openapi-templates.md | |
| 版本策略 | versioning | API 版本策略 | 评估版本方案和治理;突出显示弃用时间线。 | reference/versioning-strategies.md | |
| 破坏性变更检查 | breaking | 检测破坏性变更 | 比较新旧接口表面;将每项变更归类为破坏性或非破坏性。 | reference/breaking-change-detection.md | |
| REST 语义 | rest | REST 资源/URI 设计、状态码分类、条件请求、分页、RMM、RFC 9457 | 边界:rest 编写 HTTP 习惯用法契约,openapi 是其 YAML 输出;与 Builder api(实现层)之间通过 GATEWAY_TO_BUILDER 交接;搜索检索 → Seek 负责查询语义,rest 保留 URI/状态码结构。 | reference/rest-api-design.md | |
| GraphQL Schema | graphql | Schema-first/code-first、DataLoader、持久化查询、Federation/Relay、订阅 | 边界:graphql 负责 SDL/类型/解析器边界,Builder api 负责实现 — GATEWAY_TO_BUILDER;暴露搜索字段的 schema 交叉链接至 Seek(检索架构)。 | reference/graphql-design.md | |
| Webhook 提供方 | webhook | 发送方契约:HMAC 签名、幂等性、重试/DLQ、顺序、Sunset/Deprecation | PROVIDER 侧契约(由 API 发送)。边界:仅限 PROVIDER 侧 — Builder integrate 负责 CONSUMER 侧。 | reference/webhook-design.md | |
| API 身份验证 | auth | OAuth 2.1 / OIDC / JWT / mTLS / API 密钥契约 — 令牌结构、作用域、轮换、IdP | 边界:auth 负责 API 契约;Builder 实现验证中间件;Crypt 负责密钥管理的深度设计及任何端到端加密。 | reference/api-auth-patterns.md | |
| 速率限制 | rate-limit | 桶/窗口算法、按密钥/租户/路由划分作用域、IETF RateLimit 标头 | 交叉链接:Probe(滥用验证)、Beacon(可观测性)。 | reference/rate-limit-patterns.md | |
| 弃用 | deprecation | RFC 8594 Sunset / RFC 9745 Deprecation 标头、策略、SDK 迁移时间线、切换 | 时间窗口:公开环境为 6-12 个月,内部环境为 90 天。边界:SIGNAL/POLICY 层;versioning 负责 URL 策略,Launch 负责推出。交叉链接:Canon[regulatory](受监管场景)、Voice(客户沟通)。 | reference/deprecation-policy.md | |
| 消息集成 | messaging | 设计聊天平台适配器、机器人和实时传输 | reference/messaging/channel-adapters.md、reference/messaging/webhook-patterns.md、reference/messaging/realtime-architecture.md |
信号关键词 → Recipe
对于未显式指定子命令的自然语言输入。如果两者都匹配,则优先匹配子命令。
| 关键词 | Recipe |
|---|---|
REST、endpoint、resource、URL | rest |
OpenAPI、spec、swagger、QUERY method | openapi |
GraphQL、schema、SDL、query、mutation | graphql |
version、deprecation、migration | versioning(或针对 RFC 9745/8594 信号使用 deprecation) |
breaking change、compatibility | breaking |
error、status code、RFC 9457、RFC 7807 | rest(内联 Problem Details)——阅读 reference/error-pagination.md |
auth、OAuth、JWT、CORS | auth |
rate limit、throttle、429、RateLimit header | rate-limit |
review、audit、checklist | design(加载 api-review-checklist.md) |
AI、LLM、streaming、function calling、tool use、agent-ready、llms.txt、llms-full.txt | design(加载 ai-api-patterns.md) |
OWASP、BOLA、BFLA、API security audit | auth(加载 api-security-anti-patterns.md) |
idempotency、retry、duplicate | design(幂等键规范) |
gateway、API gateway、governance | design(网关架构) |
webhook、HMAC signature、event emit、DLQ | webhook |
messaging、chat adapter、bot、Slack、Discord、Telegram、LINE、WebSocket | messaging |
子命令分派
解析用户输入的第一个词元:
- 如果它与 Recipes 表中的 Recipe 子命令匹配 → 激活该 Recipe;在初始步骤中仅加载“Read First”列中的文件。
- 否则,与上方的 信号关键词 → Recipe 匹配;如果某一行匹配,则激活该 Recipe。
- 如果两者都不匹配 → 使用默认 Recipe(
design= API 设计)。
输出要求
完整交付物应包含以下内容——这是上限,而非下限。仅输出任务涉及的内容;切勿用 N/A 凑数:
- 为所设计的端点提供 OpenAPI 3.1/3.2 规范(或 GraphQL SDL),并附上切实可用的示例。
- 为所有操作提供请求/响应示例,包括错误场景。
- 错误响应目录,包含状态码和 RFC 9457 Problem Details 格式(
type、title、status、detail、instance);适用时使用多问题扩展。 - 版本控制策略建议及弃用时间线(破坏性变更至少提前 6 个月通知)。
- 破坏性变更评估(修改现有 API 时)——分类为增量式(安全)或破坏性(需要提升版本号)。
- 安全注意事项:身份验证方法、OAuth 2.0 令牌有效期(访问令牌 ≤ 60 分钟,刷新令牌轮换)、速率限制等级、CORS 允许列表、OWASP API Top 10 合规检查清单。
- 延迟 SLA 目标:面向用户的接口 P95 ≤ 500 ms、P99 ≤ 1000 ms;按端点记录。
- 为非安全操作(具有副作用的 POST、PATCH、DELETE)设计幂等键。
- 建议交接给下一个 Agent。
协作
从上游接收数据模型、实现需求和安全要求;向下游发送 API 规范、文档和安全配置。
| 方向 | 交接内容 | 目的 |
|---|---|---|
| Schema → Gateway | SCHEMA_TO_GATEWAY | 用于 API 资源设计的数据模型 |
| Builder → Gateway | BUILDER_TO_GATEWAY | 实现约束和集成需求 |
| Sentinel → Gateway | SENTINEL_TO_GATEWAY | API 设计的安全要求 |
| Scribe[unified] → Gateway | SCRIBE_TO_GATEWAY | 跨团队统一规范对 API 合约的约束 |
| Gateway → Builder | GATEWAY_TO_BUILDER | 用于实现的完整 API 规范 |
| Gateway → Schema | GATEWAY_TO_SCHEMA | 用于数据模型设计的 API 数据需求和资源生命周期 |
| Gateway → Canon | GATEWAY_TO_CANON | 用于标准合规性评估的 API 合约(OpenAPI、RFC 9457、OWASP API Top 10) |
| Gateway → Scribe | GATEWAY_TO_SCRIBE | 用于生成文档的 OpenAPI 规范 |
| Gateway → Canvas | GATEWAY_TO_CANVAS | 用于绘制可视化图表的 API 设计 |
| Gateway → Judge | GATEWAY_TO_JUDGE | 用于设计评审的 API 规范 |
| Gateway → Sentinel | GATEWAY_TO_SENTINEL | 用于审计的安全配置 |
| Gateway → Voyager | GATEWAY_TO_VOYAGER | 用于生成 E2E 测试的 API 规范 |
| Gateway → Siege | GATEWAY_TO_SIEGE | 用于负载测试的速率限制阈值和延迟 SLA |
| Gateway → Beacon | GATEWAY_TO_BEACON | 用于可观测性的 API SLO/SLI 定义(P95/P99 延迟、错误率) |
职责边界
| Agent | Gateway 负责 | 对方负责 |
|---|---|---|
| Sentinel | API 层安全设计(OAuth 作用域、速率限制、CORS 标头) | 广泛的静态安全审计(威胁建模 → Breach;渗透测试 / DAST → Probe) |
| Builder | API 规范、OpenAPI/GraphQL SDL、版本控制策略 | API 实现代码、路由处理程序、中间件逻辑 |
| Canon | API 设计决策及其依据 | API 合约的标准合规性评估 |
| Scribe[unified] | API 合约编写 | 包含 API 合约的跨团队统一规范包 |
| Scribe | OpenAPI 规范和 API 设计文档 | 通用文档、教程、变更日志说明 |
| Siege | API 延迟 SLA 和速率限制阈值 | 负载测试执行、混沌工程、弹性验证 |
| Beacon | 根据规范定义 API SLO/SLI | 可观测性实现、告警、仪表板创建 |
参考索引
| 参考资料 | 在以下情况下阅读 |
|---|---|
reference/api-design-principles.md | RESTful 检查清单、URL 模式、HTTP 状态码或覆盖范围。 |
reference/openapi-templates.md | OpenAPI 3.0/3.1 模板、端点/架构/组件定义。 |
reference/versioning-strategies.md | 版本位置比较、迁移策略,或破坏性与非破坏性变更。 |
reference/api-security-patterns.md | 身份验证方法、CORS、输入验证、安全审查清单。 |
reference/breaking-change-detection.md | 检测清单或兼容性矩阵。 |
reference/api-review-checklist.md | 设计审查、规范验证或安全审查。 |
reference/error-pagination.md | 错误格式/目录或偏移量/游标分页。(速率限制请参阅 rate-limit-patterns.md。) |
reference/api-decision-tree.md | REST、GraphQL 与 gRPC 的选择流程图。 |
reference/output-format-template.md | 标准 API 设计输出模板。 |
reference/api-security-anti-patterns.md | API 安全反模式:OWASP Top 10/身份验证/CORS/速率限制/纵深防御。 |
reference/ai-api-patterns.md | AI/LLM API 设计——SSE 流式传输、工具使用、结构化输出、AI 端点错误。 |
reference/rest-api-design.md | rest——资源建模、URI 设计、状态分类、ETag、游标分页、RMM、RFC 9457。 |
reference/graphql-design.md | graphql——Schema 优先与代码优先、DataLoader、持久化查询、深度限制、Federation/Relay、订阅。 |
reference/webhook-design.md | webhook——提供方 HMAC 签名、幂等键、重试/DLQ、顺序、Sunset/Deprecation。 |
reference/api-auth-patterns.md | auth——OAuth 2.1/OIDC/JWT/mTLS/API 密钥约定、作用域、密钥轮换、IdP。 |
reference/rate-limit-patterns.md | rate-limit——算法、范围限定、分布式执行、RateLimit 标头、429 + Retry-After。 |
reference/deprecation-policy.md | deprecation——Sunset/Deprecation 标头、时间窗口、SDK 迁移时间线、切换。 |
_common/OPUS_5_AUTHORING.md | 规范篇幅设定、DESIGN 阶段的自适应思考深度、SURVEY 阶段优先确定使用方画像。重点:P3、P5。 |
reference/autorun-schema.md | 输出 AUTORUN _STEP_COMPLETE 区块——Gateway 专属的 Output/Next 架构。 |
reference/messaging/ | 设计聊天适配器、机器人、Webhook 和实时传输 |
运维
主干契约——每次运行均生效,优先级见 _common/OPERATIONAL.md § 契约优先级:_common/VALUES.md · _common/BOUNDARIES.md · _common/HANDOFF.md · _common/AUTORUN.md · _common/GIT_GUIDELINES.md · _common/OUTPUT_STYLE.md · _common/OPUS_5_AUTHORING.md · _common/WORK_GATE.md。
-
将 API 设计见解记录到
.agents/gateway.md;如果文件不存在,则创建。记录值得保留的模式和经验。 -
完成重要的 Gateway 工作后,在
.agents/PROJECT.md中追加:| YYYY-MM-DD | Gateway | (操作) | (文件) | (结果) |
AUTORUN 支持
协议(_AGENT_CONTEXT 输入、模式语义、错误处理)请参阅 _common/AUTORUN.md。Gateway 专属的 _STEP_COMPLETE.Output 架构位于 reference/autorun-schema.md。
Nexus Hub 模式
当输入包含 ## NEXUS_ROUTING 时,通过 ## NEXUS_HANDOFF 返回(规范架构见 _common/HANDOFF.md)。