zod について
zodは、TypeScriptでZodを使う開発者向けのベストプラクティスガイドです。優先度付きのルールで、スキーマ設計、解析、型推論、エラー処理、性能を扱います。
主な機能
- 01優先度別に43のルールを整理
- 02スキーマ定義と解析を網羅
- 03型推論とエラー処理を解説
- 04オブジェクト構成と変換の指針
- 05性能とバンドルサイズの最適化
活用シーン
- 01Zodスキーマの作成やレビュー
- 02parse()とsafeParse()の選択
- 03ユーザー向け検証エラーの処理
- 04検証性能とバンドルサイズの改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill zodインストール後、Claude Code で/zodを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdcompose-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.mdperf-arrays.mdperf-avoid-dynamic-creation.mdperf-cache-schemas.md詳細
Zod のベストプラクティス
TypeScript アプリケーションにおける Zod の包括的なスキーマ検証ガイドです。8 つのカテゴリにわたる 43 のルールが含まれており、影響度に基づいて優先順位を付け、リファクタリングの自動化やコード生成に役立てます。
適用する場面
次のような場合に、これらのガイドラインを参照してください。
- 新しい Zod スキーマを作成するとき
- parse() と safeParse() のどちらを使うか選ぶとき
- z.infer による型推論を実装するとき
- ユーザーへのフィードバック用に検証エラーを処理するとき
- 複雑なオブジェクトスキーマを組み合わせるとき
- リファインメントや変換を使用するとき
- バンドルサイズと検証パフォーマンスを最適化するとき
- ベストプラクティスに沿っているか Zod コードをレビューするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | 接頭辞 |
|---|---|---|---|
| 1 | スキーマ定義 | CRITICAL | schema- |
| 2 | 解析と検証 | CRITICAL | parse- |
| 3 | 型推論 | HIGH | type- |
| 4 | エラー処理 | HIGH | error- |
| 5 | オブジェクトスキーマ | MEDIUM-HIGH | object- |
| 6 | スキーマの合成 | MEDIUM | compose- |
| 7 | リファインメントと変換 | 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- 非同期リファインメントには parseAsync を使用しますparse-handle-all-issues- 最初の問題だけでなく、すべての検証問題を処理しますparse-validate-early- システム境界で検証しますparse-avoid-double-validation- 同じデータを二重に検証しないようにしますparse-never-trust-json- JSON.parse の出力を決して信頼しないでください
3. 型推論(HIGH)
type-use-z-infer- 手動で型を定義する代わりに z.infer を使用しますtype-input-vs-output- 変換を扱う際は 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- フォームのエラー表示には flatten() を使用しますerror-path-for-nested- ネストされたエラーの位置を示すには issue.path を使用しますerror-i18n- 国際化されたエラーメッセージを実装しますerror-avoid-throwing-in-refine- refine 内で例外をスローする代わりに false を返します
5. オブジェクトスキーマ(MEDIUM-HIGH)
object-strict-vs-strip- 不明なキーの扱いには strict() と 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-add-path- リファインメントのエラーに path を追加しますrefine-defaults- デフォルト値のあるオプショナルフィールドには default() を使用しますrefine-catch- 障害に強い解析には catch() を使用します
8. パフォーマンスとバンドル(低〜中)
perf-cache-schemas- スキーマインスタンスをキャッシュするperf-zod-mini- バンドルサイズに配慮が必要なアプリケーションでは Zod Mini を使用するperf-avoid-dynamic-creation- ホットパスでの動的なスキーマ作成を避けるperf-lazy-loading- 大きなスキーマを遅延読み込みするperf-arrays- 大きな配列の検証を最適化する
使い方
詳しい説明とコード例については、各リファレンスファイルを参照してください。
- セクションの定義 - カテゴリー構成と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
- 個別のルール:
references/{prefix}-{slug}.md
コンパイル済みの完全版ドキュメント
すべてのルールを展開したガイド全文はこちらです:AGENTS.md
関連スキル
- React Hook Form との統合については、
react-hook-formスキルを参照してください - API クライアントの生成については、
orvalスキルを参照してください
ソース
コメント
Markdown 対応