Jon CeronDiseñador de producto sénior
ES
Rol
Diseñador de producto
Alcance
Desde junio de 2023; migración a la siguiente versión en curso
El problema
El design system de Syniverse estaba escrito para personas. Un agente de IA lo lee al pie de la letra, así que cada hueco y cada «?» de la documentación se volvía una suposición.
Mi rol
Extiendo el design system (componentes, el grid, dark mode, QA) y reescribo su documentación como Markdown que leen por igual personas y agentes de IA. Su librería de Figma documenta 39 componentes y dos equipos de ingeniería de cinco personas construyen sobre ella.
Qué decidí
Nombrar los primitivos por tono y los roles por función. Correr cuatro temas desde un solo set de tokens. Dejar las reglas en DESIGN.md, no en cada prompt.
Dónde está
La versión actual está en producción. La siguiente versión está en QA interno. Claude Code ya construye prototipos en código a partir del sistema.
  • 4

    temas desde un solo set de tokens

  • 39

    componentes en la librería

  • 2

    modos de densidad sobre un grid de píxeles enteros

  • 12

    colores categóricos para gráficas en sets permitidos

  • 45%

    menos tiempo de diseño a desarrollo

Contexto y mi rol

Los productos de Syniverse son herramientas de operación para el tráfico de telecomunicaciones. Una pantalla típica tiene un título con una acción principal, un panel de filtros y una datatable con status pills, etiquetas de protocolo y acciones por fila. El design system es la librería en Angular, la librería de Figma y las guías detrás de ambas.

Me incorporé en junio de 2023, cuando el sistema ya estaba en producción. Como diseñador añadí tarjetas, el selector de fecha y hora, las gráficas, el grid de layout y el dark mode. Hace poco el sistema ganó un segundo lector: escribimos las specs de pantalla como prompts y Claude las construye a partir del design system, primero en Figma y ahora en prototipos en código.

El problema

Una persona diseñadora llena los huecos con contexto. Un agente toma la documentación al pie de la letra y, donde no queda claro, adivina. Al revisar nuestra documentación de tokens y tipografía fila por fila, encontré huecos concretos y repetibles.

Seis huecos transcritos de la documentación de tokens del design system, como un hex con dos nombres.

Abrir imagen completa (se abre en una pestaña nueva)

Seis huecos de la propia documentación de tokens del design system. Inofensivos para una persona.

Ninguno rompe una pantalla que construye una persona. Cada uno es una moneda al aire para un modelo.

Las primeras specs en forma de prompt mostraron el mismo problema desde el otro lado. Cada una tenía que repetir las reglas del sistema, y las copias arrastraban pedazos viejos: la spec de Alarms todavía listaba el botón «Create rule» de Active Rules. Las reglas que viven en los prompts se desvían, porque cada prompt es un fork.

Cómo lo abordé

El dark mode dejó los huecos al descubierto. Mapear cada token semántico a un valor oscuro expuso pasos que las paletas de primitivos no tenían. De ahí salieron muchos de los valores «?».

Un ciclo de auditoría junto a producción. La migración a la siguiente versión corre en paralelo a producción, así que ingeniería nunca se bloquea. Audito los tokens fila por fila contra una pregunta: ¿podría un agente resolver esto sin preguntarle a nadie? Luego Claude construye specs desde el sistema, registro cada resultado fuera del sistema y cada hallazgo se corrige en el sistema.

Documentación para dos lectores. Reescribo la documentación que me corresponde, empezando por el grid y las tarjetas. Los valores están en px y rem (tokens de tipografía en rem, el grid mapeado a Tailwind y CSS), la aritmética está escrita y las reglas se expresan como reglas («no se permite desvincular componentes»).

Decisiones clave

Nombrar los primitivos por tono, los roles por función

Decidido
Los primitivos se nombran por tono y paso; una capa de roles dice para qué sirve un color. Los componentes, Figma y DESIGN.md piden el rol, el tema elige el primitivo y todo valor de tema se resuelve a uno real. No se lanza ningún «Teal-?».
Descartado
Palabras de rol en los nombres de los primitivos, como los tokens de color primario de la versión actual.
Por qué
«Primary» deja de ser cierto cuando un tema lo vuelve algo distinto del teal. Un primitivo que falta deja que un agente invente un hex.
Nombres de primitivos de la versión actual con palabras de rol, junto a la regla de la siguiente versión de tono y paso más una capa de roles.

Abrir imagen completa (se abre en una pestaña nueva)

Izquierda: transcrito de la versión actual. Derecha: la regla de la siguiente versión.
Primitivos como teal-700 se mapean a roles como primary, que alimentan código, Figma y DESIGN.md.

