xiaohongshu
xiaohongshu
generate-sdk-types
Generates TypeScript type definitions for SDK from Rust tool schemas, ensuring type safety between server and client
Full skill instructions
Generates TypeScript type definitions for the SDK from Rust tool schemas, ensuring type safety between server and client.
Run this skill:
sdk/ directory with dependencies installed# 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 ..
# Run from project root (handles server lifecycle)
./scripts/generate-sdk-types.js
# 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 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';
}
// All available tools
export const TOOLS: Tool[] = [
{
name: 'get_activities',
description: 'Retrieves fitness activities...',
inputSchema: { /* ... */ }
},
// ... 35+ tools
];
# Verify Rust tools compile
cargo build --lib
# Check tool count
rg "^pub const TOOL_" src/protocols/universal/tool_registry.rs --type rust | wc -l
# 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 ..
# 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
// 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"]
}),
};
// src/protocols/universal/mod.rs
impl UniversalToolExecutor {
pub fn register_tools(&mut self) {
self.register(TOOL_MY_NEW_FEATURE, handle_my_new_feature);
}
}
cd sdk
bun run generate-types
// 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: { /* ... */ }
};
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"
scripts/generate-sdk-types.js - Type generation scriptsdk/src/types.ts - Generated TypeScript typessrc/protocols/universal/tool_registry.rs - Rust tool definitionssdk/TYPE_GENERATION.md - Type generation documentationtest-mcp-compliance - MCP protocol validationxiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience