tool-function-schema-designer

Tool/Function Schema Designer

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "tool-function-schema-designer" with this command: npx skills add monkey1sai/openai-cli/monkey1sai-openai-cli-tool-function-schema-designer

Tool/Function Schema Designer

Design robust tool schemas that LLMs can reliably invoke.

Function Schema Format

// OpenAI function calling format const searchDocsTool = { type: "function", function: { name: "search_documentation", description: "Search through product documentation using semantic search. Use this when the user asks about features, how-tos, or troubleshooting.", parameters: { type: "object", properties: { query: { type: "string", description: "The search query, phrased as a question or keywords", }, filters: { type: "object", properties: { category: { type: "string", enum: ["api", "guides", "tutorials", "troubleshooting"], description: "Filter by documentation category", }, version: { type: "string", description: "Filter by product version (e.g., 'v2.0')", }, }, }, max_results: { type: "integer", minimum: 1, maximum: 10, default: 5, description: "Maximum number of results to return", }, }, required: ["query"], }, }, };

Typed Interfaces

// TypeScript types matching schema interface SearchDocsParams { query: string; filters?: { category?: "api" | "guides" | "tutorials" | "troubleshooting"; version?: string; }; max_results?: number; }

// Implementation async function search_documentation( params: SearchDocsParams ): Promise<SearchResult[]> { const { query, filters = {}, max_results = 5 } = params;

// Implementation return await vectorStore.search(query, { filter: filters, limit: max_results, }); }

Validation Strategy

import { z } from "zod";

// Zod schema for runtime validation const searchDocsSchema = z.object({ query: z.string().min(1, "Query cannot be empty"), filters: z .object({ category: z .enum(["api", "guides", "tutorials", "troubleshooting"]) .optional(), version: z.string().optional(), }) .optional(), max_results: z.number().int().min(1).max(10).default(5), });

// Validate before execution function validateAndExecute(toolName: string, params: unknown) { const validated = searchDocsSchema.parse(params); return search_documentation(validated); }

Tool Registry

export const TOOLS = { search_documentation: { schema: searchDocsTool, implementation: search_documentation, validator: searchDocsSchema, }, create_ticket: { schema: createTicketTool, implementation: create_ticket, validator: createTicketSchema, }, // ... more tools };

// Execute tool safely async function executeTool(name: string, params: unknown) { const tool = TOOLS[name]; if (!tool) throw new Error(Unknown tool: ${name});

const validated = tool.validator.parse(params); return tool.implementation(validated); }

Example Calls

// Example 1: Simple search { "name": "search_documentation", "parameters": { "query": "How do I authenticate API requests?" } }

// Example 2: With filters { "name": "search_documentation", "parameters": { "query": "rate limiting", "filters": { "category": "api", "version": "v2.0" }, "max_results": 3 } }

Error Handling

interface ToolResult { success: boolean; data?: any; error?: { code: string; message: string; }; }

async function safeExecuteTool( name: string, params: unknown ): Promise<ToolResult> { try { const data = await executeTool(name, params); return { success: true, data }; } catch (error) { if (error instanceof z.ZodError) { return { success: false, error: { code: "VALIDATION_ERROR", message: Invalid parameters: ${error.message}, }, }; } return { success: false, error: { code: "EXECUTION_ERROR", message: error.message, }, }; } }

Best Practices

  • Clear descriptions: Explain when to use the tool

  • Specific types: Use enums, ranges, patterns

  • Sensible defaults: Reduce required parameters

  • Validate rigorously: Don't trust LLM output

  • Error messages: Help LLM correct mistakes

  • Example calls: Show success cases

  • Type safety: TypeScript interfaces

Output Checklist

  • JSON schema defined

  • TypeScript interface

  • Validation with Zod

  • Implementation function

  • Error handling

  • Example calls (3+)

  • Tool registry entry

  • Documentation

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

eslint-prettier-config

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

api-docs-generator

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

rate-limiting-abuse-protection

No summary provided by upstream source.

Repository SourceNeeds Review