agentsclimarketplace

Animejs

Skill webmilmind1/claude-plugins/frontend-kit/skills/animejs

Frontend Design Kit for Claude Code — UI, UX, components, charts & animation. KokonutUI, Bklit UI, and Anime.js skills in one installable plugin.

Install
npx -y skills add webmilmind1/claude-plugins --skill animejs

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • 18 days oldThe repository was created 18 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

This skill should be used when the user asks to "animate with anime.js", "use animejs", "add an animation" with timelines/staggers/springs, "animate on scroll", "make this draggable", "animate SVG" (draw lines, morph paths, motion paths), "split text and animate it", or when working in a project that imports from "animejs". Covers the v4 API (animate, createTimeline, stagger, onScroll, createScope) and v3→v4 migration.

SKILL.md

4.9 KB, as published. Nobody here has run it

Anime.js v4

Anime.js (animejs, v4.x) is a lightweight JavaScript animation engine for CSS properties, transforms, SVG, DOM attributes, and plain JS objects. v4 is a full API rewrite — there is no default anime() function anymore; everything is a named import.

import { animate, createTimeline, createTimer, stagger, onScroll, utils, svg, text } from 'animejs';

Docs: https://animejs.com/documentation — installed API truth lives in node_modules/animejs/dist/.

Core: animate()

animate('.square', {
  x: '17rem',                       // transform shorthand (x, y, rotate, scale, skew…)
  rotate: { from: -180, to: 0 },    // per-property from/to
  scale: [ { to: 1.25, duration: 200 }, { to: 1, duration: 300 } ], // keyframes
  opacity: 0.5,
  duration: 800,
  delay: stagger(100),              // stagger across targets
  ease: 'outElastic(1, .5)',        // NOTE: 'ease', not 'easing'; no 'ease' prefix in names
  loop: 3, alternate: true,         // v3 direction:'alternate' → alternate: true
  onComplete: (anim) => {},         // callbacks are onBegin/onUpdate/onComplete/onLoop
});
  • Targets: CSS selector, element, NodeList, array, or plain object (animate(obj, { prop: 100, onUpdate: ... })).
  • Playback controls on the returned animation: .play() .pause() .restart() .reverse() .seek(ms) .then() (awaitable).
  • Eases are strings: 'out', 'inOutQuad', 'outElastic(amplitude, period)', 'cubicBezier(...)', linear(), steps(n), irregular(), or createSpring({ stiffness, damping }) passed as the ease value (physics-based, ignores duration).

Timelines

const tl = createTimeline({ defaults: { duration: 500 }, loop: true });
tl.add('.a', { x: 100 })
  .add('.b', { y: 50 }, '-=200')   // position: absolute ms, '-=x'/'+=x', or labels
  .label('mid')
  .add('.c', { rotate: 360 }, 'mid')
  .sync(otherAnimationOrTimeline); // v3 nested anime instances → .sync()

Scroll, draggable, scope

animate('.el', { x: 200, autoplay: onScroll({ container: '.scroll', enter: 'bottom top', leave: 'top bottom', sync: true }) });
createDraggable('.el', { container: '.area', snap: 100 });

For React/Vue/SSR, wrap in a scope tied to a root ref — required for cleanup and media queries:

useEffect(() => {
  const scope = createScope({ root }).add(() => { animate('.logo', { rotate: 360 }); });
  return () => scope.revert();
}, []);

SVG and text

animate(svg.createDrawable('path'), { draw: '0 1' });        // line drawing
animate('#shape', { points: svg.morphTo('#shape2') });       // morph
animate('.el', svg.createMotionPath('path'));                // follow a path
const { chars, words, lines } = text.split('h1', { chars: true });
animate(chars, { y: [16, 0], opacity: [0, 1], delay: stagger(30) });

Performance picks

  • waapi.animate(...) — same syntax, hardware-accelerated Web Animations API; prefer for simple transform/opacity animations.
  • createAnimatable('.el', { x: 200 }) — for values driven every frame (cursor followers); far cheaper than re-triggering animate().
  • createTimer({ duration, onUpdate }) — clock without targets (replaces empty-target anime() hacks).

utils (grab-bag, all importable via utils.)

utils.get(target, prop, unit) reads current values, utils.set(targets, props) sets instantly, utils.remove(targets) stops animations, plus random, randomPick, shuffle, clamp, round, snap, wrap, mapRange, lerp, damp, degToRad/radToDeg, padStart/padEnd, roundPad, sync, keepTime, createSeededRandom. Chainable: utils.clamp(0, 100).round(2) returns a composed function.

v3 → v4 migration (the usual breakages)

v3v4
anime({ targets: '.el', ... })animate('.el', { ... })
easing: 'easeOutQuad'ease: 'outQuad'
direction: 'reverse' / 'alternate'reversed: true / alternate: true
loop: true + alternate requires even loopsloop counts iterations independently
anime.timeline()createTimeline()
anime.stagger(100)stagger(100) (named import)
complete: fn, update: fnonComplete: fn, onUpdate: fn
anime.random(a, b)utils.random(a, b)
anime.set() / anime.get()utils.set() / utils.get()
anime.remove()utils.remove()
value like '+=100' string only{ from: x }, { to: x }, relative '+=100' all supported

Full API surface (every export, grouped by module): references/api.md.

Gives 0 of the 12 instructions most css styling skills give

Counted across 586 of the 596 authors here whose files we hold, read 2026-08-06

  • avoid excessive centered layoutsin 55 of 586, across 12 files
  • bundle code into single HTML filein 54 of 586, across 14 files
  • Respect prefers-reduced-motion user settingsin 52 of 586, across 35 files
  • avoid purple gradientsin 51 of 586, across 11 files
  • avoid uniform rounded cornersin 51 of 586, across 11 files
  • avoid Inter fontin 51 of 586, across 11 files
  • edit generated files to develop artifactin 50 of 586, across 10 files
  • animate only transform and opacity propertiesin 43 of 586
  • Make touch targets at least 44x44 pixelsin 41 of 586, across 15 files
  • Ensure minimum color contrast of 4.5:1in 39 of 586, across 10 files
  • use tailwind cssin 39 of 586, across 24 files
  • Use SVG icons instead of emojisin 38 of 586, across 11 files

Said here and by no other author read

  • import named exports
  • use createSpring for physics
  • pass absolute time as third parameter
  • call .add on timeline
  • define eases as string values
  • define delays with stagger

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.