zod について
TypeScript アプリケーションで Zod 4 のスキーマ検証を行う開発者向けガイドです。スキーマ設計、解析、型、エラー、合成、パフォーマンスを優先度別のルールで扱います。
主な機能
- 018カテゴリにわたる46ルール
- 02優先度別のガイダンス
- 03スキーマと解析の実践
- 04型推論とエラー処理
- 05合成とパフォーマンスの指針
活用シーン
- 01新しい Zod スキーマの設計
- 02解析・検証方法の選択
- 03Zod コードのレビューと改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pymodel/ react-frontend-skills --skill zodインストール後、Claude Code で/zodを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/compose-intersection.mdcompose-lazy-recursive.mdcompose-pipe.mdcompose-preprocess.mdcompose-shared-schemas.mderror-avoid-throwing-in-refine.mderror-custom-messages.mderror-i18n.mderror-path-for-nested.mderror-use-flatten.mdobject-discriminated-unions.mdobject-extend-for-composition.mdobject-optional-vs-nullable.mdobject-partial-for-updates.mdobject-pick-omit.mdobject-strict-vs-strip.mdparse-async-for-async-refinements.mdparse-avoid-double-validation.mdparse-handle-all-issues.mdparse-never-trust-json.mdparse-use-safeparse.mdparse-validate-early.mdparse-validate-for-boolean-checks.mdperf-arrays.mdperf-avoid-dynamic-creation.mdperf-cache-schemas.mdperf-compile-schemas.mdperf-lazy-loading.mdperf-zod-mini.mdrefine-add-path.md詳細
Zod のベストプラクティス
TypeScript アプリケーションにおける Zod 4 の包括的なスキーマ検証ガイドです。自動リファクタリングとコード生成の指針となるよう、影響度順に優先順位付けした 8 つのカテゴリ、46 のルールを収録しています。
適用するタイミング
次の場合に、このガイドラインを参照してください。
- 新しい Zod スキーマを作成するとき
- parse() と safeParse() のどちらを使うか選ぶとき
- z.infer を使って型推論を実装するとき
- ユーザーへのフィードバック用に検証エラーを処理するとき
- 複雑なオブジェクトスキーマを合成するとき
- refinements と transforms を使うとき
- バンドルサイズと検証パフォーマンスを最適化するとき
- Zod のコードをベストプラクティスに照らしてレビューするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | スキーマ定義 | CRITICAL | schema- |
| 2 | パースと検証 | CRITICAL | parse- |
| 3 | 型推論 | HIGH | type- |
| 4 | エラー処理 | HIGH | error- |
| 5 | オブジェクトスキーマ | MEDIUM-HIGH | object- |
| 6 | スキーマ合成 | MEDIUM | compose- |
| 7 | refinements と transforms | MEDIUM | refine- |
| 8 | パフォーマンスとバンドル | LOW-MEDIUM | perf- |
クイックリファレンス
1. スキーマ定義(CRITICAL)
schema-use-primitives-correctly- 各型に適切なプリミティブスキーマを使用するschema-use-unknown-not-any- 型安全性のため、z.any() ではなく z.unknown() を使用するschema-avoid-optional-abuse- オプショナルフィールドの過剰な使用を避けるschema-string-validations- スキーマ定義時に文字列の検証を適用するschema-use-enums- 固定文字列値には列挙型を使用するschema-coercion-for-form-data- フォームデータとクエリデータには型強制を使用する
2. パースと検証(CRITICAL)
parse-use-safeparse- ユーザー入力には safeParse() を使用するparse-async-for-async-refinements- 非同期の refinements には parseAsync を使用するparse-handle-all-issues- 最初のものだけでなく、すべての検証上の問題を処理するparse-validate-early- システムの境界で検証するparse-avoid-double-validation- 同じデータを二重に検証しないparse-never-trust-json- JSON.parse の出力を決して信用しないparse-validate-for-boolean-checks- はい/いいえの確認には validate() を使用する(Zod 4.6 以降)
3. 型推論(HIGH)
type-use-z-infer- 手動で型を定義する代わりに z.infer を使用するtype-input-vs-output- transforms では z.input と z.infer を区別するtype-export-schemas-and-types- スキーマと推論された型の両方をエクスポートするtype-branded-types- ドメインの安全性のためにブランド型を使用するtype-enable-strict-mode- TypeScript の strict モードを有効にする
4. エラー処理(HIGH)
error-custom-messages- カスタムエラーメッセージを指定するerror-use-flatten- Zod 4 のエラー整形ヘルパーを使用するerror-path-for-nested- ネストされたエラーの位置には issue.path を使用するerror-i18n- 国際化されたエラーメッセージを実装するerror-avoid-throwing-in-refine- refine 内で例外をスローする代わりに false を返す
5. オブジェクトスキーマ(MEDIUM-HIGH)
object-strict-vs-strip- 未知のキーに対するポリシーを明示的に選択するobject-partial-for-updates- 更新用スキーマには partial() を使用するobject-pick-omit- スキーマのバリエーションには pick() と omit() を使用するobject-extend-for-composition- フィールドの追加には extend() を使用するobject-optional-vs-nullable- optional() と nullable() を区別するobject-discriminated-unions- 型の絞り込みには判別可能なユニオンを使用する
6. スキーマ合成(MEDIUM)
compose-shared-schemas- 共有スキーマを再利用可能なモジュールに抽出するcompose-intersection- 型の組み合わせには intersection() を使用するcompose-lazy-recursive- 再帰スキーマには z.lazy() を使用するcompose-preprocess- データの正規化には preprocess() を使用するcompose-pipe- 多段階の検証には pipe() を使用する
7. リファインと変換(MEDIUM)
refine-vs-superrefine- refine() と superRefine() を適切に使い分けますrefine-transform-coerce- transform()、refine()、coerce() の違いを理解しますrefine-use-codec- 双方向の変換には z.codec() を使用します(4.1+)refine-add-path- リファインエラーに path を追加しますrefine-defaults- デフォルト値を持つオプションフィールドには default() を使用しますrefine-catch- 障害に強いパースには catch() を使用します
8. パフォーマンスとバンドル(LOW-MEDIUM)
perf-cache-schemas- スキーマインスタンスをキャッシュしますperf-zod-mini- バンドルサイズが重視されるアプリケーションでは Zod Mini を使用しますperf-avoid-dynamic-creation- ホットパスでの動的なスキーマ作成を避けますperf-lazy-loading- 大きなスキーマを遅延読み込みしますperf-arrays- 大きな配列の検証を最適化しますperf-compile-schemas- z.compile を使ってホットパスのスキーマをコンパイルします(Zod 4.5+)
使用方法
まず、プロジェクトのルートで実行します。
npx -y @pymodel/react-frontend-skills detect # installed vs. targeted versions
npx -y @pymodel/react-frontend-skills scan --skill zod # deprecated APIs → rule IDs
上記のルールのうちタスクに該当するものと、scan の各検出項目について、references/<rule-id>.md を読み、重要な理由と誤ったコード・正しいコードを確認してください。
関連スキル
- React Hook Form との連携については、
react-hook-formスキルを参照してください
参照元
コメント
Markdown 対応