Communitygithub.com

habilidad-animacion-empro-labs

Diseña y construye animaciones web (micro-interacciones, transiciones de componentes y páginas, loaders, scroll reveals y efectos vinculados al scroll) en CSS, la API de Animaciones Web o GSAP. Primero la especificación: escribe un archivo ANIMATION.md, obtiene la aprobación del usuario y luego genera el código de animación respetando prefers-reduced-motion y un presupuesto de rendimiento.

¿Qué es habilidad-animacion-empro-labs?

Esta habilidad está diseñada para desarrolladores e ingenieros de IA que trabajan con agentes de código como Claude Code, Cursor o Codex. Su propósito es añadir movimiento a interfaces web de forma sistemática, eficiente y accesible. La habilidad sigue un flujo de cuatro fases: (A) entender la entrada del usuario (referencias, palabras clave o código existente), (B) escribir una especificación de movimiento (ANIMATION.md) que el usuario debe aprobar, (C) implementar el código de animación usando CSS, la API de Animaciones Web o GSAP, y (D) auditar el rendimiento, la accesibilidad y el cumplimiento de las reglas definidas. Es especialmente útil para tareas como micro-interacciones, transiciones de página, scroll reveals y animaciones de carga, y garantiza que todo el movimiento respete la configuración prefers-reduced-motion del usuario. La habilidad evita animar propiedades costosas como width o height, centraliza los tokens de duración y easing, y proporciona scripts de auditoría para detectar problemas como bucles infinitos o animaciones de layout. Está basada en un conjunto completo de referencias, plantillas y scripts que guían cada paso del proceso, desde la concepción hasta la validación final.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aj9599995/Empro-Lab-Animation-Skill/tree/main

Preguntar en tu IA favorita

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

Documentación

Habilidad de Animación de Empro Labs

Habilidad de diseño de movimiento web. Dos pasos: escribe primero la especificación de movimiento (ANIMATION.md) y luego escribe el código.

ANIMATION.md es un archivo guardado en el proyecto. Puede editarse manualmente, reutilizarse en otros proyectos y ser leído por otras herramientas.

Las rutas en este archivo son relativas a la carpeta de la habilidad (~/.claude/skills/empro-labs-animation-skill/). Usa rutas absolutas cuando ejecutes los scripts.

Solicitud

La solicitud del usuario desde el comando slash:

$ARGUMENTS

Si la solicitud anterior está vacía, haz una pregunta: ¿qué debería moverse y hacia dónde? Luego comienza la Fase A.

Flujo principal

Fase A  Entender la entrada  ──→  Fase B  Escribir ANIMATION.md (el usuario aprueba)  ──→  Fase C  Implementar  ──→  Fase D  Auditar

Verificaciones iniciales (en este orden)

  1. ¿El proyecto tiene ANIMATION.md? → Reutilízalo, edítalo o renuévalo, según lo que pida el usuario.
  2. ¿Tiene DESIGN.md (de la habilidad de diseño web)? → Hereda sus colores, fuentes y dirección de estilo. Mantén el movimiento coherente con él.
  3. ¿Tiene tokens de movimiento (variables --motion-* o un archivo de movimiento)? → Reutilízalos. No inventes nuevos valores.
  4. ¿Ya tiene código de animación? → Ejecuta primero python scripts/analyze_motion.py <project> --inventory, para que sepas lo que existe antes de proponer cambios.
  5. Ninguno de los anteriores → Fase A.

Fase A: Entender

Las entradas pueden combinarse:

EntradaQué hacer
URL de referenciaEjecuta python scripts/capture_motion.py --url [URL] --output ./motion-capture. Lee capture.json para obtener duraciones reales, easings, propiedades animadas y efectos vinculados al scroll. Usa top.png para el ambiente.
Video o captura de pantalla del movimientoDescribe el disparador, la duración aproximada y la sensación del easing. Confirma los números con el usuario.
Palabras clave ("rápido", "cinematográfico")Asócialas a una personalidad en references/motion-personalities.md.
Nombre de marca ("como Linear")Captura el sitio en vivo si es accesible. Si no, pide una URL de referencia. No adivines el movimiento basándote en la memoria de una marca.
Código existenteEjecuta el script de inventario y conserva lo que funciona.

