JSON Schema (.json) から以下を生成する CLI です。
- YAML
- TypeScript 型定義
- Zod スキーマコード
- Pydantic v2 モデルコード
- Markdown ドキュメント
- HTML ドキュメント
CLI ファーストで、まずはコマンドとして安定して動くことを優先しています。
内部 $ref と外部 $ref を含む JSON Schema も、事前に参照解決してから TypeScript / Zod / Pydantic / Markdown / HTML 生成を行います。
入力はまず jq で JSON 構文を確認し、その後 Ajv で Draft 2020-12 の JSON Schema として妥当かを検証します。
Nix 開発環境に入り、依存を同期します。
nix develop
pnpm install
uv sync --group dev生成される成果物:
<name>.yaml<name>.types.ts<name>.zod.ts<name>.pydantic.py<name>.md<name>.html
全成果物を生成:
nix develop -c ./scripts/convert.sh test/fixtures/simple-object.schema.json --out-dir generated明示的に一括生成モードを使う場合:
nix develop -c ./scripts/convert.sh schema.json --all --out-dir generated個別生成:
nix develop -c ./scripts/convert.sh schema.json --yaml
nix develop -c ./scripts/convert.sh schema.json --types
nix develop -c ./scripts/convert.sh schema.json --zod
nix develop -c ./scripts/convert.sh schema.json --pydantic
nix develop -c ./scripts/convert.sh schema.json --markdown
nix develop -c ./scripts/convert.sh schema.json --html実ファイルと実プロセスを使う受け入れテストです。
現在のテストでは以下を確認しています。
- schema fixture 全件で YAML / TypeScript / Zod / Pydantic / Markdown / HTML を生成できる
- 入力が JSON として不正なら早期に失敗する
- 入力が JSON Schema として不正なら
Ajvで早期に失敗する - YAML が再パース可能である
- TypeScript / Zod 生成物が
tsc --noEmitを通る - Pydantic 生成物が Python としてコンパイルできる
- Markdown 生成物が基本的な Markdown 文書として出力される
- HTML 生成物が基本的な HTML 文書として出力される
13-ref14-ref15-reffixture で$refを含む生成物がanyに落ちない13-ref14-ref15-reffixture の valid / invalid example を Zod と Pydantic の生成物で検証できる
nix develop -c uv run pytest- YAML:
PyYAML - TypeScript:
json-schema-to-typescript - Zod:
json-schema-to-zod - Pydantic:
datamodel-code-generator - Markdown:
json-schema-static-docs - HTML:
json-schema-static-docs+ Markdown to HTML 変換 - 入力検証:
Ajv
MIT License
Copyright (c) 2026 ks250206