Nelle parole della skill
Lo skill riguarda @json-render/ink, un renderer per terminale basato su Ink che trasforma le specifiche JSON in alberi di componenti terminale interattivi con data binding, visibilità, azioni e prop dinamiche. Illustra come definire un catalogo a partire dallo schema Ink con zod, registrare solo i componenti personalizzati in un registry e renderizzare con Renderer all'interno di JSONUIProvider, oppure con le funzioni di livello superiore createRenderer e standardComponents.
I lettori apprendono il formato della specifica come mappa piatta di elementi con una chiave root, gli insiemi standard di componenti di layout, contenuto e interattivi, le espressioni di stato e binding, il sistema di eventi e le azioni integrate setState, pushState e removeState, le liste repeat, lo streaming JSONL tramite useUIStream, i ruoli dei provider, gli export principali e le linee guida di design per terminale come la larghezza di 80-120 colonne.
Che cosa produce
- Un albero di componenti terminale interattivo renderizzato dalla specifica JSON.
- Un prompt di sistema AI generato dal catalogo per la scrittura delle specifiche.
- Uno StateStore in memoria indipendente dal framework che guida i re-render.
Come funziona
- 01Definire un Catalog a Partire dallo Schema Ink
Importa defineCatalog da @json-render/core e passa lo schema Ink insieme alle definizioni di componenti e azioni che si desidera consentire.
- 02Registrare Solo i Componenti Personalizzati
defineRegistry richiede il catalogo, ma le implementazioni dei componenti standard sono già integrate, quindi solo quelli personalizzati vengono mappati agli elementi Ink.
- 03Racchiudere il Renderer nei Provider
JSONUIProvider fornisce i contesti di stato, visibilità, azione e focus al Renderer, che riceve la specifica e il registry.
- 04Scrivere le Specifiche come Mappa Piatta di Elementi
La specifica contiene una chiave root che indica il primo elemento e una mappa di elementi con nodi tipizzati che hanno prop, figli e binding di eventi opzionali.
- 05Collegare le Prop con Espressioni
Qualsiasi valore di una prop può essere risolto al momento del rendering a partire dallo stato, dagli elementi repeat, dalle condizioni o dai template di stringa, invece di essere codificato in modo fisso.
- 06Trasmettere le Specifiche in Modo Progressivo
useUIStream consuma stream di patch JSONL provenienti da un endpoint API ed espone spec, send e isStreaming al chiamante.