En varios proyectos en los que he trabajado, una constante me ha molestado: el tiempo que pasa entre que el diseño está listo y que el equipo de desarrollo lo implementa. A veces son horas; otras veces, semanas. Con el tiempo he ido refinando un flujo que me ha permitido reducir ese tiempo a la mitad o más, combinando design tokens y un flujo Git bien diseñado. Aquí te cuento cómo lo hago, por qué funciona y cómo puedes implementarlo paso a paso.

Qué son los design tokens y por qué importan

Los design tokens son la representación más atómica de tu sistema de diseño: variables para colores, tipografías, espaciados, radios, sombras, etc. En lugar de tener decisiones de diseño dispersas en Figma, CSS, componentes y documentación, los tokens actúan como una única fuente de verdad.

Para mí, los tokens son la palanca que hace que diseño y desarrollo hablen el mismo idioma. Cuando los tokens están bien definidos y versionados, los desarrolladores no tienen que interpretar capturas de pantalla ni pedir aclaraciones: consumen un paquete o un archivo que contiene exactamente qué valor usar.

Por qué Git es clave en este flujo

Git no es solo para código. Cuando versionas tokens en Git (y los expones de forma consumible), obtienes trazabilidad, revisiones, rollbacks y la posibilidad de integrar CI/CD. Esto convierte a los tokens en artefactos confiables que los equipos pueden integrar fácilmente en pipelines de despliegue.

Mi flujo ideal: de Figma a producción

Lo que hago hoy en día es una mezcla pragmática de herramientas y convenciones que facilitan la colaboración:

  • Diseñar en Figma y mantener tokens allí (uso Tokens Studio o plugins similares).
  • Exportar tokens desde Figma hacia un repositorio Git mediante un script/CI o usando una plataforma intermedia (p. ej. Style Dictionary, Theo).
  • Versionar los tokens en un repo mono o en un paquete npm privado (por ejemplo, @miempresa/tokens).
  • Consumir esos tokens en librerías de componentes (React, Vue) y en CSS utilitario (Tailwind o variables CSS).
  • Automatizar releases y sincronizaciones vía GitHub Actions/GitLab CI.

Ejemplo práctico de pipeline

A continuación te dejo un flujo concreto que puedes adaptar:

  • En Figma: mantén un archivo maestro con estilos y usa un plugin de tokens (Tokens Studio o Design Tokens).
  • Plugin -> Export: genera un JSON con la estructura de tokens.
  • CI: al push del JSON a un branch "tokens" se dispara un job que:
    • Valida el JSON (schema validation).
    • Ejecuta Style Dictionary para generar formatos: CSS variables, SCSS, JSON, JS, iOS (.plist), Android (.xml).
    • Crea un release o versión en npm con los artefactos.
  • Los equipos de frontend consumen la versión específica (p. ej. 1.2.3) y actualizan cuando quieran.

Herramientas que uso y por qué

Función Herramienta Por qué
Design en diseño Figma + Tokens Studio Permite mantener tokens dentro del workflow de diseño y exportar JSON.
Transformación Style Dictionary Genera formatos para web, mobile y frameworks; muy configurable.
Versionado y pipeline GitHub Actions / GitLab CI Automatiza validación, build y releases.
Documentación Zeroheight / Storybook Hace visibles los tokens y componentes documentados para diseño y dev.

Buenas prácticas que marcan la diferencia

  • Atomicidad: Define tokens para lo más básico (por ejemplo: color-100, spacing-8) y compón a partir de ahí.
  • Borradores y breaking changes: usa semver. Un cambio mayor en tokens debe llevar mayor versionado y una nota de migración.
  • PRs pequeños: cambios de tokens en pequeños PR permiten revisiones rápidas y compromisos automatizados.
  • Validación: añade pruebas automáticas que comprueben que no hay tokens duplicados o valores inválidos.
  • Consumo claro: publica tokens como paquete npm o CDN y documenta cómo importarlos en CSS/JS/Native.

Cómo gestionar cambios entre diseño y desarrollo sin fricciones

El punto crítico normalmente es la negociación entre "esto en diseño es un ajuste visual" y "esto en código rompe componentes". Para minimizar conflictos:

  • Hago cambios de tokens en ramas separadas y abro PRs con capturas, ejemplos en Storybook y una nota técnica.
  • Si el cambio afecta a muchos componentes, lo marco como breaking change y preparo un plan de migración.
  • Para cambios urgentes, uso feature flags o versiones beta del paquete de tokens para testear sin afectar la rama estable.

Impacto real: métricas que puedes esperar

En proyectos donde implementé este flujo he observado:

  • Reducción del tiempo entre la aprobación del diseño y la primera implementación funcional en torno al 40-60%.
  • Menos bugs visuales por inconsistencias de tokens (colores mal aplicados, tipografías erróneas).
  • Mejor colaboración: los diseñadores ven cuando un token fue publicado y los desarrolladores tienen trazabilidad de por qué cambió algo.

Errores comunes que debes evitar

  • No versionar tokens: sin versiones, cualquier cambio puede romper producción.
  • Hacer tokens demasiado específicos: si cada componente tiene tokens propios, estarás de vuelta al problema inicial.
  • Depender solo de plugins sin CI: exportar manualmente desde Figma genera fricciones humanas y errores.

Pequeña guía de inicio rápido (commands y estructura)

Un ejemplo simplificado de estructura del repo de tokens y comandos que suelo usar:

  • Repositorios:
    • /design/tokens.json (exportado desde Figma)
    • /tools/style-dictionary/config.js
    • package.json -> scripts: "build:tokens", "publish:tokens"
  • Comandos:
    • npm run build:tokens -> ejecuta Style Dictionary y genera dist/
    • npm version patch && npm publish -> publica nueva versión

Si estás empezando, te recomiendo automatizar la mayor parte posible: validación del JSON, generación de artefactos con Style Dictionary y publicación automática a tu registro npm o a un artefacto en tu CI. Con esto, el proceso deja de ser una tarea manual y pasa a ser una cadena fiable que reduce incertidumbre y tiempos.

Si quieres, puedo darte un ejemplo concreto de configuración de Style Dictionary o un workflow de GitHub Actions para que lo integres en tu proyecto. Dime qué stack usas (React, Vue, iOS, Android) y te doy una receta adaptada.