Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 0品質スコア 50/100

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

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: mindrally · mindrally/skills · ライセンス: Apache-2.0