Communitygithub.com

Joncik91/ucai

Útil al construir componentes React, optimizar el rendimiento, analizar el tamaño de los bundles, iniciar proyectos, implementar accesibilidad, revisar la calidad del código frontend, realizar renovaciones visuales completas o diseñar sistemas UI/UX.

¿Qué es ucai?

Este skill transforma al agente de IA en un ingeniero frontend senior especializado en múltiples frameworks. Proporciona un flujo de trabajo paso a paso que comienza con la detección automática del stack tecnológico del proyecto (Next.js, Nuxt, SvelteKit, Astro, Angular, etc.) mediante la inspección de archivos de configuración. A continuación, guía la investigación de las mejores prácticas actuales para ese stack y para el tipo de componente que se va a construir. El núcleo del skill es un enfoque de 'Design Thinking' que prioriza la intencionalidad estética: elegir una dirección de diseño audaz (minimalista, maximalista, retro-futurista, etc.) antes de escribir una línea de código, con recomendaciones concretas sobre tipografía, color, movimiento y composición espacial. Finalmente, cubre principios universales de frontend (diseño de componentes, rendimiento con un presupuesto de 16ms, accesibilidad WCAG AA, gestión de estado, formularios y seguridad) y proporciona una lista de verificación para revisiones de PR. Está diseñado para agentes como Claude Code, Cursor o Codex, y su fortaleza reside en combinar un profundo conocimiento técnico con una filosofía de diseño que rechaza las soluciones genéricas y las estéticas sobreutilizadas.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Joncik91/ucai/tree/HEAD/skills/frontend

Preguntar en tu IA favorita

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

Documentación

Ingeniero Frontend

Patrones de desarrollo frontend, optimización de rendimiento, accesibilidad y diseño de UI distintivo para cualquier framework.


Paso 1: Detectar el Stack

Antes de escribir cualquier código, identifica el framework y las herramientas a partir de las señales del proyecto:

Archivo / patrón de señalStack
next.config.*Next.js (React)
nuxt.config.*Nuxt (Vue)
svelte.config.*SvelteKit
astro.config.*Astro
remix.config.* / @remix-run en package.jsonRemix (React)
angular.jsonAngular
vite.config.* + ReactVite + React
vite.config.* + VueVite + Vue
tailwind.config.*Tailwind CSS
styled-components / emotion en package.jsonCSS-in-JS

Comprueba: cat package.json, ls -la, cat vite.config.* — lo que corresponda.


Paso 2: Investigar Prácticas Actuales

Una vez que conozcas el stack, busca antes de hacer recomendaciones específicas del framework:

WebSearch: " patrones de componentes frontend mejores prácticas 2025" WebSearch: " optimización de rendimiento frontend 2025" WebSearch: " optimización de tamaño de bundle 2025" WebSearch: " mejores prácticas de accesibilidad 2025" WebSearch: " mejores prácticas 2025"


Paso 3: Pensamiento de Diseño

Preámbulo de primeros principios: antes de recurrir a una librería, framework o patrón de componentes, pregúntate si la elección resuelve la restricción específica de esta UI o es un hábito de aplicaciones más grandes. Una página de aterrizaje no es un dashboard; un panel de configuración no es un sitio de marketing. Cuestiona el requisito antes de adoptar el patrón; rechaza "necesitamos X porque todo el mundo usa X" y razona a partir del usuario, el contenido y el modelo de interacción reales.

Al construir cualquier UI — componente, página o aplicación — comprométete con una dirección estética audaz antes de escribir una línea de código:

  • Propósito: ¿Qué problema resuelve esta interfaz? ¿Quién la usa?
  • Tono: Elige un extremo y hazlo tuyo. Brutalmente minimalista, caos maximalista, retro-futurista, orgánico/natural, lujo/refinado, lúdico/tipo juguete, editorial/revista, brutalista/crudo, art déco/geométrico, suave/pastel, industrial/utilitario — comprométete con una dirección y ejecútala con precisión.
  • Diferenciación: ¿Qué hace que esto sea inolvidable? ¿Qué es lo único que alguien recordará?
  • Restricciones: Framework, presupuesto de rendimiento, requisitos de accesibilidad.

El objetivo es la intencionalidad, no la intensidad. El minimalismo refinado y el maximalismo audaz funcionan ambos — el término medio genérico no.

Tipografía

Elige fuentes que sean hermosas, únicas y con carácter. Combina una fuente de exhibición distintiva con una fuente de cuerpo refinada.

  • Evita: Inter, Roboto, Arial, fuentes del sistema, Space Grotesk (muy usadas)
  • Prefiere: Elecciones inesperadas que eleven la estética y se sientan diseñadas para el contexto
  • Cada decisión tipográfica debe documentarse con una razón

Color y Tema

Comprométete con una estética cohesiva. Usa variables CSS para mantener la consistencia.

  • Los colores dominantes con acentos marcados superan a las paletas tímidas y uniformemente distribuidas
  • Define tokens: primario, superficie, texto, error, borde — nunca disperses valores hex raw
  • Varía entre temas claro y oscuro — no te decantes por uno por defecto
  • Comprueba las relaciones de contraste (4.5:1 para texto de cuerpo, 3:1 para texto grande)

Movimiento

Usa animación para efectos y micro-interacciones. Prioriza solo CSS para HTML; librería Motion para React cuando esté disponible.

  • Una carga de página bien orquestada con revelaciones escalonadas crea más deleite que micro-interacciones dispersas
  • Usa disparadores de scroll y estados hover que sorprendan
  • Iguala la complejidad de la animación a la visión estética — los diseños maximalistas necesitan movimiento elaborado, los diseños refinados necesitan moderación

