К основному содержанию
скилл CX Codex

gsap · mindrally — скилл для Claude Code: анимации на GSAP без просадок

Задаёт агенту правила анимаций на GSAP: трансформы вместо left/top, stagger, таймлайны, ScrollTrigger. Пригодится, когда интерфейс дёргается на слабом железе.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Mindrally/skills --skill gsap -a claude-code
Открыть на GitHub

Что делает gsap

Скилл превращает агента в инструктора по GSAP. Внутри — набор правил: как импортировать библиотеку и регистрировать плагины, когда брать gsap.to(), gsap.from() или gsap.fromTo(), как собирать последовательности в таймлайны с метками и перекрытием шагов.

Отдельный блок про производительность. Анимировать советует через x, y, rotation и scale, а не через left и top, потому что трансформы уходят на GPU. Для списков — stagger, для длинных страниц — ScrollTrigger.batch(), для просадок CPU — gsap.ticker.lagSmoothing(). Селекторы велит кэшировать: повторный document.querySelector на каждом вызове — лишняя работа.

Есть разделы про React и SVG. В React предлагает хук useGSAP из @gsap/react со scope на контейнер и очистку таймлайна через tl.kill() при размонтировании. Если анимации на странице нет вообще, скилл только добавит агенту контекст, которого проект не использует.

Какие задачи решает

  • убрать дёргание анимации на слабом устройстве
  • собрать последовательность появления блоков через таймлайн
  • привязать движение элемента к прокрутке страницы
  • почистить таймлайны при размонтировании компонента в React
  • анимировать обводку SVG-иконки

Примеры запросов агенту

  • Сделай появление карточек товара через gsap с stagger, чтобы они не вылетали все сразу
  • Перепиши анимацию скролла на ScrollTrigger с pin для секции с преимуществами
  • В React-компоненте заведи useGSAP со scope и убери таймлайн при unmount

Как установить gsap

1Через Skills CLI (Vercel)

npx skills add Mindrally/skills --skill gsap -a claude-code

2Вручную: положить файлы

~/.claude/skills/gsap/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/gsap/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора160

kysely Скилл задаёт агенту правила написания запросов на Kysely: типизация схемы, соединения, транзакции, генерация типов. Пригодится, если в проекте TypeScript и SQL. CX Codex +1 780установок github-workflow Набор правил по работе с GitHub: как оформлять пул-реквесты, вести ревью, писать workflow для Actions и настраивать защиту веток. Пригодится, когда агент правит репозиторий. CX Codex +1 780установок rust Задаёт агенту правила разработки на Rust: владение, async на tokio, обработка ошибок через Result и Option. CX Codex +1 778установок aspnet-core Задаёт агенту правила разработки на ASP.NET Core: контроллеры, middleware, кэш, JWT и валидация. Пригодится, когда API пишется с нуля или переписывается. CX Codex +1 776установок c-sharp Задаёт агенту стиль кода на C#: именование, async, DI, тесты, Blazor и Unity. Пригодится, когда проект на .NET и не хочется каждый раз объяснять конвенции. CX Codex +1 760установок data-analyst Скилл задаёт агенту правила работы с pandas, numpy, matplotlib и seaborn: воспроизводимые пайплайны, проверка качества данных, аккуратные графики. CX Codex +1 759установок bitbucket-workflow Скилл задаёт агенту правила работы с Bitbucket: оформление пул-реквестов, конфигурация Pipelines, связка с Jira и ветвление по Gitflow. CX Codex +1 759установок transformers-huggingface Скилл для работы с библиотекой Hugging Face Transformers: загрузка моделей, токенизация, файнтюнинг через Trainer и оптимизация инференса. CX Codex +1 758установок

Другие версии gsap

Похожие

