Create performant web animations with proper accessibility and timing.
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install animations或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install animations⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/animations/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: Animations description: Create performant web animations with proper accessibility and timing. metadata: {"clawdbot":{"emoji":"✨","requires":{},"os":["linux","darwin","win32"]}} ---
Only these properties animate on the compositor thread (60fps):
| Property | Use | |----------|-----| | transform | Move, rotate, scale (translateX, rotate, scale) | | opacity | Fade in/out |
Everything else triggers layout or paint. Avoid animating:
width, height, margin, padding (layout thrashing)top, left, right, bottom (use transform instead)border-width, font-size (expensive reflows)/* ❌ Triggers layout every frame */
.slide { left: 100px; transition: left 0.3s; }
/* ✅ GPU accelerated */
.slide { transform: translateX(100px); transition: transform 0.3s; }
~5% of users experience vestibular disorders (dizziness, nausea from motion).
/* Only animate if user hasn't requested reduced motion */
@media (prefers-reduced-motion: no-preference) {
.animated { animation: slide-in 0.5s ease-out; }
}
/* Or disable for those who requested it */
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
Keep subtle fades and color changes even with reduced motion. Remove parallax, bouncing, infinite loops.
| Easing | Use case | |--------|----------| | ease-out | Elements entering view (appears responsive) | | ease-in | Elements exiting view (accelerates away) | | ease-in-out | Elements moving within view | | linear | Only for spinners, progress bars, color cycling |
/* Custom bounce */
transition: transform 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
/* Material Design standard */
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
| Type | Duration | |------|----------| | Micro-interactions (hover, focus) | 100-200ms | | Transitions (modals, dropdowns) | 200-300ms | | Page transitions | 300-500ms | | Complex choreography | 500-1000ms max |
Anything over 500ms feels sluggish. Shorter is usually better.
Transitions: A to B state changes
.button { transform: scale(1); transition: transform 0.2s ease-out; }
.button:hover { transform: scale(1.05); }
Animations: Multi-step, auto-play, looping
@keyframes fadeSlideIn {
0% { opacity: 0; transform: translateY(20px); }
100% { opacity: 1; transform: translateY(0); }
}
.card { animation: fadeSlideIn 0.5s ease-out forwards; }
Use transitions for hover/focus states. Use animations for on-load effects and sequences.
Only use as optimization when you have specific performance problems:
/* ✅ Apply before animation starts, remove after */
.card:hover { will-change: transform; }
.card { will-change: auto; }
/* ❌ Never apply globally */
* { will-change: transform, opacity; } /* Wastes GPU memory */
/* ❌ Animates everything including unintended properties */
.card { transition: all 0.3s; }
/* ✅ Only animates what you need */
.card { transition: transform 0.3s, box-shadow 0.3s; }
all can cause unexpected animations on color, background, border changes.
Exit animations require AnimatePresence:
/* ❌ Exit animation never plays */
{isVisible && <motion.div exit={{ opacity: 0 }} />}
/* ✅ Wrap conditional rendering */
<AnimatePresence>
{isVisible && <motion.div exit={{ opacity: 0 }} />}
</AnimatePresence>
Stable keys for list animations:
/* ❌ Index keys cause erratic animations */
{items.map((item, i) => <li key={i}>{item}</li>)}
/* ✅ Stable IDs */
{items.map(item => <li key={item.id}>{item.text}</li>)}
AutoAnimate parent must be unconditional:
/* ❌ Ref can't attach to conditional element */
{showList && <ul ref={parent}>...</ul>}
/* ✅ Parent always renders, children are conditional */
<ul ref={parent}>{showList && items.map(...)}</ul>
| Library | Size | Best for | |---------|------|----------| | CSS only | 0kb | Hover states, simple transitions | | AutoAnimate | 3kb | Lists, accordions, toasts (90% of UI animations) | | Motion | 22kb | Gestures, physics, scroll animations, complex choreography | | GSAP | 60kb | Timelines, creative animation, scroll-triggered sequences |
Start with CSS. Add AutoAnimate for list animations. Only add Motion/GSAP for complex needs.
width/height instead of scale—causes layout thrashingtransition: all catching unintended properties安装 Animations 后,可以对 AI 说这些话来触发它
Help me get started with Animations
Explains what Animations does, walks through the setup, and runs a quick demo based on your current project
Use Animations to create performant web animations with proper accessibility and timing
Invokes Animations with the right parameters and returns the result directly in the conversation
What can I do with Animations in my design & creative workflow?
Lists the top use cases for Animations, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/animations/ 目录(个人级,所有项目可用),或 .claude/skills/animations/(项目级)。重启 AI 客户端后,用 /animations 主动调用,或让 AI 根据上下文自动发现并使用。
Animations 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
Animations 可免费安装使用。请查阅仓库了解许可证信息。
Create performant web animations with proper accessibility and timing.
Animations 属于「Design & Creative」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my design & creative tasks using Animations
Identifies repetitive steps in your workflow and sets up Animations to handle them automatically