关于 api-designer
api-designer 是面向 API 开发者的契约优先设计技能,支持 REST、GraphQL 和 gRPC。它可生成 OpenAPI 3.1 规范、审查设计、分析兼容性并搭建客户端代码结构。
主要功能
- 01设计 REST、GraphQL 和 gRPC API
- 02生成 OpenAPI 3.1 规范
- 03审查 API 设计与安全性
- 04分析版本间兼容性
- 05搭建客户端代码结构
适用场景
- 01根据需求设计新 API
- 02从现有代码生成 API 规范
- 03评估变更是否破坏兼容性
- 04规划 API 版本与弃用
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ wyattowalsh/ agents --skill api-designer安装后在 Claude Code 中输入/api-designer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
data/http-conventions.jsonstatus-codes.jsonevals/api-design.jsoncompat-mode.jsonevals.jsonexplicit-invocation.jsonimplicit-trigger.jsonnegative-control.jsonreferences/graphql-patterns.mdgrpc-patterns.mdrest-conventions.mdversioning-strategies.mdscripts/api-endpoint-matrix.pyapi-spec-validator.pycheck.pycompat-checker.pyscripts/asset_toolkit/__init__.py_shared.pycommon.pypackage.pyvalidate_evals.pyvalidate_hooks.pyvalidate_skill.pytemplates/dashboard.html详细介绍
API Designer
跨 REST、GraphQL 和 gRPC 进行契约优先的 API 设计。生成 OpenAPI 3.1 规范,审查现有 API,分析向后兼容性,并搭建客户端代码框架。
规范术语
| 术语 | 定义 |
|---|---|
| spec | 描述 API 接口面的 OpenAPI 3.1 文档(YAML 或 JSON) |
| endpoint | REST API 中的路径 + 方法组合;GraphQL 中的查询/变更;gRPC 中的 RPC |
| breaking change | 任何会导致现有客户端在不修改代码的情况下无法运行的变更 |
| non-breaking change | 向后兼容的变更(新增字段、新端点、可选参数) |
| resource | 通过 API 暴露的领域实体(REST 中基于名词的 URL 路径段) |
| contract | API 生产者与消费者之间由 spec 定义的正式约定 |
| protocol | API 范式:REST、GraphQL 或 gRPC |
| surface | API 暴露的全部端点、类型和操作 |
| versioning strategy | 传达 breaking change 的方式:URL 路径、标头或查询参数 |
分派
| $ARGUMENTS | 操作 |
|---|---|
design <requirements> | 根据需求设计新 API |
spec <code or path> | 根据现有代码生成 OpenAPI 3.1 spec |
review <spec or path> | 审查现有 API 设计 |
version <spec or path> | 制定版本管理和弃用策略 |
compat <old> <new> | 分析向后兼容性差异 |
sdk <spec or path> | 搭建客户端代码结构 |
| 关于 API 设计的自然语言描述 | 根据意图自动检测模式 |
| 空 | 显示含示例的模式菜单 |
模式菜单(参数为空时)
| # | 模式 | 示例 |
|---|---|---|
| 1 | 设计 | design "User management API with RBAC" |
| 2 | Spec | spec src/routes/ |
| 3 | 审查 | review openapi.yaml |
| 4 | 版本管理 | version openapi.yaml |
| 5 | 兼容性 | compat v1.yaml v2.yaml |
| 6 | SDK | sdk openapi.yaml |
选择一个编号,或描述你的需求。
协议检测
进入任何模式之前,先根据输入检测 API 协议。分类结果决定适用的约定和模式。
检测信号:
| 信号 | REST | GraphQL | gRPC |
|---|---|---|---|
| 文件扩展名 | .yaml、.json(OpenAPI) | .graphql、.gql | .proto |
| 关键词 | endpoint、resource、CRUD、path | query、mutation、subscription、resolver | service、rpc、message、protobuf |
| URL 模式 | /api/v1/resources | /graphql | gRPC 服务名称 |
| 代码模式 | Express/FastAPI 路由、控制器 | Schema 定义、解析器 | Proto 服务定义 |
路由规则:
- 信号明确指向一种协议:按该协议的约定继续
- 信号混杂或存在歧义:询问用户 —“使用哪种协议?[REST / GraphQL / gRPC]”
- 没有协议上下文(仅有需求):默认使用 REST,并说明这一假设
根据检测到的协议,加载 references/rest-conventions.md、references/graphql-patterns.md 或 references/grpc-patterns.md。
模式 A:设计
根据需求设计新 API。读取 references/rest-conventions.md(或特定协议的参考文档)。
设计步骤
- 解析需求 — 提取资源、关系、操作、身份验证需求和约束
- 资源建模 — 定义资源及其属性、关系和基数
- 端点设计 — 按照协议惯例,将 CRUD 和自定义操作映射到端点
- 请求/响应架构 — 定义负载及其类型、验证规则和示例
- 身份验证策略 — 根据使用场景推荐身份验证方式(API 密钥、OAuth2、JWT)
- 错误约定 — 定义错误响应格式,包括代码、消息和详细信息对象
- 分页与筛选 — 应用游标或偏移量分页,采用筛选查询模式
- 速率限制 — 根据端点敏感度和预期负载推荐限制
- 生成规范 — 输出完整的 OpenAPI 3.1 YAML
- 验证 — 对生成的规范运行
scripts/api-spec-validator.py
模式 B:规范
从现有代码生成 OpenAPI 3.1。
规范步骤
- 扫描代码库 — 读取路由定义、控制器、处理程序和装饰器
- 提取端点 — 将代码映射为路径、方法、参数和响应类型
- 推断架构 — 根据类型注解或运行时类型构建请求/响应架构
- 生成规范 — 输出包含所有已发现端点的 OpenAPI 3.1 YAML
- 验证 — 运行
scripts/api-spec-validator.py - 差距报告 — 列出缺少描述、示例或错误响应的端点
模式 C:审查
审计现有 API 设计。仅进行只读分析。
审查步骤
- 解析规范 — 加载并验证 OpenAPI 文档
- 运行验证器 — 使用
scripts/api-spec-validator.py检查结构问题 - 运行端点矩阵 — 使用
scripts/api-endpoint-matrix.py查看 API 接口概览 - 检查惯例 — 根据
references/rest-conventions.md验证命名、HTTP 方法用法和状态码 - 安全审计 — 检查身份验证覆盖范围、HTTPS 强制执行情况和敏感数据泄露情况
- 一致性检查 — 验证命名模式、响应封装一致性和错误格式统一性
- 报告 — 按严重程度(严重、警告、信息)呈现发现的问题,并提供具体的修复建议
模式 D:版本
版本管理和弃用策略。
版本步骤
- 分析当前状态 — 解析规范并识别版本标记
- 推荐策略 — 比较 URL 路径、标头和查询参数版本管理方式(加载
references/versioning-strategies.md) - 弃用计划 — 为已弃用端点制定时间表、Sunset 标头和迁移指南
- 版本矩阵 — 用表格展示各版本中包含的端点
- 迁移指南模板 — 提供供使用方迁移文档使用的框架
模式 E:兼容性
比较两个规范版本之间的向后兼容性差异。
兼容性步骤
- 加载两个规范 — 解析旧版和新版 OpenAPI 文档
- 运行兼容性检查器 —
scripts/compat-checker.py <old> <new> - 变更分类 — 按变更类型和位置区分破坏性与非破坏性变更
- 影响评估 — 确定受影响的使用方并估算迁移工作量
- 补救方案 — 针对每项破坏性变更,提出向后兼容的替代方案
模式 F:SDK
根据规范搭建客户端代码结构。不是可发布的 SDK 包,而是结构框架。
SDK 步骤
- 解析规范 — 提取端点、架构和身份验证要求
- 按资源分组 — 将端点整理到逻辑清晰的客户端模块中
- 生成客户端框架 — 生成带类型化参数和返回类型的方法存根
- 身份验证集成 — 在客户端构造函数中接入身份验证机制
- 错误处理 — 将 API 错误代码映射为客户端异常
- 用法示例 — 为每种资源提供一个示例,展示常见操作
脚本
| 脚本 | 用途 | 运行时机 |
|---|---|---|
scripts/api-spec-validator.py | 验证 OpenAPI 3.x 的完整性和最佳实践 | 设计、规范、评审 |
scripts/api-endpoint-matrix.py | 从规范中提取端点清单 | 评审、版本、SDK |
scripts/compat-checker.py | 比较两个规范中的破坏性变更 | 兼容性 |
脚本调用
uv run python skills/api-designer/scripts/api-spec-validator.py <spec-path>
uv run python skills/api-designer/scripts/api-endpoint-matrix.py <spec-path>
uv run python skills/api-designer/scripts/compat-checker.py <old-spec> <new-spec>
所有脚本均将 JSON 输出到 stdout,将警告输出到 stderr。
参考文件索引
| 文件 | 内容 | 阅读时机 |
|---|---|---|
references/rest-conventions.md | REST 最佳实践、HTTP 方法、状态码、命名、分页、速率限制 | 设计、规范、评审(REST) |
references/graphql-patterns.md | GraphQL 模式设计、查询模式、错误处理、订阅 | 设计、规范、评审(GraphQL) |
references/grpc-patterns.md | gRPC 服务模式、proto 设计、流式传输、错误码 | 设计、规范、评审(gRPC) |
references/versioning-strategies.md | URL、标头与查询参数版本控制、弃用、向后兼容性检查清单 | 版本、兼容性 |
data/http-conventions.json | HTTP 方法语义参考数据 | 脚本 |
data/status-codes.json | HTTP 状态码指南参考数据 | 脚本 |
不要一次性加载所有参考资料。仅加载检测到的协议和当前模式所需的内容。
重要规则
- 进入任何模式前,始终先检测协议——没有依据时,绝不假定是 REST
- 如果协议不明确,请询问用户——不要猜测
- 生成的规范在呈现给用户前必须通过
api-spec-validator.py验证 - 每个端点都必须至少定义一个错误响应(4xx 或 5xx)
- 为返回集合的列表端点设计 API 时,绝不省略分页
- 兼容性模式中的破坏性变更必须包含修复建议
- SDK 模式仅生成结构框架——绝不声称输出可用于生产环境
- 始终一致地使用规范术语——使用“规范”,而非“swagger”;使用“端点”,而非“路由”
- 所有规范均以 OpenAPI 3.1 为目标——不要生成 Swagger 2.0 或 OpenAPI 3.0
- 不适用于 MCP 服务(请使用 mcp-creator)或前端 API 客户端代码
范围边界
适用于:
- 根据需求设计新的 REST、GraphQL 或 gRPC API
- 根据现有代码生成 OpenAPI 规范
- 评审和审计 API 设计
- 版本控制策略和弃用规划
- 分析规范版本之间的破坏性变更
- 搭建客户端代码结构
不适用于:
- MCP 服务 API(请使用
/mcp-creator) - 前端 API 客户端实现
- API 网关配置
- 运行时 API 测试或负载测试
- 数据库模式设计(请使用
/database-architect)
评论
支持 Markdown