TypeScript-first schema validation and type inference. Use for validating API requests/responses, form data, env vars, configs, defining type-safe schemas with runtime validation, transforming data, generating JSON Schema for OpenAPI/AI, or encountering missing validation errors, type inference issues, validation error handling problems. Zero dependencies (2kb gzipped).
View on GitHubsecondsky/claude-skills
zod
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/secondsky/claude-skills/blob/main/plugins/zod/skills/zod/SKILL.md -a claude-code --skill zodInstallation paths:
.claude/skills/zod/# Zod: TypeScript-First Schema Validation ## Overview Zod is a TypeScript-first validation library that enables developers to define schemas for validating data at runtime while automatically inferring static TypeScript types. With zero dependencies and a 2kb core bundle (gzipped), Zod provides immutable, composable validation with comprehensive error handling. ## Installation ```bash bun add zod # or bun add zod # or bun add zod # or yarn add zod ``` **Requirements**: - TypeScript v5.5+ with `"strict": true` in `tsconfig.json` - Zod 4.x (4.1.12+) **Important**: This skill documents **Zod 4.x** features. The following APIs require Zod 4 and are NOT available in Zod 3.x: - `z.codec()` - Bidirectional transformations - `z.iso.date()`, `z.iso.time()`, `z.iso.datetime()`, `z.iso.duration()` - ISO format validators - `z.toJSONSchema()` - JSON Schema generation - `z.treeifyError()`, `z.prettifyError()`, `z.flattenError()` - New error formatting helpers - `.meta()` - Enhanced metadata (Zod 3.x only has `.describe()`) - Unified `error` parameter - Replaces `message`, `invalid_type_error`, `required_error`, `errorMap` For Zod 3.x compatibility or migration guidance, see https://zod.dev ## Migrating from Zod v3 to v4 **Load `references/migration-guide.md` for complete v3 to v4 migration documentation.** ### Quick Summary Zod v4 introduces breaking changes for better performance: - **Error customization**: Use unified `error` parameter (replaces `message`, `invalid_type_error`, `required_error`) - **Number validation**: Stricter - rejects `Infinity` and unsafe integers - **String formats**: Now top-level functions (`z.email()` vs `z.string().email()`) - **Object defaults**: Applied even in optional fields - **Deprecated APIs**: Use `.extend()` (not `.merge()`), `z.treeifyError()` (not `error.format()`) - **Function validation**: Use `.implement()` method - **UUID validation**: Stricter RFC 9562/4122 compliance **→ Load `references/migration-guide.md` for:** Comple