La Skill zenit UI dev
Un manual de desarrollo para Claude Code y otros agentes de IA. Con ella instalada, un agente que escribe UI con zenit recurre primero a componentes existentes, aplica estilos con tokens y recipes, gestiona el estado según los ciclos de vida de zenit, y compila y captura su propio trabajo antes de entregarlo.
Descarga
El archivo es una carpeta estándar de Agent Skill: un punto de entrada SKILL.md breve con reglas y tablas de decisión, y los detalles repartidos en references/, que el agente lee solo cuando los necesita.
Instalación
- 1Colócala en una carpeta de skills
Para ti, usa
~/.claude/skills/(todos los proyectos). Para un equipo, súbela al.claude/skills/del repo para que la tenga todo el que lo clone. - 2Reinicia la sesión del agente
Claude Code escanea las skills al iniciar la sesión. Abre una sesión nueva;
/skillsdebería mostrarzenit-ui-dev. - 3Pide lo que necesites como siempre
Cualquier tarea de UI con zenit la carga automáticamente; también puedes decir “usa la skill zenit-ui-dev”.
Tras descargarla, descomprímela en tu carpeta de usuario (todos los proyectos):
~/.claude/skills/
└── zenit-ui-dev/
├── SKILL.md
├── references/
└── tools/O descomprímela en el proyecto y haz commit (compartida con el equipo):
.claude/skills/
└── zenit-ui-dev/
├── SKILL.md
├── references/
└── tools/# Codex and other agents that read AGENTS.md: unpack into the repo and reference it
unzip -oq zenit-ui-dev.zip -d .agents/skills
echo '- zenit UI: read .agents/skills/zenit-ui-dev/SKILL.md before writing UI code' >> AGENTS.mdQué contiene
SKILL.mdPunto de entrada: disparadores, flujo de trabajo, reglas estrictas, tablas de decisión y qué reference leer en cada casoreferences/app-architecture.mdCapas de una app grande, a partir de un editor en producción: estado, vistas, comandos, serviciosreferences/components.mdEl catálogo ui.widgets, las dos formas de mount y una tabla elemento de diseño → componentereferences/macos-native.mdMenús, atajos, diálogos de archivo, portapapeles, arrastrar y soltar, multiventana, IMEreferences/pencil-design.mdDiseños de Pencil (pen.dev): leer valores vía MCP, mapeo de campos, diff numérico de capturasreferences/performance.mdListas virtuales, niveles de dirty, textos grandes, hilos en segundo plano y el hilo principalreferences/pitfalls.mdSíntoma → causa → solución, recopilado del historial de correcciones de zenit y de una app en producciónreferences/project-setup.mdProyecto nuevo, build.zig / build.zig.zon, empaquetado .app, reenvío de opciones de buildreferences/state-reactivity.mdbindState / cx.on, Signal / Memo / Effect, ciclo de vida y limpieza de Scopereferences/styling.mdCapas Token → styles.zig → recipe, temas y la vía de escape ui.arbreferences/ui-tree-layout.mdNodos, layout Flex, tamaños, actualizar nodos, visibilidad, coordenadasreferences/verification.mdEl ciclo de autoverificación del agente: build, captura, harness E2E, DevTools, logstools/design_diff.tsDiff numérico entre el PNG del diseño y la captura de la app, con sugerencias accionablestools/png.tsDecodificador PNG sin dependencias usado por design_difftools/shot.tsCaptura cualquier app zenit mediante file RPC (Retina)Asigna cada elemento del diseño a un componente existente de ui.widgets, para que el agente no reconstruya un Button a base de boxes.
Reglas para bindState, pub deinit, la limpieza de Scope y los cambios de página: la solución directa a las fugas, dobles liberaciones y punteros colgantes más comunes.
Hace que el agente compile, ejecute, capture y compare con lo pedido, en vez de quedarse en “compila”.
Una lista de problemas extraída del historial de correcciones de una app en producción, cada uno con su causa y la forma correcta de resolverlo.
Recomendado: diseña en Pencil
Pencilpen.devTe recomendamos diseñar en Pencil y dejar que tu agente lo construya con esta Skill. El layout Flex, los espaciados, los radios, los tamaños de texto y los iconos lucide de un archivo .pen están muy cerca del modelo de zenit; la Skill incluye una tabla de correspondencia de campos y una herramienta design_diff para que el agente traslade el diseño con números y no a ojo.
- 01.penDiseño en Pencil
- 02MCPEl agente lee valores exactos
- 03zigCódigo zenit con widgets + tokens
- 04diffDiff numérico contra el diseño
- 1Conecta el MCP de Pencil
Activa el servidor MCP de Pencil en tu agente y abre el archivo .pen. La Skill solo lee .pen a través del MCP, que resuelve las variables de diseño y los tamaños calculados: las dos cosas que necesita una reproducción fiel.
- 2Lee valores, no píxeles
El agente obtiene primero gap, padding, radio, tamaño de fuente y color con
Get(nodeId, { resolveVariables: true }), y luego los traslada a zenit:fill_container → .fill(),chevron-down → ui.icons.chevron_down. - 3Compara hasta que coincida
Exporta el diseño a scale 2, captura la ventana real con
tools/shot.ts, ytools/design_diff.tsinforma del desplazamiento, la diferencia de tamaño, un mapa de calor y la desviación de la paleta; el agente corrige a partir de las pistas, unos 5 s por ronda.
SKILL=~/.claude/skills/zenit-ui-dev
bun $SKILL/tools/design_diff.ts --self-test
ZENIT_E2E_FILE_RPC_DIR=$RPCDIR bun $SKILL/tools/shot.ts /tmp/actual.png
bun $SKILL/tools/design_diff.ts /tmp/design/<nodeId>.png /tmp/actual.pngCómo usarla
No hace falta sintaxis especial. Describe la UI o el problema; estos son algunos prompts que funcionan bien:
Lee el tablero "Settings" del archivo .pen abierto con el Pencil MCP, reconstrúyelo en zenit como ventana de ajustes y entrégamelo cuando design_diff supere 90.
Añade a esta app una ventana de ajustes con zenit: lista de categorías a la izquierda, formulario a la derecha y cambios aplicados al momento.
Migra los estilos escritos a mano en src/views/sidebar.zig a styles.zig + una recipe.
El scroll va a tirones cuando el árbol de archivos tiene 50.000 nodos: encuentra la causa, corrígela y enséñame una captura al terminar.De dónde sale
Las reglas provienen de dos proyectos: el propio framework zenit (API pública, ejemplos, catálogo de componentes, herramientas de test) y un editor para macOS en producción construido sobre zenit (capas de una app grande, integración nativa e historial de correcciones). Los ejemplos de código se toman, siempre que es posible, de código que compila en esos repos y coinciden con este manual.
Las fuentes están en el repo del sitio, en skill/zenit-ui-dev/, y se empaquetan al compilar con scripts/pack-skill.mjs. También puedes leer SKILL.md directamente.