APIエンドポイントの追加・変更で、DTO、入力検証、OpenAPI仕様、MCPツールの説明や公開範囲を揃え、エージェントからも扱いやすいAPIに整えます。
- APIエンドポイントを追加したいとき
- DTOと入力検証を整えたいとき
- MCPツールとしてAPIを公開したいとき
OpenAPIの元仕様を直接変更せず、JSONPathで対象を指定するOverlayの作成・適用・検証を案内します。SDKの命名やグループ化、リトライ、ページネーションなどを設定できます。
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".
実行スコア 未検証
インストール方法を見るOpenAPI仕様を直接変更せずに、SDK生成向けのカスタマイズを加えるOverlayファイルの作成、適用、検証を支援します。JSONPathで操作やスキーマなどの対象を指定し、値の追加・更新や削除を定義できます。仕様間の差分からOverlayを作る方法、speakeasyコマンドで適用・検証する方法、.speakeasy/workflow.yamlに登録して処理へ組み込む方法も扱います。SDKメソッドの命名やグループ化、リトライ、ページネーション、未知の列挙値、共通ヘッダー、カスタム認証などの設定例があります。
外部管理の仕様ファイルを保ったまま、SDKの生成結果や認証設定を調整したいときに使えます。OpenAPIの検証で見つかった問題をOverlayで直せるか判断したり、既存ファイルの対象指定や構文を確認したりする場面にも向いています。
SPEAKEASY_API_KEYの設定、またはspeakeasy auth loginによる認証が案内されています。Overlayでは不正なYAML・JSON構文、壊れた$ref、誤ったデータ型など、元仕様自体の問題は修正できません。ライセンスはApache-2.0です。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Overlays let you customize an OpenAPI spec for SDK generation without modifying the source. This skill covers creating overlay files, applying them to specs, and using them to fix validation errors.
| Topic | Guide |
|---|---|
| OpenAPI Validation | content/validation.md |
| Security Schemes | content/security-schemes.md |
These guides cover validating specs, fixing common issues, and configuring authentication methods.
Set SPEAKEASY_API_KEY env var or run speakeasy auth login.
Use this skill when you need to manually work with overlay files:
NOT for: AI-powered naming suggestions (see improve-sdk-naming instead)
| Input | Required | Description |
|---|---|---|
| Target spec | Yes | OpenAPI spec to customize or fix |
| Customizations | Depends | Changes to apply (groups, names, retries, descriptions) |
| Overlay file | Depends | Existing overlay to apply (for apply workflow) |
| Lint output | Helpful | Validation errors to fix (for fix workflow) |
| Output | Description |
|---|---|
| Overlay file | YAML file with JSONPath-targeted changes |
| Modified spec | Transformed OpenAPI spec (when applying) |
speakeasy overlay compare -b <before-spec> -a <after-spec> -o <output-overlay>
Use this when you have a modified version of a spec and want to capture the differences as a reusable overlay.
speakeasy overlay apply -s <spec-path> -o <overlay-path> --out <output-path>
speakeasy overlay validate -o <overlay-path>
Create an overlay file with this structure:
overlay: 1.0.0
info:
title: My Overlay
version: 1.0.0
actions:
- target: "$.paths['/example'].get"
update:
x-speakeasy-group: example
x-speakeasy-name-override: getExample
Each action has a target (JSONPath expression) and an update (object to merge) or remove (boolean to delete the target).
overlay: 1.0.0
info:
title: SDK Customizations
version: 1.0.0
actions:
- target: "$.paths['/users'].get"
update:
x-speakeasy-group: users
x-speakeasy-name-override: list
- target: "$.paths['/users'].post"
update:
x-speakeasy-group: users
x-speakeasy-name-override: create
- target: "$.paths['/users/{id}'].get"
update:
x-speakeasy-group: users
x-speakeasy-name-override: get
- target: "$.paths['/users/{id}'].delete"
update:
x-speakeasy-group: users
x-speakeasy-name-override: delete
deprecated: true
This produces SDK methods: sdk.users.list(), sdk.users.create(), sdk.users.get(), sdk.users.delete().
# Apply overlay and write merged spec
speakeasy overlay apply -s openapi.yaml -o sdk-overlay.yaml --out openapi-modified.yaml
# Compare two specs to generate an overlay
speakeasy overlay compare -b original.yaml -a modified.yaml -o changes-overlay.yaml
Instead of applying overlays manually, add them to .speakeasy/workflow.yaml:
sources:
my-api:
inputs:
- location: ./openapi.yaml
overlays:
- location: ./naming-overlay.yaml
- location: ./grouping-overlay.yaml
Overlays are applied in order. Later overlays can override earlier ones. This approach ensures overlays are always applied during speakeasy run.
Use overlays to fix validation issues when you cannot edit the source spec.
| Issue | Overlay Fix |
|---|---|
| Poor operation names | Add x-speakeasy-name-override to the operation |
| Missing descriptions | Add summary or description to the operation |
| Missing tags | Add tags array to the operation |
| Need operation grouping | Add x-speakeasy-group to operations |
| Need retry config | Add x-speakeasy-retries to operations or globally |
| Deprecate an endpoint | Add deprecated: true to the operation |
| Add SDK-specific metadata | Add any x-speakeasy-* extension |
# 1. Validate the spec to identify issues
speakeasy lint openapi --non-interactive -s openapi.yaml
# 2. Create an overlay file targeting each issue (see patterns above)
# 3. Add overlay to workflow.yaml under sources.overlays
# 4. Regenerate the SDK
speakeasy run --output console
Extensions (x-speakeasy-*) customize SDK generation. Apply them via overlays.
| Extension | Applies To | Purpose |
|---|---|---|
x-speakeasy-retries | Operation or root | Configure retry behavior |
x-speakeasy-pagination | Operation | Enable automatic pagination |
x-speakeasy-name-override | Operation | Override SDK method name |
x-speakeasy-group | Operation | Group methods under namespace |
x-speakeasy-unknown-values | Schema with enum | Allow unknown enum values |
x-speakeasy-globals | Root | Define SDK-wide parameters |
x-speakeasy-custom-security-scheme | Security scheme | Multi-part custom auth |
actions:
- target: "$.paths['/resources'].get" # Or "$" for global
update:
x-speakeasy-retries:
strategy: backoff
backoff:
initialInterval: 500 # ms
maxInterval: 60000 # ms
maxElapsedTime: 3600000 # ms
exponent: 1.5
statusCodes: ["5XX", "429"]
retryConnectionErrors: true
Offset/Limit:
actions:
- target: "$.paths['/users'].get"
update:
x-speakeasy-pagination:
type: offsetLimit
inputs:
- name: offset
in: parameters
type: offset
- name: limit
in: parameters
type: limit
outputs:
results: $.data
numPages: $.meta.total_pages
Cursor:
actions:
- target: "$.paths['/events'].get"
update:
x-speakeasy-pagination:
type: cursor
inputs:
- name: cursor
in: parameters
type: cursor
outputs:
results: $.events
nextCursor: $.next_cursor
Prevent SDK breakage when APIs return new enum values:
actions:
- target: "$.components.schemas.Status"
update:
x-speakeasy-unknown-values: allow
For all enums (add x-speakeasy-jsonpath: rfc9535 at overlay root):
actions:
- target: $..[?length(@.enum) > 1]
update:
x-speakeasy-unknown-values: allow
Add SDK-wide headers as constructor options:
actions:
- target: $
update:
x-speakeasy-globals:
parameters:
- $ref: "#/components/parameters/TenantId"
- target: $.components
update:
parameters:
TenantId:
name: X-Tenant-Id
in: header
schema:
type: string
Result: client = SDK(api_key="...", tenant_id="tenant-123")
For complex auth (HMAC, multi-part credentials):
actions:
- target: $.components
update:
securitySchemes:
hmacAuth:
type: http
scheme: custom
x-speakeasy-custom-security-scheme:
schema:
type: object
properties:
keyId:
type: string
keySecret:
type: string
- target: $
update:
security:
- hmacAuth: []
With envVarPrefix: MYAPI in gen.yaml, generates env var support for MYAPI_KEY_ID, MYAPI_KEY_SECRET.
| Target | Selects |
|---|---|
$.paths['/users'].get | GET /users operation |
$.paths['/users/{id}'].* | All operations on /users/{id} |
$.paths['/users'].get.parameters[0] | First parameter of GET /users |
$.components.schemas.User | User schema definition |
$.components.schemas.User.properties.name | Name property of User schema |
$.info | API info object |
$.info.title | API title |
$.servers[0] | First server entry |
$ref paths with overlays -- fix the source specspeakeasy overlay create command -- it does not exist| Error | Cause | Solution |
|---|---|---|
| "target not found" | JSONPath does not match spec structure | Verify exact path and casing by inspecting the spec |
| Changes not applied | Overlay not in workflow | Add overlay to sources.overlays in workflow.yaml |
| "invalid overlay" | Malformed YAML | Check overlay structure: needs overlay, info, actions |
| YAML parse error | Invalid overlay syntax | Check YAML indentation and quoting |
| No changes visible | Wrong target path | Use $.paths['/exact-path'] with exact casing |
| Errors persist after overlay | Issue not overlay-appropriate | Check if the issue requires a source spec fix instead |
| Overlay order conflict | Later overlay overrides earlier | Reorder overlays in workflow.yaml or merge into one file |
After creating or modifying overlay files and adding them to workflow.yaml, prompt the user to regenerate the SDK:
Overlay configuration complete. Would you like to regenerate the SDK now with
speakeasy run?
If the user confirms, run:
speakeasy run --output console
Overlay changes only take effect in the SDK after regeneration.
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
APIエンドポイントの追加・変更で、DTO、入力検証、OpenAPI仕様、MCPツールの説明や公開範囲を揃え、エージェントからも扱いやすいAPIに整えます。
既存コードのデザインシステム利用状況を調べ、旧UI部品やlucide-reactのアイコンを@trycompai/design-systemの部品・Carbonアイコンへ置き換えるスキルです。
指定されたファイルのフックやAPI利用を点検し、禁止パターンをSWRやapiClientなどの指定方式へ修正するための監査手順と実装規約をまとめています。
NestJSのAPIとフロントエンドを調べ、権限チェックや監査ログのルール違反を修正するための確認項目を示します。
権限で表示や操作が変わるコンポーネントの単体テストを点検し、不足分の追加や失敗の修正を行って、管理者と閲覧専用ユーザーの動作を確かめます。
Better Authを使ったTypeScript認証の設定を支援し、データベース接続、セッション管理、メール認証、OAuth、プラグインやセキュリティ項目を整理します。