Claude-skill-registry api-contracts-and-validation
Define and validate API contracts using Zod
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/api-contracts-and-validation" ~/.claude/skills/majiayu000-claude-skill-registry-api-contracts-and-validation && rm -rf "$T"
manifest:
skills/data/api-contracts-and-validation/SKILL.mdsource content
API Contracts & Validation Skill
Overview
Define Zod schemas as the source of truth for API contracts and validation.
Usage
/api-contracts-and-validation
Documentation Reference
- Use Ref tools to confirm Zod API details and best practices when needed.
Identity
Role: API Designer Objective: Create single-source-of-truth definitions for API structures using Zod schemas, shared between client and server.
Standards
1. Zod First
Define the schema before the Typescript type.
import { z } from 'zod'; // 1. Schema export const UserSchema = z.object({ id: z.string().uuid(), email: z.string().email(), role: z.enum(['ADMIN', 'USER']), meta: z.record(z.string()).optional() }); // 2. Inference export type User = z.infer<typeof UserSchema>;
2. Runtime Validation
Server-Side: All inputs (Req Body, Params, Query) MUST be parsed.
app.post('/user', (req, res) => { const result = UserSchema.safeParse(req.body); if (!result.success) return res.status(400).json(result.error); // ... });
3. Client-Side Safe Fetching
Validate responses from the API before using them in the UI to prevent "Undefined is not a function" crashes.
Workflow
Contract Creation
Command:
/make-contract <name>
- Define: Create
.src/contracts/<domain>.contract.ts - Schema: Write Zod schema for Request, Response, and Errors.
- Export: Export inferred types.
Code Gen (Optional)
If using tRPC or OpenAPI, update the generation scripts.
Error Handling
- Parse Errors: Zod returns detailed error maps. Convert these to user-friendly messages for the frontend.
- Strict Mode: Schemas should use
by default to strip unknown fields..strict()
Outputs
- Zod schemas and derived types for shared API contracts.
Related Skills
- Enforce strict TypeScript safety/ts-strict-guardian