improve-operation-ids
improve-operation-ids
Improve SDK method naming from auto-generated to intuitive grouped methods.
When to Use
- SDK methods have ugly auto-generated names like
GetApiV1Users - You want grouped methods like
sdk.users.list() - User says: "ugly method names", "improve operation IDs", "better SDK naming"
Inputs
| Input | Required | Description |
|---|---|---|
| OpenAPI spec | Yes | Spec to improve (-s) |
| Authentication | Yes | Via speakeasy auth login or SPEAKEASY_API_KEY env var |
Outputs
| Output | Description |
|---|---|
| Suggestions | Better operation names |
| Overlay file | Optional: saves as overlay (-o) |
Prerequisites
For non-interactive environments (CI/CD, AI agents), set:
export SPEAKEASY_API_KEY="<your-api-key>"
See configure-authentication skill for details.
Check Current State
speakeasy suggest operation-ids -s openapi.yaml
SDK Method Naming
Speakeasy generates grouped SDK methods using x-speakeasy-group:
| HTTP Method | SDK Usage | Operation ID |
|---|---|---|
| GET (list) | sdk.users.list() |
users_list |
| GET (single) | sdk.users.get() |
users_get |
| POST | sdk.users.create() |
users_create |
| PUT | sdk.users.update() |
users_update |
| PATCH | sdk.users.patch() |
users_patch |
| DELETE | sdk.users.delete() |
users_delete |
Use x-speakeasy-group: users and x-speakeasy-name-override: list to achieve this grouping.
Apply Suggestions
# Generate overlay
speakeasy suggest operation-ids -s openapi.yaml -o operation-ids.yaml
# Add to workflow and regenerate
speakeasy run --output console
Manual Override
overlay: 1.0.0
info:
title: Custom operation names
version: 1.0.0
actions:
- target: "$.paths['/api/v1/users'].get"
update:
x-speakeasy-group: users
x-speakeasy-name-override: listAll
This produces: sdk.users.listAll()
What NOT to Do
- Do NOT modify operationIds directly in the source spec if externally managed
- Do NOT use generic names like
get,postwithout context - Do NOT forget to add the overlay to
workflow.yamlafter generating
Troubleshooting
| Error | Cause | Solution |
|---|---|---|
| Names unchanged | Missing overlay in workflow | Add overlay to workflow.yaml sources |
| "unauthorized" | Missing API key | Set SPEAKEASY_API_KEY env var |
| Duplicate names | Similar endpoints | Use unique x-speakeasy-name-override values |
Related Skills
get-ai-suggestions- Auto-generate naming suggestionscreate-openapi-overlay- Create custom naming overlaysregenerate-sdk- Regenerate with improved names
More from speakeasy-api/agent-skills
writing-openapi-specs
Reference guide for OpenAPI specification best practices, naming conventions, and expressing complex REST API patterns like polymorphism, enums, file uploads, and server-sent events. Use when writing or improving OpenAPI specs to ensure they follow established conventions and generate quality SDKs.
16start-new-sdk-project
>-
14diagnose-generation-failure
Use when SDK generation failed or seeing errors. Triggers on "generation failed", "speakeasy run failed", "SDK build error", "workflow failed", "Step Failed", "why did generation fail
14manage-openapi-overlays
Use when creating, applying, or validating overlay files including x-speakeasy extensions. Covers overlay syntax, JSONPath targeting, retries, pagination, naming, grouping, open enums, global headers, custom security. Triggers on "create overlay", "apply overlay", "overlay file", "x-speakeasy", "add extension", "configure retries", "add pagination", "overlay for retries".
13extract-openapi-from-code
Use when extracting or generating an OpenAPI spec from existing API code. Triggers on "extract OpenAPI", "code first", "generate spec from code", "FastAPI OpenAPI", "Spring Boot OpenAPI", "NestJS swagger", "Django OpenAPI", "Flask OpenAPI", "Rails swagger", "Laravel OpenAPI", "existing API code
10speakeasy-context
Speakeasy workflow: run 'agent context' FIRST, do task, run 'agent feedback' LAST. Triggers on speakeasy, SDK, OpenAPI.
10