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

core

`json-render` のスキーマ定義・カタログ管理・AIプロンプト生成を担うコアパッケージです。`@json-render/core` を使用する際や、UI・動画生成向けのJSONスペックを構築する場面で活用してください。

description の原文を見る

Core package for defining schemas, catalogs, and AI prompt generation for json-render. Use when working with @json-render/core, defining schemas, creating catalogs, or building JSON specs for UI/video generation.

SKILL.md 本文

@json-render/core

スキーマ定義、カタログ作成、および仕様ストリーミング用のコアパッケージ。

主要な概念

  • Schema: 仕様とカタログの構造を定義します (defineSchema を使用)
  • Catalog: コンポーネント/アクション名をそれらの定義にマッピングします (defineCatalog を使用)
  • Spec: スキーマに準拠する AI の JSON 出力
  • SpecStream: 段階的な仕様構築のための JSONL ストリーミング形式

スキーマの定義

import { defineSchema } from "@json-render/core";

export const schema = defineSchema((s) => ({
  spec: s.object({
    // Define spec structure
  }),
  catalog: s.object({
    components: s.map({
      props: s.zod(),
      description: s.string(),
    }),
  }),
}), {
  promptTemplate: myPromptTemplate, // Optional custom AI prompt
});

カタログの作成

import { defineCatalog } from "@json-render/core";
import { schema } from "./schema";
import { z } from "zod";

export const catalog = defineCatalog(schema, {
  components: {
    Button: {
      props: z.object({
        label: z.string(),
        variant: z.enum(["primary", "secondary"]).nullable(),
      }),
      description: "Clickable button component",
    },
  },
});

AI プロンプトの生成

const systemPrompt = catalog.prompt(); // Uses schema's promptTemplate
const systemPrompt = catalog.prompt({ customRules: ["Rule 1", "Rule 2"] });

SpecStream ユーティリティ

AI レスポンスをストリーミング (JSONL パッチ) する場合:

import { createSpecStreamCompiler } from "@json-render/core";

const compiler = createSpecStreamCompiler<MySpec>();

// Process streaming chunks
const { result, newPatches } = compiler.push(chunk);

// Get final result
const finalSpec = compiler.getResult();

動的プロップ式

任意のプロップ値は、レンダリング時に解決される動的式です:

  • { "$state": "/state/key" } - 状態モデルから値を読み取ります (一方向読み取り)
  • { "$bindState": "/path" } - 双方向バインディング: 状態から読み取り、書き戻しを有効にします。フォームコンポーネントの自然な値プロップ (value、checked、pressed など) で使用します。
  • { "$bindItem": "field" } - repeat アイテムフィールドへの双方向バインディング。repeat スコープ内で使用します。
  • { "$cond": <condition>, "$then": <value>, "$else": <value> } - 表示条件を評価し、ブランチを選択します
  • { "$template": "Hello, ${/user/name}!" } - ${/path} 参照を状態値で補間します
  • { "$computed": "fnName", "args": { "key": <expression> } } - 解決された引数で登録済み関数を呼び出します

$cond は表示条件 ($stateeqneqnot、AND 用配列) と同じ構文を使用します。$then$else はそれ自体が式である可能性があります (再帰的)。

コンポーネントは双方向バインディング用に statePath プロップを使用しません。代わりに、自然な値プロップ (例: valuecheckedpressed) で { "$bindState": "/path" } を使用してください。

{
  "color": {
    "$cond": { "$state": "/activeTab", "eq": "home" },
    "$then": "#007AFF",
    "$else": "#8E8E93"
  },
  "label": { "$template": "Welcome, ${/user/name}!" },
  "fullName": {
    "$computed": "fullName",
    "args": {
      "first": { "$state": "/form/firstName" },
      "last": { "$state": "/form/lastName" }
    }
  }
}
import { resolvePropValue, resolveElementProps } from "@json-render/core";

const resolved = resolveElementProps(element.props, { stateModel: myState });

状態ウォッチャー

要素は、状態値が変更されたときにアクションをトリガーするために watch フィールド (type/props/children と同じレベル、トップレベル) を宣言できます:

{
  "type": "Select",
  "props": { "value": { "$bindState": "/form/country" }, "options": ["US", "Canada"] },
  "watch": {
    "/form/country": { "action": "loadCities", "params": { "country": { "$state": "/form/country" } } }
  },
  "children": []
}

ウォッチャーは初期レンダリング時ではなく、値が変更された時にのみトリガーされます。

検証

組み込み検証関数: requiredemailurlnumericminLengthmaxLengthminmaxpatternmatchesequalTolessThangreaterThanrequiredIf

クロスフィールド検証は引数で $state 式を使用します:

import { check } from "@json-render/core";

