Skills gsap
🎬

gsap

Low Risk ⚡ Contains scripts📁 Filesystem access⚙️ External commands

Create professional GSAP animations for video

Writing GSAP animations for video compositions requires precise timing and deterministic execution. This skill provides comprehensive GSAP documentation and drop-in effects for HyperFrames, enabling you to create smooth, professional animations without searching through multiple resources.

Supports: Claude Codex Code(CC)
🥉 73 Bronze
1

Download the skill ZIP

2

Upload in Claude

Go to Settings → Capabilities → Skills → Upload skill

3

Toggle on and start using

Test it

Using "gsap". Animate .card elements with a stagger effect, 0.1s delay between each card, sliding in from the left

Expected outcome:

gsap.from('.card', {
x: -50,
opacity: 0,
stagger: 0.1,
duration: 0.5,
ease: 'power2.out'
});

Using "gsap". Build a timeline where .logo fades in first, then .headline slides up, then .subtitle fades in after headline completes

Expected outcome:

const tl = gsap.timeline();
tl.to('.logo', { opacity: 1, duration: 0.4 })
.to('.headline', { y: 0, opacity: 1, duration: 0.5 }, '<')
.to('.subtitle', { opacity: 1, duration: 0.4 }, '+=0.2');

Using "gsap". Type 'Welcome' at 12 characters per second with cursor '|' that blinks between solid and blinking states

Expected outcome:

const text = 'Welcome';
const cps = 12;
tl.call(() => cursor.classList.replace('cursor-blink', 'cursor-solid'), [], t);
tl.to('#typed', { text: { value: text }, duration: text.length / cps, ease: 'none' }, t);
tl.call(() => cursor.classList.replace('cursor-solid', 'cursor-blink'), [], t + text.length / cps);

Security Audit

Low Risk
v1 • 4/27/2026

Static analysis flagged 171 potential issues, but evaluation determined all critical and high findings are false positives. The scanner misidentified HTML script tags as shell commands, FFT signal processing as weak cryptography, and generic variable names as credential access patterns. The Python audio extraction script uses subprocess to run ffmpeg for legitimate audio processing. No malicious behavior or user input injection vectors detected.

3
Files scanned
699
Lines analyzed
8
findings
1
Total audits

High Risk Issues (2)

Static Analysis False Positive: Weak Cryptographic Algorithm
The static scanner flagged np.fft.rfft() and related operations as 'weak cryptographic algorithm'. This is incorrect - these are standard Fast Fourier Transform operations used for audio signal processing, not cryptography. FFT decomposes audio signals into frequency components for visualization.
Static Analysis False Positive: Credential Access Patterns
The scanner flagged variable names like 'samples', 'SAMPLE_RATE', and file references as 'Windows SAM database' access. This is pattern-matching noise - the skill has no access to Windows credentials. Variables are standard Python naming for audio sample data.
Medium Risk Issues (1)
Static Analysis False Positive: Ruby/Shell Command Execution
The static scanner flagged 139 instances of 'Ruby/shell backtick execution' in references/effects.md and SKILL.md. These are false positives - the scanner detected HTML script tags like '<script src="https://...">' and markdown code snippets as shell commands. These are legitimate CDN URL references and documentation code examples.
Low Risk Issues (2)
Python subprocess.run for FFmpeg
The extract-audio-data.py script uses subprocess.run() to invoke ffmpeg for audio decoding. This is a standard audio processing pattern with no injection risk - the command arguments are hardcoded except for the input path from command-line arguments.
XMLHttpRequest Usage for Audio Data Loading
The audio visualizer effect uses synchronous XMLHttpRequest to load audio data files. This is documented as intentional for HyperFrames deterministic timeline construction. No user-controlled input or security vulnerability.

Risk Factors

⚡ Contains scripts (1)
📁 Filesystem access (1)
⚙️ External commands (1)
Audited by: claude

Quality Score

64
Architecture
100
Maintainability
87
Content
50
Community
61
Security
91
Spec Compliance

What You Can Build

Add entrance animations to video overlays

Create fade-in, slide, or scale entrance animations for text overlays and UI elements in video compositions.

Build audio-reactive visualizers

Create canvas-based audio visualizers that respond to music or speech in video backgrounds.

Sequence complex multi-step animations

Coordinate multiple animations with precise timing using GSAP timelines, labels, and position parameters.

Try These Prompts

Basic tween animation
Use GSAP to animate #hero element fading in and sliding up 100px. Duration 0.6s with power2.out easing.
Timeline sequence
Create a GSAP timeline that: 1) fades in .title, 2) fades in .subtitle 0.2s after, 3) scales in .button at 0.5s. Use position parameters, not delay.
Typewriter effect
Create a typewriter animation for #message that types at 10 characters per second with a blinking cursor. Cursor should blink when idle.
Audio visualizer frame
Render audio frame [FRAME] with bars using AUDIO_DATA.frames[0].bands array. Each band maps to a canvas rectangle. Bass drives scale, treble drives opacity.

Best Practices

  • Use transform properties (x, y, scale, rotation) instead of layout properties for GPU acceleration
  • Pass defaults to timeline constructor rather than chaining with delay for readability
  • Store tween and timeline return values when you need to control playback programmatically

Avoid

  • Do not animate width, height, top, or left when transforms can achieve the same effect
  • Do not chain tweens with delay when a timeline with position parameters sequences them better
  • Do not create tweens targeting elements that do not yet exist in the DOM

Frequently Asked Questions

What is GSAP?
GSAP (GreenSock Animation Platform) is a JavaScript library for high-performance animations. It provides precise control over timing, easing, and sequencing that CSS animations cannot match.
How do I create a timeline?
Use gsap.timeline() to create a timeline, then chain tweens with .to() or .from(). Tweens are added sequentially by default, or use position parameters like '<' or '+=0.5' for overlap.
What is the position parameter?
The third argument in a tween controls its placement in the timeline. Use numbers for absolute time, '+=0.5' for relative to end, '<' for same start as previous, or a label name.
How do typewriter effects work?
GSAP TextPlugin animates text content character by character. Set the duration based on text length divided by characters per second. Manage cursor state separately with class changes.
Why use synchronous XHR for audio data?
HyperFrames reads window.__timelines synchronously after page load. Async data loading means the timeline is not ready when capture starts. This is intentional for deterministic video rendering.
What audio formats does extract-audio-data.py support?
The script uses ffmpeg for decoding, so it supports any audio format ffmpeg handles: MP3, WAV, AAC, OGG, and video files containing audio (MP4, WebM, MOV).

Developer Details

File structure