Composición Espacial

  • Diseños inesperados: asimetría, superposición, flujo diagonal, elementos que rompen la cuadrícula
  • Amplio espacio negativo O densidad controlada — no el término medio confuso
  • Jerarquía visual a través del contraste de tamaño, no solo de color

Fondos y Detalles Visuales

Crea atmósfera y profundidad en lugar de recurrir a colores sólidos:

  • Mallas de degradado, texturas de ruido, patrones geométricos, transparencias en capas
  • Sombras dramáticas, bordes decorativos, superposiciones de grano
  • Cursores personalizados, efectos contextuales que coincidan con la estética general

Anti-patrones Estéticos

Nunca uses estéticas genéricas generadas por IA:

  • Fuentes sobreutilizadas: Inter, Roboto, Arial, Space Grotesk, fuentes del sistema
  • Degradados púrpura sobre fondos blancos
  • Diseños predecibles y patrones de componentes estándar
  • Diseño que carece de carácter específico del contexto
  • Dos generaciones consecutivas que convergen en las mismas elecciones

Paso 4: Principios Universales de Frontend

Estos se aplican independientemente del framework.

Diseño de Componentes

  • Responsabilidad única: un componente, una tarea — divide cuando un componente hace dos cosas distintas
  • Props como API: trata las props de los componentes como una API pública — documenta qué es obligatorio vs. opcional
  • Co-ubicación: mantén los estilos, pruebas y tipos junto al componente al que pertenecen
  • Composición sobre herencia: prefiere pasar hijos/slots en lugar de extender componentes base
  • Controlado vs. no controlado: sé intencional — controlado para formularios que necesitan validación, no controlado para entradas simples

Rendimiento

  • Presupuesto de renderizado: los componentes deben renderizarse en menos de 16ms para 60fps; perfila antes de optimizar
  • Carga perezosa: divide el código en los límites de las rutas; aplaza los componentes que están debajo del pliegue
  • Optimización de imágenes: usa el componente de imagen del framework o <picture> + srcset; nunca sirvas 2x el tamaño de visualización
  • Memoización: añádela solo cuando la creación de perfiles muestre un problema — la memoización prematura añade complejidad sin beneficio
  • Análisis de bundle: audita regularmente el tamaño del bundle; marca las dependencias de más de 50kb que se puedan reemplazar o cargar de forma perezosa

Accesibilidad (a11y)

  • HTML semántico: usa el elemento correcto (<button> no <div onClick>, <nav> no <div class="nav">)
  • Gestión del foco: los modales/cajones/desplegables personalizados deben atrapar el foco y restaurarlo al cerrarse
  • ARIA: usa ARIA solo para extender la semántica, no para reemplazarla; prefiere elementos nativos
  • Contraste de color: 4.5:1 para texto de cuerpo, 3:1 para texto grande (mínimo WCAG AA)
  • Navegación por teclado: cada elemento interactivo debe ser alcanzable y operable por teclado
  • Pruebas con lectores de pantalla: prueba con NVDA+Firefox o VoiceOver+Safari antes de publicar

Gestión del Estado

  • Localidad primero: co-ubica el estado con el componente que lo posee; eleva solo cuando sea necesario
  • Estado del servidor vs. estado del cliente: usa una librería de obtención de datos para el estado del servidor (TanStack Query, SWR, Apollo) — no lo almacenes en un store global
  • Estado derivado: calcúlalo a partir de la fuente de verdad — no sincronices dos piezas de estado
  • Store global: solo para estado verdaderamente transversal (usuario autenticado, tema, flags de funcionalidad)

Formularios

  • Validación: valida al perder el foco (blur) para UX, al enviar (submit) para corrección; muestra errores en línea
  • Accesibilidad: cada entrada tiene una <label>; los mensajes de error se referencian mediante aria-describedby
  • Estados de carga: deshabilita el envío durante la asincronía; muestra un spinner o progreso
  • UI optimista: aplica la mutación localmente, revierte en caso de error

Seguridad

  • XSS: nunca establezcas innerHTML/dangerouslySetInnerHTML desde la entrada del usuario; sanitiza si es inevitable
  • CSP: cabecera Content-Security-Policy; evita unsafe-inline
  • Datos sensibles: nunca registres tokens, contraseñas o PII en la consola
  • Scripts de terceros: audita antes de añadirlos; cada script es un riesgo para la cadena de suministro
  • Auditoría de dependencias: ejecuta npm audit regularmente; mantén las dependencias actualizadas

Lista de Verificación para Revisión

Antes de cualquier PR de frontend:

  • Dirección estética elegida y documentada antes de escribir cualquier código
  • Las elecciones de fuentes son distintivas y apropiadas al contexto (no Inter/Roboto/Arial/Space Grotesk)
  • Tokens de color definidos; relaciones de contraste verificadas (WCAG AA)
  • Todos los estados del componente manejados — por defecto, hover, foco, deshabilitado, carga, error, vacío
  • Los componentes tienen una responsabilidad única y clara
  • No hay dangerouslySetInnerHTML desde entrada no validada
  • Cada elemento interactivo es accesible por teclado
  • Cada entrada tiene una <label> asociada
  • Las imágenes tienen texto alt significativo (o alt="" si es decorativa)
  • Impacto en el bundle evaluado para nuevas dependencias
  • No hay console.log de tokens o PII
  • Responsivo en los puntos de interrupción móvil, tablet y escritorio

Skills relacionados