check.required("Field is required");
check.matches("/form/password", "Passwords must match");
check.lessThan("/form/endDate", "Must be before end date");
check.greaterThan("/form/startDate", "Must be after start date");
check.requiredIf("/form/enableNotifications", "Required when enabled");

ユーザープロンプトビルダー

オプションの仕様の改良と状態コンテキストを備えた構造化されたユーザープロンプトを構築:

import { buildUserPrompt } from "@json-render/core";

// Fresh generation
buildUserPrompt({ prompt: "create a todo app" });

// Refinement with edit modes (default: patch-only)
buildUserPrompt({ prompt: "add a toggle", currentSpec: spec, editModes: ["patch", "merge"] });

// With runtime state
buildUserPrompt({ prompt: "show data", state: { todos: [] } });

利用可能な編集モード: "patch" (RFC 6902 JSON Patch)、"merge" (RFC 7396 Merge Patch)、"diff" (unified diff)。

仕様検証

仕様構造を検証し、一般的な問題を自動修正:

import { validateSpec, autoFixSpec } from "@json-render/core";

const { valid, issues } = validateSpec(spec);
const fixed = autoFixSpec(spec);

表示条件

状態ベースの条件で要素の表示を制御します。VisibilityContext{ stateModel: StateModel } です。

import { visibility } from "@json-render/core";

// Syntax
{ "$state": "/path" }                    // truthiness
{ "$state": "/path", "not": true }      // falsy
{ "$state": "/path", "eq": value }      // equality
[ cond1, cond2 ]                         // implicit AND

// Helpers
visibility.when("/path")                 // { $state: "/path" }
visibility.unless("/path")               // { $state: "/path", not: true }
visibility.eq("/path", val)              // { $state: "/path", eq: val }
visibility.and(cond1, cond2)             // { $and: [cond1, cond2] }
visibility.or(cond1, cond2)              // { $or: [cond1, cond2] }
visibility.always                        // true
visibility.never                         // false

スキーマの組み込みアクション

スキーマは builtInActions を宣言できます - 実行時に常に利用でき、プロンプトに自動注入されるアクション:

const schema = defineSchema(builder, {
  builtInActions: [
    { name: "setState", description: "Update a value in the state model" },
  ],
});

これらはプロンプトに [built-in] として表示され、defineRegistry でハンドラーは必要ありません。

StateStore

StateStore インターフェースにより、外部の状態管理ライブラリ (Redux、Zustand、XState など) を json-render レンダラーにプラグインできます。createStateStore ファクトリーはシンプルなメモリ内実装を作成します:

import { createStateStore, type StateStore } from "@json-render/core";

const store = createStateStore({ count: 0 });

store.get("/count");         // 0
store.set("/count", 1);      // updates and notifies subscribers
store.update({ "/a": 1, "/b": 2 }); // batch update

store.subscribe(() => {
  console.log(store.getSnapshot()); // { count: 1 }
});

StateStore インターフェース: get(path)set(path, value)update(updates)getSnapshot()subscribe(listener)

主要なエクスポート

エクスポート用途
defineSchema新しいスキーマを作成
defineCatalogスキーマからカタログを作成
createStateStoreフレームワークに依存しないメモリ内 StateStore を作成
resolvePropValueデータに対して単一のプロップ式を解決
resolveElementProps要素内のすべてのプロップ式を解決
buildUserPrompt改良と状態コンテキストを備えたユーザープロンプトを構築
buildEditUserPrompt既存仕様を編集するためのユーザープロンプトを構築
buildEditInstructions利用可能な編集モードのプロンプトセクションを生成
isNonEmptySpec仕様がルートと少なくとも 1 つの要素を持つかをチェック
deepMergeSpecRFC 7396 ディープマージ (null は削除、配列は置換、オブジェクトは再帰)
diffToPatchesオブジェクト diff から RFC 6902 JSON Patch 操作を生成
EditMode型: "patch" | "merge" | "diff"
validateSpec仕様構造を検証
autoFixSpec一般的な仕様の問題を自動修正
createSpecStreamCompilerJSONL パッチを仕様にストリーム
createJsonRenderTransform混合ストリーム内のテキストと JSONL を分離する TransformStream
parseSpecStreamLine単一の JSONL 行を解析
applySpecStreamPatchパッチをオブジェクトに適用
StateStore外部の状態管理をプラグインするためのインターフェース
ComputedFunction$computed 式の関数シグネチャ
check検証チェックを作成するための TypeScript ヘルパー
BuiltInAction組み込みアクション定義のタイプ (name + description)
ActionBindingアクションバインディングタイプ (preventDefault フィールドを含む)

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
vercel-labs
リポジトリ
vercel-labs/json-render
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/vercel-labs/json-render / ライセンス: 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 フォームよりご連絡ください。
原作者: vercel-labs · vercel-labs/json-render · ライセンス: Apache-2.0