Skip to main content
skill CX Codex

zod · pymodel — Claude Code skill: what it does, how to install

A set of 46 validation and type inference rules for Zod 4 in TypeScript projects. Helps agents write schemas, handle errors, and clean up deprecated syntax.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add PyModel/react-frontend-skills --skill zod -a claude-code
Open on GitHub

What zod does

This skill supplies coding assistants with 46 prioritized rules for Zod 4 in TypeScript applications. The guidelines are grouped into eight categories covering schema definitions, safe parsing, type inference with z.infer, error handling, and performance tuning with Zod Mini. You can inspect project code against these rules using the detect and scan commands from @pymodel/react-frontend-skills.

The guidelines rely strictly on Zod 4 conventions. Several rules depend on specific minor releases, such as bidirectional transforms with z.codec() in 4.1+, compiled schemas via z.compile in 4.5+, and the validate() helper in 4.6+. Running this against a Zod 3 codebase will cause syntax mismatches because older versions lack these methods. Each rule includes an explanation alongside bad and good code examples.

What it helps with

  • enforce runtime validation on user input with safeParse()
  • infer TypeScript types automatically without manual duplication using z.infer
  • scan codebases for deprecated Zod syntax using the CLI scanner
  • build recursive object schemas safely with z.lazy()
  • optimize hot validation paths with compiled schemas via z.compile

Example prompts for the agent

  • Review the schema in src/auth.ts against Zod 4 best practices and switch from parse() to safeParse().
  • Run npx -y @pymodel/react-frontend-skills scan --skill zod and identify outdated schema patterns in this repo.
  • Generate inferred types using z.infer and configure path-based error reporting for nested profile fields.

How to install zod

1Skills CLI (Vercel)

npx skills add PyModel/react-frontend-skills --skill zod -a claude-code

2Manually: put the files in place

~/.claude/skills/zod/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/zod/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about zod

How to install zod in Claude Code?

Run npx skills add PyModel/react-frontend-skills --skill zod -a claude-code in your terminal. This downloads the skill definition directly into your project.

What does the zod skill do?

It provides 46 prioritized rules for writing, refactoring, and optimizing Zod 4 schemas in TypeScript. Coding agents use these rules to pick correct primitives, structure parsing logic, and infer static types.

Does this skill work with Zod 3?

The skill targets Zod 4 and references features from recent releases like z.codec() and z.compile. Older Zod versions lack these methods, so some suggested patterns will fail.

Source text

SKILL.md · MIT
---
name: zod
description: Zod 4 schema validation and type inference.
---

# Zod Best Practices

Comprehensive schema validation guide for Zod 4 in TypeScript applications. Contains 46 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.

## When to Apply

Reference these guidelines when:
- Writing new Zod schemas
- Choosing between parse() and safeParse()
- Implementing type inference with z.infer
- Handling validation errors for user feedback
- Composing complex object schemas
- Using refinements and transforms
- Optimizing bundle size and validation performance
- Reviewing Zod code for best practices

## Rule Categories by Priority

| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Schema Definition | CRITICAL | `schema-` |
| 2 | Parsing & Validation | CRITICAL | `parse-` |
| 3 | Type Inference | HIGH | `type-` |
| 4 | Error Handling | HIGH | `error-` |
| 5 | Object Schemas | MEDIUM-HIGH | `object-` |
| 6 | Schema Composition | MEDIUM | `compose-` |
| 7 | Refinements & Transforms | MEDIUM | `refine-` |
| 8 | Performance & Bundle | LOW-MEDIUM | `perf-` |

## Quick Reference

### 1. Schema Definition (CRITICAL)

- `schema-use-primitives-correctly` - Use correct primitive schemas for each type
- `schema-use-unknown-not-any` - Use z.unknown() instead of z.any() for type safety
- `schema-avoid-optional-abuse` - Avoid overusing optional fields
- `schema-string-validations` - Apply string validations at schema definition
- `schema-use-enums` - Use enums for fixed string values
- `schema-coercion-for-form-data` - Use coercion for form and query data

### 2. Parsing & Validation (CRITICAL)

- `parse-use-safeparse` - Use safeParse() for user input
- `parse-async-for-async-refinements` - Use parseAsync for async refinements
- `parse-handle-all-issues` - Handle all validation issues not just first
- `parse-validate-early` - Validate at system boundaries
- `parse-avoid-double-validation` - Avoid validating same data twice
- `parse-never-trust-json` - Never trust JSON.parse output
- `parse-validate-for-boolean-checks` - Use validate() for yes/no checks (Zod 4.6+)

### 3. Type Inference (HIGH)

