关于 authoring-api-spec
authoring-api-spec 是用于编写可实现 API 线缆契约的技能,依据已批准的功能规格及相关设计文档制定内容。它指导 REST、GraphQL 和 RPC/gRPC 的类型化请求响应、认证、错误、示例及版本变更。
主要功能
- 01依据功能规格梳理操作
- 02定义类型化请求与响应
- 03规定认证和授权方式
- 04整理错误与重试行为
- 05记录契约的版本变更
适用场景
- 01将已批准功能转为 API 契约
- 02填写 API 规格模板
- 03修订现有 API 契约
- 04描述 REST、GraphQL 或 RPC 接口
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ bm629/ agent-skills --skill authoring-api-spec安装后在 Claude Code 中输入/authoring-api-spec确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/contract-method.mdsources.mdversioning-and-amend.md详细介绍
authoring-api-spec — SKILL.md
变体: standard · 适用场景: 编写 API 接口的工程线级契约,达到仅凭契约,客户端即可集成、服务端即可实现的标准,且对数据结构、错误或身份验证均无歧义。
概述
此技能介绍如何编写高质量的 API 规范,即 API 接口的工程线级契约。它说明每个操作在线上的形式:请求和响应的数据结构(字段、类型、必填/可选、约束)、身份验证模型、错误模型及完整示例。此技能承载的是编写者的判断力——研究方法和质量标准,而非章节列表。它假定有两位协作者:负责提供章节结构的 api-spec template tool,以及用于依据成熟 API 设计实践夯实契约的深度研究能力。编写者会收到上游 feature-spec(API 必须暴露的行为),以及可能提供的 architecture-doc(服务边界)和 data-model(资源所映射到的实体)——绝不是一张白纸。必须达到的标准是:契约可实现、可调用——客户端工程师能够正确调用每个操作,服务端工程师能够据此实现,且无需询问作者;数据结构、错误或身份验证均无歧义。
何时启用
- 根据已批准的 feature-spec 编写 API 规范,其中列明 API 必须暴露的行为。
- 说明 API 接口的操作、请求/响应架构、身份验证、错误模型和示例(REST、GraphQL 或 RPC/gRPC)。
- 填写 api-spec 模板,其中的每个操作都包含经过研究、决策完备且类型完整的内容。
- 修订已批准的 api-spec,并将其作为有版本记录的增量变更(新增/修改操作、添加/移除字段、将参数设为必填、停用操作)——参见步骤 6。
请勿在以下情况启用:
- 设计持久化数据模型(存储的实体及其关系)→ 这是独立事项,且属于本技能的上游。api-spec 描述线上的 DTO,并引用数据模型;DTO 并非存储的行。
- 编写面向使用者发布的 API 参考文档(最终用户阅读的说明文档,通常由此契约生成)→ 这是独立的下游文档,面向不同的受众。
- 编写实现/架构(端点背后的服务如何构建)→ 这是设计层,不是接口。
- 审查或评定已完成的 api-spec → 使用
reviewing-api-spec(专用质量关卡,与本技能步骤 7 的标准同源);本技能仅用于产出。 - 编写 feature-spec 本身(即行为)→ 这是本技能的上游输入。
输入
阅读计划交给你的每一份文档——即你的 depends_on 集合(由上游文档发现流程确定、能够为本文档提供信息的文档)——并将本文档的内容追溯到这些文档。不要假设输入固定不变:此技能提到的典型上游文档是方法指导,不是对你收到的文档数量设定上限。要做到自成一体——根据你实际收到的任何上下文来编写文档;如果缺少预期的参考文档,就基于现有内容继续,并将缺失之处明确列为假设,绝不要编造内容来填补。并且,只要有研究能力可用,就使用它(deep-research),让文档全面且详尽,而不只是填充模板。
能力上下文(如有提供): 如果调用方注入了 capability_record(来自 capability-map.yaml product_capabilities 的记录),请在步骤 1 前阅读它。它定义了你的范围边界:owns = 你负责的实体;refs = 你引用但不负责的实体;publishes/consumes = 你要呈现的事件;entry_points/exit_points = 用户进入和离开的方式;has_ui/has_api/has_persistence = 适用的界面。若存在此记录,必须将其视为硬性约束——不得超出其定义的范围。
工作流
步骤 1:从模板工具获取结构——不要自行编造大纲
从 api-spec 模板工具(全面版)获取章节结构。不要在此重述或重新推导章节列表;此技能提供的是如何妥善填充这些章节的方法。如果没有可用模板,请获取一份全面的 api-spec 结构(请求生成,或采用以下规范章节:API 概览、操作列表、各操作的请求与响应、共享数据类型、身份验证与授权、错误模型、分页/筛选/速率限制、示例、待解决问题),然后继续。
如果存在 capability_record:将 entry_points 作为 API 操作公开;为 publishes/consumes 事件纳入异步操作;将 refs 字段标记为只读的跨能力引用。
步骤 2:先选择 API 风格——然后以该风格的表示法采用同等严格程度
项目只采用一种 API 风格。先选定一种,再用该风格的表示法呈现契约;但三种风格的严格程度(类型化架构、完整错误、身份验证、示例)都相同:
- REST → OpenAPI/JSON-Schema 规范:端点表(方法 + 路径)、类型化参数和请求体、按 HTTP 状态码列出的响应、可复用架构、声明的安全方案。
- GraphQL → SDL:类型化的对象/标量/枚举/输入类型、
Query/Mutation/Subscription根字段,以及顶层errors数组中的错误。 - RPC / gRPC → proto
service/rpc方法签名,以及类型化的请求和响应消息、状态码。
不要强制非 REST 项目采用 OpenAPI——OpenAPI 是 REST 风格,不是唯一格式。此技能教授的是适用于项目所用风格的契约严格性。
步骤 3:加载上游文档;依据 feature-spec 确定覆盖范围
阅读已批准的 feature-spec 及任何上游上下文(architecture-doc、data-model)——它们是你的输入,不是空白页。feature-spec 中的行为是操作覆盖清单:API 必须公开的每项行为都要对应一个或多个操作;每项操作都必须追溯到某项行为(不得出现无依托或凭空编造的端点)。通过引用将每项资源映射到 data-model 的实体——注明传输 DTO 与存储实体之间的差异(计算得出、派生或省略的字段);不要重复或违背 data-model。如果上游信息不足,请将缺口明确列为待解决问题或注明为假设,绝不要默默编造结构。
步骤 4:通过研究夯实契约
开展深入研究,依据成熟的 API 设计实践夯实契约,包括 REST/HTTP 语义和状态码、JSON-Schema/OpenAPI 严谨性、GraphQL SDL、RPC/gRPC、一致的命名、错误建模(例如 REST 的 RFC 9457 Problem Details)、版本管理和身份验证模式;研究应针对本产品的 API 范围,而非泛泛讨论“API 规范”。如果没有研究能力,切勿捏造字段名、限制、状态码或错误码——应将其明确标记为待验证的假设,并在构建前进行验证。
步骤 5:按各部分的方法执行
按照此方法填写模板的各个部分。精简轻量 API 不需要的部分,并按实际需要分配篇幅。
- API 概览 — 说明 风格 + 传输方式、基础 URL/端点,以及明确的 版本控制方案(URL 路径
/v1最清晰明确且最常见——仅按主要版本号划分,遵循 AIP-185;从一开始就规划版本控制)。在此一次性说明命名和日期/时间约定。 - 版本控制政策——对变更分类 + 规划弃用(从第一天起就说明)。说明 哪些情况算作破坏性变更:增量变更 = 新增一个可选字段/操作/枚举值,兼容宽容读取的客户端会忽略该内容(客户端必须忽略未知响应字段);破坏性变更 = 移除/重命名/缩窄类型/新增必填项/更改默认值/语义变更(AIP-180 中的源代码/线缆格式/语义变更)。并说明移除操作的 弃用 → 终止生命周期:
Deprecation(RFC 9745,即开始弃用的日期)→ 迁移窗口 →Sunset(RFC 8594,即可能停止响应的日期;Sunset≥Deprecation)+ 已发布的迁移路径。此处说明的是 政策;在变更中弃用某个具体操作这一 行为 属于步骤 6(修订)。 - 资源/操作列表 — 预先为每项操作列出一行(方法+路径 / 根字段 /
Service.Method),以便在查看每项操作的详细信息前快速浏览接口范围。 - 每项操作的请求 + 响应——两侧都要完整指定类型。 每个参数/实参/字段都要包含 类型、必填/可选标记和约束(长度、枚举、格式、范围)。每种响应都要对应一个 状态码(或 gRPC 状态 / GraphQL 数据与错误),并注明其正文架构。审慎选择状态码——创建时使用
201+Location,无正文成功时使用204,区分401(未认证)和403(禁止访问/权限范围不足),冲突时使用409,验证失败时使用422/400;不要所有情况都用200。只说明成功路径的操作 尚未完成。 - 共享数据类型 — 每种可复用 DTO 只定义 一次,并按名称引用(
$ref/ SDL 类型 / proto 消息);不要在不同操作中重复内联定义相同结构。这些是 线缆格式类型——如果某个 DTO 是存储实体的投影,请引用数据模型,不要重复描述。 - 身份验证 + 授权 — 指明方案(API 密钥 / OAuth 2.0 + 具体流程——面向用户/公共客户端使用授权码 + PKCE,服务间通信使用客户端凭据 / JWT / mTLS)、凭据的传递位置,以及 授权模型:每个非公开操作都要注明所需的范围/角色,并与操作列表中的授权范围列对应(只写“已认证”而不逐项注明授权范围是不完整的)。说明令牌生命周期 + HTTPS + 不得将密钥放在 URL 中。
- 错误模型——错误目录,而不只是成功路径。 为整个 API 定义 一种统一的错误结构(例如 REST 使用 RFC 9457 Problem Details;GraphQL 使用
errors数组;gRPC 使用google.rpc.Status),其中包含 机器可读代码(客户端据此分支处理——HTTP 状态码粒度太粗)、人类可读消息(供日志使用,不用于面向终端用户的显示)和 请求/跟踪 ID。然后逐项 列出每个操作的所有命名失败情形(验证失败、身份验证失败、禁止访问、未找到、冲突、速率受限、服务器错误),并注明其状态码 及是否可重试(429/5xx可在遵循Retry-After并采用退避策略后重试;4xx不可重试——重试无济于事)。这是 API 规范中最常被遗漏的部分——请认真处理。 - 分页 / 筛选 / 排序 / 速率限制 — 对于集合操作,选择一种分页策略(大型/动态/面向用户的集合使用基于游标的分页;小型/静态集合使用偏移分页),定义请求参数 + 响应封装(下一个游标 / 是否有更多 /
Link标头)+ 默认/最大页面大小;列出可筛选和可排序的字段,并指定稳定的平局判定字段;说明速率限制 + 相关标头 +429的处理方式。 - 完整示例 — 每项主要操作至少提供一组完整的请求/响应示例,且与架构一致(字段名、类型、状态码均相同)。示例与架构矛盾即为缺陷。
步骤 6:修订已批准的契约(增量变更场景)
如果契约已存在,且有人提出变更,只修改增量部分,不要重画整个契约。范围 = 受影响的操作 + 其请求/响应架构 + 共享类型 + 相关错误情况(如果变更具有破坏性,还包括版本控制部分)。然后:
- 对变更分类——增量变更还是破坏性变更。 增量变更(新增可选字段、新增操作、容错读取方会忽略的新增可选响应字段、新增可选错误情况)在当前版本中发布。破坏性变更(移除/重命名字段或操作、收窄类型、将可选字段改为必填、变更默认值/语义、移除枚举值)不得在同一版本中原地修改。作为小幅的版本内编辑发布破坏性变更,会悄然破坏所有正在运行的客户端——这是修订契约时最严重的缺陷。
- 破坏性变更属于版本变更事件,而非编辑。 将其转到新版本(
/v2、新的日期固定版本),并让旧接口走完弃用 → 停用生命周期(Deprecation→ 迁移窗口 →Sunset,Sunset≥Deprecation),同时提供迁移指南(旧版→新版映射)。绝不能悄然修改或删除旧操作。 - 分析向后/向前兼容性——向后兼容:现有版本继续可用;向前兼容:新字段设为可选/提供默认值,允许新增枚举值,操作的含义绝不悄然改变。
- 为增量变更更新版本和变更日志——递增文档自身的版本(§10 修订历史,与 API 版本不同),并添加变更日志条目(增量/破坏性);将退役操作标记为已弃用,而非悄然删除。
- 指出对下游/上游的连锁影响——该变更会影响下游的 api-reference(根据变更后的契约和弃用标记重新同步/生成)、基于该契约构建的实现和测试计划、正在运行的客户端(这正是需要停用窗口的原因),以及发布运行手册;必须先修订上游的 feature-spec(新行为会促成新操作)。明确指出这些影响;不要让下游读者自行发现。
全新项目的首份契约可跳过步骤 6(没有之前的版本需要修订)。
步骤 7:交付前对照无歧义标准进行自检
确认以下各项均满足(这是运行时审查门禁 reviewing-api-spec 的审核标准;作者和门禁共用此标准,以免标准出现偏差):
- 已说明风格、基础信息和版本控制 — 已提供 API 风格、基础 URL/端点和具体的版本控制方案;已说明破坏性与非破坏性变更规则,以及弃用→停用政策。
- 已列出并追踪每项操作 — 操作列表完整;每项操作都对应上游功能规范中的行为(没有无依据或臆造的端点,也没有遗漏)。
- 已完整定义每项操作的请求和响应类型 — 请求和响应均已完整定义类型,每个字段都标明必填/可选及约束,每个响应都对应一个状态码。只定义成功路径的操作不合格。
- 身份验证和逐项操作授权 — 已说明身份验证方案(以及适用于每种客户端类型的 OAuth 流程);每项非公开操作都注明所需的范围/角色;已说明令牌生命周期和 HTTPS;没有任何操作默认开放。
- 错误模型完整 — 错误格式保持一致(机器可读代码、消息和请求 ID),并且按操作列出所有命名的失败情形及其是否可重试。只列出 2xx 响应的规范不合格。
- 共享类型只定义一次并通过引用使用 — 可复用 DTO 只定义一次并通过引用使用;传输类型引用数据模型,而非重复陈述或与之矛盾。
- 已规定分页和速率限制 — 集合操作定义了分页;已说明速率限制和标头。
- 示例齐备且一致 — 每项主要操作至少提供一组请求/响应示例,且与架构完全一致。
- 命名和版本控制保持一致 — 在整个 API 表面统一应用。
- 有依据、诚实且单向 — 操作和结构反映功能规范和数据模型(并非臆造;缺口应作为假设/开放问题列出,而非凭空补全);与 api-reference 保持单向关系(本契约是已发布参考文档的事实来源;绝不能从后者反向推导);如果存在实时 API,对当前操作/结构的描述必须与已发布的 API 表面一致(全新开发:不适用)。
- (仅修改时)变更范围明确、分类清楚且已版本化 — 对于变更请求:变更涉及的操作满足第 1–10 条;变更已分类为增量或破坏性;破坏性变更包含新版本、弃用→停用计划和迁移指南;已分析向后/向前兼容性;已标明向前/向下游的连带影响;文档版本已更新,并附有变更日志;已退役的操作标记为弃用,而非删除。对于全新开发的首次构建:不适用。
输入不足门禁: 如果 API 必须公开的某项行为无法通过研究确定,也无法有依据地纳入契约,则应将其列为阻塞项(“操作定义不足 — 需要产品/工程决策”),而不是臆造结构。如果 api-spec 中的结构、错误和身份验证全是猜测,就无法据此调用。
规则
硬性规则(绝不违反):
- 每项操作的两端都要注明类型。 请求和响应都必须完整注明类型,明确每个字段是必需还是可选,并注明约束;每种响应都必须对应一个状态码。字段未注明类型或状态未注明,都不算完成。
- 列举所有错误情况。 每项操作都要列出失败情况(验证、身份验证、未找到、冲突、速率限制、服务器错误)及状态码,不能只写成功路径。仅包含成功路径的操作是不完整的。
- 错误格式保持一致。 整个 API 共用一种错误响应格式(机器可读代码 + 消息 + 请求 ID);不要为每个端点设计不同的错误响应体。
- 引用数据模型,不要重新定义。 线上的 DTO 通过引用映射到上游数据模型中的实体;注明差异。绝不要重述或违背已存储的架构。DTO 不等同于已存储的行。
- 与 api-reference 保持单向关系。 已发布的、面向使用者的 api-reference 是此契约的下游使用者,通常由契约生成。此契约是 api-reference 的事实来源;绝不要根据已发布的文档反向推导契约(那会颠倒依赖关系)。数据模型是上游,api-reference 是下游。
- 破坏性变更要发布新版本,不能原地修改。 修订时,区分新增变更与破坏性变更;破坏性变更要迁移到新版本,并遵循
Deprecation→Sunset生命周期,提供迁移路径;绝不要在同一版本下悄悄修改或删除仍在使用的操作(步骤 6)。 - 每项操作都要追溯到 feature-spec 中的行为。 不得有孤立或臆造的操作,也不得遗漏行为。覆盖范围以 feature-spec 为准。
- 严谨性不依赖风格,也不局限于 OpenAPI。 使用项目所选风格的表示法(REST 用 OpenAPI,GraphQL 用 SDL,RPC 用 proto);无论风格如何,都要保持同等严谨。不要强行将 OpenAPI 用于非 REST API。
- 示例必须符合架构。 每个示例都必须使用架构声明的确切字段名称、类型和状态码。示例与架构矛盾即为缺陷。
- 绝不捏造。 不要为了看起来完整而臆造字段名称、限制、状态码或错误代码。没有来源时,应将其明确标记为待验证的假设,并在构建前验证。
- 组合,不要重复。 章节结构采用模板工具中的结构;本技能负责填充内容。不要另行粘贴一套大纲。
- 写契约,不写实现,也不写已发布的参考文档。 规定接口(线上数据格式),而非服务的构建方式,也非面向最终用户的说明文字。
- 能力边界(提供了 capability_record 时)。 文档输出范围必须限定在该记录的边界内。产出边界之外的内容(例如将
refs实体当作自有实体来描述,或设计超出exit_point的流程),即属越界,等同于臆造规格中不存在的内容。
偏好(可覆盖):
- “全面”指提高输出的目标,但仍要适度:契约要完整(每项操作都有类型、错误情况齐全、注明身份验证),而非追求篇幅。精简的 API 应省略不需要的章节。
- REST 错误响应体优先采用 RFC 9457 Problem Details;大型或动态集合优先采用基于游标的分页。
- 除非项目已采用基于请求头或日期的版本规范,否则优先使用 URL 路径版本控制(
/v1)。
易错点
- 仅考虑成功路径的操作。 只指定
200响应体就结束,是 API 规范中最常见的缺陷。每个操作都必须列出4xx/5xx失败情况及其状态码——错误目录是契约的一部分,不是事后补充的内容。 - 将数据模型重新定义为 DTO。 在行内重新定义已存储实体,会偏离(并与)上游数据模型矛盾。应引用数据模型;只说明线路格式不同之处(计算得出/派生/省略的字段)。
- 混淆契约与已发布的参考文档。 这是构建所依据的工程契约;面向使用者的参考文档(通常由它生成)是另一个下游文档,面向不同受众。不要在这里编写面向最终用户的说明文档。
- 只盯着 OpenAPI。 将 OpenAPI 用于 GraphQL 或 gRPC API 并不合适。选择项目的一种风格,并使用对应的表示法(SDL/proto)。
- 与架构不一致的示例。 示例中出现架构未声明的字段(或类型/状态错误),会在不知不觉中破坏契约。示例必须与声明的结构保持一致。
- 重复模板大纲。 在内容(或此技能)中重新列出章节,会与模板工具重复并逐渐偏离——应结合判断填写模板中的章节。
对照示例——表面合规但规格不足 vs 可调用(用于自检):
| 方面 | 规格不足(拒绝) | 可调用(可交付) |
|---|---|---|
| 操作追溯 | “有一个用于发票的端点。” | “POST /v1/invoices 实现功能规格 §3.2 创建发票;映射 Invoice 数据模型实体(省略 internalLedgerId)。” |
| 请求 | “接收发票字段。” | “请求体:amount(整数,必填,>0,以最小货币单位计)、currency(字符串,必填,ISO-4217)、dueDate(字符串,可选,RFC-3339)。” |
| 响应 | “返回发票。” | “201 → Invoice 架构(第 4 节);Location 标头设为新资源。” |
| 错误模型 | “会返回错误。” | “400 validation_error(字段无效)、401 unauthorized、403 forbidden(缺少 invoices:write)、409 conflict(幂等键重复)——全部采用共享的 Problem-Details 结构。” |
| 身份验证 | “需要身份验证。” | “OAuth 2.0 bearer;需要 invoices:write 作用域。” |
| 示例 | “参见文档。” | “请求/响应示例使用 amount: 5000、currency: \"USD\";201 响应体与 Invoice 架构完全一致。” |
如果你填写的内容读起来像左栏——适用于任何 API、没有类型、没有状态码、没有错误情况——那就还没完成。
反模式
- “我会只规范成功路径;错误情况显而易见。” 并非如此——必须逐一列出失败情况及其状态码,否则客户端无法处理。
- “我会将实体重新定义为请求/响应结构。” 应引用数据模型;重复定义会偏离并与之矛盾。只说明线路格式的差异。
- “OpenAPI 是标准,我会用它规范所有内容。” OpenAPI 是 REST 风格;GraphQL API 需要 SDL,gRPC API 需要 proto。应与项目风格保持一致。
- “这也是 API 参考文档,所以我会写面向最终用户的说明。” 契约和已发布的参考文档面向不同文档类型和受众;应将此文档保持为工程契约。
- “我会自己写大纲。” 这会与模板工具重复——使用模板工具提供的结构。
- “跳过调研,我懂 REST。” 调研的依据是此产品的接口、命名和错误模型,而不是 API 理论。
- “改动很小,我会直接修改字段。” 在相同版本中进行破坏性更改(重命名/删除/收窄类型/新增必填字段)会在不知不觉中破坏所有正在使用的客户端——应对其分类,安排到新版本,并采用包含迁移指南的
Deprecation→Sunset生命周期(步骤 6)。
输出
一份全面的 API 规范,满足第 7 步无歧义标准(已说明风格、基础规范、版本控制[以及破坏性变更规则和弃用/停用政策];列出每项操作,完整追溯,并完整定义请求和响应两侧的类型及状态码;指定身份验证和各项操作的授权;提供完整的错误模型,列明每种失败情况并注明是否可重试;共享类型只定义一次,并引用数据模型;说明分页和速率限制;示例齐全且前后一致;命名和版本控制一致;以 api-reference 为依据且仅朝一个方向流动;不捏造内容)——如有变更,以带版本号的增量修订形式修订(第 6 步:将变更分类为增量式/破坏性,破坏性变更转入新版本,并遵循弃用→停用流程,同时标明影响范围)。产物为文本形式——端点表格、带围栏的模式代码块(JSON / OpenAPI 片段 / SDL / proto)以及请求/响应示例对;方法和标准不依赖媒介。抽象使用者包括依照契约进行集成的客户端工程师、负责实现契约的服务端工程师、通常根据契约生成下游已发布 api-reference 的人员,以及 reviewing-api-spec 把关流程(该流程验证同一标准)。api-spec 依赖 feature-spec(并引用 data-model)作为输入。其结构由模板工具提供;此技能负责保证内容质量。
相关内容
- api-spec 模板工具(例如内容/模板网关)——提供此技能要填充的章节结构。与其组合使用;切勿重复其提纲。
- 深度研究能力——以成熟的 API 设计实践(REST/HTTP、OpenAPI/JSON-Schema、GraphQL SDL、gRPC、错误建模、版本控制、身份验证)为契约提供依据。
- feature-spec 编写技能——产出上游 feature-spec,其所定义的行为由此契约对外呈现。
- 架构文档和 data-model(如有)——提供上游背景:服务边界,以及传输 DTO 引用的实体。
reviewing-api-spec——专门用于评审最终 api-spec 的把关流程;它验证同一无歧义标准(其条件与此技能第 7 步的自检项逐项对应,且仅有一个事实来源),确保作者和把关流程的标准不偏离。(通用的design-review会将 api-spec 产物交由此对应流程评审。)- 面向使用者的 API-reference 技能——生成下游已发布参考文档,与此契约是不同的文档,且通常由契约生成。
渐进式披露
references/contract-method.md——深入介绍契约主干:风格选择+操作/方法语义(RFC 9110)+状态码选择+请求和响应两侧的类型+完整错误模型(RFC 9457+机器码+可重试性)+身份验证/各项操作的授权+分页/平局判定规则。在填写某一章节需要具体操作细节时加载。references/versioning-and-amend.md——深入介绍版本控制和演进:方案(URL 路径/请求头/基于日期,AIP-185)、破坏性与非破坏性变更分类(AIP-180)、弃用→停用生命周期(RFC 9745/8594),以及第 6 步修订方法和向前/向下的影响范围。在进行版本控制或修订时加载。references/sources.md——方法和质量标准的研究出处(OpenAPI、JSON Schema、GraphQL SDL、gRPC/protobuf、RFC 9110/9457、RFC 8594/9745、AIP-180/185、REST 设计及错误/分页指南)。仅在核查指导依据时加载。
正文篇幅预算
description≤ 1,024 个字符(agentskills.io 上限)。- 正文约 500 行/5,000 个 token(软性目标——质量优先;若持续超过 700 行/7,000 个 token,则标记)。
- 大量内容放在
references/中,按需加载。
更新日志
- 1.3.0(2026-06-21)— capability_record 上下文注入:可选的调用方注入
capability_record,在步骤 1 中使用(范围边界来自entry_points/publishes/consumes/refs);新增capability_boundary规则;放宽正文预算,改为目标值。未注入记录时优雅回退。 - 1.2.0(2026-06-15)— 重构为面向生产环境的配套技能(与全新推出的
reviewing-api-spec配套版本共用单一来源)。新增修订方法(步骤 6:将变更归类为增量式或破坏性 → 破坏性变更需创建新版本,并遵循Deprecation→Sunset生命周期 → 兼容性 → 版本号 + 更新日志 → 对 api-reference/impl/clients 的上游/下游连锁影响)。深化版本管理(破坏性与非破坏性变更分类 + 弃用→日落策略、AIP-180/185 + RFC 8594/9745)、逐操作授权(每个非公开操作都要注明其权限范围 + 按客户端类型指定 OAuth 流程)、错误模型(机器可读代码 + 请求 ID + 是否可重试)、状态码选择以及单向性与 api-reference 的规则。将自检扩展至步骤 7(深化 cond-1/4/5/10 + 新增 cond-11 修订)——与配套版本的 11 项条件逐项保持一致。将关卡引用重新指向reviewing-api-spec。新增references/contract-method.md+references/versioning-and-amend.md。未删减此前的任何覆盖内容。 - 1.1.0(2026-06-04)— 初始审核版本。