Communitygithub.com

zroeschen/Video-Production-Factory

Referencia de animaciones GSAP para HyperFrames. Cubre gsap.to(), from(), fromTo(), easing, stagger, defaults, líneas de tiempo (gsap.timeline(), parámetro de posición, etiquetas, anidamiento, reproducción) y rendimiento (transformaciones, will-change, quickTo). Úsalo al escribir animaciones GSAP en composiciones de HyperFrames.

¿Qué es Video-Production-Factory?

Este skill proporciona una guía de referencia completa para usar GSAP (GreenSock Animation Platform) dentro del contexto de HyperFrames, un framework para composiciones de video. Está diseñado para desarrolladores y agentes de IA que necesitan integrar animaciones de alto rendimiento en proyectos de producción de video. Cubre los métodos centrales de animación como `gsap.to()`, `from()` y `fromTo()`, así como técnicas avanzadas como `stagger`, líneas de tiempo anidadas con el parámetro de posición, y etiquetas. También incluye optimizaciones de rendimiento, recomendando el uso de propiedades transform y `autoAlpha` sobre las propiedades de layout, y mostrando cómo usar `gsap.quickTo()` para actualizaciones frecuentes en eventos como el movimiento del ratón. El skill está dirigido tanto a humanos como a agentes autónomos que escriban código GSAP para HyperFrames, asegurando que las animaciones sean suaves, eficientes y fáciles de mantener. Además, referencia un archivo de efectos reutilizables (`references/effects.md`) para patrones comunes como texto mecanografiado o visualizadores de audio.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zroeschen/Video-Production-Factory/tree/HEAD/.agents/skills/gsap

Preguntar en tu IA favorita

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

Documentación

GSAP

Métodos Centrales de Animación

  • gsap.to(targets, vars) — anima desde el estado actual a vars. El más común.
  • gsap.from(targets, vars) — anima desde vars al estado actual (entradas).
  • gsap.fromTo(targets, fromVars, toVars) — inicio y fin explícitos.
  • gsap.set(targets, vars) — aplica inmediatamente (duración 0).

Usa siempre nombres de propiedad en camelCase (p. ej., backgroundColor, rotationX).

vars comunes

  • duration — segundos (por defecto 0.5).
  • delay — segundos antes de iniciar.
  • ease — "power1.out" (por defecto), "power3.inOut", "back.out(1.7)", "elastic.out(1, 0.3)", "none".
  • stagger — número 0.1 u objeto: { amount: 0.3, from: "center" }, { each: 0.1, from: "random" }.
  • overwrite — false (por defecto), true, o "auto".
  • repeat — número o -1 para infinito. yoyo — alterna dirección con repeat.
  • onComplete, onStart, onUpdate — callbacks.
  • immediateRender — por defecto true para from()/fromTo(). Pon false en tweens posteriores que afecten a la misma propiedad+elemento para evitar sobrescritura.

Transformaciones y CSS

Prefiere los alias de transform de GSAP sobre la cadena transform en bruto:

Propiedad GSAPEquivalente
x, y, ztranslateX/Y/Z (px)
xPercent, yPercenttranslateX/Y en %
scale, scaleX, scaleYscale
rotationrotate (grados)
rotationX, rotationYrotate 3D
skewX, skewYskew
transformOrigintransform-origin
  • autoAlpha — prefiera sobre opacity. En 0: también establece visibility: hidden.
  • Variables CSS — "--hue": 180.
  • svgOrigin (solo SVG) — origen en el espacio de coordenadas SVG global. No combines con transformOrigin.
  • Rotación direccional — "360_cw", "-170_short", "90_ccw".
  • clearProps — "all" o separado por comas; elimina estilos en línea al completar.
  • Valores relativos — "+=20", "-=10", "*=2".

Valores Basados en Funciones

gsap.to(".item", {
  x: (i, target, targets) => i * 50,
  stagger: 0.1,
});

Easing

Eases integrados: power1–power4, back, bounce, circ, elastic, expo, sine. Cada uno tiene .in, .out, .inOut.

Valores por Defecto

gsap.defaults({ duration: 0.6, ease: "power2.out" });

Control de Tweens

const tween = gsap.to(".box", { x: 100 });
tween.pause();
tween.play();
tween.reverse();
tween.kill();
tween.progress(0.5);
tween.time(0.2);

gsap.matchMedia() (Responsivo + Accesibilidad)

Ejecuta la configuración solo cuando una media query coincide; se revierte automáticamente cuando deja de coincidir.

let mm = gsap.matchMedia();
mm.add(
  {
    isDesktop: "(min-width: 800px)",
    reduceMotion: "(prefers-reduced-motion: reduce)",
  },
  (context) => {
    const { isDesktop, reduceMotion } = context.conditions;
    gsap.to(".box", {
      rotation: isDesktop ? 360 : 180,
      duration: reduceMotion ? 0 : 2,
    });
  },
);

Líneas de Tiempo

Crear una Línea de Tiempo

