
Json Render Generative Ui
Set up json-render so AI outputs JSON UI specs that render safely through a typed component catalog across React, Vue, Svelte, Solid, RN, video, PDF, and email.
Overview
json-render Generative UI is an agent skill for the Build phase that sets up catalog-constrained, type-safe rendering of AI-generated JSON UI across multiple front-end and export targets.
Install
npx skills add https://github.com/aradotso/trending-skills --skill json-render-generative-uiWhat is this skill?
- AI emits JSON; json-render maps specs to type-safe components from your catalog
- React core plus optional shadcn/ui pack cited as 36 pre-built components
- Multi-renderer support: Vue, Svelte, Solid, React Native, Remotion, react-pdf, react-email
- Streaming-oriented generative UI workflows from natural language prompts
- Explicit install paths per platform via scoped @json-render packages
- Optional @json-render/shadcn pack described as 36 pre-built components
- Render targets include React, Vue, Svelte, Solid, React Native, Remotion, PDF, and email
Adoption & trust: 1.2k installs on skills.sh; 31 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want AI-driven screens but raw HTML or JSX from the model is unsafe, inconsistent, and hard to stream into your app.
Who is it for?
Builders adding copilot or dynamic dashboards who already use React-family stacks and want catalog-bound generative UI.
Skip if: Static marketing sites with fixed pages only, or backends with no client renderer where JSON UI specs would not be consumed.
When should I use this skill?
Use json-render to generate UI, render AI-generated components, stream AI UI, create a json-render catalog, or set up json-render React/shadcn renderers.
What do I get? / Deliverables
A json-render catalog and renderer wiring so prompts produce JSON specs that compile to approved components on your chosen platform.
- Package install and renderer bootstrap for chosen platform
- Catalog-oriented generative UI integration pattern for AI JSON specs
Recommended Skills
Journey fit
Build → frontend is the natural shelf because the skill centers on installers, renderers, and catalog-bound components for user-facing UI. Frontend subphase matches generative UI from prompts constrained to predefined catalogs, including shadcn and cross-platform renderers.
How it compares
Framework skill for catalog-bound JSON UI, not unstructured v0-style paste of arbitrary component code.
Common Questions / FAQ
Who is json-render-generative-ui for?
Solo builders and indie teams shipping AI-assisted front ends who need constrained, type-safe UI generation across web and mobile renderers.
When should I use json-render-generative-ui?
During Build frontend when standing up generative panels, streaming AI UI, or a shared component catalog for React, Vue, Svelte, Solid, or React Native.
Is json-render-generative-ui safe to install?
It documents npm packages and integration steps—review the Security Audits panel on this page and pin @json-render dependencies like any other UI framework.
SKILL.md
READMESKILL.md - Json Render Generative Ui
# json-render Generative UI Framework > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. json-render is a **Generative UI framework** that lets AI generate dynamic interfaces from natural language prompts, constrained to a predefined component catalog. AI outputs JSON; json-render renders it safely and predictably across any platform. ## Installation ```bash # React (core) npm install @json-render/core @json-render/react # React + shadcn/ui (36 pre-built components) npm install @json-render/shadcn # React Native npm install @json-render/core @json-render/react-native # Vue npm install @json-render/core @json-render/vue # Svelte npm install @json-render/core @json-render/svelte # SolidJS npm install @json-render/core @json-render/solid # Video (Remotion) npm install @json-render/core @json-render/remotion # PDF npm install @json-render/core @json-render/react-pdf # Email npm install @json-render/core @json-render/react-email @react-email/components @react-email/render # 3D (React Three Fiber) npm install @json-render/core @json-render/react-three-fiber @react-three/fiber @react-three/drei three # OG Images / SVG / PNG npm install @json-render/core @json-render/image # State management adapters npm install @json-render/zustand # or redux, jotai, xstate # MCP integration (Claude, ChatGPT, Cursor) npm install @json-render/mcp # YAML wire format npm install @json-render/yaml ``` ## Core Concepts | Concept | Description | |---|---| | **Catalog** | Defines allowed components and actions (the guardrails for AI) | | **Spec** | AI-generated JSON describing which components to render and with what props | | **Registry** | Maps catalog component names to actual render implementations | | **Renderer** | Platform-specific component that takes a spec + registry and renders UI | | **Actions** | Named events AI can trigger (e.g. `export_report`, `refresh_data`) | ## Spec Format The flat spec format uses a root key + elements map: ```typescript const spec = { root: "card-1", elements: { "card-1": { type: "Card", props: { title: "Dashboard" }, children: ["metric-1", "metric-2", "button-1"], }, "metric-1": { type: "Metric", props: { label: "Revenue", value: "124000", format: "currency" }, children: [], }, "metric-2": { type: "Metric", props: { label: "Growth", value: "0.18", format: "percent" }, children: [], }, "button-1": { type: "Button", props: { label: "Export Report", action: "export_report" }, children: [], }, }, }; ``` ## Step 1: Define a Catalog ```typescript import { defineCatalog } from "@json-render/core"; import { schema } from "@json-render/react/schema"; import { z } from "zod"; const catalog = defineCatalog(schema, { components: { Card: { props: z.object({ title: z.string() }), description: "A card container with a title", }, Metric: { props: z.object({ label: z.string(), value: z.string(), format: z.enum(["currency", "percent", "number"]).nullable(), }), description: "Displays a single metric value with optional formatting", }, Button: { props: z.object({ label: z.string(), action: z.string(), }), description: "Clickable button that triggers an action", }, Stack: { props: z.object({ direction: z.enum(["row", "column"]).default("column"),