api-contract-first
Skill1 starsChanged 7 months agoMITView on GitHub
Knowledge pack for designing and evolving OpenAPI 3.0 contracts that enable frontend/backend parallel development. Auto-loaded by architect-agent;由 /build-api / /build-web main thread 在实现阶段流式加载(M6.4 起替代 backend/frontend-agent 黑盒派发)。
3 other projects use a version of this.
Adopted by
Most recently taken up by
- RBraga01/a-teamtheir own version, first seen Nov 1, 2026
- robisson/build-like-amazon-agent-skillstheir own version, first seen Oct 5, 2026
- novatic-cu/nova-skillstheir own version, first seen Sep 20, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- RBraga01/a-team★ 24same name
- robisson/build-like-amazon-agent-skills★ 16same name
- novatic-cu/nova-skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository12 other files it gives its agents.
- acceptance-criteriaSkill
- ai-native-designSkill
- backend-developmentSkill
- checkpoint-commitSkill
- ddt-baseline-syncSkill
- ddt-brief-builderSkill
- decision-gateSkill
- delivery-packageSkill
- efficiency-metricsSkill
- frontend-developmentSkill
- relaySkill
- validation-loopSkill
The file
Files
API Contract First
Triggers
- architect-agent 启动 /
/design命令(写契约) /build-api//build-webmain thread 加载 backend-development / frontend-development skill 时只读链入(契约消费方,M6.4 起 main thread 直接执行而非 subagent)
Core Principles
- 契约先于代码:没有 lint 通过的 OpenAPI,不允许动 web/ 或 server/
- 契约是唯一真相源:UI 文案、错误提示、日志格式以外的所有接口约定必须出自契约
- 契约变更 = 事件:每次契约变更在
docs/arch.md的 ADR 章节追加一条,说明原因、影响面、兼容策略
Design Rules
URL 结构(DDT 标准)
# 资源名:名词、复数、小写、kebab-case
GET /api/v1/users
POST /api/v1/users
GET /api/v1/users/:id
PUT /api/v1/users/:id
PATCH /api/v1/users/:id
DELETE /api/v1/users/:id
# 子资源(所有权关系)
GET /api/v1/users/:id/orders
# 动作(谨慎使用,限非 CRUD)
POST /api/v1/orders/:id/cancel字段约束
- 所有字段含
type/required/description/example - 所有错误响应用枚举(
error.code)+ 人类可读 message,避免只有数字码 - 分页统一:
page+pageSize+total,或游标cursor+nextCursor二选一,全局一致 - 幂等操作必须声明
Idempotency-Keyheader - 所有时间字段 ISO-8601 UTC
HTTP 状态码(强制)
200 OK — GET/PUT/PATCH 有响应体
201 Created — POST 成功(含 Location header)
204 No Content — DELETE/PUT 无响应体
400 Bad Request — 格式错误、缺少必填字段
401 Unauthorized — 未认证
403 Forbidden — 已认证但无权限
404 Not Found — 资源不存在
409 Conflict — 重复创建、状态冲突
422 Unprocessable Entity — 语义非法(格式合法但业务无效)
429 Too Many Requests — 限流(含 Retry-After header)
500 Internal Server Error — 不暴露内部细节分页(二选一,全局保持一致)
- Offset(小数据集 < 10K / 管理后台):
?page=2&pageSize=20 - Cursor(大数据集 / 无限滚动):
?cursor=<opaque>&limit=20,响应含nextCursor
版本化策略(ADR)
1. URL Path 版本(推荐):/api/v1/ → /api/v2/
2. 不破坏性变更不需要新版本:
- 新增可选字段、新增端点、新增可选查询参数
3. 破坏性变更必须新版本:
- 删改字段名/类型、改 URL 结构、改认证方式
4. 废弃策略:宣告(6 个月) → Sunset header → 410 GoneDo
- 用
npx @redocly/cli lint跑 schema lint,lint 必须通过后才能进入实现阶段 - 用
openapi-typescript或等价工具生成前端 types - 用
openapi-generator或等价工具生成后端路由骨架 - 每个 endpoint 含完整的 request / response / error 示例(见
templates/api-contract.template.yaml)
Don't
- 不在代码里偷偷加字段再"回头补契约"(即"代码先于契约")
- 不把 UI 状态字段放进 API 契约(那是前端 state,不属于接口定义)
- 不把内部实现细节(SQL 列名、内部枚举值)泄露到 API
- 不使用
200返回所有场景("200 for everything" 反模式)
ADR 格式(契约变更必须附此记录)
### ADR-NNN: <决策标题>
- **日期**:YYYY-MM-DD
- **状态**:提议 / 接受 / 废弃
- **背景**:为什么要做此变更
- **方案 A**:... | **方案 B**:...
- **Trade-off 表**:| 维度 | A | B |
- **决策**:选 X,原因 Y
- **影响面**:前端 / 后端 / 测试 / 文档
- **兼容策略**:向前兼容 / 版本递升 / 废弃通知Templates & References
templates/api-contract.template.yaml(含 ErrorCode enum 示例)bin/aggregate.mjs(事件数据结构参考,与契约字段保持一致)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

