animate-css
Skill1 starsChanged 8 days agoMITView on GitHub
Audit how a codebase uses Animate.css, report what is wasteful or broken, agree a plan, then fix it. The library is just CSS, so the wins are: not shipping 100+ animations you never use, getting the replay/animationend lifecycle right in JS-driven UIs, and not fighting the built-in prefers-reduced-motion support. Nothing gets edited before the plan is approved. The script finds the cheap stuff; you find the rest by reading. Load only the reference you need: Sanity-check what the script can't…
1 other project uses a version of this.
Adopted by
Most recently taken up by
- msrbuilds/animate-css-skilltheir own version, first seen Apr 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- msrbuilds/animate-css-skill★ 14same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository44 other files it gives its agents.
- AGENTS.mdAGENTS.md
- architecture-optimizerSkill
- csharp-optimizerSkill
- cpp-optimizerSkill
- c-optimizerSkill
- go-optimizerSkill
- node-service-optimizerSkill
- ruby-optimizerSkill
- rust-optimizerSkill
- docker-optimizerSkill
- kubernetes-optimizerSkill
- terraform-optimizerSkill
- animejsSkill
- auto-animateSkill
- gsapSkill
- lenisSkill
- magicuiSkill
- motionSkill
- react-moveSkill
- react-springSkill
- react-three-fiberSkill
- theatrejsSkill
- threejsSkill
- optimizer-routerSkill
- bootstrap-optimizerSkill
- pandacss-optimizerSkill
- sass-scss-optimizerSkill
- stylex-optimizerSkill
- tailwindcss-optimizerSkill
- twind-optimizerSkill
- unocss-optimizerSkill
- vanilla-extract-optimizerSkill
- angular-optimizerSkill
- astro-optimizerSkill
- ui-components-optimizerSkill
- nextjsSkill
- node-optimizerSkill
- nuxt-optimizerSkill
- react-optimizerSkill
- remix-optimizerSkill
- solid-optimizerSkill
- svelte-optimizerSkill
- tanstack-start-optimizerSkill
- vue-optimizerSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
Run python <skill-dir>/scripts/audit.py <project-root> [--json] — it detects how Animate.css is loaded (npm import / CDN / compat build), …
- Very specific: line 63
CSS-first: Prefer the utility classes and --animate-duration/--animate-delay variables over JS timing.
- Distinctive: line 68
Measure rather than guess sizes: If you can't measure the stylesheet, say so.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
name: animate-css-optimizer description: Audit and optimize Animate.css usage in web codebases — CSS weight (full min build vs CDN vs custom keyframe-only build), v3 vs v4 class problems (missing animate__ prefix, compat.css), JS-triggering bugs (animations that don't replay, missing animationend cleanup), infinite/hover animation repaint cost, delayed class lists, and the built-in prefers-reduced-motion support. Report with evidence first, then a fix plan the user approves before any code changes. Use whenever Animate.css comes up -- animate__ classes, animate.min.css, animate.compat.css, "CSS animation doesn't replay", "slim down animation CSS", or an Animate.css upgrade/migration from v3 to v4 -- even if the word "optimize" isn't used.
Animate.css Optimizer
Audit how a codebase uses Animate.css, report what is wasteful or broken, agree a plan, then fix it. The library is just CSS, so the wins are: not shipping 100+ animations you never use, getting the replay/animationend lifecycle right in JS-driven UIs, and not fighting the built-in prefers-reduced-motion support. Nothing gets edited before the plan is approved.
Workflow
1. Scope (quick)
- Find the project root (
package.jsonwithanimate.css, or an HTML file with ananimate.min.css/animate.compat.csslink). Static sites count too; the script skips framework code the same way. - Run
python <skill-dir>/scripts/audit.py <project-root> [--json]— it detects how Animate.css is loaded (npm import / CDN / compat build), lists everyanimate__*or legacyanimated *class actually used, flags unused-import waste, JS-triggering bugs, broken/renamed animation names, and reduced-motion handling. All stdlib, no app run. - Note the framework: React/Vue/Svelte components re-render and for-animate classes differently from plain HTML; the v3→v4 migration matters most in older CMS/HTML templates.
2. Audit
The script finds the cheap stuff; you find the rest by reading. Load only the reference you need:
| Area | Reference |
| Install/import methods, CDN, keyframe-only custom builds | references/import-methods.md |
| Utility classes (delays, speed, repeat), CSS custom properties | references/utility-classes.md |
JS triggering, replaying, animationend, framework components | references/js-triggering.md |
Best practices, gotchas, prefers-reduced-motion, a11y | references/perf-a11y.md |
| v3 → v4 migration details (prefix, compat.css) | bottom of references/import-methods.md |
Sanity-check what the script can't see:
- Which animations actually run — grep the elements (not just the classes) and ask: is this above the fold or below it, one-shot or on a loop?
- CSS size ground truth — if you want numbers, find the served file (e.g. the CDN URL or
node_modules/animate.css/animate.min.css) and note its raw/gzip size; don't invent numbers.
Mark findings Confirmed (seen in code/output) or Suspected (needs runtime checking, e.g. "the class isn't in the served CSS").
3. Report
Fill in assets/report-template.md, save as ANIMATE_CSS_REPORT.md in the project root (copy to the user too). Findings table sorted by impact/effort; each with evidence path:line, why it matters, fix, risk.
4. Plan — stop for approval
Turn the report into a short plan; present it and wait for an explicit "go" (use plan mode if available). Typical ordering:
- Quick wins — dedupe CDN + npm imports, fix wrong animation names, self-host the CSS.
- Structural — build or adopt a keyframe-only subset, replay/
animationendcleanup in JS components, adding a reduced-motion override where the media query is known to be avoided. - Optional — migrating off
animate.compat.css/ v3 classes, replacing infinite animations with interaction-triggered ones. Each item lists files touched, expected effect, how to verify, rollback. Let the user drop or reorder items.
5. Fix
Only approved items. Work in small groups; after each, run whatever build/typecheck the project has (Mostly it's "open the page and watch", so also exercise the animations). Animate.css is CSS-only so its changes rarely break data, but class renames can break JS hooks on those classes — check both directions ([class*=animate__], getElementsByClassName("animate__...")).
6. Verify and wrap up
- DevTools: confirm the animation classes compute correctly, replays work (the JS-triggering checklist),
prefers-reduced-motionemulation turns them off. - CSS transfer before/after (raw and gzipped) if weight was a finding — report what shrank; state plainly any you couldn't measure.
- List deferred items and one suggested next step.
Principles
- Ship what you animate. The full build carries every animation; a custom build with only the used
@imports is the intended, documented path when usage is small. - CSS-first. Prefer the utility classes and
--animate-duration/--animate-delayvariables over JS timing; keep JS triggers minimal and cleaned up withanimationend. - Replay needs a class reset. Re-adding the same animation class without removing it first does nothing; the removal-then-rAF-then-add (or
void offsetWidth) pattern is the fix. - Never disable
prefers-reduced-motion. Animate.css has honored the media query since 3.7 — flag any code that strips it; add interactions that don't depend on motion instead. - Animate small, block-level elements. Not
<html>/<body>, not inline elements, not huge areas; the docs' own gotchas list. - Infinite animations are the exception, not the default — they repaint forever and motion-sensitive users suffer; justify each one.
- Measure rather than guess sizes. If you can't measure the stylesheet, say so; never present invented numbers.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