Abrir imagen completa (se abre en una pestaña nueva)

Valores light de Syniverse. Una capa de roles alimenta a los tres consumidores.

Un set de tokens, cuatro temas

Decidido
Syniverse y Neutral, cada uno claro y oscuro, renderizan la misma pantalla sin tocar el layout ni el código de los componentes. Solo cambia el primitivo detrás de cada rol.
Por qué
El dark mode demostró que valía la pena arreglar la capa de tokens, y los temas neutrales muestran que el sistema no está atado al teal de Syniverse.
La misma lista de Alarms en Syniverse light y dark, y Neutral light y dark.

Abrir imagen completa (se abre en una pestaña nueva)

La misma página de Alarms en cuatro temas. Datos ficticios.

Un grid de píxeles enteros, con densidad y un panel de IA que lo respetan

Decidido
La aritmética de columnas siempre da píxeles enteros: a 1440px, doce columnas de 92px, o exactamente 76px junto a una navegación de 192px. La densidad compact reduce el espacio en blanco, nunca los objetivos táctiles. El panel de IA de 476px empuja el grid en desktop y flota sobre él debajo de 1024px.
Descartado
Tratar el panel de IA como una tarjeta más.
Por qué
Sin blur de subpíxeles ni desfase entre Figma y el navegador. El panel cambia cuánto canvas tiene el grid, y empujar debajo de 1024px aplastaría las gráficas.
Tres barras a escala del grid de 1440px, con columnas de 92px, 76px y 74px y su aritmética.

Abrir imagen completa (se abre en una pestaña nueva)

A escala. Todo ancho de columna es un número entero.
A 1024px o más el side sheet de IA empuja el grid; debajo, flota sobre un grid atenuado.

Abrir imagen completa (se abre en una pestaña nueva)

Empuja en desktop, se superpone debajo de 1024px.

Las reglas viven en el sistema, no en el prompt

Decidido
Cada regla que las primeras specs repetían pasó a DESIGN.md, el único archivo que el agente lee antes de escribir código. Una spec solo dice lo que es único de la pantalla.
Descartado
Repetir las reglas en cada prompt.
Por qué
Las reglas en los prompts se desvían, porque cada prompt es un fork.
Efecto
El resultado fuera del sistema se corrige en el design system o en DESIGN.md, así que la siguiente pantalla recibe la corrección gratis.

La solución

Una persona diseñadora escribe una spec de pantalla corta: título, filtros, columnas, datos de ejemplo. Claude lee DESIGN.md, construye la pantalla como un componente Angular de la librería de producción usando solo tokens, y el resultado se revisa contra una lista de verificación corta.

El design system, DESIGN.md, spec, prototipo en código, revisión, con una línea punteada de la revisión de vuelta al design system.

Abrir imagen completa (se abre en una pestaña nueva)

La línea punteada es lo importante: corrige el sistema, no el prompt.

El color de las gráficas sigue la misma lógica. El sistema define doce colores categóricos y sets ya verificados para dos a seis series, así que una gráfica toma el set de su número de series en vez de elegir colores.

Los doce colores categóricos de gráficas y el set permitido para cada número de series.

Abrir imagen completa (se abre en una pestaña nueva)

La paleta categórica y los primeros sets permitidos.

Este es un prototipo en código del Network View de la herramienta de monitoreo, construido a partir de una spec contra el design system. Es una captura del navegador, no un frame de Figma.

Captura del navegador del prototipo del Network View en el tema Syniverse light.

Abrir imagen completa (se abre en una pestaña nueva)

Prototipo en código del Network View, corriendo en el navegador.

Entrega y estado

Partes de la siguiente versión ya están en el código del front-end. Los componentes llegan a ingeniería a través de Figma, una revisión con las personas de ingeniería y recorridos de QA contra la spec.

Impacto

La versión actual está en producción y dos equipos de ingeniería construyen sobre él todos los días. Los componentes reutilizables y con tokens redujeron 45% el tiempo de diseño a desarrollo. La siguiente versión está en QA interno, y el ciclo de construcción ya se usó en dos productos reales, entre ellos la herramienta de monitoreo.

Reflexión

Yo pensaba que la documentación de un design system era una cortesía. Escribir specs para un agente cambió eso: cada nota vaga y cada «?» es una decisión que el sistema no ha tomado. Una persona la toma en silencio por ti, y un agente la toma distinto cada vez.

Lo más útil de la siguiente versión hasta ahora no han sido los componentes nuevos. Ha sido lograr que los existentes digan exactamente lo que significan.

Los nombres de clientes en las capturas están difuminados.