A1. Personalidad (haz como máximo dos preguntas)

  • Sensación: ¿tranquila, rápida, divertida o cinematográfica?
  • Tipo de página: ¿con mucho contenido (el movimiento pasa desapercibido) o de exhibición (el movimiento puede liderar)?

Muestra uno o dos candidatos de references/motion-personalities.md, cada uno con una razón de una línea. El usuario confirma.

A2. Nivel de interacción (obligatorio, no lo omitas)

Consulta references/interaction-tiers.md.

NivelExperienciaHerramientas
L1 MicroHover, focus, press, interruptores, cambios de estado pequeñosSolo transiciones CSS
L2 CoreografiadoEntrada y salida, listas escalonadas, modales, cajones, cambios de ruta, loadersKeyframes CSS, API de Animaciones Web o una línea de tiempo de GSAP
L3 Historia de scrollRevelaciones vinculadas al scroll, fijación, parallax, secciones impulsadas por una línea de tiempoGSAP + ScrollTrigger, o animaciones CSS controladas por scroll con un fallback

L3 está limitado a dos secciones fijadas por página. Cada sección de la página indica su nivel en la especificación.

A3. Stack

Verifica package.json y el framework (HTML plano, React, Vue, Svelte, Next.js). Elige las herramientas con references/tooling.md. Por defecto: CSS y la API de Animaciones Web. Añade GSAP solo para L3 o líneas de tiempo complejas.

Fase B: Escribir ANIMATION.md

Sigue references/animation-md-template.md. Diez secciones:

  1. Personalidad y Principios del Movimiento
  2. Tokens de Movimiento (duraciones, easings, distancias)
  3. Inventario de Coreografías (tabla: elemento, disparador, propiedad, duración, easing, retardo, fallback de movimiento reducido)
  4. Movimiento de Componentes (por defecto, hover, focus-visible, active, disabled, entrada, salida)
  5. Comportamiento de Scroll
  6. Transiciones de Página y Ruta
  7. Presupuesto de Rendimiento
  8. Accesibilidad
  9. Qué Hacer y Qué No Hacer (al menos 8 elementos, al menos 5 de ellos son "Qué No Hacer")
  10. Dependencias

Muestra un resumen al usuario y espera la aprobación. Luego guarda ANIMATION.md en la raíz del proyecto.

Fase C: Implementar

  1. Tokens en todas partes. Cada duración y easing es una variable, como var(--motion-duration-base). Sin números mágicos dentro de los componentes.
  2. Anima solo propiedades económicas. transform y opacity primero. clip-path y filter están permitidos en elementos pequeños. Nunca anime width, height, top, left, margin o padding a menos que ANIMATION.md registre una excepción con una razón.
  3. El movimiento reducido es parte de la primera versión, no un parche posterior. El movimiento se elimina y los cambios de estado permanecen. Los tokens de distancia se reducen a cero con movimiento reducido, y el bloque prefers-reduced-motion en templates/motion-tokens.css muestra el patrón.
  4. Usa los archivos de inicio cuando el proyecto aún no tenga una capa de movimiento: templates/motion-tokens.css y templates/reveal.js.
  5. Los bucles necesitan una salida. Cualquier animación infinite se detiene o simplifica con movimiento reducido. Cualquier bucle que dure más de cinco segundos tiene un control de pausa.
  6. Limpia el JavaScript. Elimina las líneas de tiempo de GSAP y los ScrollTriggers al desmontar (usa gsap.context() o useGSAP). Desconecta los observadores y elimina los listeners.
  7. Mantén el movimiento en un solo lugar. Coloca los tokens en un archivo y las recetas en módulos pequeños. No disperses los valores de sincronización entre componentes.

Fase D: Auditar

  1. Ejecuta la auditoría estática: python scripts/analyze_motion.py <project> --strict. Corrige todos los errores. Revisa todas las advertencias y, o bien corrígelas, o justifícalas en ANIMATION.md.
  2. Ejecuta las comprobaciones del navegador:
    • Activa el movimiento reducido (DevTools → Rendering → prefers-reduced-motion: reduce). Confirma que no queda movimiento y que el contenido sigue siendo visible.
    • Limita la CPU (4×) y graba el panel de Rendimiento mientras se reproduce el movimiento. Busca frames largos.
    • Verifica un ancho de teléfono (390 px). Busca desbordamiento horizontal de elementos animados.
  3. Revisa references/quality-checklist.md.
  4. Informa qué pasó, qué falló y qué corregiste.

Líneas rojas (cada elemento debe cumplirse)

  • Cada animación en ANIMATION.md tiene un fallback de movimiento reducido.
  • Solo se animan transform, opacity y las excepciones registradas.
  • Todas las duraciones y easings provienen de tokens.
  • Cada bucle infinite respeta el movimiento reducido, y cualquier bucle de más de cinco segundos tiene un control de pausa.
  • Nada parpadea más de tres veces por segundo.
  • La retroalimentación interactiva aparece en menos de 100 ms. Las micro animaciones son de 250 ms o menos. Las transiciones de entrada y ruta son de 500 ms o menos.
  • La retroalimentación solo por hover tiene un estado de focus de teclado y un equivalente táctil.
  • En anchos de 600 px o menos, ningún elemento animado causa desplazamiento horizontal, y las secciones fijadas están desactivadas o simplificadas.
  • Las animaciones de JavaScript se limpian al desmontar.

Índice de referencias

Lee solo los archivos que necesita la fase actual. No los cargues todos.

ArchivoContenidoLeer cuando
references/animation-md-template.mdPlantilla de salida de ANIMATION.md (10 secciones)Fase B
references/motion-principles.mdPor qué y cuándo animar, reglas de sincronización y easingFase A y B
references/interaction-tiers.mdDefiniciones de niveles L1, L2 y L3 con patrones de códigoFase A2 y B
references/motion-personalities.mdCuatro preajustes de personalidad con valores de tokensFase A1 y B
references/tooling.mdCSS vs WAAPI vs GSAP vs Motion vs View Transitions vs LottieFase A3
references/component-recipes.mdBotón, tarjeta, acordeón, modal, cajón, toast, pestañas, loadersFase C
references/gsap-recipes.mdLíneas de tiempo de GSAP, ScrollTrigger, matchMedia, limpieza en ReactFase C (solo GSAP)
references/scroll-patterns.mdRevelación, barra de progreso, pila adhesiva, parallax, desplazamiento horizontalFase B (scroll) y C
references/performance.mdPresupuesto de frames, reglas amigables con el compositor, degradado móvilFase B y D
references/accessibility.mdMovimiento reducido, criterios de movimiento de WCAG, desencadenantes vestibularesFase B y D
references/quality-checklist.mdLista de verificación de auditoría de 100 puntosFase D

Scripts

ScriptUsoNecesita
scripts/analyze_motion.pyAuditoría estática del CSS y JS de un proyecto. Encuentra animaciones de layout, transition: all, bucles infinitos, duraciones largas y falta de manejo de movimiento reducido. --inventory lista los valores de sincronización existentes.Python 3 (solo biblioteca estándar)
scripts/capture_motion.pyRegistra animaciones declaradas y en ejecución en una URL en vivo, desplaza la página y verifica qué sigue funcionando con movimiento reducido. Escribe capture.json y top.png.Python 3, pip install playwright, python -m playwright install chromium

Ambos scripts aceptan --help.

Plantillas

ArchivoUso
templates/motion-tokens.cssVariables de tokens, keyframes base, reglas de revelación y el bloque de movimiento reducido. Cópialo en el proyecto.
templates/reveal.jsRevelación de scroll sin dependencias con IntersectionObserver que respeta el movimiento reducido.

Idioma

Escribe ANIMATION.md y los resúmenes en el idioma del usuario. Mantén los nombres de CSS, JavaScript y tokens en inglés.

Cadena de respaldo

  • El script de captura falla (no tiene Playwright, o el sitio bloquea el navegador) → pide una captura de pantalla o una grabación de pantalla corta y construye a partir de esa descripción.
  • La referencia usa una biblioteca de animación que no puedes identificar → indícalo y pregunta si deseas igualar la sensación o el movimiento exacto.
  • Ninguna entrada en absoluto → haz una pregunta sobre la sensación, luego usa la personalidad tranquila.

Skills relacionados