Communitygithub.com

zroeschen/Video-Production-Factory

Référence d'animations GSAP pour HyperFrames. Couvre gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), paramètre de position, labels, imbrication, lecture) et performances (transforms, will-change, quickTo). À utiliser lors de l'écriture d'animations GSAP dans les compositions HyperFrames.

Qu'est-ce que Video-Production-Factory ?

Ce skill fournit une documentation de référence complète sur GSAP (GreenSock Animation Platform), adaptée spécifiquement à une utilisation dans HyperFrames. Il couvre l'intégralité des méthodes de tweening de base (gsap.to(), gsap.from(), gsap.fromTo()), la gestion avancée des timelines (position parameter, labels, imbrication, contrôles de lecture), les techniques de performance (utilisation des transformations, will-change, gsap.quickTo()) et les bonnes pratiques d'easing et de stagger. Le skill est conçu pour les développeurs qui créent des animations dans des compositions HyperFrames, en mettant l'accent sur l'optimisation des performances (compositor-friendly) et l'écriture de code propre. Il inclut également une référence aux effets prêts à l'emploi pour HyperFrames, accessibles sous demande via le fichier references/effects.md.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

GSAP

Méthodes de Tweening Fondamentales

  • gsap.to(targets, vars) — anime de l'état actuel à vars. Le plus courant.
  • gsap.from(targets, vars) — anime de vars à l'état actuel (entrées).
  • gsap.fromTo(targets, fromVars, toVars) — début et fin explicites.
  • gsap.set(targets, vars) — applique immédiatement (durée 0).

Utilisez toujours les noms de propriétés en camelCase (ex. backgroundColor, rotationX).

Variables Communes

  • duration — secondes (par défaut 0.5).
  • delay — secondes avant le début.
  • ease — "power1.out" (par défaut), "power3.inOut", "back.out(1.7)", "elastic.out(1, 0.3)", "none".
  • stagger — nombre 0.1 ou objet : { amount: 0.3, from: "center" }, { each: 0.1, from: "random" }.
  • overwrite — false (par défaut), true, ou "auto".
  • repeat — nombre ou -1 pour infini. yoyo — alterne la direction avec repeat.
  • onComplete, onStart, onUpdate — callbacks.
  • immediateRender — par défaut true pour from()/fromTo(). Mettre à false sur les tweens ultérieurs ciblant la même propriété+élément pour éviter l'écrasement.

Transforms et CSS

Préférez les alias de transformation de GSAP plutôt que la chaîne transform brute :

Propriété GSAPÉquivalent
x, y, ztranslateX/Y/Z (px)
xPercent, yPercenttranslateX/Y en %
scale, scaleX, scaleYscale
rotationrotate (deg)
rotationX, rotationYrotation 3D
skewX, skewYskew
transformOrigintransform-origin
  • autoAlpha — préférez à opacity. À 0 : définit également visibility: hidden.
  • Variables CSS — "--hue": 180.
  • svgOrigin (SVG uniquement) — origine dans l'espace de coordonnées SVG global. Ne pas combiner avec transformOrigin.
  • Rotation directionnelle — "360_cw", "-170_short", "90_ccw".
  • clearProps — "all" ou séparé par des virgules ; supprime les styles en ligne à la fin.
  • Valeurs relatives — "+=20", "-=10", "*=2".

Valeurs Basées sur des Fonctions

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

Easing

Easing intégrés : power1–power4, back, bounce, circ, elastic, expo, sine. Chacun a .in, .out, .inOut.

Valeurs par Défaut

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

Contrôle des 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() (Responsive + Accessibilité)

Exécute la configuration uniquement lorsqu'une media query correspond ; se rétablit automatiquement lorsqu'elle ne correspond plus.

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,
    });
  },
);

Timelines

Créer une Timeline

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

Paramètre de Position

Le troisième argument contrôle le placement :

  • Absolu : 1 — à 1s
  • Relatif : "+=0.5" — après la fin ; "-=0.2" — avant la fin
  • Label : "intro", "intro+=0.3"
  • Alignement : "<" — même début que le précédent ; ">" — après la fin du précédent ; "<0.2" — 0.2s après le début du précédent
tl.to(".a", { x: 100 }, 0);
tl.to(".b", { y: 50 }, "<"); // même début que .a
tl.to(".c", { opacity: 0 }, "<0.2"); // 0.2s après le début de .b

Labels

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

Options de Timeline

  • paused: true — crée en pause ; appelez .play() pour démarrer.
  • repeat, yoyo — s'applique à toute la timeline.
  • defaults — variables fusionnées dans chaque tween enfant.

Imbriquer des Timelines

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

Contrôle de la Lecture

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


Performances

Privilégier Transform et Opacity

L'animation de x, y, scale, rotation, opacity reste sur le compositeur. Évitez width, height, top, left lorsque les transformations produisent le même effet.

will-change

will-change: transform;

Uniquement sur les éléments qui sont réellement animés.

gsap.quickTo() pour les Mises à Jour Fréquentes

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 > Plusieurs Tweens

Utilisez stagger plutôt que des tweens séparés avec des délais manuels.

Nettoyage

Mettez en pause ou tuez les animations hors écran.


Références (chargées à la demande)

  • references/effects.md — Effets prêts à l'emploi : texte à la machine à écrire, visualiseur audio. Lisez ce fichier lorsque vous avez besoin de motifs d'effets prêts à l'emploi pour HyperFrames.

Bonnes Pratiques

  • Utilisez des noms de propriétés en camelCase ; privilégiez les alias de transformation et autoAlpha.
  • Préférez les timelines au chaînage avec delay ; utilisez le paramètre de position.
  • Ajoutez des labels avec addLabel() pour un séquencement lisible.
  • Passez les valeurs par défaut dans le constructeur de timeline.
  • Stockez la valeur de retour du tween/timeline lors du contrôle de la lecture.

À Ne Pas Faire

  • Animer des propriétés de mise en page (width/height/top/left) lorsque des transformations suffisent.
  • Utiliser à la fois svgOrigin et transformOrigin sur le même élément SVG.
  • Chaîner des animations avec delay lorsqu'une timeline peut les séquencer.
  • Créer des tweens avant que le DOM n'existe.
  • Omettre le nettoyage — tuez toujours les tweens lorsqu'ils ne sont plus nécessaires.

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 associés