const tl = gsap.timeline({ defaults: { duration: 0.5, ease: "power2.out" } });
tl.to(".a", { x: 100 }).to(".b", { y: 50 }).to(".c", { opacity: 0 });

Parámetro de Posición

El tercer argumento controla la colocación:

  • Absoluto: 1 — en 1s
  • Relativo: "+=0.5" — después del final; "-=0.2" — antes del final
  • Etiqueta: "intro", "intro+=0.3"
  • Alineación: "<" — mismo inicio que el anterior; ">" — después de que el anterior termine; "<0.2" — 0.2s después de que el anterior inicie
tl.to(".a", { x: 100 }, 0);
tl.to(".b", { y: 50 }, "<"); // mismo inicio que .a
tl.to(".c", { opacity: 0 }, "<0.2"); // 0.2s después de que .b inicie

Etiquetas

tl.addLabel("intro", 0);
tl.to(".a", { x: 100 }, "intro");
tl.addLabel("outro", "+=0.5");
tl.play("outro");
tl.tweenFromTo("intro", "outro");

Opciones de Línea de Tiempo

  • paused: true — crea pausada; llama a .play() para iniciar.
  • repeat, yoyo — aplica a toda la línea de tiempo.
  • defaults — vars fusionados en cada tween hijo.

Anidamiento de Líneas de Tiempo

const master = gsap.timeline();
const child = gsap.timeline();
child.to(".a", { x: 100 }).to(".b", { y: 50 });
master.add(child, 0);

Control de Reproducción

tl.play(), tl.pause(), tl.reverse(), tl.restart(), tl.time(2), tl.progress(0.5), tl.kill().


Rendimiento

Prefiere Transform y Opacity

Animar x, y, scale, rotation, opacity se mantiene en el compositor. Evita width, height, top, left cuando las transformaciones logren el mismo efecto.

will-change

will-change: transform;

Solo en elementos que realmente se animen.

gsap.quickTo() para Actualizaciones Frecuentes

let xTo = gsap.quickTo("#id", "x", { duration: 0.4, ease: "power3" }),
  yTo = gsap.quickTo("#id", "y", { duration: 0.4, ease: "power3" });
container.addEventListener("mousemove", (e) => {
  xTo(e.pageX);
  yTo(e.pageY);
});

Stagger > Muchos Tweens

Usa stagger en lugar de tweens separados con delays manuales.

Limpieza

Pausa o elimina tweens fuera de pantalla.


Referencias (cargadas bajo demanda)

  • references/effects.md — Efectos listos para usar: texto mecanografiado, visualizador de audio. Léelo cuando necesites patrones de efectos ya hechos para HyperFrames.

Buenas Prácticas

  • Usa nombres de propiedad en camelCase; prefiere alias de transform y autoAlpha.
  • Prefiere líneas de tiempo sobre encadenar con delay; usa el parámetro de posición.
  • Añade etiquetas con addLabel() para una secuenciación legible.
  • Pasa defaults al constructor de la línea de tiempo.
  • Guarda el valor de retorno de tween/timeline al controlar la reproducción.

No Hacer

  • Animar propiedades de layout (width/height/top/left) cuando las transformaciones sean suficientes.
  • Usar tanto svgOrigin como transformOrigin en el mismo elemento SVG.
  • Encadenar animaciones con delay cuando una línea de tiempo pueda secuenciarlas.
  • Crear tweens antes de que exista el DOM.
  • Omitir la limpieza — siempre elimina tweens cuando ya no sean necesarios.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

zroeschen/Video-Production-Factory

Agent 2 of the video editing pipeline. Finds and removes spoken mistakes — stutters, repeated words, false starts, and retakes (re-recorded lines) — from a talking-head recording. Use after cut-silences, when asked to cut mistakes, remove stutters / repeats / filler restarts, clean up flubs, or keep the best take. Works review-gated: it proposes every cut with context and a reason for approval, then renders only the approved cuts via ffmpeg. Requires a word-level transcript.

zroeschen/Video-Production-Factory

Agent 1 of the video editing pipeline. Removes silences and dead air from a talking-head recording. Use when asked to cut silences, trim pauses, remove dead air / gaps, or tighten the pacing of a raw video, given a word-level transcript. Produces an edit list (EDL), a re-timed transcript for downstream agents, and optionally the cut video via ffmpeg. Does NOT cut mistakes, repeats, or false starts — that is the cut-mistakes agent.

zroeschen/Video-Production-Factory

Edit a raw talking-head video through transcription, silence trimming, mistake review, visual storytelling, motion graphics, and verified HyperFrames rendering. Use for a complete edit; route a single requested operation directly to its specialist skill.

zroeschen/Video-Production-Factory

HyperFrames CLI tool — hyperframes init, lint, preview, render, transcribe, tts, doctor, browser, info, upgrade, compositions, docs, benchmark. Use when scaffolding a project, linting or validating compositions, previewing in the studio, rendering to video, transcribing audio, generating TTS, or troubleshooting the HyperFrames environment.

Skills relacionados