
Gsap Fundamentals
- 267 installs
- 8 repo stars
- Updated August 4, 2026
- bbeierle12/skill-mcp-claude
gsap-fundamentals is a frontend agent skill that teaches core GreenSock Animation Platform tween, timeline, easing, and stagger patterns for developers who need smooth web UI motion without reinventing animation architec
About
gsap-fundamentals is a frontend development skill in bbeierle12/skill-mcp-claude that encodes core GreenSock Animation Platform patterns for browser UI motion. The SKILL.md covers four tween primitives—gsap.to(), gsap.from(), gsap.fromTo(), and gsap.set()—plus timing controls, built-in power/back/elastic eases, stagger blocks, SVG attr animation, callback hooks, and transform-first performance guidance that avoids layout-triggering properties. Agents activate it when implementing entrance animations, dashboard transitions, countdown digit flips, or learning GSAP before sibling skills like gsap-scrolltrigger and gsap-react in the same eight-skill animation collection. Install with npx skills add bbeierle12/skill-mcp-claude --skill gsap-fundamentals. Developers reach for gsap-fundamentals when a landing page or SaaS dashboard needs timeline choreography, staggered reveals, or GPU-friendly motion without reading scattered GSAP docs. Examples include fade/slide/scale patterns, infinite repeat loops, tween instance control, and temporal-collapse countdown effects using textShadow and rotationX flips.
- Core tween and timeline APIs
- ScrollTrigger and stagger patterns
- DOM-safe performance practices
- Reusable motion recipes for React
Gsap Fundamentals by the numbers
- 267 all-time installs (skills.sh)
- Ranked #780 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/bbeierle12/skill-mcp-claude --skill gsap-fundamentalsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 267 |
|---|---|
| repo stars | ★ 8 |
| Last updated | August 4, 2026 |
| Repository | bbeierle12/skill-mcp-claude ↗ |
How do you implement GSAP tweens and timelines?
Add timeline tweens, ScrollTrigger reveals, and staggered UI motion to landing pages and dashboards without reinventing animation architecture.
Who is it for?
Frontend developers adding polished motion to marketing sites, dashboards, or countdown UIs who already use JavaScript and want GSAP fundamentals before ScrollTrigger or React hooks.
Skip if: Teams needing scroll-driven reveals, React-specific GSAP hooks, or WebGL shader effects—use gsap-scrolltrigger, gsap-react, or shader skills in the same repo instead.
When should I use this skill?
The user asks for GSAP animations, timeline tweens, staggered UI motion, easing setup, or basic web transitions on landing pages or dashboards.
What you get
GSAP tween snippets, timeline sequences, stagger configs, easing selections, and performance-safe transform animations in frontend code.
- GSAP tween code snippets
- timeline sequences
- stagger animation configs
By the numbers
- Documents 4 core GSAP tween methods: to(), from(), fromTo(), and set()
- Part of an 8-skill GSAP animation collection in bbeierle12/skill-mcp-claude
Files
GSAP Fundamentals
Core animation concepts with GreenSock Animation Platform.
Quick Start
npm install gsapimport gsap from 'gsap';
// Basic tween
gsap.to('.box', {
x: 200,
duration: 1,
ease: 'power2.out'
});Core Concepts
Tween Types
| Method | Description | Use Case |
|---|---|---|
gsap.to() | Animate from current → target | Most common |
gsap.from() | Animate from target → current | Entrance animations |
gsap.fromTo() | Animate from defined start → end | Full control |
gsap.set() | Instantly set properties | Initial state |
Basic Tweens
// To: current state → target
gsap.to('.element', {
x: 100,
y: 50,
rotation: 360,
duration: 1
});
// From: target → current state
gsap.from('.element', {
opacity: 0,
y: -50,
duration: 0.5
});
// FromTo: explicit start and end
gsap.fromTo('.element',
{ opacity: 0, scale: 0.5 }, // from
{ opacity: 1, scale: 1, duration: 1 } // to
);
// Set: instant property change
gsap.set('.element', { visibility: 'visible', opacity: 0 });Animation Properties
Transform Properties
gsap.to('.element', {
// Position
x: 100, // translateX in pixels
y: 50, // translateY in pixels
xPercent: 50, // translateX as percentage of element width
yPercent: -100, // translateY as percentage of element height
// Rotation
rotation: 360, // 2D rotation in degrees
rotationX: 45, // 3D rotation around X axis
rotationY: 45, // 3D rotation around Y axis
// Scale
scale: 1.5, // Uniform scale
scaleX: 2, // Horizontal scale
scaleY: 0.5, // Vertical scale
// Skew
skewX: 20, // Horizontal skew in degrees
skewY: 10, // Vertical skew in degrees
// Transform origin
transformOrigin: 'center center',
transformPerspective: 500,
duration: 1
});CSS Properties
gsap.to('.element', {
// Colors
color: '#00F5FF',
backgroundColor: '#FF00FF',
borderColor: 'rgba(255, 215, 0, 0.5)',
// Dimensions
width: 200,
height: '50%',
padding: 20,
margin: '10px 20px',
// Display
opacity: 0.8,
visibility: 'visible',
display: 'block',
// Border
borderRadius: '50%',
borderWidth: 2,
// Shadow
boxShadow: '0 0 20px rgba(0, 245, 255, 0.5)',
duration: 1
});SVG Properties
gsap.to('svg path', {
// Path morphing (requires MorphSVGPlugin)
morphSVG: '#targetPath',
// Draw SVG
strokeDashoffset: 0,
drawSVG: '100%',
// SVG attributes
attr: {
cx: 100,
cy: 100,
r: 50,
fill: '#00F5FF'
},
duration: 2
});Timing Controls
Duration and Delay
gsap.to('.element', {
x: 100,
duration: 1, // Animation length in seconds
delay: 0.5, // Wait before starting
repeat: 3, // Repeat 3 times (4 total plays)
repeatDelay: 0.2, // Pause between repeats
yoyo: true // Reverse on alternate repeats
});Infinite Repeat
gsap.to('.spinner', {
rotation: 360,
duration: 1,
repeat: -1, // Infinite repeat
ease: 'none' // Linear for constant speed
});Stagger
// Animate multiple elements with offset timing
gsap.to('.card', {
y: 0,
opacity: 1,
duration: 0.5,
stagger: 0.1 // 0.1s delay between each element
});
// Advanced stagger
gsap.to('.grid-item', {
scale: 1,
duration: 0.3,
stagger: {
each: 0.05, // Time between each
from: 'center', // Start from center, edges, random, etc.
grid: [4, 4], // Grid dimensions for 2D stagger
axis: 'x' // Stagger along axis
}
});Easing Functions
Built-in Eases
// Power eases (1-4, higher = more pronounced)
'power1.out' // Subtle deceleration
'power2.out' // Smooth deceleration (default feel)
'power3.out' // Strong deceleration
'power4.out' // Very strong deceleration
// Directional suffixes
'power2.in' // Accelerate
'power2.out' // Decelerate
'power2.inOut' // Accelerate then decelerate
// Special eases
'back.out(1.7)' // Overshoot then settle
'elastic.out' // Springy bounce
'bounce.out' // Ball-drop bounce
'circ.out' // Circular motion
'expo.out' // Exponential
'sine.out' // Gentle sine waveEase Comparison
// UI Elements - snappy, responsive
gsap.to('.button', { scale: 1.1, ease: 'power2.out', duration: 0.2 });
// Entrances - smooth deceleration
gsap.from('.modal', { y: 100, opacity: 0, ease: 'power3.out', duration: 0.5 });
// Playful - bounce or elastic
gsap.to('.notification', { y: 0, ease: 'back.out(1.7)', duration: 0.6 });
// Mechanical - linear
gsap.to('.progress', { width: '100%', ease: 'none', duration: 2 });Custom Easing
import { CustomEase } from 'gsap/CustomEase';
gsap.registerPlugin(CustomEase);
// Create custom ease from SVG path
CustomEase.create('custom', 'M0,0 C0.25,0.1 0.25,1 1,1');
gsap.to('.element', {
x: 200,
ease: 'custom',
duration: 1
});Controlling Tweens
Tween Instance Methods
const tween = gsap.to('.element', {
x: 200,
duration: 2,
paused: true // Start paused
});
// Playback control
tween.play();
tween.pause();
tween.resume();
tween.reverse();
tween.restart();
// Seeking
tween.seek(0.5); // Jump to 0.5 seconds
tween.progress(0.5); // Jump to 50%
tween.time(1); // Jump to 1 second
// Speed control
tween.timeScale(2); // Double speed
tween.timeScale(0.5); // Half speed
// State
tween.isActive(); // Currently animating?
tween.progress(); // Get current progress (0-1)
// Cleanup
tween.kill(); // Stop and removeCallbacks
gsap.to('.element', {
x: 200,
duration: 1,
// Lifecycle callbacks
onStart: () => console.log('Started'),
onUpdate: () => console.log('Frame update'),
onComplete: () => console.log('Finished'),
onRepeat: () => console.log('Repeated'),
onReverseComplete: () => console.log('Reverse finished'),
// With parameters
onComplete: (param) => console.log('Done:', param),
onCompleteParams: ['myValue'],
// Access tween in callback
onUpdate: function() {
console.log('Progress:', this.progress());
}
});Targeting Elements
Selector Strings
// CSS selectors
gsap.to('.class', { x: 100 });
gsap.to('#id', { x: 100 });
gsap.to('div', { x: 100 });
gsap.to('[data-animate]', { x: 100 });
gsap.to('.parent .child', { x: 100 });DOM References
// Direct element reference
const element = document.querySelector('.box');
gsap.to(element, { x: 100 });
// NodeList / Array
const elements = document.querySelectorAll('.item');
gsap.to(elements, { x: 100, stagger: 0.1 });
// Array of mixed targets
gsap.to(['.box', '#circle', element], { opacity: 0.5 });Object Properties
// Animate any object property
const obj = { value: 0, x: 100, y: 200 };
gsap.to(obj, {
value: 100,
x: 500,
duration: 2,
onUpdate: () => {
console.log(obj.value); // Interpolated value
// Update Three.js, Canvas, etc.
}
});Common Patterns
Fade In/Out
// Fade in
gsap.from('.element', {
opacity: 0,
duration: 0.5
});
// Fade out and remove
gsap.to('.element', {
opacity: 0,
duration: 0.5,
onComplete: () => element.remove()
});Slide Animations
// Slide in from left
gsap.from('.panel', {
x: -100,
opacity: 0,
duration: 0.5,
ease: 'power2.out'
});
// Slide in from bottom
gsap.from('.notification', {
y: 50,
opacity: 0,
duration: 0.4,
ease: 'power3.out'
});Scale Animations
// Pop in
gsap.from('.modal', {
scale: 0.8,
opacity: 0,
duration: 0.3,
ease: 'back.out(1.7)'
});
// Pulse
gsap.to('.heart', {
scale: 1.2,
duration: 0.3,
repeat: -1,
yoyo: true,
ease: 'power1.inOut'
});Temporal Collapse Patterns
Countdown-specific animations:
// Digit flip animation
function flipDigit(element, newValue) {
gsap.to(element, {
rotationX: -90,
opacity: 0,
duration: 0.3,
ease: 'power2.in',
onComplete: () => {
element.textContent = newValue;
gsap.fromTo(element,
{ rotationX: 90, opacity: 0 },
{ rotationX: 0, opacity: 1, duration: 0.3, ease: 'power2.out' }
);
}
});
}
// Time dilation pulse (cyan glow)
gsap.to('.countdown-digit', {
textShadow: '0 0 30px #00F5FF, 0 0 60px #00F5FF',
duration: 0.5,
repeat: -1,
yoyo: true,
ease: 'sine.inOut'
});
// Final countdown intensity ramp
function intensifyCountdown(secondsRemaining) {
const intensity = 1 - (secondsRemaining / 60);
gsap.to('.glow-element', {
filter: `brightness(${1 + intensity})`,
duration: 0.5
});
}Performance Tips
// Use transforms over layout properties
// GOOD
gsap.to('.element', { x: 100, y: 50, scale: 1.2 });
// AVOID (triggers layout)
gsap.to('.element', { left: 100, top: 50, width: 200 });
// Force GPU acceleration
gsap.set('.element', { force3D: true });
// Kill tweens when component unmounts
const tween = gsap.to('.element', { x: 100 });
// Later...
tween.kill();
// Or kill all tweens on a target
gsap.killTweensOf('.element');Reference
- See
gsap-sequencingfor timelines and complex sequences - See
gsap-reactfor React integration patterns - See
gsap-scrolltriggerfor scroll-based animations
{
"name": "gsap-fundamentals",
"description": "Core GSAP animation concepts including tweens, timelines, easing functions, and animation properties. Use when implementing basic animations, transitions, or learning GSAP foundations. Essential starting point for any GSAP-based animation work.",
"tags": [
"animation",
"javascript",
"code-generation"
],
"sub_skills": [],
"source": "claude-user",
"type": "template",
"depends_on": [],
"enhances": [
"gsap-react",
"gsap-sequencing",
"gsap-scrolltrigger"
],
"last_reviewed_at": "2026-06-15",
"review_score": 60,
"relevance_tier": "B"
}
Related skills
How it compares
Pick gsap-fundamentals for core tween and timeline basics before scroll-driven or React-specific GSAP skills in the same repository.
FAQ
What GSAP methods does gsap-fundamentals cover?
gsap-fundamentals documents gsap.to(), gsap.from(), gsap.fromTo(), and gsap.set() as the four core tween primitives, plus timing controls, stagger, repeat, yoyo, callbacks, and built-in easing presets like power2.out and back.out.
When should I use gsap-fundamentals vs gsap-scrolltrigger?
gsap-fundamentals covers core tweens, timelines, easing, and stagger for any DOM animation. gsap-scrolltrigger in the same bbeierle12 repo adds scroll-driven reveals; start with gsap-fundamentals before scroll-based landing page effects.
How do I install gsap-fundamentals for Claude Code?
Run npx skills add bbeierle12/skill-mcp-claude --skill gsap-fundamentals. The skill loads SKILL.md guidance agents apply when writing GSAP animation code in JavaScript frontends.