pproenca/dot-skills

zod

Zod schema validation best practices for type safety, parsing, and error handling.

查看源码

使用方法

  1. 复制安装命令,在自己的智能体环境安装前先检查源码包。
  2. 从原始文档核对所需工具、凭据和支持的宿主。
  3. 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/pproenca/dot-skills --skill zod

开始前需了解

  • 安装不包含模型订阅、API 额度或访问文件的权限。
  • 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
仓库原始内容

按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。

Zod Best Practices

Comprehensive schema validation guide for Zod in TypeScript applications. Contains 43 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

PriorityCategoryImpactPrefix
1Schema DefinitionCRITICALschema-
2Parsing & ValidationCRITICALparse-
3Type InferenceHIGHtype-
4Error HandlingHIGHerror-
5Object SchemasMEDIUM-HIGHobject-
6Schema CompositionMEDIUMcompose-
7Refinements & TransformsMEDIUMrefine-
8Performance & BundleLOW-MEDIUMperf-

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

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 flatten() for form error display
  • 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 strict() vs strip() for unknown keys
  • 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-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

How to Use

Read individual reference files for detailed explanations and code examples:

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md

Related Skills

  • For React Hook Form integration, see react-hook-form skill
  • For API client generation, see orval skill

Sources

按任务相关推荐

来自同一仓库

更多 Skills

全部 Skills
pproenca
社区

audio-voice-recovery

Audio forensics and voice recovery guidelines for CSI-level audio analysis. This skill should be used when recovering voice from low-quality or low-volume audio, enhancing degraded recordings, performing forensic audio analysis, or transcribing difficult audio. Triggers on tasks involving audio enhancement, noise reduction, voice isolation, forensic authentication, or audio transcription.

安装量
1
GitHub Stars
218
最近更新
8月15日
pproenca
社区

msw

MSW (Mock Service Worker) best practices for API mocking in tests (formerly test-msw). This skill should be used when setting up MSW, writing request handlers, or mocking HTTP APIs. This skill does NOT cover general testing patterns (use test-vitest or test-tdd skills) or test methodology.

安装量
1
GitHub Stars
218
最近更新
8月15日
pproenca
社区

react-hook-form

React Hook Form performance optimization for client-side form validation using useForm, useWatch, useController, useFieldArray, the subscribe() API, and the Watch / FormStateSubscribe / FieldArray render-prop components. Covers RHF 7.82 additions including resetDefaultValues() and the disabled field-array option. This skill should be used when building client-side controlled forms with React Hook Form library. This skill does NOT cover React 19 Server Actions, useActionState, or server-side form

安装量
15
GitHub Stars
217
最近更新
8月15日
pproenca
社区

vitest

Vitest testing framework patterns for test setup, async testing, mocking with vi., snapshots, and test performance (formerly test-vitest). This skill should be used when writing or debugging Vitest tests. This skill does NOT cover TDD methodology (use test-tdd skill), API mocking with MSW (use test-msw skill), or Jest-specific APIs.

安装量
16
GitHub Stars
215
最近更新
8月15日