Sincronización de Design Tokens
Mantiene los tokens del repo (packages/tokens/src/*.json) alineados con la
fuente de verdad en Figma. El resultado final es que pnpm build:tokens genera
tokens.css y tokens.json correctos y el theme de @design-system/react refleja
los cambios.
Lectura previa obligatoria
packages/tokens/src/*.json — estado actual de los tokens (colors, spacing,
border-radius, typography, strokes, shadows, breakpoints)
AGENTS.md del repo — reglas y stack
DESIGN.md — decisiones de diseño que explican POR QUÉ los tokens son así
Cuándo usar esta skill
- "sincronizá los tokens"
- "actualizá los tokens desde Figma"
- "cambió un color en Figma"
- "necesito el nuevo spacing/radius que definió diseño"
- Antes de migrar un componente nuevo (para que el componente use los tokens al día)
- Después de que diseño comunique cambios de variables en Figma
Cuándo NO usar esta skill
- Crear un token nuevo que no está en Figma → pedirle a diseño que lo agregue
primero a Figma, esta skill solo sincroniza
- Editar el theme de MUI (
packages/react/src/theme/) → eso es parte de
component-migrator o del trabajo directo sobre el package react
- Diseñar un componente →
nextjs-design-craft
- Auditar visualmente un componente ya codeado →
component-qa
El MCP de Figma
Existe un MCP de Figma que permite leer variables y nodos del archivo
directamente desde el agente. Esta skill no lo exige: es un acelerador
opcional. Si no está configurado, se trabaja con el JSON exportado.
Cómo configurarlo (si se quiere)
- Claude (oficial): hay un MCP oficial de Figma (
figma-developer-mcp
vía npx -y figma-developer-mcp --stdio) con la variable de entorno
FIGMA_API_KEY.
- OpenCode (libre): el equipo usa el mismo
figma-developer-mcp libre,
configurado en .opencode/mcp.json:
{
"mcpServers": {
"Figma": {
"command": "npx",
"args": ["-y", "figma-developer-mcp", "--stdio"],
"env": { "FIGMA_API_KEY": "<figma-token>" }
}
}
}
El token se obtiene desde Figma: perfil → Settings → Security → Personal access tokens.
Si el MCP NO está disponible
- Avisar al usuario que no hay MCP de Figma configurado
- Pedir el JSON de variables exportado desde Figma (o el screenshot si alcanza)
- Continuar con el flujo manual de abajo
Flujo de trabajo
1 — Obtener el estado actual de Figma
- Si el MCP está disponible: leer las variables/estilos del archivo (colores,
espaciado, radius, tipografía, strokes, sombras).
- Si no: pedir el JSON exportado de variables a diseño.
2 — Comparar con el estado actual del repo
Leer cada archivo de packages/tokens/src/:
| Archivo |
Qué contiene |
colors.json |
Colores primitivos (Violeta, Amarillo, Verde, Verde Azulado, Neutro, Rojo) |
semantico.json |
Tokens semánticos (button, text, background, icon, border, status, navbar) |
spacing.json |
Escala de espaciado (0, 1, xxs, s, xs, sr, re, me, l, xl, xxl) |
border-radius.json |
Radios (xs, s, m, l, full) |
typography.json |
Escala tipográfica (heading1-5, bodyLarge, bodySmall) |
strokes.json |
Grosores de borde |
shadows.json |
Sombras |
breakpoints.json |
Breakpoints responsive |
Detectar:
- Valores cambiados (hex, px, rem)
- Tokens nuevos (agregar)
- Tokens eliminados (avisar — nunca borrar sin confirmar)
3 — Aplicar los cambios
- Editar SOLO los archivos de
packages/tokens/src/*.json
- Mantener el formato y las claves existentes (no renombrar keys sin avisar)
- Respetar el patrón de nombres ya establecido
3b — Validación de Schema y Sintaxis JSON Previa al Build
Antes de compilar con Style Dictionary, validar sintaxis y formato para evitar fallos sin contexto:
# Validación con Prettier
npx prettier --check packages/tokens/src/*.json
# Validación determinista de parseo JSON en Node.js
node -e 'const fs=require("fs"); fs.readdirSync("packages/tokens/src").filter(f=>f.endsWith(".json")).forEach(f=>{ JSON.parse(fs.readFileSync("packages/tokens/src/"+f)); console.log("✓", f); });'
3c — Diff Semántico de Variables y Alerta de Ruptura
Examinar los tokens modificados mediante el diff de git:
- Alerta ALTA de Ruptura: Si se eliminó o renombró un token de color o espaciado semántico en uso activo por
@design-system/react, alertar inmediatamente.
- Prohibido borrar tokens sin confirmación explícita de diseño/producto.
4 — Verificar
pnpm build:tokens — debe compilar sin errores
- Abrir
packages/tokens/dist/tokens.css (o tokens.json) y confirmar que los
valores nuevos están
- Si cambió un color semántico: verificar que el theme de react lo consuma bien
(
pnpm build:react)
5 — Reportar (Direct-to-Disk Writing)
- Escribir directamente a disco: Editar los archivos JSON y compilar con
pnpm build:tokens en el monorepo sin volcar el JSON completo en la conversación.
- Plantilla oficial de reporte: Utilizar
templates/token-sync-report.template.md y guardar el informe en .agents/tokens/token-sync-report.md (write_to_file).
- Prohibido volcar JSONs extensos al chat: Evitar saturar el contexto con estructuras de tokens completas.
- Formato obligatorio de reporte en chat (Sintético):
- Ruta del informe: enlace a
.agents/tokens/token-sync-report.md.
- Archivos JSON modificados: lista de archivos en
packages/tokens/src/.
- Diff semántico resumido: tabla breve con los tokens clave modificados o agregados (
token: valor).
- Tokens huérfanos/deprecados: advertencia explícita si se encontraron tokens que requieren confirmación humana.
- Resultado de compilación: confirmación de
pnpm build:tokens exitoso.
Reglas de lo que SÍ debe hacer
- Guardar el reporte completo en
.agents/tokens/token-sync-report.md (write_to_file)
- Reportar en el chat únicamente el resumen sintético y tokens que requieren confirmación
- Validar formato y sintaxis JSON con
npx prettier --check packages/tokens/src/*.json
- Comparar contra Figma (o el JSON exportado), no contra opinión
- Actualizar el token exacto con el valor exacto de Figma
- Verificar con
pnpm build:tokens después de tocar cualquier JSON
- Avisar claramente los tokens que cambiaron de valor para que diseño confirme
- Mantener keys y estructura de archivos existentes
Reglas de lo que NO debe hacer
- NO volcar JSONs completos de tokens en la respuesta de chat
- NO omitir la persistencia del reporte en
.agents/tokens/token-sync-report.md
- NO inventar valores: todo valor debe venir de Figma o del JSON exportado
- NO borrar tokens sin confirmar con el usuario/diseño
- NO tocar el theme de MUI en esta skill — es sincronización de tokens
- NO hardcodear el token de Figma en el repo ni en archivos commiteables
- NO cambiar
semantico.json de forma arbitraria — los mapeos a primitivos
deben reflejar la decisión de diseño
- NO modificar tipografía si el cambio no viene de Figma
- NO reordenar keys solo por estética — mantener el diff mínimo
Verificación
- Confirmar persistencia del reporte en
.agents/tokens/token-sync-report.md.
- Validar sintaxis de JSON con
npx prettier --check packages/tokens/src/*.json.
- Compilar los tokens (
pnpm build:tokens o pnpm build) para asegurar que no haya errores de sintaxis JSON ni en los transformadores de Style Dictionary.
- Comprobar que los archivos generados en
packages/tokens/dist/ (o equivalentes) reflejan exactamente las modificaciones de diseño.
- Validar que no se rompan las dependencias en
@design-system/react (pnpm build:react).
Al terminar
Confirmar persistencia del reporte en .agents/tokens/token-sync-report.md. Si se agregaron tokens nuevos que un componente debería usar, sugerir
component-migrator para migrar el componente con los tokens al día.
Si ya hay componentes migrados, sugerir component-qa para verificar que no
se rompieron con el cambio de tokens.
1---2name: design-token-sync3description: Sincroniza design tokens entre Figma y el monorepo de design-system (packages/tokens/src/*.json). Valida sintaxis JSON, detecta variables modificadas o eliminadas y compila Style Dictionary. Usar con "sincronizá los tokens", "actualizá los tokens desde Figma", "sync tokens", "cambió el color en Figma".4---56# Sincronización de Design Tokens78Mantiene los tokens del repo (`packages/tokens/src/*.json`) alineados con la9fuente de verdad en Figma. El resultado final es que `pnpm build:tokens` genera10`tokens.css` y `tokens.json` correctos y el theme de `@design-system/react` refleja11los cambios.1213## Lectura previa obligatoria1415- `packages/tokens/src/*.json` — estado actual de los tokens (colors, spacing,16 border-radius, typography, strokes, shadows, breakpoints)17- `AGENTS.md` del repo — reglas y stack18- `DESIGN.md` — decisiones de diseño que explican POR QUÉ los tokens son así1920## Cuándo usar esta skill2122- "sincronizá los tokens"23- "actualizá los tokens desde Figma"24- "cambió un color en Figma"25- "necesito el nuevo spacing/radius que definió diseño"26- Antes de migrar un componente nuevo (para que el componente use los tokens al día)27- Después de que diseño comunique cambios de variables en Figma2829## Cuándo NO usar esta skill3031- **Crear un token nuevo que no está en Figma** → pedirle a diseño que lo agregue32 primero a Figma, esta skill solo sincroniza33- **Editar el theme de MUI** (`packages/react/src/theme/`) → eso es parte de34 `component-migrator` o del trabajo directo sobre el package react35- **Diseñar un componente** → `nextjs-design-craft`36- **Auditar visualmente un componente ya codeado** → `component-qa`3738---3940## El MCP de Figma4142Existe un MCP de Figma que permite leer variables y nodos del archivo43directamente desde el agente. **Esta skill no lo exige**: es un acelerador44opcional. Si no está configurado, se trabaja con el JSON exportado.4546### Cómo configurarlo (si se quiere)4748- **Claude (oficial):** hay un MCP oficial de Figma (`figma-developer-mcp`49 vía `npx -y figma-developer-mcp --stdio`) con la variable de entorno50 `FIGMA_API_KEY`.51- **OpenCode (libre):** el equipo usa el mismo `figma-developer-mcp` libre,52 configurado en `.opencode/mcp.json`:5354```json55{56 "mcpServers": {57 "Figma": {58 "command": "npx",59 "args": ["-y", "figma-developer-mcp", "--stdio"],60 "env": { "FIGMA_API_KEY": "<figma-token>" }61 }62 }63}64```6566El token se obtiene desde Figma: perfil → Settings → Security → Personal access tokens.6768### Si el MCP NO está disponible69701. Avisar al usuario que no hay MCP de Figma configurado712. Pedir el JSON de variables exportado desde Figma (o el screenshot si alcanza)723. Continuar con el flujo manual de abajo7374---7576## Flujo de trabajo7778### 1 — Obtener el estado actual de Figma7980- Si el MCP está disponible: leer las variables/estilos del archivo (colores,81 espaciado, radius, tipografía, strokes, sombras).82- Si no: pedir el JSON exportado de variables a diseño.8384### 2 — Comparar con el estado actual del repo8586Leer cada archivo de `packages/tokens/src/`:8788| Archivo | Qué contiene |89|---|---|90| `colors.json` | Colores primitivos (Violeta, Amarillo, Verde, Verde Azulado, Neutro, Rojo) |91| `semantico.json` | Tokens semánticos (button, text, background, icon, border, status, navbar) |92| `spacing.json` | Escala de espaciado (0, 1, xxs, s, xs, sr, re, me, l, xl, xxl) |93| `border-radius.json` | Radios (xs, s, m, l, full) |94| `typography.json` | Escala tipográfica (heading1-5, bodyLarge, bodySmall) |95| `strokes.json` | Grosores de borde |96| `shadows.json` | Sombras |97| `breakpoints.json` | Breakpoints responsive |9899Detectar:100- Valores cambiados (hex, px, rem)101- Tokens nuevos (agregar)102- Tokens eliminados (avisar — nunca borrar sin confirmar)103104### 3 — Aplicar los cambios105106- Editar SOLO los archivos de `packages/tokens/src/*.json`107- Mantener el formato y las claves existentes (no renombrar keys sin avisar)108- Respetar el patrón de nombres ya establecido109110### 3b — Validación de Schema y Sintaxis JSON Previa al Build111Antes de compilar con Style Dictionary, validar sintaxis y formato para evitar fallos sin contexto:112```bash113# Validación con Prettier114npx prettier --check packages/tokens/src/*.json115116# Validación determinista de parseo JSON en Node.js117node -e 'const fs=require("fs"); fs.readdirSync("packages/tokens/src").filter(f=>f.endsWith(".json")).forEach(f=>{ JSON.parse(fs.readFileSync("packages/tokens/src/"+f)); console.log("✓", f); });'118```119120### 3c — Diff Semántico de Variables y Alerta de Ruptura121Examinar los tokens modificados mediante el diff de git:122- **Alerta ALTA de Ruptura**: Si se eliminó o renombró un token de color o espaciado semántico en uso activo por `@design-system/react`, alertar inmediatamente.123- Prohibido borrar tokens sin confirmación explícita de diseño/producto.124125### 4 — Verificar1261271. `pnpm build:tokens` — debe compilar sin errores1282. Abrir `packages/tokens/dist/tokens.css` (o `tokens.json`) y confirmar que los129 valores nuevos están1303. Si cambió un color semántico: verificar que el theme de react lo consuma bien131 (`pnpm build:react`)132133### 5 — Reportar (Direct-to-Disk Writing)134135- **Escribir directamente a disco**: Editar los archivos JSON y compilar con `pnpm build:tokens` en el monorepo sin volcar el JSON completo en la conversación.136- **Plantilla oficial de reporte**: Utilizar [`templates/token-sync-report.template.md`](./templates/token-sync-report.template.md) y guardar el informe en `.agents/tokens/token-sync-report.md` (`write_to_file`).137- **Prohibido volcar JSONs extensos al chat**: Evitar saturar el contexto con estructuras de tokens completas.138- **Formato obligatorio de reporte en chat (Sintético)**:139 - **Ruta del informe**: enlace a `.agents/tokens/token-sync-report.md`.140 - **Archivos JSON modificados**: lista de archivos en `packages/tokens/src/`.141 - **Diff semántico resumido**: tabla breve con los tokens clave modificados o agregados (`token`: `valor`).142 - **Tokens huérfanos/deprecados**: advertencia explícita si se encontraron tokens que requieren confirmación humana.143 - **Resultado de compilación**: confirmación de `pnpm build:tokens` exitoso.144145---146147## Reglas de lo que SÍ debe hacer148149- Guardar el reporte completo en `.agents/tokens/token-sync-report.md` (`write_to_file`)150- Reportar en el chat únicamente el resumen sintético y tokens que requieren confirmación151- Validar formato y sintaxis JSON con `npx prettier --check packages/tokens/src/*.json`152- Comparar contra Figma (o el JSON exportado), no contra opinión153- Actualizar el token exacto con el valor exacto de Figma154- Verificar con `pnpm build:tokens` después de tocar cualquier JSON155- Avisar claramente los tokens que cambiaron de valor para que diseño confirme156- Mantener keys y estructura de archivos existentes157158## Reglas de lo que NO debe hacer159160- NO volcar JSONs completos de tokens en la respuesta de chat161- NO omitir la persistencia del reporte en `.agents/tokens/token-sync-report.md`162- NO inventar valores: todo valor debe venir de Figma o del JSON exportado163- NO borrar tokens sin confirmar con el usuario/diseño164- NO tocar el theme de MUI en esta skill — es sincronización de tokens165- NO hardcodear el token de Figma en el repo ni en archivos commiteables166- NO cambiar `semantico.json` de forma arbitraria — los mapeos a primitivos167 deben reflejar la decisión de diseño168- NO modificar tipografía si el cambio no viene de Figma169- NO reordenar keys solo por estética — mantener el diff mínimo170171## Verificación172173- Confirmar persistencia del reporte en `.agents/tokens/token-sync-report.md`.174- Validar sintaxis de JSON con `npx prettier --check packages/tokens/src/*.json`.175- Compilar los tokens (`pnpm build:tokens` o `pnpm build`) para asegurar que no haya errores de sintaxis JSON ni en los transformadores de Style Dictionary.176- Comprobar que los archivos generados en `packages/tokens/dist/` (o equivalentes) reflejan exactamente las modificaciones de diseño.177- Validar que no se rompan las dependencias en `@design-system/react` (`pnpm build:react`).178179## Al terminar180181Confirmar persistencia del reporte en `.agents/tokens/token-sync-report.md`. Si se agregaron tokens nuevos que un componente debería usar, sugerir182**component-migrator** para migrar el componente con los tokens al día.183Si ya hay componentes migrados, sugerir **component-qa** para verificar que no184se rompieron con el cambio de tokens.