gsap-timeline — Claude Code skill: what it does, how to install
This skill helps an agent build GSAP timelines, control timing, and manage playback. Use it for multi-step or parallel animation scenes.
npx skills add greensock/gsap-skills --skill gsap-timeline -a claude-codeWhat gsap-timeline does
gsap-timeline teaches the agent to use gsap.timeline() for sequential and parallel animation work. It covers the position parameter for absolute times, relative offsets, labels, and placement beside the previously added animation. The source also includes defaults, addLabel(), and nested timeline examples.
It documents playback controls such as .play(), .pause(), .reverse(), .restart(), .time(), .progress(), and .kill(). There is a specific rule for ScrollTrigger: attach it to a top-level tween or timeline rather than to tweens nested inside a timeline.
Install it when an agent regularly creates GSAP scenes with several steps. For a single tween, use gsap-core; React work and scroll-driven timelines have related skills.
What it helps with
- build a multi-step GSAP animation
- sync tweens with the position parameter
- label sections of a timeline
- nest a child timeline inside a master timeline
- control animation pause, seeking, and reversal
Example prompts for the agent
- Build a GSAP animation for `.hero`: show `.title` first, then `.subtitle`, and start the final tween with `"
- Create a timeline with `defaults: { duration: 0.5, ease: "power2.out" }` and add `intro` and `outro` labels.
- Attach `ScrollTrigger` to the top-level timeline and explain why it should not be placed on nested tweens.
How to install gsap-timeline
1Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-timeline -a claude-code2Manually: put the files in place
~/.claude/skills/gsap-timeline/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/gsap-timeline/
1Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-timeline -a codex2Manually: put the files in place
.agents/skills/gsap-timeline/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-timeline -a cursor2Manually: put the files in place
.cursor/skills/gsap-timeline/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install greensock/gsap-skills gsap-timeline2Manually: put the files in place
.github/skills/gsap-timeline/SKILL.md1Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-timeline -a gemini-cli2Platform CLI
gemini skills install https://github.com/greensock/gsap-skills --path skills/gsap-timelineManually: put the files in place
.devin/skills/gsap-timeline/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-timeline -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set8
The whole set →Similar
Questions about gsap-timeline
How do I install gsap-timeline in Claude Code?
Run npx skills add greensock/gsap-skills --skill gsap-timeline -a claude-code. The skill file will be placed at ~/.claude/skills/gsap-timeline/SKILL.md.
What does gsap-timeline do?
It helps an agent build GSAP timelines, set tween order and overlap, use labels and shared defaults, and control playback.
Can ScrollTrigger be used inside a nested timeline?
No. Place ScrollTrigger on a top-level tween or timeline, rather than on a tween nested inside a timeline.
Source text
SKILL.md · MIT
---
name: gsap-timeline
description: 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
```javascript
const 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:
```javascript
tl.to(".a", { x: 100 }, 0); // at 0
tl.to(".b", { y: 50 }, "+=0.5"); // 0.5s after last end
tl.to(".c", { opacity: 0 }, "<"); // same start as previous
tl.to(".d", { scale: 2 }, "<0.2"); // 0.2s after previous start
```
## Timeline Defaults
Pass defaults into the timeline so all child tweens inherit:
```javascript
const 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:
```javascript
tl.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.
```javascript
const 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.
© greensock · MIT · greensock/gsap-skills