gsap-performance — скилл для Claude: ускоряет анимации GSAP
Официальный скилл GSAP по производительности: подсказывает агенту, какие свойства анимировать, а какие ломают кадры. Пригодится, когда анимация дёргается.
npx skills add greensock/gsap-skills --skill gsap-performance -a claude-codeЧто делает gsap-performance
Скилл описывает правила, по которым GSAP-анимации остаются плавными. Главное: двигать элементы через transform (x, y, scale, rotation) и opacity, а не через width, height, top, left, margin и padding. Первые остаются на композиторе, вторые вызывают пересчёт раскладки и дают рывки.
Внутри — набор рекомендаций и примеров кода. will-change: transform в CSS только для тех элементов, что реально анимируются. Для часто обновляемых свойств, например позиции курсора, предлагается gsap.quickTo(): один переиспользуемый твин вместо новых на каждое движение мыши. Для списков — stagger вместо десятков отдельных твинов с задержками.
Отдельный блок про ScrollTrigger: pin: true продвигает закреплённый элемент, scrub со небольшим значением снижает работу при скролле, а ScrollTrigger.refresh() стоит звать только при реальном изменении раскладки. Скилл ссылается на родственные — gsap-core, gsap-timeline, gsap-scrolltrigger. Ставьте, если в проекте уже есть GSAP и вы ловите просадки FPS. Если анимаций мало и они простые, правила можно держать в голове и без скилла.
Какие задачи решает
- убрать рывки при анимации списков и карточек
- перевести движение элементов с
left/topнаx/y - настроить
will-changeтолько для анимируемых элементов - снизить нагрузку ScrollTrigger при скролле длинной страницы
- заменить десятки твинов на
staggerиquickTo()
Примеры запросов агенту
- оптимизируй эту GSAP-анимацию, сейчас на слабых устройствах проседает FPS
- перепиши движение карточек с `left`/`top` на `x`/`y`
- почему дёргается скролл с ScrollTrigger и как это исправить
Как установить gsap-performance
1Через Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-performance -a claude-code2Вручную: положить файлы
~/.claude/skills/gsap-performance/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/gsap-performance/
1Через Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-performance -a codex2Вручную: положить файлы
.agents/skills/gsap-performance/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-performance -a cursor2Вручную: положить файлы
.cursor/skills/gsap-performance/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install greensock/gsap-skills gsap-performance2Вручную: положить файлы
.github/skills/gsap-performance/SKILL.md1Через Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-performance -a gemini-cli2Командой платформы
gemini skills install https://github.com/greensock/gsap-skills --path skills/gsap-performanceВручную: положить файлы
.devin/skills/gsap-performance/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add greensock/gsap-skills --skill gsap-performance -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора8
Весь набор →Похожие
Вопросы о gsap-performance
Как установить gsap-performance в Claude?
Через npx skills add greensock/gsap-skills --skill gsap-performance -a claude-code. Файл скилла окажется в ~/.claude/skills/gsap-performance/SKILL.md.
Что делает gsap-performance?
Даёт агенту правила производительности GSAP: анимировать transform и opacity, не трогать layout-свойства, батчить чтения и записи, чистить невидимые анимации.
С какими скиллами GSAP он работает вместе?
Скилл ссылается на gsap-core и gsap-timeline для базовых анимаций, а по скроллу — на gsap-scrolltrigger.
Исходный текст
SKILL.md · MIT
---
name: gsap-performance
description: Official GSAP skill for performance — prefer transforms, avoid layout thrashing, will-change, batching. Use when optimizing GSAP animations, reducing jank, or when the user asks about animation performance, FPS, or smooth 60fps.
license: MIT
---
# GSAP Performance
## When to Use This Skill
Apply when optimizing GSAP animations for smooth 60fps, reducing layout/paint cost, or when the user asks about performance, jank, or best practices for fast animations.
**Related skills:** Build animations with **gsap-core** (transforms, autoAlpha) and **gsap-timeline**; for ScrollTrigger performance see **gsap-scrolltrigger**.
## Prefer Transform and Opacity
Animating **transform** (`x`, `y`, `scaleX`, `scaleY`, `rotation`, `rotationX`, `rotationY`, `skewX`, `skewY`) and **opacity** keeps work on the compositor and avoids layout and most paint. Avoid animating layout-heavy properties when a transform can achieve the same effect.
- ✅ Prefer: **x**, **y**, **scale**, **rotation**, **opacity**.
- ❌ Avoid when possible: **width**, **height**, **top**, **left**, **margin**, **padding** (they trigger layout and can cause jank).
GSAP’s **x** and **y** use transforms (translate) by default; use them instead of **left**/**top** for movement.
## will-change
Use **will-change** in CSS on elements that will animate. It hints the browser to promote the layer.
```css
will-change: transform;
```
## Batch Reads and Writes
GSAP batches updates internally. When mixing GSAP with direct DOM reads/writes or layout-dependent code, avoid interleaving reads and writes in a way that causes repeated layout thrashing. Prefer doing all reads first, then all writes (or let GSAP handle the writes in one go).
## Many Elements (Stagger, Lists)
- Use **stagger** instead of many separate tweens with manual delays when the animation is the same; it’s more efficient.
- For long lists, consider **virtualization** or animating only visible items; avoid creating hundreds of simultaneous tweens if it causes jank.
- Reuse timelines where possible; avoid creating new timelines every frame.
## Frequently updated properties (e.g. mouse followers)
Prefer **gsap.quickTo()** for properties that are updated often (e.g. mouse-follower x/y). It reuses a single tween instead of creating new tweens on each update.
```javascript
let xTo = gsap.quickTo("#id", "x", { duration: 0.4, ease: "power3" }),
yTo = gsap.quickTo("#id", "y", { duration: 0.4, ease: "power3" });
document.querySelector("#container").addEventListener("mousemove", (e) => {
xTo(e.pageX);
yTo(e.pageY);
});
```
## ScrollTrigger and Performance
- **pin: true** promotes the pinned element; pin only what’s needed.
- **scrub** with a small value (e.g. `scrub: 1`) can reduce work during scroll; test on low-end devices.
- Call **ScrollTrigger.refresh()** only when layout actually changes (e.g. after content load), not on every resize; debounce when possible.
## Reduce Simultaneous Work
- Pause or kill off-screen or inactive animations when they’re not visible (e.g. when the user navigates away).
- Avoid animating huge numbers of properties on many elements at once; simplify or sequence if needed.
## Best practices
- ✅ Animate **transform** and **opacity**; use **will-change** in CSS only on elements that animate.
- ✅ Use **stagger** instead of many separate tweens with manual delays when the animation is the same.
- ✅ Use **gsap.quickTo()** for frequently updated properties (e.g. mouse followers).
- ✅ Clean up or kill off-screen animations; call **ScrollTrigger.refresh()** when layout changes, debounced when possible.
## Do Not
- ❌ Animate **width**/ **height**/ **top**/ **left** for movement when **x**/ **y**/ **scale** can achieve the same look.
- ❌ Set **will-change** or **force3D** on every element “just in case”; use for elements that are actually animating.
- ❌ Create hundreds of overlapping tweens or ScrollTriggers without testing on low-end devices.
- ❌ Ignore cleanup; stray tweens and ScrollTriggers keep running and can hurt performance and correctness.
© greensock · MIT · greensock/gsap-skills