En los propios términos del Skill
El skill cubre @json-render/ink, un renderer de terminal Ink que convierte especificaciones JSON en árboles interactivos de componentes de terminal con enlace de datos, visibilidad, acciones y props dinámicas. Recorre la definición de un catálogo a partir del esquema de Ink con zod, el registro de solo los componentes personalizados en un registry, y el renderizado con Renderer dentro de JSONUIProvider, o el enfoque de nivel superior createRenderer y standardComponents.
Los lectores aprenden el formato de especificación de mapa plano de elementos con una clave raíz, el conjunto estándar de componentes de layout, contenido e interactivos, las expresiones de estado y binding, el sistema de eventos y las acciones integradas setState, pushState y removeState, las listas repeat, el streaming JSONL mediante useUIStream, los roles de los providers, las exportaciones clave y las pautas de diseño para terminal, como un ancho de 80-120 columnas.
Qué produce
- Un árbol interactivo de componentes de terminal renderizado a partir de la especificación JSON.
- Un system prompt de IA generado a partir del catálogo para la creación de especificaciones.
- Un StateStore en memoria independiente del framework que impulsa los re-renders.
Cómo funciona
- 01Definir un catálogo a partir del esquema de Ink
Importe defineCatalog desde @json-render/core y pase el esquema de Ink junto con las definiciones de componentes y acciones que desee permitir.
- 02Registre solo sus componentes personalizados
defineRegistry toma el catálogo, pero las implementaciones de los componentes estándar ya están integradas, por lo que solo se mapean los personalizados a elementos de Ink.
- 03Envuelva el Renderer en providers
JSONUIProvider proporciona los contextos de estado, visibilidad, acción y foco al Renderer, que recibe la especificación y el registry.
- 04Redacte especificaciones como un mapa plano de elementos
La especificación incluye una clave raíz que nombra el primer elemento y un mapa de elementos de nodos tipados con props, hijos y enlaces de eventos opcionales.
- 05Enlace props con expresiones
Cualquier valor de prop puede resolverse en el momento del renderizado a partir del estado, elementos de repeat, condiciones o plantillas de cadena, en lugar de estar codificado de forma fija.
- 06Transmita especificaciones de forma progresiva
useUIStream consume streams de parches JSONL desde un endpoint de API y expone spec, send e isStreaming al llamador.