gsap-scrolltrigger greensock Обучает ИИ-агента писать анимации по скроллу с плагином ScrollTrigger от GreenSock: закреплять секции и связывать таймлайны с прокруткой через scrub. CX Codex +1 72 200установок gsap-plugins greensock Скилл объясняет, как подключать и использовать плагины GSAP: ScrollTo, Flip, Draggable, SplitText и другие. Пригодится, когда анимации в проекте уже на GSAP. CX Codex +1 67 200установок gsap-scrolltrigger-storytelling MengTo Скилл для скролл-сторителлинга: закреплённые секции, послойное появление интерфейса и переходы между сценами на GSAP ScrollTrigger. CX Codex +1 1 800установок gsap-web iart-ai Скилл помогает настраивать анимации на GSAP: от таймлайнов и ScrollTrigger до эффектов SplitText, Flip и плавной прокрутки с Lenis. CX Codex +1 2 500установок cinematic-gsap-lenis-motion-system MengTo Настраивает кинематографичную анимацию интерфейса на GSAP, ScrollTrigger и Lenis. Пригодится для премиальных сайтов, портфолио, плавного скролла и параллакса. CX Codex +1 2 400установок gsap-animation notedit Связывает GSAP с Remotion для рендеринга моушн-графики и сложных таймлайнов. Нужен при анимации текста, морфинге SVG и нестандартных кривых смягчения. CX Codex +1 313установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о gsap

Как установить gsap в Claude?

Выполните npx skills add Mindrally/skills --skill gsap -a claude-code. Файл скилла окажется в ~/.claude/skills/gsap/SKILL.md.

Что делает скилл gsap?

Даёт агенту правила написания анимаций на GreenSock Animation Platform: таймлайны, stagger, ScrollTrigger, работа с трансформами и очистка в React.

Нужен ли GSAP в проекте, чтобы скилл сработал?

Да, скилл описывает код на GSAP и его плагинах, включая ScrollTrigger и MotionPathPlugin. Без библиотеки в проекте применять эти правила не к чему.

Исходный текст

SKILL.md · Apache-2.0
---
name: gsap
description: Expert guidelines for building high-performance animations with GSAP (GreenSock Animation Platform)
metadata:
  maintainer: Mindrally
  source: https://github.com/Mindrally/skills
---

# GSAP Animation Guidelines

You are an expert in GSAP (GreenSock Animation Platform), JavaScript, and web animation performance. Follow these guidelines when creating animations.

## Core Principles

### Import and Setup
```javascript
// Modern ES Module import
import gsap from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";

// Register plugins
gsap.registerPlugin(ScrollTrigger);
```

### Use gsap.to(), gsap.from(), and gsap.fromTo()
```javascript
// Animate TO a state
gsap.to(".element", { x: 100, duration: 1 });

// Animate FROM a state
gsap.from(".element", { opacity: 0, y: 50, duration: 0.5 });

// Animate FROM one state TO another
gsap.fromTo(".element",
  { opacity: 0 },
  { opacity: 1, duration: 0.5 }
);
```

## Performance Optimization

### Leverage Hardware Acceleration
```javascript
// Use transforms instead of positional properties
gsap.to(".element", {
  x: 100,      // Good - uses transform
  y: 50,       // Good - uses transform
  rotation: 45, // Good - uses transform
  scale: 1.2,  // Good - uses transform
  // Avoid: left, top, width, height when possible
});

// Enable force3D for GPU acceleration
gsap.to(".element", {
  x: 100,
  force3D: true // Ensures GPU acceleration
});
```

### Use will-change Wisely
```javascript
// Apply will-change before animation
element.style.willChange = "transform";

gsap.to(element, {
  x: 100,
  onComplete: () => {
    element.style.willChange = "auto"; // Remove after animation
  }
});
```

### Stagger for Multiple Elements
```javascript
// Always use stagger for multiple elements
gsap.to(".items", {
  opacity: 1,
  y: 0,
  stagger: 0.1, // Prevents all elements animating at once
  duration: 0.5
});

// Advanced stagger options
gsap.to(".grid-items", {
  scale: 1,
  stagger: {
    each: 0.1,
    from: "center",
    grid: "auto"
  }
});
```

### Use Lag Smoothing
```javascript
// Prevent animation stuttering during CPU spikes
gsap.ticker.lagSmoothing(1000, 16);
```

## Timeline Best Practices

### Use Timelines for Complex Sequences
```javascript
const tl = gsap.timeline({
  defaults: { duration: 0.5, ease: "power2.out" }
});

tl.to(".header", { y: 0, opacity: 1 })
  .to(".content", { y: 0, opacity: 1 }, "-=0.3") // Overlap
  .to(".footer", { y: 0, opacity: 1 }, "-=0.3");
```

