01Intención y contexto
+
Describe qué ayuda a entender o hacer, dónde aparece y qué debe atraer primero la atención. Define si es una interacción independiente o parte de una composición. Las referencias inspiran; no autorizan copiar código ni recursos.
02Disparador y estados
+
Especifica evento o umbral de entrada, estado inicial, activo y final, repetición, reversa e interrupción. Para scroll: contenedor, inicio y fin del tramo, dirección y comportamiento al volver. Evita bloquear el desplazamiento nativo.
03Un ritmo definido
+
Declara duración, delay, stagger, easing y distancias con sus unidades y límites. Distingue valores configurables de constantes internas. En una página comparte un preset: jerarquía, entradas, pausas de lectura y cierre; revisa las transiciones entre secciones.
04HTML, estilos y contenido
+
Incluye marcado semántico, selectores y estructura necesarios, estilos acotados a la raíz, estados de foco y assets con dimensiones. Conserva textos legibles y enlaces reales. Documenta qué puede personalizarse sin romper el efecto.
05Una versión móvil intencional
+
Define la adaptación por breakpoint y orientación: reduce distancias, evita hover como único acceso y convierte escenas fijas complejas en flujo vertical. Controles de al menos 44 × 44 CSS px como objetivo de este catálogo; prueba toque, zoom al 200 %, áreas seguras y texto largo.
06Accesibilidad y movimiento reducido
+
Define explícitamente la alternativa con prefers-reduced-motion: contenido estático visible o cambio inmediato de estado. Mantén navegación por teclado, foco visible, nombres accesibles y lectura sin duplicados. Añade pausa a bucles persistentes. No comuniques información solo mediante movimiento.
07Sin JavaScript y con fallos
+
La información esencial debe seguir disponible sin JavaScript. Documenta qué interacciones requieren JS y su alternativa. Comprueba APIs necesarias antes de usarlas; si fallan, muestra el estado final legible. No dejes contenido permanentemente transparente.
08Rendimiento con evidencia
+
Prioriza transform y opacity; mide máscaras, filtros y cambios de altura. Agrupa lecturas y escrituras del DOM, limita trabajo por frame y detén bucles fuera de vista. Carga recursos pesados bajo demanda. Define un presupuesto de peso/fluidez por proyecto y registra mediciones, dispositivo y navegador; no inventes resultados.
09Montaje, limpieza e integración
+
Expón mount(root, options) y destroy(), o equivalentes documentados. Limpia listeners, observers, timers, requestAnimationFrame y animaciones; restaura estilos/DOM modificados. Declara comportamiento ante remontaje. Inicializa en cliente y verifica SSR/hidratación, navegación de Astro y contenido dinámico de WordPress.
10Motor y dependencias justificadas
+
Declara el motor real y por qué se necesita. Si añade paquetes, registra nombre exacto, versión comprobada, plugins, importaciones, licencia y fecha de revisión; fija la versión en el lockfile del cliente. Evita dos motores escribiendo la misma propiedad. Una opción de la guía no es una dependencia del recurso.
11Un paquete que otra IA entienda
+
Entrega fuente, CSS, tipos, demo reproducible, adaptadores, manifest.json, instrucciones, licencia y este contrato. Documenta restricciones y compatibilidad comprobada. Incluye el código en la copia para IA; no dependas de que pueda abrir un catálogo privado.
12Pruebas antes de entregar
+
Revisa 320, 375, 390, 768 y 1440 px, retrato/paisaje, teclado, toque, movimiento reducido, sin JS, resize, scroll rápido y vuelta atrás. Comprueba rutas, montaje/desmontaje repetido y el framework real. En composiciones recorre la página completa. Registra resultado y evidencia; distingue pendiente, aprobado y no aplicable con motivo.
Un requisito no equivale a una prueba aprobada. Registra las comprobaciones del cliente en animation-contract.json, con su resultado y evidencia.