关于 improve-sdk-naming
用于改进 Speakeasy 生成 SDK 的方法名和错误类型名称,面向基于 OpenAPI 规范工作的开发者。可通过 Speakeasy CLI 获取 AI 建议,并将审核后的建议保存为 overlay。
主要功能
- 01通过 CLI 获取 operation ID 建议
- 02获取结构化错误类型建议
- 03将建议导出为 overlay 文件
- 04使用分组和名称覆盖扩展
适用场景
- 01替换含义不清的 SDK 自动生成方法名
- 02在重新生成前审核方法名称建议
- 03向 API 规范添加结构化错误类型建议
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ speakeasy-api/ sdk-generation-skills --skill improve-sdk-naming安装后在 Claude Code 中输入/improve-sdk-naming确认已加载。
详细介绍
改进 SDK 命名
使用 AI 驱动的建议或手动覆盖来改进 SDK 方法命名。涵盖自动 speakeasy suggest 命令,以及使用 x-speakeasy-group 和 x-speakeasy-name-override 扩展手动命名。
适用场景
当你想要获取 Speakeasy 提供的 AI 驱动建议 时,请使用此技能:
- SDK 方法具有不够理想的自动生成名称,例如
GetApiV1Users - 你希望 Speakeasy AI 提供更好的操作 ID 建议
- 你希望获取 AI 生成的错误类型建议
- 想要使用
speakeasy suggest自动提高规范质量 - 用户表示:“建议改进”“speakeasy suggest”“AI 建议”“建议操作 ID”“建议错误类型”“获取 AI 建议”
不适用于:手动创建覆盖项(请改用 manage-openapi-overlays)
输入
| 输入 | 必需 | 说明 |
|---|---|---|
| OpenAPI 规范 | 是 | 规范文件的路径(-s) |
| 身份验证 | 是 | 通过 speakeasy auth login 或 SPEAKEASY_API_KEY 环境变量 |
| 输出文件 | 否 | 覆盖文件的输出路径(-o) |
输出
| 输出 | 说明 |
|---|---|
| 建议 | 输出到控制台的更佳操作名称或错误类型 |
| 覆盖文件 | 可选:将建议保存为覆盖 YAML 文件(-o) |
前置条件
对于非交互式环境(CI/CD、AI Agent),请将 API 密钥设为环境变量:
export SPEAKEASY_API_KEY="<your-api-key>"
对于交互式使用,请直接进行身份验证:
speakeasy auth login
命令
AI 驱动的建议
# Suggest better operation IDs (SDK method names)
speakeasy suggest operation-ids -s <spec-path>
# Suggest error type definitions
speakeasy suggest error-types -s <spec-path>
# Output suggestions as an overlay file
speakeasy suggest operation-ids -s <spec-path> -o suggested-overlay.yaml
检查当前操作 ID
运行不带 -o 的 suggest 命令,预览将发生的更改:
speakeasy suggest operation-ids -s openapi.yaml
SDK 方法命名约定
Speakeasy 根据操作 ID 生成分组的 SDK 方法。命名约定使用 x-speakeasy-group 表示命名空间,使用 x-speakeasy-name-override 表示方法名称。
| HTTP 方法 | SDK 用法 | 操作 ID |
|---|---|---|
| GET(列表) | sdk.users.list() | users_list |
| GET(单项) | sdk.users.get() | users_get |
| POST | sdk.users.create() | users_create |
| PUT | sdk.users.update() | users_update |
| DELETE | sdk.users.delete() | users_delete |
操作 ID 的格式为 {group}_{method}。Speakeasy 会按下划线拆分,以便在生成的 SDK 中创建命名空间和方法名称。
示例
第 1 步:获取 AI 建议
speakeasy suggest operation-ids -s openapi.yaml -o operation-ids-overlay.yaml
此命令会分析你的规范,并生成覆盖项,将如下名称转换为:
get_api_v1_users_list->listUserspost_api_v1_users_create->createUser
第 2 步:检查并应用覆盖项
AI 生成的覆盖项(通过 -o 指定)使用 x-speakeasy-group 和 x-speakeasy-name-override 改进命名。
注意:要手动创建覆盖项,请改用 manage-openapi-overlays 技能,而不是此技能。
第 3 步:将覆盖项添加到 workflow.yaml
sources:
my-api:
inputs:
- location: ./openapi.yaml
overlays:
- location: ./operation-ids-overlay.yaml
第 4 步:重新生成 SDK
speakeasy run --output console
错误类型建议
suggest error-types 命令会分析你的 API 并建议结构化错误响应:
speakeasy suggest error-types -s openapi.yaml
此命令会建议:
- 常见 HTTP 错误代码(400、401、404、500)
- 适用于你的 API 的自定义错误架构
将结果输出为覆盖项:
speakeasy suggest error-types -s openapi.yaml -o error-types-overlay.yaml
不要这样做
- 不要在外部管理的源规范中直接修改 operationIds。请改用覆盖项。
- 不要使用
get或post这类不带分组的通用名称。始终将x-speakeasy-name-override与x-speakeasy-group配对使用。 - 不要忘记在创建生成的覆盖项后将其添加到
workflow.yaml。否则,生成的 SDK 中不会更改这些名称。 - 不要在不同分组中创建重复的操作名称。每个
{group}_{method}组合都必须唯一。
故障排除
| 错误 | 原因 | 解决方案 |
|---|---|---|
| "unauthorized" | API 密钥缺失或无效 | 设置 SPEAKEASY_API_KEY 环境变量,或运行 speakeasy auth login |
| 重新生成后名称未改变 | 未将 Overlay 添加到工作流 | 将 Overlay 添加到 workflow.yaml 中的 overlays 列表 |
| 未返回建议 | 规范的命名已经很合适 | 无需操作;名称的结构已经很清晰 |
| 方法名称重复 | 相似的端点使用了相同名称 | 为每个端点使用唯一的 x-speakeasy-name-override 值 |
| 建议过程中超时 | 规范文件过大 | 尝试在较小的子集上运行,或延长超时时间 |