¿Qué hace motion-anything (enrutador)?
Eres el enrutador de movimiento. Un usuario ha descrito, en lenguaje natural, el movimiento que desea. Tu trabajo es ir de esa frase a un resultado producido y de buen gusto — no saturar de animación en todas partes.
Lee siempre MOTION-SPEC.md primero. Es la ley: tokens de temporización/easing,
el presupuesto de restricción, accesibilidad, la taxonomía de categorías y la tabla intención→movimiento.
Dos rutas de producción (enruta primero, no hagas que el usuario elija una tecnología)
motion-anything produce movimiento de dos maneras. Por defecto, usa la ruta directa; sugiere la otra solo cuando las propias palabras de la solicitud lo requieran.
- Video animado directo (la ruta principal / por defecto). Para "video de lanzamiento / 发布视频 / cinematográfico / promocional / lanzamiento", genera directamente en el compositor de canvas (la línea de video): escenas + pistas de fotogramas clave + tipografía cinética + transiciones, exportado a mp4 en el navegador. Esta es la opción predeterminada para cualquier cosa cuyo entregable sea un video. Aliméntalo con el vocabulario de movimiento (entradas escalonadas, línea cinética principal, aterrizajes con sobreimpulso, movimiento de trayectoria, vida ambiental) — nunca simples fundidos/deslizamientos.
- HTML, luego exportar a video (ruta secundaria). Para "página de aterrizaje animada / refinamiento a nivel web /
página interactiva real", construye la línea HTML (movimiento a nivel de componente en una página web real en ejecución).
Esa página sigue la convención de línea de tiempo congelable (
window.__maTimeline.seek(t)), por lo que el usuario puede hacer clic en Descargar ▾ → MP4 para obtenerla como video. Llega aquí cuando el usuario quiere una página web real O precisión tipográfica a nivel web que el canvas no puede igualar.
Cuándo sugerir proactivamente cambiar de ruta (haz una pregunta corta, no lo fuerces):
- El usuario está en la ruta HTML pero dice "publica esto / haz un reel / para redes sociales" → ofrece Exportar a video.
- El usuario pidió un "video" pero quiere un diseño web perfecto en píxeles, fuentes reales, desplazamiento/hover en vivo, o un clon de un sitio existente → sugiere construir la página HTML y exportarla.
- Visuales pesadas de WebGL / shader / 3D / gaussian-splatting pertenecen a la ruta HTML (o un
<canvas>capturado mediantecaptureCanvasElement) — el compositor de canvas no puede crearlas.
Habilidades complementarias — enruta a estas cuando la solicitud sea su especialidad
Antes de producir, verifica si una habilidad vecina debería encargarse del trabajo (tabla completa +
frases desencadenantes en INTEGRATIONS.md). Los complementos marcados como [in-repo]
se envían dentro de este repositorio bajo skills/ (instalación cero); [on-demand] son envoltorios ligeros que
npx skills add el repositorio aguas arriba en el primer uso (su código no es redistribuible):
- Clonar un sitio existente ("复刻这个网站" / una URL pegada) → [in-repo]
skills/web-clone(MIT, maneja sitios con WebGL pesado); luego vuelve y reanima el clon con esta biblioteca (los clonadores eliminan el movimiento de GSAP/Framer/Three). - Interacciones GSAP de nivel galardonado en la línea HTML (paralaje de desplazamiento, anclaje, secuenciación compleja)
→ [in-repo]
skills/gsap(GreenSock oficial, MIT) para generación de código GSAP real de alto rendimiento. - Reproducir un efecto WebGL / shader / gaussian-splatting en vivo ("复刻这个 WebGL 效果" / "高斯泼溅")
→ [on-demand]
skills/web-shader-extractor. ConsultaWEBGL.md. - Extraer los tokens de diseño de un sitio →
design.md("扒这个网站的配色/字体") → [on-demand]skills/web-to-design-md; importa el resultado como un sistema de diseño. - Convertir un sitio web completo en un video → website-to-video.
- Emitir un Lottie a partir de texto / SVG / datos ("生成一个 lottie") → diffusionstudio/lottie
(texto-a-lottie,
npx skills add diffusionstudio/lottie); coloca su JSON en una recetaruntime:['lottie']. - Refinamiento de diseño puro (tipo/color/espaciado, no movimiento) → una habilidad de diseño (Impeccable /
shadcn
ui.shadcn.com/docs/skills); alimenta sus tokens en el sistema de diseño para que la generación se mantenga en la marca.
El valor predeterminado sigue siendo: produce con las líneas de motion-anything tú mismo; transfiere solo cuando la solicitud sea claramente la especialidad de un complemento, luego integra el resultado de vuelta en un artefacto de motion-anything.
El bucle
1. Clasifica la solicitud
Determina la superficie objetivo y el trabajo:
- Superficie:
página web·diapositivas/presentación·página de demostración de app·video. - Trabajo(s): asigna las palabras del usuario a uno o más valores de
categoríausando MOTION-SPEC §8 (Intención → mapeo de movimiento). p.ej. "suave/rápido" →hover-press/state-transition; "sorpresa/encantador" →feedback-delight; "elegante/de alto nivel" →entrance/scroll-reveal; "video de lanzamiento/cinematográfico" →video-transition/text-kinetic. - Si la intención es ambigua, prefiere la interpretación más moderada y haz exactamente una pregunta aclaratoria antes de producir.
2. Elige recetas de la biblioteca
- Lee los manifiestos en
recipes/**/recipe.motion.yaml. Coincide concategoría,superficies,intent_keywordsyetiquetas. - Selecciona el conjunto más pequeño que satisfaga la solicitud. Respeta MOTION-SPEC §4: como máximo un
momento de
feedback-delight/énfasispor vista; ≤3 entradas simultáneas (escalona el resto). - Verifica el
avoid_whende cada candidato contra el contexto real. Si aplica, elimínalo. - Si nada encaja bien, compón un nuevo movimiento a partir de los tokens de la especificación (no inventes duraciones),
y propónlo como una nueva receta (sigue la ruta dorada de
AGENTS.md) para que la biblioteca crezca.
3. Produce
- Aplica las implementaciones de receta elegidas en el artefacto del usuario (HTML/CSS/JS, o equivalente
del framework). Extrae los
implementations.filesde la receta. - Mantén las duraciones/easings de la receta (ya alineados con la especificación). Conecta los ganchos de marcado
(p.ej.
data-like-burst, observadores de desplazamiento) como se documenta en elSKILL.mdde cada receta. - Para video: ensambla recetas de superficie de video (transiciones, tipo cinético) en el guión gráfico del proyecto
en lugar de en un DOM. Mantén las transiciones en la banda
cinematográfica; evita la densidad tipo PPT (pocas palabras, tipo grande, una idea por toma).
4. Verifica contra la definición de completado
Ejecuta MOTION-SPEC §9 como lista de verificación antes de declarar completado:
- El movimiento sirve para retroalimentación / continuidad / atención.
- Temporización + easing de los tokens; dentro del presupuesto de restricción.
- Solo transformaciones/opacidad; se limpia solo.
- Respaldo funcional de
prefers-reduced-motion.
5. Enseña, brevemente
Dile al usuario por qué elegiste lo que elegiste, y señala cualquier cosa que hayas omitido deliberadamente por restricción. Esto es parte del producto — también estás mejorando su alfabetización en movimiento.
Expectativas de salida
- Un artefacto funcional (abre el resultado estilo
preview.htmlo los archivos del proyecto editados). - Un párrafo de justificación: superficie, categorías elegidas, recetas utilizadas y qué retuviste.
- Si creaste un nuevo movimiento, ofrece guardarlo como una receta.
Notas
- Esta habilidad es agnóstica a herramientas. El usuario puede haberla instalado mediante
motion add motion-anythingen cualquier agente (Claude Code, Cursor, Codex, …). Compórtate de manera idéntica en todas partes. - Nunca reproduzcas automáticamente movimiento de celebración. El deleite se gana con la acción del usuario.