typebox について
TypeScript プロジェクトで TypeBox を選び、使うためのリポジトリスキルです。スキーマの定義や検証方法、別のスキーマライブラリを選ぶ条件を説明します。
主な機能
- 01ポータブルなスキーマオブジェクトの定義
- 02Value.Check() による検証
- 03高性能バリデーターのコンパイル
- 04スキーマ境界の指針
活用シーン
- 01workspace テーブルのスキーマ定義
- 02値の単発検証
- 03コンパイル済みスキーマで反復検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ epicenterhq/ epicenter --skill typeboxインストール後、Claude Code で/typeboxを入力して読み込まれたか確認します。
詳細
TypeBox
パッケージ名
@sinclair/typebox ではなく、typebox を使用してください。@sinclair/typebox パッケージは非推奨です。
// Correct
import { Type } from 'typebox';
import { Compile } from 'typebox/compile';
import { Value } from 'typebox/value';
// Wrong - deprecated
import { Type } from '@sinclair/typebox';
用途に応じた使い分け
| 必要なこと | 使用するもの |
|---|---|
| スキーマの定義 | Type.* を使った typebox |
| 単発の検証 | typebox/value の Value.Check() |
| 高速な検証 | typebox/compile の Compile() |
TypeBox スキーマは、持ち運び可能な JSON Schema 形式のデータです。TypeBox の境界で 検証が必要な場合は、TypeBox スキーマを直接検証してください。
import { Type } from 'typebox';
import { Compile } from 'typebox/compile';
import { Value } from 'typebox/value';
const schema = Type.Object({ name: Type.String(), age: Type.Number() });
Value.Check(schema, value); // boolean
const validator = Compile(schema);
validator.Check(value); // boolean
validator.Parse(value); // throws or returns typed value
Standard Schema の境界
TypeBox は Standard Schema を実装していません。schema['~standard'] を想定する
TypeBox コードは記述しないでください。境界が Standard Schema を受け入れる場合は、
Arktype または Standard Schema をネイティブに実装している別のスキーマライブラリを
使用してください。境界が TypeBox スキーマを扱う場合は、境界を TypeBox ネイティブに
保ち、持ち運び可能な表現として JSON Schema を使用してください。
リポジトリの方針
ワークスペーステーブル、kv、フィールド、アクション、MCP 入力、マニフェストなど、
JSON Schema の形式、メタデータ、Static<>、またはスキーマの検査が必要な箇所では、
持ち運び可能なスキーマオブジェクトに TypeBox を使用してください。ローカルでの
ランタイム検証、リクエストの解析、env/config の解析、永続化される UI 状態、
変換、およびブランド付きドメイン値には Arktype を使用してください。