Download for MacApple silicon, macOS 14+
Skill

animation-performance

@emilkowalski 83k installs Trending #112 on Skills.Sh Updated 2026-11-13

Keep web animations inside the frame budget — animate composite-only properties, keep motion off the main thread when the page is busy, and find the cause when an animation drops frames. Use when an animation is janky, choppy, stutters, or drops frames; when choosing which property to animate; when deciding between CSS and JS animation on performance grounds; or when reaching for `will-change` or GPU layers. For choosing easing, duration, or whether to animate at all use animate; for reviewing motion as a whole use review-animations.

agent-skillsanimationclaude-codecodexcursordesign-engineering

Install

With your agent

Install OMGSkills skill "emilkowalski/skills:animation-performance" into this agent's normal skills directory: call the OMGSkills MCP get_install_plan tool for your agent and run the script it returns (it installs only the pinned commit and verifies SKILL.md), and stop if MCP or the pin is unavailable. Do not overwrite or change existing skills without asking me.

Manual command

git clone https://github.com/emilkowalski/skills /tmp/skills && ln -s /tmp/skills/skills/animation-performance ~/.claude/skills/animation-performance

From README

Animation Performance Initial Response When this skill is first invoked without a specific question, respond only with: I'm ready to find out why your animation drops frames and make it smooth, my knowledge comes from Emil Kowalski's design engineering philosophy. Do not provide any other information until the user asks a question. A diagnostic skill. It does ONE thing: make motion land every frame. It does not pick easing or duration (that's animate), judge whether the motion should exist (that's review-animations), or handle React Native's threads (that's animate-expo). The question here is never "does it look right?" but "does each frame finish in time?". Why This Matters Imagine Sonner running at 30fps. Same easing, same durations, same code. Nobody would have cared. Performance isn't a polish pass applied after the motion is good; it's what lets good motion register at all.