GSAP Core Animation
greensock/gsap-skills
Covers the GSAP core API for tweens, easing, staggers, defaults and matchMedia, and when to choose GSAP over CSS animations or other JavaScript animation libraries.
Guides use of Anime.js for timeline sequences, stagger effects, SVG morphing and keyframe animation on DOM elements, CSS, SVG and JavaScript objects.
$ npx skills add freshtechbro/claudedesignskills --skill animejs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install freshtechbro/claudedesignskills animejs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/freshtechbro/claudedesignskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/animejs .claude/skills/animejs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "animejs" agent skill from https://github.com/freshtechbro/claudedesignskills/tree/main/.claude/skills/animejs into .claude/skills/animejs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "animejs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/freshtechbro/claudedesignskills/tree/main/.claude/skills/animejsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add freshtechbro/claudedesignskills --skill animejs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install freshtechbro/claudedesignskills animejs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/freshtechbro/claudedesignskills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/animejs .agents/skills/animejs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "animejs" agent skill from https://github.com/freshtechbro/claudedesignskills/tree/main/.claude/skills/animejs into .agents/skills/animejs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "animejs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add freshtechbro/claudedesignskills --skill animejs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install freshtechbro/claudedesignskills animejs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/freshtechbro/claudedesignskills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/animejs .cursor/skills/animejs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "animejs" agent skill from https://github.com/freshtechbro/claudedesignskills/tree/main/.claude/skills/animejs into .cursor/skills/animejs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "animejs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/freshtechbro/claudedesignskills.git --path .claude/skills/animejs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add freshtechbro/claudedesignskills --skill animejs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install freshtechbro/claudedesignskills animejs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/freshtechbro/claudedesignskills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/animejs .gemini/skills/animejs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "animejs" agent skill from https://github.com/freshtechbro/claudedesignskills/tree/main/.claude/skills/animejs into .gemini/skills/animejs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "animejs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install freshtechbro/claudedesignskills animejsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add freshtechbro/claudedesignskills --skill animejs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/freshtechbro/claudedesignskills.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/animejs .github/skills/animejs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "animejs" agent skill from https://github.com/freshtechbro/claudedesignskills/tree/main/.claude/skills/animejs into .github/skills/animejs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "animejs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add freshtechbro/claudedesignskills --skill animejs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install freshtechbro/claudedesignskills animejs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/freshtechbro/claudedesignskills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/animejs .opencode/skills/animejs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "animejs" agent skill from https://github.com/freshtechbro/claudedesignskills/tree/main/.claude/skills/animejs into .opencode/skills/animejs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "animejs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
animejsGuides use of Anime.js for timeline sequences, stagger effects, SVG morphing and keyframe animation on DOM elements, CSS, SVG and JavaScript objects.
Anime.js is a JavaScript animation engine that works with DOM elements, CSS properties, SVG attributes and plain objects, and it is framework-agnostic, usable with React, Vue or vanilla JS. The skill explains the `anime()` call, the ways to specify targets, animatable properties, and timelines with relative positioning for choreographed sequences.
Common patterns include sequential staggered reveals, staggering from the center of a grid, SVG line drawing and SVG morphing, plus keyframes with percentage timing and spring, steps and cubic-bezier easing. Two scripts, `animation_generator.py` and `timeline_builder.py`, and reference files on the API, stagger and timelines come with it. The skill positions Anime.js as an alternative to GSAP for SVG-heavy work and for projects that do not use React. The excerpt is cut off in the common patterns.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1da73fe. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Python), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Anime.js Animation Guide loads about 2.7k tokens when it runs, and up to ~10k if it reads all its reference files. Until then it costs about 112 tokens; SKILL.md has 372 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from freshtechbro/claudedesignskills at commit 1da73fe, republished under its MIT licence (© freshtechbro). 372 words, ~2,686 tokens.
.claude/skills/animejs/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Lightweight JavaScript animation library with powerful timeline and stagger capabilities for web animations.
Anime.js (pronounced "Anime JS") is a versatile animation engine that works with DOM elements, CSS properties, SVG attributes, and JavaScript objects. Unlike React-specific libraries, Anime.js works with vanilla JavaScript and any framework.
When to use this skill:
Core features:
The anime() function creates animations:
import anime from 'animejs'
anime({
targets: '.element',
translateX: 250,
rotate: '1turn',
duration: 800,
easing: 'easeInOutQuad'
})Multiple ways to specify animation targets:
// CSS selector
anime({ targets: '.box' })
// DOM elements
anime({ targets: document.querySelectorAll('.box') })
// Array of elements
anime({ targets: [el1, el2, el3] })
// JavaScript object
const obj = { x: 0 }
anime({ targets: obj, x: 100 })CSS Properties:
anime({
targets: '.element',
translateX: 250,
scale: 2,
opacity: 0.5,
backgroundColor: '#FFF'
})CSS Transforms (Individual):
anime({
targets: '.element',
translateX: 250, // Individual transform
rotate: '1turn', // Not 'transform: rotate()'
scale: 2
})SVG Attributes:
anime({
targets: 'path',
d: 'M10 80 Q 77.5 10, 145 80', // Path morphing
fill: '#FF0000',
strokeDashoffset: [anime.setDashoffset, 0] // Line drawing
})JavaScript Objects:
const obj = { value: 0 }
anime({
targets: obj,
value: 100,
round: 1,
update: () => console.log(obj.value)
})Create complex sequences with precise control:
const timeline = anime.timeline({
duration: 750,
easing: 'easeOutExpo'
})
timeline
.add({
targets: '.box1',
translateX: 250
})
.add({
targets: '.box2',
translateX: 250
}, '-=500') // Start 500ms before previous animation ends
.add({
targets: '.box3',
translateX: 250
}, '+=200') // Start 200ms after previous animation endsanime({
targets: '.stagger-element',
translateY: [100, 0],
opacity: [0, 1],
delay: anime.stagger(100), // Increase delay by 100ms
easing: 'easeOutQuad',
duration: 600
})anime({
targets: '.grid-item',
scale: [0, 1],
delay: anime.stagger(50, {
grid: [14, 5],
from: 'center', // Also: 'first', 'last', index, [x, y]
axis: 'x' // Also: 'y', null
}),
easing: 'easeOutQuad'
})anime({
targets: 'path',
strokeDashoffset: [anime.setDashoffset, 0],
easing: 'easeInOutQuad',
duration: 2000,
delay: (el, i) => i * 250
})anime({
targets: '#morphing-path',
d: [
{ value: 'M10 80 Q 77.5 10, 145 80' }, // Start shape
{ value: 'M10 80 Q 77.5 150, 145 80' } // End shape
],
duration: 2000,
easing: 'easeInOutQuad',
loop: true,
direction: 'alternate'
})const tl = anime.timeline({
easing: 'easeOutExpo',
duration: 750
})
tl.add({
targets: '.title',
translateY: [-50, 0],
opacity: [0, 1]
})
.add({
targets: '.subtitle',
translateY: [-30, 0],
opacity: [0, 1]
}, '-=500')
.add({
targets: '.button',
scale: [0, 1],
opacity: [0, 1]
}, '-=300')anime({
targets: '.element',
keyframes: [
{ translateX: 100 },
{ translateY: 100 },
{ translateX: 0 },
{ translateY: 0 }
],
duration: 4000,
easing: 'easeInOutQuad',
loop: true
})const animation = anime({
targets: '.scroll-element',
translateY: [100, 0],
opacity: [0, 1],
easing: 'easeOutQuad',
autoplay: false
})
window.addEventListener('scroll', () => {
const scrollPercent = window.scrollY / (document.body.scrollHeight - window.innerHeight)
animation.seek(animation.duration * scrollPercent)
})import { useEffect, useRef } from 'react'
import anime from 'animejs'
function AnimatedComponent() {
const ref = useRef(null)
useEffect(() => {
const animation = anime({
targets: ref.current,
translateX: 250,
duration: 800,
easing: 'easeInOutQuad'
})
return () => animation.pause()
}, [])
return <div ref={ref}>Animated</div>
}export default {
mounted() {
anime({
targets: this.$el,
translateX: 250,
duration: 800
})
}
}const path = anime.path('#motion-path')
anime({
targets: '.element',
translateX: path('x'),
translateY: path('y'),
rotate: path('angle'),
easing: 'linear',
duration: 2000,
loop: true
})anime({
targets: '.element',
translateX: 250,
easing: 'spring(1, 80, 10, 0)', // mass, stiffness, damping, velocity
duration: 2000
})anime({
targets: '.element',
translateX: 250,
easing: 'steps(5)',
duration: 1000
})anime({
targets: '.element',
translateX: 250,
easing: 'cubicBezier(.5, .05, .1, .3)',
duration: 1000
})anime({
targets: '.element',
translateX: 250,
direction: 'alternate', // 'normal', 'reverse', 'alternate'
loop: true, // or number of iterations
easing: 'easeInOutQuad'
})const animation = anime({
targets: '.element',
translateX: 250,
autoplay: false
})
animation.play()
animation.pause()
animation.restart()
animation.reverse()
animation.seek(500) // Seek to 500ms// ✅ Good: GPU-accelerated
anime({
targets: '.element',
translateX: 250,
opacity: 0.5
})
// ❌ Avoid: Triggers layout
anime({
targets: '.element',
left: '250px',
width: '500px'
})// ✅ Single animation for multiple targets
anime({
targets: '.multiple-elements',
translateX: 250
})
// ❌ Avoid: Multiple separate animations
elements.forEach(el => {
anime({ targets: el, translateX: 250 })
})will-change for Complex Animations.animated-element {
will-change: transform, opacity;
}const animation = anime({
targets: '.element',
translateX: 250,
autoplay: false // Control manually
})// ❌ Wrong: No unit
anime({ targets: '.element', width: 200 })
// ✅ Correct: Include unit
anime({ targets: '.element', width: '200px' })// ❌ Wrong: Can't animate transform string
anime({ targets: '.element', transform: 'translateX(250px)' })
// ✅ Correct: Individual transform properties
anime({ targets: '.element', translateX: 250 })// ❌ Wrong: Animation continues after unmount
useEffect(() => {
anime({ targets: ref.current, translateX: 250 })
}, [])
// ✅ Correct: Pause on cleanup
useEffect(() => {
const anim = anime({ targets: ref.current, translateX: 250 })
return () => anim.pause()
}, [])// ❌ Avoid: Animating 1000+ elements
anime({ targets: '.many-items', translateX: 250 }) // 1000+ elements
// ✅ Better: Use CSS animations for large sets
// Or reduce element count with virtualization// ❌ Wrong: Missing offset operator
.add({ targets: '.el2' }, '500') // Treated as absolute time
// ✅ Correct: Use relative operators
.add({ targets: '.el2' }, '-=500') // Relative to previous
.add({ targets: '.el3' }, '+=200') // Relative to previous// ❌ Avoid: Infinite loops drain battery
anime({
targets: '.element',
rotate: '1turn',
loop: true,
duration: 1000
})
// ✅ Better: Use CSS animations for infinite loops
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}animation_generator.py - Generate Anime.js animation boilerplate (8 types)timeline_builder.py - Build complex timeline sequencesapi_reference.md - Complete Anime.js API documentationstagger_guide.md - Stagger utilities and patternstimeline_guide.md - Timeline sequencing deep divestarter_animejs/ - Vanilla JS + Vite template with examplesexamples/ - Real-world patterns (SVG morphing, stagger grids, timelines)Anime.js vs GSAP: Use Anime.js for SVG-heavy animations, simpler projects, or when bundle size matters. Use GSAP for complex scroll-driven experiences, advanced timelines, and professional-grade control.
Anime.js vs Framer Motion: Use Anime.js for framework-agnostic projects or when working outside React. Use Framer Motion for React-specific declarative animations with gesture integration.
© freshtechbro, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references, assets) in .claude/skills/animejs of freshtechbro/claudedesignskills.
Open the folder on GitHubat commit 1da73fe
Anime.js Animation Guide next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Anime.js Animation Guide this skillfreshtechbro/claudedesignskills | 986 | — | ~2.7k | Automated safety check: Pass | MIT | |
| GSAP Core Animationgreensock/gsap-skills | 16k | 4 repos | ~3.7k | Automated safety check: Pass | MIT | |
| Motionsoftmaple/softmaple | 159 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Motiscope RecreateKumarSashank/motiscope | 122 | — | ~2k | Automated safety check: Pass | MIT | |
| RecreateKumarSashank/motiscope | 122 | — | ~1.8k | Automated safety check: Notes | MIT | |
| Gsap Framer Scroll Animationgithub/awesome-copilot | 40k | 1 repos | ~1.6k | Automated safety check: Pass | MIT |
greensock/gsap-skills
Covers the GSAP core API for tweens, easing, staggers, defaults and matchMedia, and when to choose GSAP over CSS animations or other JavaScript animation libraries.
softmaple/softmaple
Animation skill for Motion (prev Framer Motion) and CSS animation.
KumarSashank/motiscope
Recreate an analyzed animation as working web code — GSAP (JavaScript), CSS/Web Animations, Framer Motion (React), or Lottie/SVG.
KumarSashank/motiscope
Recreate an analyzed animation as working web code — GSAP (JavaScript), CSS/Web Animations, Framer Motion (React), or Lottie/SVG.
github/awesome-copilot
A skill your agent uses whenever the user wants to build scroll animations, scroll effects, parallax, scroll-triggered reveals, pinned sections, horizontal scroll, text animations, or any motion…
greensock/gsap-skills
Shows how to run GSAP animations in React and Next.js with the useGSAP hook, refs, scoped selectors and automatic cleanup on unmount.
freshtechbro/claudedesignskills
Adds animated page transitions to multi-page sites with Barba.js, covering the wrapper and container markup, lifecycle hooks, views and GSAP integration.
freshtechbro/claudedesignskills
Exports and optimizes Blender 3D models and animations for the web as glTF, covering batch Python scripting, texture baking, decimation and LOD generation for Three.js and Babylon.js.
freshtechbro/claudedesignskills
Covers GSAP tweens and timelines and the ScrollTrigger plugin for scroll-driven animation, including pinning, scrubbing, parallax and horizontal scroll sections.
freshtechbro/claudedesignskills
A guide to the Locomotive Scroll library for smooth scrolling, parallax, viewport detection, sticky elements and GSAP ScrollTrigger integration.
freshtechbro/claudedesignskills
Implements After Effects Lottie animations in web and React apps: picking JSON or dotLottie format, a rendering library, and a data source, with an optimizer script.
freshtechbro/claudedesignskills
Guides React UI animation built on spring physics with React Spring and Popmotion: hooks, config presets, trails, list transitions and scroll or in-view effects.
Works with
Categories
Guides use of Anime.js for timeline sequences, stagger effects, SVG morphing and keyframe animation on DOM elements, CSS, SVG and JavaScript objects. js is a JavaScript animation engine that works with DOM elements, CSS properties, SVG attributes and plain objects, and it is framework-agnostic, usable with React, Vue or vanilla JS. The skill explains the `anime()` call, the ways to specify targets, animatable properties, and timelines with relative positioning for choreographed sequences.
Anime.js Animation Guide fits situations like: building a timeline-based animation sequence; staggering an entrance across many elements; morphing or drawing an SVG path.
Run `npx skills add freshtechbro/claudedesignskills --skill animejs -a claude-code`. Or copy the skill folder (.claude/skills/animejs in freshtechbro/claudedesignskills) into .claude/skills/animejs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add freshtechbro/claudedesignskills --skill animejs -a codex`. Or copy the skill folder (.claude/skills/animejs in freshtechbro/claudedesignskills) into .agents/skills/animejs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add freshtechbro/claudedesignskills --skill animejs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/animejs, .gemini/skills/animejs, .github/skills/animejs and .opencode/skills/animejs in your project.
Going by SKILL.md and its folder, Anime.js Animation Guide needs Python for the scripts in its folder. Our summary lists: The `animejs` package installed in the project.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Anime.js Animation Guide is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Anime.js Animation Guide: GSAP Core Animation (greensock/gsap-skills, 16k stars), Motion (softmaple/softmaple, 159 stars), Motiscope Recreate (KumarSashank/motiscope, 122 stars) and Recreate (KumarSashank/motiscope, 122 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
freshtechbro (a GitHub user) maintains it in freshtechbro/claudedesignskills, which has 986 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on November 20, 2025.
Source: freshtechbro/claudedesignskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.