Skip to main content

api-spec-generator

生成 OpenAPI 3.0 规范的 api-spec.yaml 文件。当用户需要创建 API 规范、设计前后端接口、定义数据模型时必须使用。触发场景包括:用户说"帮我生成 API 规范"、"创建 api-spec"、"设计接口"、"前后端分离开发"等。无论用户是否明确提到 api-spec.yaml 或 OpenAPI,都应在涉及 API 设计的场景中主动建议使用此技能。

来源信息

仓库
gszyboy/opencode-config
最近来源活动
2026年3月22日 08:34
检测到的 SKILL.md 语言
中文
星标
0
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
3 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
api-spec-generator
description
生成 OpenAPI 3.0 规范的 api-spec.yaml 文件。当用户需要创建 API 规范、设计前后端接口、定义数据模型时必须使用。触发场景包括:用户说"帮我生成 API 规范"、"创建 api-spec"、"设计接口"、"前后端分离开发"等。无论用户是否明确提到 api-spec.yaml 或 OpenAPI,都应在涉及 API 设计的场景中主动建议使用此技能。
# API Spec Generator 生成符合 OpenAPI 3.0 规范的 api-spec.yaml 文件,用于解耦前后端开发。 ## 核心价值 ``` api-spec.yaml = 前后端开发的"合同" ↓ 前端和后端基于同一份规范独立开发 ↓ 最终对接时不再扯皮 ``` ## 工作流程 ``` ┌────────────────────────────────────────────────────┐ │ 1. 收集需求 │ │ - 项目类型(用户管理/订单/博客/电商/...) │ │ - 需要哪些接口(CRUD) │ │ - 数据模型有哪些字段 │ └────────────────────────────────────────────────────┘ ↓ ┌────────────────────────────────────────────────────┐ │ 2. 生成规范 │ │ - 自动推断合理的 RESTful 路径 │ │ - 生成完整的 schema 定义 │ │ - 包含请求/响应示例 │ └────────────────────────────────────────────────────┘ ↓ ┌────────────────────────────────────────────────────┐ │ 3. 校验完整性 │ │ - 路径是否符合规范 │ │ - HTTP 方法是否正确 │ │ - schema 是否完整 │ └────────────────────────────────────────────────────┘ ↓ ┌────────────────────────────────────────────────────┐ │ 4. 输出文件 │ │ - api-spec.yaml │ │ - 保存到项目根目录 │ └────────────────────────────────────────────────────┘ ``` ## 触发时机 | 用户说... | 是否触发 | |-----------|----------| | 帮我生成 API 规范 | ✅ | | 创建 api-spec | ✅ | | 设计接口 | ✅ | | 前后端分离 | ✅ | | 用户管理有哪些接口 | ✅ | | 这个项目需要哪些 API | ✅ | ## 信息收集(按需) ### 最小信息(必需) ``` 用户只需要告诉我: - 项目/功能名称 - 数据模型(字段列表) - 需要哪些操作(增删改查) 示例: "帮我生成用户管理的 API 规范 - 用户有:id, name, email - 需要:增删改查" ``` ### 完整信息(可选) 如果你能获取到更多细节: | 信息 | 用途 | 来源 | |------|------|------| | 项目类型 | 推断合理的接口设计 | 对话或现有代码 | | 业务规则 | 添加验证规则 | 需求文档 | | 认证方式 | 添加安全配置 | 项目规范 | | 关系数据 | 添加关联 schema | 数据模型 | ## 输出格式 ### 文件位置 ``` 项目根目录/ └── api-spec.yaml # OpenAPI 3.0 规范文件 ``` ### 文件结构 ```yaml openapi: 3.0.0 info: title: [项目名称] description: [项目描述] version: 1.0.0 servers: - url: http://localhost:8000/api/v1 description: 开发环境 paths: /[资源名]: get: summary: 获取列表 tags: [[标签]] parameters: - name: page in: query schema: type: integer responses: '200': description: 成功 content: application/json: schema: $ref: '#/components/schemas/[Schema名]' post: summary: 创建 requestBody: content: application/json: schema: $ref: '#/components/schemas/[RequestSchema]' responses: '201': description: 创建成功 /[资源名]/{id}: get: summary: 获取详情 parameters: - name: id in: path required: true responses: '200': description: 成功 '404': $ref: '#/components/responses/NotFound' put: summary: 更新 responses: '200': description: 成功 '404': $ref: '#/components/responses/NotFound' delete: summary: 删除 responses: '204': description: 删除成功 '404': $ref: '#/components/responses/NotFound' components: schemas: [Schema名]: type: object properties: id: type: integer ... required: - id responses: NotFound: description: 资源不存在 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' schemas: ErrorResponse: type: object properties: code: type: integer message: type: string ``` ## 命名规范 ### 路径命名(kebab-case) | 场景 | 路径 | 说明 | |------|------|------| | 资源复数 | /users | 列表、创建 | | 资源单数 | /users/{id} | 详情、更新、删除 | | 动作 | /users/{id}/activate | 特殊动作 | ### HTTP 方法 | 方法 | 用途 | 示例 | |------|------|------| | GET | 查询 | GET /users | | POST | 创建 | POST /users | | PUT | 全量更新 | PUT /users/{id} | | PATCH | 部分更新 | PATCH /users/{id} | | DELETE | 删除 | DELETE /users/{id} | ### Schema 命名(PascalCase) | 用途 | 命名 | 示例 | |------|------|------| | 数据模型 | [资源名] | User, Todo, Order | | 创建请求 | Create[资源名]Request | CreateUserRequest | | 更新请求 | Update[资源名]Request | UpdateUserRequest | | 列表响应 | [资源名]ListResponse | UserListResponse | | 错误响应 | ErrorResponse | 全局通用 | ## 常见数据模型模板 ### 用户管理 ```yaml User: type: object properties: id: { type: integer } username: { type: string } email: { type: string, format: email } password: { type: string } created_at: { type: string, format: date-time } updated_at: { type: string, format: date-time } ``` ### 待办事项 ```yaml Todo: type: object properties: id: { type: integer } title: { type: string } description: { type: string, nullable: true } completed: { type: boolean, default: false } priority: { type: integer, enum: [1,2,3] } created_at: { type: string, format: date-time } ``` ### 分页响应 ```yaml ListResponse: type: object properties: total: { type: integer } page: { type: integer } page_size: { type: integer } items: { type: array, items: { $ref: '#/components/schemas/实体名' } } ``` ## 校验清单 生成规范后,检查以下内容: - [ ] 每个接口有 summary(中文) - [ ] 所有参数有 name、type、description - [ ] 必填参数标记 required - [ ] 路径参数标记 in: path + required: true - [ ] 响应包含状态码(200、201、204、400、404) - [ ] 错误响应使用 $ref 复用 - [ ] schema 字段类型正确(string/integer/boolean/array) - [ ] 日期格式使用 date-time - [ ] 邮箱格式使用 format: email ## 交互示例 ### 示例 1:简洁需求 ``` 用户:帮我生成用户管理的 API 规范 AI: 正在生成 api-spec.yaml... ✅ 完成!创建了以下接口: - GET /users - 获取用户列表 - POST /users - 创建用户 - GET /users/{id} - 获取用户详情 - PUT /users/{id} - 更新用户 - DELETE /users/{id} - 删除用户 文件已保存到:api-spec.yaml ``` ### 示例 2:详细需求 ``` 用户:帮我生成博客系统的 API 规范 - 文章有:id, title, content, author, created_at, updated_at - 评论有:id, article_id, content, author, created_at - 需要:文章的增删改查、评论的增删查 AI: 正在生成 api-spec.yaml... ✅ 完成! 包含 schema: - Article、CreateArticleRequest、UpdateArticleRequest、ArticleListResponse - Comment、CreateCommentRequest、CommentListResponse 包含路径: - /articles(GET、POST) - /articles/{id}(GET、PUT、DELETE) - /articles/{id}/comments(GET、POST) - /comments/{id}(DELETE) 文件已保存到:api-spec.yaml ``` ## 输出文件 最终输出一个 `api-spec.yaml` 文件,包含: 1. **完整的 OpenAPI 3.0 结构** 2. **所有接口定义**(paths) 3. **所有数据模型**(components/schemas) 4. **通用响应定义**(components/responses) 5. **中文注释**(summary、description) ## 后续建议 生成规范后,主动建议用户: ``` 规范已生成!接下来可以: 1. 【并行开发】并行开发前后端 → 告诉我"并行开发",我会启动多个子代理 2. 【单独开发】先开发后端 → 基于规范实现 FastAPI 路由 3. 【单独开发】先开发前端 → 基于规范生成 TypeScript 类型 + Mock 数据 ``` ## 参考文件 - `references/openapi-template.yaml` - OpenAPI 3.0 完整模板 - `references/examples.md` - 常见场景示例 ## 注意事项 1. **不要过度设计**:只生成用户需要的接口 2. **保持简洁**:不需要 authentication、security 等高级特性(除非用户要求) 3. **中文优先**:summary、description 使用中文 4. **立即可用**:生成的规范可以直接被 FastAPI、Swagger 等工具使用
在 GitHub 查看