- `type-use-z-infer` - Use z.infer instead of manual types
- `type-input-vs-output` - Distinguish z.input from z.infer for transforms
- `type-export-schemas-and-types` - Export both schemas and inferred types
- `type-branded-types` - Use branded types for domain safety
- `type-enable-strict-mode` - Enable TypeScript strict mode

### 4. Error Handling (HIGH)

- `error-custom-messages` - Provide custom error messages
- `error-use-flatten` - Use Zod 4 error formatting helpers
- `error-path-for-nested` - Use issue.path for nested error location
- `error-i18n` - Implement internationalized error messages
- `error-avoid-throwing-in-refine` - Return false instead of throwing in refine

### 5. Object Schemas (MEDIUM-HIGH)

- `object-strict-vs-strip` - Choose an explicit unknown-key policy
- `object-partial-for-updates` - Use partial() for update schemas
- `object-pick-omit` - Use pick() and omit() for schema variants
- `object-extend-for-composition` - Use extend() for adding fields
- `object-optional-vs-nullable` - Distinguish optional() from nullable()
- `object-discriminated-unions` - Use discriminated unions for type narrowing

### 6. Schema Composition (MEDIUM)

- `compose-shared-schemas` - Extract shared schemas into reusable modules
- `compose-intersection` - Use intersection() for type combinations
- `compose-lazy-recursive` - Use z.lazy() for recursive schemas
- `compose-preprocess` - Use preprocess() for data normalization
- `compose-pipe` - Use pipe() for multi-stage validation

### 7. Refinements & Transforms (MEDIUM)

- `refine-vs-superrefine` - Choose refine() vs superRefine() correctly
- `refine-transform-coerce` - Distinguish transform() from refine() and coerce()
- `refine-use-codec` - Use z.codec() for bidirectional transformations (4.1+)
- `refine-add-path` - Add path to refinement errors
- `refine-defaults` - Use default() for optional fields with defaults
- `refine-catch` - Use catch() for fault-tolerant parsing

### 8. Performance & Bundle (LOW-MEDIUM)

- `perf-cache-schemas` - Cache schema instances
- `perf-zod-mini` - Use Zod Mini for bundle-sensitive applications
- `perf-avoid-dynamic-creation` - Avoid dynamic schema creation in hot paths
- `perf-lazy-loading` - Lazy load large schemas
- `perf-arrays` - Optimize large array validation
- `perf-compile-schemas` - Compile hot-path schemas with z.compile (Zod 4.5+)

## How to Use

Run in the project root first:

```bash
npx -y @pymodel/react-frontend-skills detect            # installed vs. targeted versions
npx -y @pymodel/react-frontend-skills scan --skill zod  # deprecated APIs → rule IDs
```

Read `references/<rule-id>.md` for each rule above that matches the task and for each `scan` hit: why it matters, then incorrect vs. correct code.

## Related Skills

- For React Hook Form integration, see `react-hook-form` skill

## Sources

- [Zod Official Documentation](https://zod.dev/)
- [Zod v4 Release Notes](https://zod.dev/v4)
- [Zod GitHub Repository](https://github.com/colinhacks/zod)
- [Zod Mini](https://zod.dev/packages/mini)
- [Total TypeScript Zod Tutorial](https://www.totaltypescript.com/tutorials/zod)

© PyModel · MIT · PyModel/react-frontend-skills

Similar skills

Everything for Frontend and UI →

zod by other authors comes first.

zod Anivar Aravind A rule set for Zod v4: parsing untrusted data at boundaries, error handling, type inference, and the v3 migration. Useful when the agent writes schemas from memory and mixes up the API. CX Codex +1 1,000installs zod bobmatnyc A skill about the zod library: define a schema once and get runtime checks plus TypeScript types. Useful for forms and API payloads. CX Codex +1 887installs zod-4 prowler-cloud Provides validation patterns for Zod 4 and guides migration from Zod 3. It helps write schemas for forms, API payloads, and adapters. CX Codex +1 1,200installs zod-validation-utilities giuseppe-trisciuoglio Guides Zod v4 validation for TypeScript APIs, forms, and configuration. Use it when external input needs parsing, coercion, and clear validation errors. CX Codex +1 3,800installs zod-schema-validation Mindrally Guides agents on writing Zod schemas, inferring TypeScript types, and validating boundaries in APIs and UI forms. Keeps validation consistent across the codebase. CX Codex +1 1,200installs react-hook-form-zod ovachiever A skill that walks your agent through React Hook Form with Zod validation. One schema covers the client and the server. CX Codex +1 722installs valibot open-circle Teaches the agent to work with Valibot: build schemas, parse input, and stop mixing the API up with Zod. Useful when the library is already in your project. CX Codex +1 2,100installs core vercel-labs Defines the schema and component catalog for json-render and builds the system prompt that makes an AI emit JSON UI specs. CX Codex +1 15,000installs

From the same set9

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor