Communitygithub.com

flcker/figma-ui-desktop

Utiliza diseños de Figma para desarrollar interfaces de usuario de escritorio (Qt Widget / QML / WinUI / Flutter y otros frameworks no web), resolviendo el problema de baja fidelidad al copiar directamente los datos del lienzo. El núcleo es una metodología de traducción de datos independiente del framework al framework objetivo: lectura de doble canal usando get_figma_data (coordenadas precisas, valores de color, tamaños de fuente, espaciados) y download_figma_images (capturas visuales), prohibiendo la escritura de código con un solo canal, usando valores exactos sin estimaciones visuales, analizando la estructura y traduciendo según la tabla de mapeo de conceptos del lienzo al framework objetivo (diseño, colores, espaciados, bordes redondeados, sombras, etc.), y posteriormente comparando capturas de pantalla del programa ejecutado con el diseño original para autoverificación e iteración con revisión humana. Adecuado para entornos de escritorio que utilizan Framelink figma-developer-mcp (herramientas: get_figma_data / download_figma_images).

¿Qué es figma-ui-desktop?

Este skill está diseñado para desarrolladores que crean interfaces de usuario de escritorio (Qt Widget, QML, WinUI 3, Flutter, etc.) a partir de diseños de Figma, abordando el problema común de baja fidelidad. La causa raíz es tratar los datos del lienzo de Figma (coordenadas absolutas, colores en línea, capas de píxeles) como datos de implementación, copiándolos directamente y resultando en diseños rígidos, colores y fuentes incorrectos, y recursos faltantes. A diferencia del servidor MCP oficial de Figma, que está orientado a la web, Framelink figma-developer-mcp proporciona datos de Figma independientes del framework, permitiendo que el modelo traduzca estos datos a cualquier framework de escritorio. La metodología central implica un proceso de doble canal: usar get_figma_data para obtener valores precisos (coordenadas, colores, tamaños de fuente, espaciados) y download_figma_images para obtener la representación visual general. El flujo de trabajo consta de cuatro fases: lectura rápida (entender la estructura), lectura detallada (obtener datos precisos), implementación (traducir los conceptos del lienzo al framework objetivo usando una tabla de mapeo), y validación (comparar capturas de pantalla del programa ejecutado con el diseño original). El skill enfatiza reglas estrictas, como la prohibición de escribir código basándose únicamente en un canal, el uso de valores exactos sin estimaciones visuales, y la realización de autoinspecciones posteriores a la implementación.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/flcker/agents-skills/tree/HEAD/skills/dev/figma-ui-desktop

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Normas de desarrollo de interfaz de usuario de escritorio con Figma (versión Framelink MCP)

Resuelve el problema de baja fidelidad al desarrollar interfaces de usuario de escritorio a partir de diseños de Figma. La causa raíz es tratar los datos del "lienzo" de Figma (coordenadas absolutas, colores en línea, capas de píxeles) como "datos de implementación", copiándolos directamente y resultando en diseños rígidos, colores y fuentes incorrectos, y recursos faltantes.

¿Por qué usar Framelink en lugar del servidor MCP oficial de Figma para escritorio?: La herramienta principal del MCP oficial, get_design_context, genera código web por defecto (React/Tailwind, con opciones para Vue/HTML/iOS), no admite Qt Widget / QML / WinUI / Flutter, y requiere pago. Framelink se posiciona como "solo proporciona datos de Figma independientes del framework, la traducción queda a cargo del modelo" – esta "debilidad" es precisamente una ventaja en escenarios de escritorio con múltiples frameworks: el modelo puede traducir los datos del lienzo a cualquier framework objetivo, en lugar de estar limitado a la web.

Este skill está orientado a las dos herramientas de Framelink figma-developer-mcp:

HerramientaCanalFunción
get_figma_dataCanal precisoExtrae datos del lienzo según fileKey + nodeId: información de diseño, contenido, visual y de componentes
download_figma_imagesCanal visualExporta SVG/PNG/GIF del nodo a un directorio local

Si el objetivo es frontend web (React/Vue/HTML), usa figma-ui-web en lugar de este skill.

Principios fundamentales

  1. Doble canal en paralelo, prohibido escribir código con un solo canal. El canal preciso proporciona valores numéricos exactos, el canal visual proporciona el diseño general y el texto. Usar solo uno inevitablemente causa distorsión.
  2. Usa valores exactos, no hagas estimaciones visuales. Color, tamaño de fuente, peso de fuente, espaciado, bordes redondeados, bordes, sombras: siempre toma los valores exactos del diseño.
  3. Primero solicita el diseño, no escribas la interfaz de usuario por iniciativa propia.
  4. Después de la implementación, debes cerrar el ciclo de validación: compara capturas de pantalla del programa ejecutado con el diseño original → corrige automáticamente los defectos encontrados → itera con revisión humana.

Flujo de trabajo

Fase uno: Lectura rápida (comprender los requisitos y la estructura)

Cuando el diseño es demasiado grande, primero haz una lectura rápida para evitar sobrecargar el contexto con una extracción completa:

  1. Usa get_figma_data para extraer la estructura de nivel superior (el depth controla la profundidad de recorrido, comienza desde lo superficial) para entender qué páginas/secciones/controles hay.
  2. Usa download_figma_images para exportar la imagen general de la interfaz y comprender el diseño y el texto.

Fase dos: Lectura detallada (obtener datos precisos antes de la implementación)

Para la sección/control que se va a implementar, llama simultáneamente a:

  • get_figma_data (con nodeId, lee coordenadas, valores de color, tamaños de fuente, espaciados, bordes redondeados, bordes nodo por nodo)
  • download_figma_images (exporta la imagen de esa sección para confirmar las relaciones de posición relativa de los controles)

Una vez obtenidos, realiza un análisis estructural antes de escribir código:

  • ¿Qué nodos son patrones repetitivos (elementos de lista, tarjetas, botones)? → Extraerlos como controles/componentes personalizados del framework objetivo
  • ¿Qué posiciones absolutas son en realidad diseño (disposición horizontal, centrado, alineado a los extremos, cuadrícula)? → Convertirlos al diseño del framework correspondiente según la tabla de mapeo a continuación
  • ¿Cuáles son roles semánticos (navegación/formulario/lista)? → Mapearlos a la biblioteca de controles existente del framework objetivo
  • Nodos de imagen/icono → Usa download_figma_images para descargar el archivo original en el directorio de recursos, no los dibujes a mano

Fase tres: Implementación (traducción independiente del framework)

Color/tamaño de fuente/espaciado: usa los valores exactos del diseño. Al traducir, consulta la tabla de mapeo "Concepto del lienzo → Framework objetivo" a continuación. No inventes controles – si el framework objetivo tiene diseños/controles estándar, úsalos. Las coordenadas absolutas solo se conservan cuando "realmente se necesita un posicionamiento preciso en píxeles".

Fase cuatro: Cierre del ciclo de validación

En escritorio no hay automatización del navegador como Playwright. El método de validación: toma capturas de pantalla del programa compilado y ejecutado, compáralas lado a lado con las capturas del diseño. Corrige automáticamente los defectos evidentes; la revisión humana identifica problemas más sutiles (espaciado, peso de fuente, pequeñas diferencias de color), plantéalos activamente a la IA para una corrección precisa e inicia la siguiente ronda de iteración.

Tabla de mapeo: Concepto del lienzo → Framework objetivo

El lienzo de Figma tiene coordenadas absolutas + capas de píxeles. La implementación debe traducirlos a la semántica de diseño de cada framework. Al traducir, consulta esta tabla:

Concepto de lienzo/diseñoQt WidgetQML (Qt Quick)WinUI 3 (XAML)Flutter
Disposición horizontalQHBoxLayoutRowStackPanel (Orientation=Horizontal)Row
Disposición verticalQVBoxLayoutColumnStackPanel (Orientation=Vertical)Column
Diseño de cuadrículaQGridLayoutGrid / GridLayoutGridGridView / Table
Posicionamiento absolutosetGeometry / moveItem + x/yCanvas + Canvas.Left/TopStack + Positioned
Superposición / CapasSuperponer widgets hijos / raise()Propiedad z / StackCanvas.ZIndexStack
CentradoaddStretch / setAlignmentanchors.centerInHorizontalAlignment/VerticalAlignment=CenterCenter / Align
Alineado a los extremosaddStretch en ambos ladosanchors.left/right + márgenesAsignación de márgenesMainAxisAlignment.spaceBetween
EspaciadoQSpacerItem / spacing del layoutPropiedad spacingMargin / PaddingSizedBox / Padding / Spacer
ColorQPalette / hoja de estilosTema / enlace de propiedadesDiccionario de recursos ResourceDictionaryThemeData / ColorScheme
Tamaño de fuente / fuenteQFontfont.pixelSizeFontSizeTextStyle.fontSize
Bordes redondeadosHoja de estilos border-radiusRectangle radiusCornerRadiusBorderRadius
SombraQGraphicsDropShadowEffectDropShadowThemeShadow / DropShadowBoxShadow
IconoQIcon / recursosImage / fuente de iconosFontIcon / SymbolIconIcon
Reutilización de componentesSubclase personalizada de QWidgetComponent QML personalizadoUserControl / control personalizadoWidget
Estado / varianteEnumeración + update()State / impulsado por propiedadesVisualStateManagersetState / AnimatedWidget

Reglas estrictas contra la pereza

La IA tiende a usar solo un canal para escribir código. Debes exigir explícitamente:

  • "Llama simultáneamente a get_figma_data y download_figma_images para leer el diseño"
  • "No está permitido usar solo imágenes/capturas para leer el diseño y escribir código"
  • "Lee línea por línea los valores exactos de get_figma_data, compara colores, tamaños de fuente y espaciados, no hagas estimaciones visuales"
  • "Traduce al diseño/control estándar del framework objetivo según la tabla de mapeo, no inventes"

Lista de verificación de autoevaluación de fidelidad

Después de generar, verifica elemento por elemento (más fiable que "si se parece en general"):

  • Color (¿se usó el valor exacto, no aproximado?)
  • Tamaño de fuente / peso de fuente
  • Espaciado / márgenes / relleno
  • Bordes redondeados / bordes / sombras
  • Diseño (¿se tradujo al diseño estándar del framework objetivo, en lugar de copiar coordenadas absolutas?)
  • Jerarquía / orden de capas
  • Iconos/imágenes (¿se usaron los archivos originales, no dibujados a mano?)
  • Patrones repetitivos (¿se extrajeron como componentes/controles personalizados?)

Fuentes de referencia

La metodología se inspira en el flujo de desarrollo de UI del MCP oficial de Figma + Playwright (consulta "Mejorando la eficiencia del desarrollo y depuración de UI con Figma MCP y Playwright MCP"). La idea central de "doble canal + cierre del ciclo de validación + requisitos claros contra la pereza" se mantiene, las herramientas se adaptan a Framelink figma-developer-mcp, y la tabla de mapeo se ha ampliado para cubrir múltiples frameworks de escritorio.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados