api-to-openapilisted
Install: claude install-skill wunamesst/skills
# API to OpenAPI
## 目标
把自然语言描述、接口文档或后端代码中的 API 信息,统一转换为可导入平台的接口文档。
本 skill 只负责:
1. 识别输入来源和接口边界
2. 抽取路径、方法、参数、响应、鉴权、示例
3. 生成并校验 OpenAPI 3.0.3 JSON
4. 在用户明确需要时生成平台兼容产物,如 Postman Collection
本 skill 不负责直接写入 Postman、Apifox、ApiPost 等平台。若用户要求“直接导入/同步到平台”,先生成可导入产物,再说明需要由独立 MCP/API 工具完成平台写入。
## 处理流程
### 1. 判断用户意图
仅在用户要从已有接口信息生成或转换“可导入接口文档”时继续。典型触发:
- “把这段接口文档转成 OpenAPI/Swagger”
- “生成可导入 Apifox/Postman/ApiPost 的接口”
- “把这段 Laravel/PHP 接口代码导出成接口文档”
- “根据这段描述生成可以调试的 API 文档”
不要在这些场景使用本 skill:
- 用户只是要实现一个接口
- 用户只是要调试请求失败
- 用户只是要 review API 代码质量
- 用户���求把结果直接写进平台账号或项目
### 2. 识别输入类型并加载适配器
从上到下首次命中即停止:
| 优先级 | 识别特征 | 输入类型 | 加载 |
|---|---|---|---|
| 1 | `<?php` / `Route::` / `$request->` / `->validate(` / `$_POST` | PHP 代码 | `references/lang-php.md` |
| 2 | Markdown 参数表格、接口说明块、自然语言描述中包含方法/路径/参数/响应 | 文档或描述 | `references/doc-markdown.md` |
| 3 | `@app.route` / `def ` + `request` / `FastAPI` / `Flask` | Python 代码 | `references/lang-python.md` |
| 4 | `app.get(` / `app.post(` / `@Controller` / `@Get(` / `express` | Node.js 代码 | `references/lang-nodejs.md` |
| 5 | `func ` + `gin.Context` / `r.GET(` / `echo.Context` | Go 代码 | `references/lang-golang.md` |
| 6 | 均不匹配 | 未知 | 先询问用户语言/框架或让用户整理为文档格式 |
完整阅读匹配到的适配器文件。适配器负责框架识别、参数提取、类型映射、鉴权判断和响应提取。
### 3. 生成 OpenAPI 主产物
始终把 OpenAPI 3.0.3 JSON 作为主产物。生成前完整阅读 `references/openapi-output.md`。
核心要求:
- 使用 `openapi: "3.0.3"`
- `paths` 中的路径必须以 `/` 开头
- HTTP method 使用小写键:`get` / `post` / `put` / `patch` / `delete`
- GET、DELETE 和 path/query/header/co