design-system
- Grupo: Front y diseño
- Cuándo se activa: Tokens de diseño (primitivos → semánticos → componente), CSS variables, validación de tokens
- Requiere:
ui-ux-pro-max - Se instala: Opcional: llega con un paquete de skills.
Skill upstream (inglés): SKILL.upstream.md (arquitectura, scripts, specs, sistema de slides),
references/token-architecture.md, primitive-tokens.md, semantic-tokens.md, component-tokens.md,
component-specs.md, states-and-variants.md, tailwind-integration.md, templates/design-tokens-starter.json,
scripts/generate-tokens.cjs, scripts/validate-tokens.cjs. Capa Senzu (español): references/es/tokens-por-stack.md.
El sistema de slides upstream (search-slides.py, data/slide-*.csv, Chart.js) queda fuera del alcance Senzu.
Aquí se formaliza lo que ui-ux-pro-max decidió: el senzu/design-system/<slug>/MASTER.md (estilo, paleta, tipografía)
se convierte en un JSON de tokens versionado, CSS generado y reglas verificables. ui-styling consume los tokens.
1. Cuándo sí / cuándo no
Sección titulada «1. Cuándo sí / cuándo no»| Situación | Qué hacer |
|---|---|
| Producto con varias apps/temas, marca blanca, dark mode + alto contraste, equipo > 3 front | design-system: JSON en 3 capas + generación + validación en CI |
| Landing o app pequeña con un tema | Basta @theme + semánticos en app.css según ui-ux-pro-max/references/es/tokens-tailwind.md; no montes pipeline |
| Elegir colores/fuentes/estilo | ui-ux-pro-max (search.py --design-system) |
| Implementar componentes | ui-styling |
| Presentaciones/slides | fuera de alcance; ignorar la sección upstream 108-235 |
2. Lectura mínima por tarea
Sección titulada «2. Lectura mínima por tarea»| Tarea | Archivo y líneas |
|---|---|
| Entender las 3 capas y el naming | SKILL.upstream.md 25-49; references/token-architecture.md 5-27, 137-159 |
| Definir primitivos (escalas de color, spacing, tipografía, radius, sombra, motion, z-index) | references/primitive-tokens.md 5-203 |
| Definir semánticos (background/foreground, primary, muted, status, border/ring) y dark | references/semantic-tokens.md 5-101, 162-188 |
| Tokens por componente (button, input, card, badge, alert, dialog, table) | references/component-tokens.md |
| Specs de estados (hover/focus/disabled/loading/error) y variantes | references/states-and-variants.md 5-47, 48-161, 209-241 |
| Anatomía y medidas de componentes base | references/component-specs.md |
| Integración con Tailwind (CSS vars, HSL/oklch, shadcn) | references/tailwind-integration.md 5-58, 115-127, 232-251 |
| Migrar tokens planos y alineación W3C DTCG | references/token-architecture.md 186-224 |
3. Las 3 capas (regla de dependencia)
Sección titulada «3. Las 3 capas (regla de dependencia)»primitive --color-blue-600: #2563eb valores crudos; nunca se usan en componentessemantic --color-primary: var(--color-blue-600) propósito; cambia con el tema (light/dark/brand)component --button-bg: var(--color-primary) solo si el componente necesita desviarse o ser configurableUn componente consume semánticos (o sus propios tokens); un semántico referencia primitivos; un primitivo no referencia nada. Dark mode y temas solo redefinen la capa semántica.
4. Scripts upstream (ejecutar con node, sin dependencias)
Sección titulada «4. Scripts upstream (ejecutar con node, sin dependencias)»SK=<skills-dir>/design-system # .claude/skills · .agents/skills · .cursor/skillscp $SK/templates/design-tokens-starter.json senzu/design-system/tokens.json # punto de partida DTCG ($value/$type)node $SK/scripts/generate-tokens.cjs --config senzu/design-system/tokens.json -o resources/css/tokens.css # CSS varsnode $SK/scripts/generate-tokens.cjs --config senzu/design-system/tokens.json --format tailwind # bloque para @themenode $SK/scripts/validate-tokens.cjs --dir resources/js --ignore vendor # hex/px/rem sueltos; --fix solo sugiere- Referencias en JSON con llaves:
"$value": "{primitive.color.blue.600}"; el generador las resuelve. - El validador ignora
node_modules,.git,dist,build,.next; añadevendor,public/build,storage. - Añade ambos comandos a
package.json(tokens:build,tokens:check) y el check al CI.
5. Integración con Tailwind 4 y ui-ux-pro-max
Sección titulada «5. Integración con Tailwind 4 y ui-ux-pro-max»MASTER.md(secciones color, tipografía, espaciado, radios, sombras, movimiento) →tokens.jsoncapa primitiva.- Semánticos con los nombres que
ui-ux-pro-maxexige (background/surface/border/text/text-muted/primary/accent/ success/warning/danger) y los de shadcn si el proyecto los usa (--background,--foreground,--muted…). tokens.cssgenerado se importa enapp.css; los primitivos entran en@theme, los semánticos en:root/.darky se exponen con@theme inline(utilidadesbg-surface,text-text-muted). Detalle:references/es/tokens-por-stack.md.- Cambios de marca: se edita
tokens.json, se regenera, nunca se tocan componentes.
6. Reglas duras
Sección titulada «6. Reglas duras»- Sin hex,
rgb(), px o rem sueltos en componentes: todo valor visual pasa por un token (validado por script/CI). - Naming
--<categoría>-<concepto>-<variante>-<estado>en kebab-case; sin nombres de color en semánticos (--color-primary, no--color-blue). - Colores en oklch (o HSL) para permitir
color-mix()y alpha; contraste 4.5:1 / 3:1 comprobado en cada tema. - Toda escala tiene pasos finitos (spacing 4 px base, tipografía modular, radius 3-4 pasos); no se añaden valores intermedios ad hoc.
- Un token = un propósito documentado (
$description); tokens huérfanos se eliminan. - Motion tokens (
--duration-fast/normal/slow,--ease-*) compartidos congsap-scrolltrigger/motion-framer. tokens.jsones la fuente;tokens.csses artefacto generado (no se edita a mano, se versiona igualmente).
7. Salida esperada
Sección titulada «7. Salida esperada»Antes: qué capas hacen falta, nombres de semánticos, temas previstos, dónde vive el JSON. Después: tokens.json,
CSS generado, app.css integrado, resultado de validate-tokens.cjs y lista de valores migrados.