In den eigenen Worten des Skills
Der Skill behandelt @json-render/ink, einen Ink-Terminal-Renderer, der JSON-Spezifikationen in interaktive Terminal-Komponentenbäume mit Datenbindung, Sichtbarkeit, Aktionen und dynamischen Props umwandelt. Er führt durch das Definieren eines Katalogs aus dem Ink-Schema mit zod, das Registrieren nur der eigenen Komponenten in einer Registry sowie das Rendern mit Renderer innerhalb von JSONUIProvider oder dem übergeordneten createRenderer und standardComponents.
Leser lernen das Format der flachen Elementkarten-Spezifikation mit einem Root-Key, die Standard-Sets für Layout, Inhalt und interaktive Komponenten, State- und Binding-Ausdrücke, das Event-System und die integrierten Aktionen setState, pushState und removeState, Repeat-Listen, JSONL-Streaming über useUIStream, die Rollen der Provider, die wichtigsten Exporte sowie Terminal-Designrichtlinien wie eine Spaltenbreite von 80–120.
Was er erzeugt
- Ein interaktiver Terminal-Komponentenbaum, gerendert aus der JSON-Spezifikation.
- Ein KI-Systemprompt, generiert aus dem Katalog zum Verfassen von Spezifikationen.
- Ein framework-unabhängiger In-Memory-StateStore, der Re-Renders steuert.
So funktioniert es
- 01Einen Catalog aus dem Ink Schema definieren
Importieren Sie defineCatalog aus @json-render/core und übergeben Sie das Ink-Schema zusammen mit den Komponenten- und Aktionsdefinitionen, die Sie zulassen möchten.
- 02Nur Ihre eigenen Komponenten registrieren
defineRegistry nimmt den Catalog entgegen, aber die Standard-Komponentenimplementierungen sind bereits integriert, sodass nur benutzerdefinierte auf Ink-Elemente abgebildet werden.
- 03Den Renderer in Provider einbetten
JSONUIProvider stellt dem Renderer, der die Spezifikation und die Registry erhält, die State-, Sichtbarkeits-, Aktions- und Fokus-Kontexte bereit.
- 04Spezifikationen als flache Elementkarte verfassen
Die Spezifikation enthält einen Root-Key, der das erste Element benennt, sowie eine elements-Map mit typisierten Knoten mit Props, Children und optionalen Event-Bindings.
- 05Props mit Ausdrücken binden
Jeder Prop-Wert kann zur Renderzeit aus State, Repeat-Items, Bedingungen oder String-Vorlagen aufgelöst werden, statt fest codiert zu sein.
- 06Spezifikationen progressiv streamen
useUIStream verarbeitet JSONL-Patch-Streams von einem API-Endpunkt und stellt dem Aufrufer spec, send und isStreaming zur Verfügung.