Back to skills
SkillHub ClubShip Full StackFull StackBackend

generate-sdk-types

Generates TypeScript type definitions for SDK from Rust tool schemas, ensuring type safety between server and client

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
2
Hot score
79
Updated
March 20, 2026
Overall rating
C0.6
Composite score
0.6
Best-practice grade
B84.0

Install command

npx @skill-hub/cli install majiayu000-claude-skill-registry-data-generate-sdk-types

Repository

majiayu000/claude-skill-registry-data

Skill path: other/other/generate-sdk-types

Generates TypeScript type definitions for SDK from Rust tool schemas, ensuring type safety between server and client

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack, Backend.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: majiayu000.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install generate-sdk-types into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/majiayu000/claude-skill-registry-data before adding generate-sdk-types to shared team environments
  • Use generate-sdk-types for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: generate-sdk-types
description: Generates TypeScript type definitions for SDK from Rust tool schemas, ensuring type safety between server and client
user-invocable: true
---

# Generate SDK Types Skill

## Purpose
Generates TypeScript type definitions for the SDK from Rust tool schemas, ensuring type safety between server and client.

## CLAUDE.md Compliance
- ✅ Automated type generation (no manual sync)
- ✅ Validates type consistency
- ✅ Prevents type drift between Rust and TypeScript

## Usage
Run this skill:
- After adding/modifying MCP tools
- After changing tool parameter schemas
- Before SDK releases
- After protocol changes

## Prerequisites
- Bun runtime installed
- Pierre server must be runnable
- `sdk/` directory with dependencies installed

## Commands

### Standard Type Generation
```bash
# 1. Ensure server is running
cargo run --bin pierre-mcp-server &
SERVER_PID=$!
sleep 3

# 2. Generate TypeScript types
cd sdk
bun run generate-types

# 3. Verify types changed
git diff src/types.ts

# 4. Cleanup
kill $SERVER_PID
cd ..
```

### One-Command Generation
```bash
# Run from project root (handles server lifecycle)
./scripts/sdk/generate-sdk-types.js
```

### Manual Generation Process
```bash
# 1. Start server
cargo run --bin pierre-mcp-server &
SERVER_PID=$!
sleep 3

# 2. Fetch tool schemas via MCP
curl -X POST http://localhost:8081/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}' \
  > /tmp/tools.json

# 3. Parse and generate types
cd sdk
node scripts/generate-types.js /tmp/tools.json

# 4. Format generated code
bun run format

# 5. Cleanup
kill $SERVER_PID
cd ..
```

## Generated Type Structure

### Tool Definitions
```typescript
// Generated from Rust ToolDefinition structs
export interface Tool {
  name: string;
  description: string;
  inputSchema: {
    type: 'object';
    properties: Record<string, JsonSchema>;
    required?: string[];
  };
}

// Example: get_activities tool
export interface GetActivitiesParams {
  start_date?: string;
  end_date?: string;
  limit?: number;
  provider?: 'strava' | 'garmin' | 'fitbit';
}
```

### Tool Registry
```typescript
// All available tools
export const TOOLS: Tool[] = [
  {
    name: 'get_activities',
    description: 'Retrieves fitness activities...',
    inputSchema: { /* ... */ }
  },
  // ... 35+ tools
];
```

## Type Validation

### Pre-Generation Check
```bash
# Verify Rust tools compile
cargo build --lib

# Check tool count
rg "^pub const TOOL_" src/protocols/universal/tool_registry.rs --type rust | wc -l
```

### Post-Generation Validation
```bash
# Verify types compile
cd sdk
bun run build

# Run type tests
bun test -- test/unit/types.test.ts

# Check type coverage
bun run type-check
cd ..
```

### Diff Analysis
```bash
# Compare generated types with committed version
git diff sdk/src/types.ts

# Expected changes after adding a tool:
# + New tool interface
# + New tool definition in TOOLS array
# + Updated tool count comment
```

## Type Generation Workflow

### 1. Add New Tool in Rust
```rust
// src/protocols/universal/tool_registry.rs
pub const TOOL_MY_NEW_FEATURE: ToolDefinition = ToolDefinition {
    name: "my_new_feature",
    description: "Does something useful",
    input_schema: json!({
        "type": "object",
        "properties": {
            "param1": { "type": "string" },
            "param2": { "type": "number" }
        },
        "required": ["param1"]
    }),
};
```

### 2. Register Tool
```rust
// src/protocols/universal/mod.rs
impl UniversalToolExecutor {
    pub fn register_tools(&mut self) {
        self.register(TOOL_MY_NEW_FEATURE, handle_my_new_feature);
    }
}
```

### 3. Generate TypeScript Types
```bash
cd sdk
bun run generate-types
```

### 4. Verify Generated Types
```typescript
// sdk/src/types.ts (auto-generated)
export interface MyNewFeatureParams {
  param1: string;
  param2?: number;
}

export const TOOL_MY_NEW_FEATURE: Tool = {
  name: 'my_new_feature',
  description: 'Does something useful',
  inputSchema: { /* ... */ }
};
```

### 5. Commit Changes
```bash
git add src/protocols/universal/tool_registry.rs
git add sdk/src/types.ts
git commit -m "feat: add my_new_feature tool with TypeScript types"
```

## Success Criteria
- ✅ TypeScript types match Rust tool definitions
- ✅ All tools have corresponding TypeScript interfaces
- ✅ Generated code compiles without errors
- ✅ Type tests pass
- ✅ No manual type definitions (all auto-generated)
- ✅ Git diff shows expected changes only

## Related Files
- `scripts/sdk/generate-sdk-types.js` - Type generation script
- `sdk/src/types.ts` - Generated TypeScript types
- `src/protocols/universal/tool_registry.rs` - Rust tool definitions
- `sdk/TYPE_GENERATION.md` - Type generation documentation

## Related Skills
- `test-mcp-compliance` - MCP protocol validation
generate-sdk-types | SkillHub