arktype-validation について
arktype-validation は、TypeScript プロジェクトで ArkType を使うためのスキルです。スキーマ定義、実行時検証、型推論に加え、変換やスコープなどを扱います。
主な機能
- 01文字列式によるスキーマ定義
- 02実行時検証と型推論
- 03変換、制約、カスタム検証
- 04スコープ、ジェネリクス、パターンマッチング
- 05環境変数と Vite ビルドの検証
活用シーン
- 01API リクエストとレスポンスの検証
- 02JSON 文字列の解析と検証
- 03フォーム入力と環境変数の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill arktype-validationインストール後、Claude Code で/arktype-validationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/common-patterns.mdmorphs-and-scopes.mdschema-types.md詳細
ArkType によるバリデーション
概要
ArkType は TypeScript ネイティブのランタイムバリデーションライブラリです。TypeScript の構文を模した文字列式でスキーマを定義でき、エディターの自動補完、構文ハイライト、最適化されたバリデーターを利用できます。型安全な API の構築、JSON ペイロードの検証、Zod よりも TypeScript に馴染む方法への置き換えに適しています。Zod エコシステムとの互換性や JSON Schema の出力が必要なプロジェクトには適していません。
パッケージ: arktype
クイックリファレンス
| パターン | 用途 |
|---|---|
type({ key: "string" }) | オブジェクトスキーマを定義する |
type("string") | プリミティブ型 |
"string.email"、"string.url" | 組み込みの文字列バリデーター |
"string.trim"、"string.lower" | 組み込みの文字列モーフ(変換) |
"string.json.parse" | JSON 文字列を検証済みオブジェクトにパースする |
"number > 0"、"string >= 1" | インライン制約 |
"string | number" | ユニオン型 |
"'a' | 'b' | 'c'" | 文字列リテラルのユニオン |
"string[]" | 配列型 |
"key?": "string" | オプショナルプロパティ |
"key = 'default'" | デフォルト値 |
.pipe()、.to() | 出力を変換する(モーフ) |
.narrow() | カスタムバリデーション(Zod の refine 相当) |
.pick()、.omit() | オブジェクトのプロパティを選択する |
.merge() | オブジェクト型を結合する |
scope({...}).export() | 相互参照可能な名前付き型スコープ |
type("<t>", { box: "t" }) | ジェネリック型定義 |
type.errors | エラー処理(instanceof type.errors で確認) |
.assert(data) | 無効な入力の場合は値を返さず、例外をスローする |
"(number % 2)#even" | ブランド付け — 型のみで検証されるマーカー |
"0 <= number <= 100" | 簡潔な範囲制約 |
configure() | グローバルなデフォルト設定(arktype/config から) |
match() | 型安全なパターンマッチング(2.1) |
"+" : "reject" | インラインで未宣言キーを処理する |
arkenv({ PORT: "number" }) | 型安全な環境変数の検証(ArkEnv) |
arkenvVitePlugin(Env) | Vite のビルド時環境変数検証 |
よくある間違い
| 間違い | 修正 |
|---|---|
type("string.email()") のように括弧を付ける | type("string.email")(括弧なし) |
=== null でエラーを確認する | instanceof type.errors を使用する |
オプショナルに { key: "string?" } を使う | { "key?": "string" }(疑問符はキーに付ける) |
arktype/types からインポートする | "arktype" から type と scope をインポートする |
文字列式内で type() をネストする | 型の相互参照には scope() を使用する |
エラー処理なしで .pipe() を使う | 例外が発生する可能性のある処理には .pipe.try() を使用する |
大文字・小文字の変換に "string.lowercase" を使う | "string.lower"("string.upper" も同様) |
arktype のインポート後に設定する | arktype より先に arktype/config をインポートする |
process.env を手動でパースする | 自動変換と検証には arkenv() を使用する |
委譲
ArkType のスキーマ定義、ランタイム検証、モーフ/変換、スコープ、型推論にはこのスキルを使用してください。Zod ベースの検証については、zod-validation スキルに委譲してください。
リファレンス
コメント
Markdown 対応