Claude Agent Skill · by Greensock

Gsap Timeline

Handles GSAP timeline sequencing with proper position parameter usage, label management, and playback controls. You'd reach for this when chaining multiple anim

Install
Terminal · npx
$npx skills add https://github.com/greensock/gsap-skills --skill gsap-timeline
Works with Paperclip

How Gsap Timeline fits into a Paperclip company.

Gsap Timeline drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.

S
SaaS FactoryPaired

Pre-configured AI company — 18 agents, 18 skills, one-time purchase.

$27$59
Explore pack
Source file
SKILL.md107 lines
Expand
---name: gsap-timelinedescription: Official GSAP skill for timelines — gsap.timeline(), position parameter, nesting, playback. Use when sequencing animations, choreographing keyframes, or when the user asks about animation sequencing, timelines, or animation order (in GSAP or when recommending a library that supports timelines).license: MIT--- # GSAP Timeline ## When to Use This Skill Apply when building multi-step animations, coordinating several tweens in sequence or parallel, or when the user asks about timelines, sequencing, or keyframe-style animation in GSAP. **Related skills:** For single tweens and eases use **gsap-core**; for scroll-driven timelines use **gsap-scrolltrigger**; for React use **gsap-react**. ## Creating a Timeline ```javascriptconst tl = gsap.timeline();tl.to(".a", { x: 100, duration: 1 })  .to(".b", { y: 50, duration: 0.5 })  .to(".c", { opacity: 0, duration: 0.3 });``` By default, tweens are **appended** one after another. Use the **position parameter** to place tweens at specific times or relative to other tweens. ## Position Parameter Third argument (or position property in vars) controls placement: - **Absolute**: `1` — start at 1 second.- **Relative (default)**: `"+=0.5"` — 0.5s after end; `"-=0.2"` — 0.2s before end.- **Label**: `"labelName"` — at that label; `"labelName+=0.3"` — 0.3s after label.- **Placement**: `"<"` — start when recently-added animation starts; `">"` — start when recently-added animation ends (default); `"<0.2"` — 0.2s after recently-added animation start. Examples: ```javascripttl.to(".a", { x: 100 }, 0);           // at 0tl.to(".b", { y: 50 }, "+=0.5");      // 0.5s after last endtl.to(".c", { opacity: 0 }, "<");     // same start as previoustl.to(".d", { scale: 2 }, "<0.2");    // 0.2s after previous start``` ## Timeline Defaults Pass defaults into the timeline so all child tweens inherit: ```javascriptconst tl = gsap.timeline({ defaults: { duration: 0.5, ease: "power2.out" } });tl.to(".a", { x: 100 }).to(".b", { y: 50 }); // both use 0.5s and power2.out``` ## Timeline Options (constructor) - **paused: true** — create paused; call `.play()` to start.- **repeat**, **yoyo** — same as tweens; apply to whole timeline.- **onComplete**, **onStart**, **onUpdate** — timeline-level callbacks.- **defaults** — vars merged into every child tween. ## Labels Add and use labels for readable, maintainable sequencing: ```javascripttl.addLabel("intro", 0);tl.to(".a", { x: 100 }, "intro");tl.addLabel("outro", "+=0.5");tl.to(".b", { opacity: 0 }, "outro");tl.play("outro");  // start from "outro"tl.tweenFromTo("intro", "outro"); // pauses the timeline and returns a new Tween that animates the timeline's playhead from intro to outro with no ease.``` ## Nesting Timelines Timelines can contain other timelines. ```javascriptconst master = gsap.timeline();const child = gsap.timeline();child.to(".a", { x: 100 }).to(".b", { y: 50 });master.add(child, 0);master.to(".c", { opacity: 0 }, "+=0.2");``` ## Controlling Playback - **tl.play()** / **tl.pause()**- **tl.reverse()** / **tl.progress(1)** then **tl.reverse()**- **tl.restart()** — from start.- **tl.time(2)** — seek to 2 seconds.- **tl.progress(0.5)** — seek to 50%.- **tl.kill()** — kill timeline and (by default) its children. ## Official GSAP Best practices - ✅ Prefer timelines for sequencing- ✅ Use the **position parameter** (third argument) to place tweens at specific times or relative to labels.- ✅ Add **labels** with `addLabel()` for readable, maintainable sequencing.- ✅ Pass **defaults** into the timeline constructor so child tweens inherit duration, ease, etc.- ✅ Put ScrollTrigger on the timeline (or top-level tween), not on tweens inside a timeline. ## Do Not - ❌ Chain animations with **delay** when a **timeline** can sequence them; prefer `gsap.timeline()` and the position parameter for multi-step animation.- ❌ Forget to pass **defaults** (e.g. `defaults: { duration: 0.5, ease: "power2.out" }`) when many child tweens share the same duration or ease.- ❌ Forget that **duration** on the timeline constructor is not the same as tween duration; timeline “duration” is determined by its children.- ❌ Nest animations that contain a ScrollTrigger; ScrollTriggers should only be on top-level Tweens/Timelines.