Produces client libraries from API specifications through an automated, version-controlled generation process.

Install

mkdir -p .claude/skills/sdk-builder && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18510" && unzip -o skill.zip -d .claude/skills/sdk-builder && rm skill.zip

Installs to .claude/skills/sdk-builder

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Guided workflow for generating SDKs from OpenAPI specifications. Use when users request SDK generation, build, or creation for specific products (pingone, identitycloud, etc.) and languages (go, python, etc.). Triggers on requests like "build the X SDK", "generate Y client library", "create Z API SDK", or any request to produce SDK code from OpenAPI specs.
358 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Determine the OpenAPI specification source
  • Clarify the output location for the generated SDK
  • Gather required parameters like language, product, and version
  • Execute SDK generation using a Makefile target
  • Confirm completion and report SDK location

How it works

The skill guides the user through a multi-step workflow to determine the OpenAPI source, output location, and required parameters. It then executes a Makefile target to generate the SDK and confirms completion.

Inputs & outputs

You give it
OpenAPI specification source, desired language, product, and version
You get back
A generated SDK in the specified language and product

When to use sdk-builder

  • Generating API client libraries
  • Building language-specific SDKs
  • Updating SDK versions

About this skill

SDK Builder

Generates SDKs from OpenAPI specifications using a multi-step guided workflow.

Workflow

Step 1: Determine OAS Source

Ask the user for the OpenAPI specification source. If not provided, use default for pingone:

specification/3.1/api/sdk-generation/openapi.yaml

If not pingone, as the user to clarify the source.

OAS source can be:

  • File path (local file)
  • HTTP/HTTPS URL (remote file)
  • FTP URL (remote file)
  • Content in the request itself

Step 2: Clarify Output Location

Ask where to place the generated SDK:

Option A: Directory output (default)

  • Use the Makefile's default pattern: dist/{language}/{product}/{version}
  • Allow custom directory override via TARGET_DIR

Option B: Raise PR against remote project

  • Defer to a future "pr-raiser" skill (not yet implemented)
  • For now, generate to default staging area: dist/{language}/{product}/{version}

Step 3: Gather Required Parameters

Collect from user (all required):

  • LANGUAGE - SDK language (e.g., go, python)
  • PRODUCT - Product code (e.g., pingone, identitycloud)
  • VERSION - SDK version - MUST be explicitly provided, never use a default
    • Expected format: Semver v2 with v prefix (e.g., v0.7.0, v1.2.3)
    • If version matches expected format, continue without interruption
    • If version does NOT match expected format, prompt user to clarify the intended version format

Optional:

  • TARGET_DIR - Custom output directory

Important: The VERSION parameter must always be explicitly specified by the user or agent. Never assume or default a version number.

Step 4: Retrieve Remote OAS (if needed)

If OAS source is remote (HTTP, HTTPS, FTP):

  1. Use run_in_terminal with curl to download to temporary location
  2. Store downloaded file path for use in next step

Example:

curl -L -o /tmp/openapi-spec.yaml "https://pingidentity.com/openapi.yaml"

Step 5: Check Output Directory

Before generating the SDK, check if the output directory already exists and contains files:

  1. Determine the target directory path:

    • If TARGET_DIR provided: use that path
    • Otherwise: use default pattern dist/{language}/{product}/{version}
  2. Check directory status using run_in_terminal:

    if [ -d "/path/to/output" ] && [ "$(ls -A /path/to/output 2>/dev/null)" ]; then
      echo "EXISTS_AND_NOT_EMPTY"
    elif [ -d "/path/to/output" ]; then
      echo "EXISTS_BUT_EMPTY"
    else
      echo "DOES_NOT_EXIST"
    fi
    
  3. Handle results:

    • DOES_NOT_EXIST: Proceed to Step 6

    • EXISTS_BUT_EMPTY: Proceed to Step 6

    • EXISTS_AND_NOT_EMPTY: Prompt user with options:

      The output directory already exists and contains files:
      {directory_path}
      
      How would you like to proceed?
      1. Remove existing directory and regenerate
      2. Cancel generation
      3. Specify a different output directory
      

      Based on user choice:

      • Option 1: Run rm -rf {directory_path} then proceed to Step 6
      • Option 2: Stop workflow and confirm cancellation
      • Option 3: Return to Step 2 to gather new TARGET_DIR, then re-check

Step 6: Execute SDK Generation

Run Makefile generate-sdk target with parameters:

make generate-sdk \
  INPUT_OAS="/path/to/spec.yaml" \
  LANGUAGE=go \
  PRODUCT=pingone \
  VERSION=v0.0.1 \
  [TARGET_DIR=/custom/path]

The Makefile will:

  1. Build the Docker image
  2. Generate SDK to the target directory
  3. Apply language-specific post-processing

Step 7: Confirm Completion

Report to user:

  • Location of generated SDK
  • Next steps (if PR workflow was requested but deferred)

Notes

  • Always verify required parameters before running generation
  • Always check for existing output directory and prompt user before overwriting
  • For remote OAS files, validate download succeeded before proceeding
  • Default output follows pattern: dist/{language}/{product}/{version}
  • PR workflow requires future "pr-raiser" skill integration

When not to use it

  • When a specific SDK version is not explicitly provided
  • When the output directory already exists and contains files, and the user does not want to overwrite
  • When the user requests a PR against a remote project, as this is not yet implemented

Limitations

  • Requires explicit provision of the SDK version parameter
  • PR against remote project functionality is not yet implemented
  • Requires user interaction for output directory conflicts

How it compares

This skill provides a structured, guided workflow for SDK generation from OpenAPI specifications, including parameter validation and output directory checks, which is more controlled than a manual command-line execution.

Compared to similar skills

sdk-builder side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
sdk-builder (this skill)06moReviewIntermediate
telegram-bot-builder1066moReviewIntermediate
mcp-integration218moReviewIntermediate
n8n-workflow-patterns161moNo flagsAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

telegram-bot-builder

davila7

Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots. Covers bot architecture, the Telegram Bot API, user experience, monetization strategies, and scaling bots to thousands of users. Use when: telegram bot, bot api, telegram automation, chat bot telegram, tg bot.

106130

mcp-integration

anthropics

This skill should be used when the user asks to "add MCP server", "integrate MCP", "configure MCP in plugin", "use .mcp.json", "set up Model Context Protocol", "connect external service", mentions "${CLAUDE_PLUGIN_ROOT} with MCP", or discusses MCP server types (SSE, stdio, HTTP, WebSocket). Provides comprehensive guidance for integrating Model Context Protocol servers into Claude Code plugins for external tool and service integration.

21123

n8n-workflow-patterns

czlonkowski

Proven workflow architectural patterns from real n8n workflows. Use when building new workflows, designing workflow structure, choosing workflow patterns, planning workflow architecture, or asking about webhook processing, HTTP API integration, database operations, AI agent workflows, or scheduled tasks.

16115

n8n-code-javascript

czlonkowski

Write JavaScript code in n8n Code nodes. Use when writing JavaScript in n8n, using $input/$json/$node syntax, making HTTP requests with $helpers, working with dates using DateTime, troubleshooting Code node errors, or choosing between Code node modes.

7122

n8n-expression-syntax

czlonkowski

Validate n8n expression syntax and fix common errors. Use when writing n8n expressions, using {{}} syntax, accessing $json/$node variables, troubleshooting expression errors, or working with webhook data in workflows.

6111

n8n-node-configuration

czlonkowski

Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node_essentials and get_node_info, or learning common configuration patterns by node type.

7108

Search skills

Search the agent skills registry