Generative UI · openui-lang
El modelo escribe el programa. Aurora pone las clases.
Una docena de líneas describen la pantalla; el compilador comprueba tipos, enums y aridad contra el censo, y el runtime emite markup real. Ni React, ni build, ni una clase que no exista: lo que no está en el vocabulario no compila.
Probador · del texto al markup
A la izquierda va el programa openui-lang (lo que emitiría el modelo). A la derecha, lo que Aurora pinta con él. Debajo, el HTML exacto que ha salido: todo .nz-*, listo para copiar. Edita el programa y pulsa Generar.
Render Aurora
El HTML que ha salido
Plantillas por arquetipo
El esqueleto ya está decidido y auditado: el modelo rellena los datos, no inventa la estructura. Cinco arquetipos cubren lo que se repite; el resto se compone con los mismos componentes. Con plantilla, el prompt no necesita los ejemplos largos (generar-web.py --prompt breve) y cada página cuesta unos 1.040 tokens menos.
Cargando plantillas…
Qué garantiza
1 · El lenguaje valida antes de pintar
El parser comprueba tipos, enums y aridad contra el esquema de la biblioteca. Un TablaBarras con números donde van textos no llega al DOM: se cae con type-mismatch. Los tres ejemplos de esta página se validan en la CI.
3 de 3 ejemplos: 0 errores
2 · El render es del censo
Cada componente emite el markup real de su familia: tabla apilable con data-etiqueta, barras con su valor, bullet con la meta al 66,7 %. Nada de CSS propio ni de estilos a mano.
36 componentes · — clases distintas en los 3 ejemplos
3 · Se puede hornear
scripts/hornear.py compila el programa, lo pinta en Chrome headless y extrae el <main>: la página sale estática y sin JavaScript. Así se genera la portada de este repositorio.
portada: .openui → HTML, 0 KB de JS
Cómo se conecta
- 1Pega
PROMPT.mdcomo system prompt - 2El modelo devuelve el programa
- 3Aurora valida y pinta —o se hornea
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Ntizar/Aurora@v10/tokens.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Ntizar/Aurora@v10/packs/all.css"> <script src="https://cdn.jsdelivr.net/gh/Ntizar/Aurora@v10/openui/aurora-openui.js"></script> <main id="lienzo"></main> <script type="module"> await AuroraOpenUI.iniciar(); // spec + parser oficial AuroraOpenUI.stream(respuestaDelModelo, "#lienzo"); // streaming incluido </script>
Del repo a producción: aquí los packs se enlazan en local para funcionar sin red. En un producto el <link> va pineado al tag publicado —el canal vivo es @v10, el congelado un @vX.Y.Z exacto— y con los packs que uses de verdad, no all.css.
Para generar una página entera sin escribir HTML: generar-web.py --brief encargo.json (modelo + plantilla + lint) o hornear.py si el programa ya está escrito. El fichero de la portada es briefs/portada.openui.