### Use Labels for Organization
```javascript
const tl = gsap.timeline();

tl.addLabel("start")
  .to(".intro", { opacity: 1 })
  .addLabel("middle")
  .to(".main", { x: 100 })
  .addLabel("end")
  .to(".outro", { opacity: 0 });

// Jump to label
tl.play("middle");
```

### Control Timelines
```javascript
const tl = gsap.timeline({ paused: true });

// Methods
tl.play();
tl.pause();
tl.reverse();
tl.restart();
tl.seek(1.5); // Go to 1.5 seconds
tl.progress(0.5); // Go to 50%
```

## ScrollTrigger Best Practices

### Basic ScrollTrigger Setup
```javascript
gsap.to(".element", {
  x: 500,
  scrollTrigger: {
    trigger: ".element",
    start: "top center",
    end: "bottom center",
    scrub: true,
    markers: false // Enable for debugging only
  }
});
```

### Pin Elements Properly
```javascript
ScrollTrigger.create({
  trigger: ".panel",
  pin: true,
  start: "top top",
  end: "+=500",
  pinSpacing: true
});
```

### Batch ScrollTriggers for Performance
```javascript
ScrollTrigger.batch(".items", {
  onEnter: (elements) => {
    gsap.to(elements, {
      opacity: 1,
      y: 0,
      stagger: 0.1
    });
  }
});
```

## React Integration

### Use useGSAP Hook
```javascript
import { useGSAP } from "@gsap/react";

function Component() {
  const containerRef = useRef(null);

  useGSAP(() => {
    gsap.to(".box", { x: 100 });
  }, { scope: containerRef }); // Scopes selectors to container

  return <div ref={containerRef}>...</div>;
}
```

### Cleanup Animations
```javascript
useGSAP(() => {
  const tl = gsap.timeline();
  tl.to(".element", { x: 100 });

  return () => {
    tl.kill(); // Clean up on unmount
  };
}, []);
```

## Selector Optimization

### Cache DOM Selectors
```javascript
// Bad - queries DOM on every call
gsap.to(".element", { x: 100 });
gsap.to(".element", { y: 50 });

// Good - cache the reference
const element = document.querySelector(".element");
gsap.to(element, { x: 100 });
gsap.to(element, { y: 50 });
```

### Use gsap.utils for Efficiency
```javascript
// Convert NodeList to Array
const items = gsap.utils.toArray(".items");

// Create reusable selector
const select = gsap.utils.selector(container);
gsap.to(select(".box"), { x: 100 });
```

## Easing

### Use Appropriate Eases
```javascript
// Common eases for UI
gsap.to(".element", { x: 100, ease: "power2.out" }); // Decelerate
gsap.to(".element", { x: 100, ease: "power2.in" });  // Accelerate
gsap.to(".element", { x: 100, ease: "power2.inOut" }); // Both

// Bounce and elastic for playful UI
gsap.to(".element", { y: 0, ease: "bounce.out" });
gsap.to(".element", { scale: 1, ease: "elastic.out(1, 0.3)" });
```

## SVG Animation

### Animate SVG Properties
```javascript
gsap.to("path", {
  strokeDashoffset: 0,
  duration: 2,
  ease: "none"
});

gsap.to("circle", {
  attr: { r: 50, cx: 200 },
  duration: 1
});
```

## Complex Animations

### Use MotionPath for Path Animation
```javascript
import { MotionPathPlugin } from "gsap/MotionPathPlugin";
gsap.registerPlugin(MotionPathPlugin);

gsap.to(".element", {
  motionPath: {
    path: "#path",
    align: "#path",
    autoRotate: true
  },
  duration: 5
});
```

## Debugging

### Use Markers During Development
```javascript
ScrollTrigger.defaults({
  markers: process.env.NODE_ENV === "development"
});
```

### Debug Timeline Progress
```javascript
tl.eventCallback("onUpdate", () => {
  console.log(tl.progress());
});
```

## Best Practices Summary

1. Always use transforms over positional properties
2. Use stagger for animating multiple elements
3. Leverage timelines for complex sequences
4. Cache DOM selectors
5. Use useGSAP hook in React
6. Clean up animations on component unmount
7. Enable lag smoothing for smooth playback
8. Test on actual devices, especially mobile

© Mindrally · Apache-2.0 · Mindrally/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой