Dans les termes du Skill
Ce skill couvre @json-render/ink, un moteur de rendu Ink pour terminal qui transforme des spécifications JSON en arbres de composants terminal interactifs avec liaison de données, visibilité, actions et props dynamiques. Il explique comment définir un catalogue à partir du schéma Ink avec zod, enregistrer uniquement les composants personnalisés dans un registre, et effectuer le rendu avec Renderer à l'intérieur de JSONUIProvider, ou avec la version de plus haut niveau createRenderer et standardComponents.
Les lecteurs découvrent le format de spécification en carte plate d'éléments avec une clé racine, les ensembles standard de composants de mise en page, de contenu et interactifs, les expressions d'état et de liaison, le système d'événements et les actions intégrées setState, pushState et removeState, les listes répétées, le streaming JSONL via useUIStream, les rôles des providers, les exports clés, ainsi que les recommandations de design pour terminal telles qu'une largeur de 80 à 120 colonnes.
Ce qu'il produit
- Un arbre de composants terminal interactif rendu à partir de la spécification JSON.
- Un prompt système IA généré à partir du catalogue pour la rédaction de spécifications.
- Un StateStore en mémoire indépendant du framework qui pilote les rendus.
Fonctionnement
- 01Définir un catalogue à partir du schéma Ink
Importez defineCatalog depuis @json-render/core et transmettez le schéma Ink avec les définitions de composants et d'actions que vous souhaitez autoriser.
- 02Enregistrer uniquement vos composants personnalisés
defineRegistry prend le catalogue en paramètre, mais les implémentations des composants standard sont déjà intégrées, si bien que seuls les composants personnalisés sont associés à des éléments Ink.
- 03Envelopper le Renderer dans des providers
JSONUIProvider fournit les contextes d'état, de visibilité, d'action et de focus au Renderer, qui reçoit la spécification et le registre.
- 04Rédiger les spécifications sous forme de carte plate d'éléments
La spécification comporte une clé racine nommant le premier élément et une carte d'éléments de nœuds typés avec props, enfants et liaisons d'événements facultatives.
- 05Lier les props avec des expressions
Toute valeur de prop peut être résolue au moment du rendu à partir de l'état, des éléments répétés, de conditions ou de gabarits de chaînes, plutôt que d'être codée en dur.
- 06Diffuser les spécifications de manière progressive
useUIStream consomme des flux de correctifs JSONL provenant d'un endpoint d'API et expose spec, send et isStreaming à l'appelant.