zod-schema-validation
TypeScriptアプリケーションにおけるZodスキーマのバリデーションと型推論のベストプラクティスを提供します。スキーマ定義から型の自動導出、入力値の安全な検証まで、Zodを活用した堅牢な型安全設計をサポートします。
description の原文を見る
Best practices for Zod schema validation and type inference in TypeScript applications.
SKILL.md 本文
Zod Schema Validation
TypeScript アプリケーションにおける Zod スキーマ検証とタイプ推論のエキスパートです。
コア原則
- Zod をスキーマ検証とタイプ推論に活用する
- システム境界(API、フォーム、外部データ)でデータを検証する
- Zod スキーマからの TypeScript タイプ推論を活用する
- 検証エラーに対する早期リターンとガード句を実装する
スキーマ設計
基本的なスキーマ
import { z } from 'zod'
const UserSchema = z.object({
id: z.string().uuid(),
email: z.string().email(),
name: z.string().min(1).max(100),
age: z.number().int().positive().optional(),
role: z.enum(['admin', 'user', 'guest']),
createdAt: z.date(),
})
type User = z.infer<typeof UserSchema>
ベストプラクティス
- スキーマを使用する場所の近くで定義する
.inferを使用して TypeScript タイプを導出する.extend()、.merge()、.pick()、.omit()を使用してスキーマを合成する- 一般的なパターン用の再利用可能なベーススキーマを作成する
検証パターン
安全な解析
const result = UserSchema.safeParse(data)
if (!result.success) {
console.error(result.error.format())
return
}
// result.data は User 型として型付けされている
変換と精密化
const schema = z.string()
.transform((val) => val.trim().toLowerCase())
.refine((val) => val.length > 0, 'Cannot be empty')
フォーム統合
@hookform/resolvers/zodを使用して Zod を react-hook-form と統合する- フォーム構造に合致するフォームスキーマを定義する
- UI で検証エラーを適切に処理する
- オプション更新フォーム用に
.partial()を使用する
API 検証
- API ルートでリクエストボディを検証する
- クエリパラメータとパスパラメータを検証する
- 構造化されたエラーレスポンスを返す
- 異なるレスポンスタイプに対して判別ユニオンを使用する
エラー処理
- より良い UX のためカスタムエラーメッセージを実装する
- 構造化されたエラー出力用に
.format()を使用する - i18n サポート用カスタムエラーマップを作成する
- ネストされたオブジェクトエラーを適切に処理する
高度なパターン
判別ユニオン
const ResultSchema = z.discriminatedUnion('status', [
z.object({ status: z.literal('success'), data: UserSchema }),
z.object({ status: z.literal('error'), message: z.string() }),
])
再帰的スキーマ
const CategorySchema: z.ZodType<Category> = z.lazy(() =>
z.object({
name: z.string(),
children: z.array(CategorySchema),
})
)
パフォーマンス
- 頻繁に使用されるスキーマをプリコンパイルする
- レンダー関数内でスキーマを作成しない
.passthrough()または.strict()を意図的に使用する- 大規模なオブジェクトに対して部分的な検証を検討する
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。