一句话:让前端 agent 连犯错的机会都没有。
pm-agent 漏需求 → 架构漏设计 → 前端自造端点 → 后端没实现 → 用户看到 500
↓ 本 Skill 在此切断
OpenAPI YAML 是唯一契约 → 代码生成 → 前端只能调生成的函数 → 编译期暴露缺口
| 防线 | 机制 | 拦截什么 |
|---|---|---|
| ------ | ------ | --------- |
| ① 契约层 | check-api-rules.sh 7条规则 | operationId缺失、ApiResponse未包裹、ErrorResponse缺失 |
| ② 代码生成 | apiClient.ts 从前端唯一入口 | 手写 fetch/axios、自造端点 |
| ③ 运行时 | ops-agent 逐端口 curl | 路由错误、服务宕机、端口不匹配 |
| ④ 设计审计 | coordinator 前后端期望对照 | 架构漏设计、需求未覆盖 |
openclaw skills install openapi-contract-driven
# 可选:openapi-typescript(TypeScript 类型生成)
npm install -D openapi-typescript
cp references/openapi-template.yaml standards/{project}-openapi.yaml
# 编辑 YAML,定义你的端点
bash references/check-api-rules.sh standards/{project}-openapi.yaml
# 期望:✅ 6/7 通过
# 🆕 v1.1:一条命令从 YAML 生成完整 apiClient.ts
bash references/generate-api-client.sh standards/{project}-openapi.yaml \
> frontend/src/api/generated/apiClient.ts
不用再手写端点函数。generate-api-client.sh 从 YAML 自动提取所有 path + method → operationId,生成类型安全的 export const xxx = { ... }。
# 🆕 v1.1:复制 GitHub Actions 工作流
cp references/ci-github-actions.yml .github/workflows/openapi-check.yml
之后每次 PR 都会自动运行 check-api-rules.sh,契约违规直接阻断合并。
将 references/agent-templates/ 下的规则片段合并到对应角色的 Agent 配置中:
| 模板文件 | 合并到 |
|---|---|
| --------- | -------- |
architecture-agent.md | arch-agent / saas-arch-agent 的 AGENTS.md |
backend-agent.md | backend-agent / legal-backend-agent 的 AGENTS.md |
frontend-agent.md | frontend-agent / legal-frontend-agent 的 AGENTS.md |
ops-agent.md | ops-agent / saas-ops-agent 的 AGENTS.md |
coordinator.md | 小雨(main agent)的 coordinator-spawn-template.md |
→ 看 references/migration-guide.md,四阶段渐进式迁移,不改现有代码一行业务逻辑。
┌─────────────────────────────┐
│ pm-agent: 产品需求 │
└──────────────┬──────────────┘
▼
┌─────────────────────────────┐
│ arch-agent: 架构设计 │
│ → 输出 OpenAPI YAML (强制) │
└──────────────┬──────────────┘
▼
┌─────────────────────────────┐
│ coordinator: 对照审计 │
│ 前端期望 vs YAML 定义 │
└──────────────┬──────────────┘
┌───────┴───────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ frontend-agent │ │ backend-agent │
│ 只 import 生成的 │ │ 对照 YAML 实现 │
│ apiClient │ │ Controller │
└────────┬─────────┘ └────────┬─────────┘
│ │
└────────┬───────────┘
▼
┌─────────────────────────────┐
│ ops-agent: 部署后验证 │
│ ① check-api-rules.sh │
│ ② curl 逐端口逐端点 │
└─────────────────────────────┘
.spectral.yaml 规则集(不与 Spectral CLI 耦合,bash 脚本可独立运行):
format: date-time(warn)openapi-contract-driven/
├── SKILL.md
├── README.md
└── references/
├── openapi-template.yaml 新项目起始模板
├── .spectral.yaml 7 条核心规则
├── check-api-rules.sh 规则检查脚本(bash only)
├── generate-api-client.sh 🆕 YAML → TypeScript 自动生成
├── apiClient-template.ts 前端 apiClient 手动模板
├── ci-github-actions.yml 🆕 GitHub Actions CI 模板
├── migration-guide.md 🆕 存量项目迁移指南
└── agent-templates/
├── architecture-agent.md
├── backend-agent.md
├── frontend-agent.md
├── ops-agent.md
└── coordinator.md
已在两个项目上跑通:
| 项目 | 端点 | 规则检查 | apiClient |
|---|---|---|---|
| ------ | ------ | --------- | ----------- |
| LexGuard(法律合同审查) | 30 | 6/7 ✅ | 11KB |
| 寓居智联(资产管理) | 46 | 6/7 ✅ | 17KB |
| 新增/修复 | 说明 |
|---|---|
| :------ | :------ |
generate-api-client.sh | 从 YAML 自动生成 TypeScript apiClient,682行纯 bash/awk,零依赖 |
ci-github-actions.yml | PR 时自动运行契约检查,违规阻断合并 |
migration-guide.md | 存量项目四阶段渐进迁移,含 MVP 最小可行路径 |
check-api-rules.sh 修复 | 不再因 YAML 缩进风格差异误报;$ref 和注释引用同时匹配 |
| 英文 description | 触达国际 DevOps 用户 |
| 路径修正 | scripts/ → references/ |
共 1 个版本