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

react-native

json-renderのReact Nativeレンダラーで、JSON仕様をネイティブモバイルUIに変換します。`@json-render/react-native`を使用する際や、JSONからReact Native UIを構築する場合、モバイル向けコンポーネントカタログの作成、またはAI生成仕様をモバイルでレンダリングする際に活用してください。

description の原文を見る

React Native renderer for json-render that turns JSON specs into native mobile UIs. Use when working with @json-render/react-native, building React Native UIs from JSON, creating mobile component catalogs, or rendering AI-generated specs on mobile.

SKILL.md 本文

@json-render/react-native

JSONスペックをネイティブモバイルコンポーネントツリーに変換するReact Nativeレンダラー。標準コンポーネント、データバインディング、表示条件、アクション、および動的プロップをサポートしています。

クイックスタート

import { defineCatalog } from "@json-render/core";
import { schema } from "@json-render/react-native/schema";
import {
  standardComponentDefinitions,
  standardActionDefinitions,
} from "@json-render/react-native/catalog";
import { defineRegistry, Renderer, type Components } from "@json-render/react-native";
import { z } from "zod";

// Create catalog with standard + custom components
const catalog = defineCatalog(schema, {
  components: {
    ...standardComponentDefinitions,
    Icon: {
      props: z.object({ name: z.string(), size: z.number().nullable(), color: z.string().nullable() }),
      slots: [],
      description: "Icon display",
    },
  },
  actions: standardActionDefinitions,
});

// Register only custom components (standard ones are built-in)
const { registry } = defineRegistry(catalog, {
  components: {
    Icon: ({ props }) => <Ionicons name={props.name} size={props.size ?? 24} />,
  } as Components<typeof catalog>,
});

// Render
function App({ spec }) {
  return (
    <StateProvider initialState={{}}>
      <VisibilityProvider>
        <ActionProvider handlers={{}}>
          <Renderer spec={spec} registry={registry} />
        </ActionProvider>
      </VisibilityProvider>
    </StateProvider>
  );
}

標準コンポーネント

レイアウト

  • Container - パディング、背景色、角丸を持つラッパー
  • Row - ギャップとアライメントを備えた水平フレックスレイアウト
  • Column - ギャップとアライメントを備えた垂直フレックスレイアウト
  • ScrollContainer - スクロール可能な領域(垂直または水平)
  • SafeArea - ノッチやホームインジケーター用のセーフエリアインセット
  • Pressable - タップ時にアクションをトリガーするタッチ可能なラッパー
  • Spacer - 固定またはフレキシブルなスペーシング
  • Divider - 薄い線の区切り

コンテンツ

  • Heading - 見出しテキスト(レベル1~6)
  • Paragraph - 本文テキスト
  • Label - 小さなラベルテキスト
  • Image - サイジングモード付きの画像表示
  • Avatar - 円形のアバター画像
  • Badge - 小さなステータスバッジ
  • Chip - カテゴリ用のタグ/チップ

入力

  • Button - バリアント付きの押下可能なボタン
  • TextInput - テキスト入力フィールド
  • Switch - トグルスイッチ
  • Checkbox - ラベル付きのチェックボックス
  • Slider - 範囲スライダー
  • SearchBar - 検索入力

フィードバック

  • Spinner - ローディングインジケーター
  • ProgressBar - プログレスインジケーター

複合

  • Card - 任意のヘッダー付きカードコンテナ
  • ListItem - タイトル、サブタイトル、アクセサリー付きのリスト行
  • Modal - ボトムシートモーダル

表示条件

要素に visible を使用します。構文: { "$state": "/path" }{ "$state": "/path", "eq": value }{ "$state": "/path", "not": true }、AND条件の場合は [ cond1, cond2 ]

Pressable + setState パターン

タブバーのようなインタラクティブなUIに対して、組み込みの setState アクションで Pressable を使用します:

{
  "type": "Pressable",
  "props": {
    "action": "setState",
    "actionParams": { "statePath": "/activeTab", "value": "home" }
  },
  "children": ["home-icon", "home-label"]
}

動的プロップ式

任意のプロップ値は、レンダリング時に解決されるデータドリブンな式にできます:

  • { "$state": "/state/key" } - ステートモデルから読み込み(一方向読み込み)
  • { "$bindState": "/path" } - 双方向バインディング: フォームコンポーネントの自然な値プロップ(value、checked、pressed等)に使用
  • { "$bindItem": "field" } - 繰り返しアイテムフィールドへの双方向バインディング。繰り返しスコープ内で使用
  • { "$cond": <condition>, "$then": <value>, "$else": <value> } - 条件付き値
{
  "type": "TextInput",
  "props": {
    "value": { "$bindState": "/form/email" },
    "placeholder": "Email"
  }
}

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

組み込みアクション

setState アクションは ActionProvider によって自動的に処理され、ステートモデルを直接更新します。これにより表示条件と動的プロップ式が再評価されます:

{ "action": "setState", "actionParams": { "statePath": "/activeTab", "value": "home" } }

プロバイダー

プロバイダー用途
StateProviderコンポーネント間でステートを共有(JSON Pointerパス)。制御モード用の任意の store プロップを受け付け
ActionProviderコンポーネントからディスパッチされたアクションを処理
VisibilityProviderステートに基づいた条件付きレンダリングを有効化
ValidationProviderフォームフィールド検証

外部ストア(制御モード)

StateProvider(または JSONUIProvider / createRenderer)に StateStore を渡して、外部のステート管理を使用します:

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

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

<StateProvider store={store}>{children}</StateProvider>

store.set("/count", 1); // React は自動的に再レンダリング

store が提供されている場合、initialStateonStateChange は無視されます。

主要なエクスポート

エクスポート用途
defineRegistryカタログから型安全なコンポーネントレジストリを作成
Rendererレジストリを使用してスペックをレンダリング
schemaReact Native要素ツリースキーマ
standardComponentDefinitionsすべての標準コンポーネント用のカタログ定義
standardActionDefinitions標準アクション用のカタログ定義
standardComponents事前構築されたコンポーネント実装
createStandardActionHandlers標準アクション用のハンドラーを作成
useStateStoreステートコンテキストにアクセス
useStateValueステートから単一の値を取得
useBoundProp$bindState/$bindItem による双方向ステートバインディング
useStateBinding(非推奨) パスによるレガシー双方向バインディング
useActionsアクションコンテキストにアクセス
useAction単一のアクションディスパッチ関数を取得
useUIStreamAPIエンドポイントからスペックをストリーム
createStateStoreフレームワークに依存しないインメモリの StateStore を作成
StateStore外部ステート管理をプラグインするためのインターフェース

ライセンス: 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