Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
mblode avatar

Ui Animation

  • 7.6k installs
  • 72 repo stars
  • Updated July 29, 2026
  • mblode/agent-skills

ui-animation is an agent skill for designing implementing and reviewing UI motion with CSS transitions springs gestures clip-path techniques and strict animation review standards.

About

ui-animation is an agent skill for creating reviewing and debugging UI motion across springs gestures drag clip-path reveals easing CSS transitions keyframes and framer-motion. Core rules animate only transform and opacity for movement, forbid layout property animation and transition all, and never animate keyboard-initiated actions. Implementation priority is CSS transitions over WAAPI keyframes and JS requestAnimationFrame with asymmetric enter and exit timing tuned by interaction frequency. Motion principles demand continuity over teleportation, directional motion matching layout, overlays emerging from triggers, and delight scaling inversely with frequency. Reference files cover decision framework spring animations component patterns clip-path gesture drag performance review format contextual animations and transition recipes for badges dropdowns modals and page slides. Accessibility requires prefers-reduced-motion paths hover gated behind fine pointer media queries and paired elements sharing duration and easing. Review workflow applies ten standards with Before After Why tables and explicit Block or Approve verdicts.

  • Animate transform and opacity only; never width height top left or transition all.
  • CSS transitions preferred over keyframes for interruptible UI that retargets cleanly.
  • Transition recipes mapped to badges dropdowns modals panels page slides and icon swaps.
  • prefers-reduced-motion and hover hover fine pointer guards on all recipes.
  • Strict review format with ten standards and Block or Approve verdict output.

Ui Animation by the numbers

  • 7,606 all-time installs (skills.sh)
  • +229 installs in the week ending Jul 29, 2026 (Skillselion tracking)
  • Ranked #60 of 1,888 Design & UI/UX skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 31, 2026 (Skillselion catalog sync)
At a glance

ui-animation capabilities & compatibility

Capabilities
decision framework for whether and why to animat · css transition recipes for modals dropdowns badg · spring gesture drag and clip path technique refe · performance deep dive for waapi compositing and · strict animation review with block approve verdi · prefers reduced motion and hover pointer fine ac
Use cases
frontend · ui design · web design
From the docs

What ui-animation says it does

Animate for feedback, orientation, continuity, or deliberate delight.
SKILL.md
Never animate keyboard-initiated actions (shortcuts, arrow navigation, tab/focus); they repeat hundreds of times daily and animation makes them feel slow.
SKILL.md
Implementation priority: CSS transitions > WAAPI > CSS keyframes > JS (`requestAnimationFrame`).
SKILL.md
npx skills add https://github.com/mblode/agent-skills --skill ui-animation

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs7.6k
repo stars72
Security audit3 / 3 scanners passed
Last updatedJuly 29, 2026
Repositorymblode/agent-skills

How do I add smooth purposeful UI animations without jank layout thrash or accessibility failures?

Design, implement, and review UI motion including CSS transitions, springs, gestures, clip-path reveals, and animation code reviews.

Who is it for?

Frontend work on transitions modals drawers drag gestures spring physics and animation code review.

Skip if: Extracting motion from screen recordings use reverse-engineer-animation, overall visual direction use ui-design, or full page audits use ui-audit.

When should I use this skill?

User asks to add animations, review motion code, implement swipe gestures, pick easing, or make interactions feel smooth.

What you get

Motion implementations or reviews with correct easing durations reduced-motion paths and evidence-backed Block or Approve decisions.

  • clip-path CSS recipes
  • micro-interaction patterns
  • scroll reveal snippets

Files

SKILL.mdMarkdownGitHub ↗

UI Animation

  • IS: designing, implementing, reviewing, and debugging UI motion: springs, gestures, drag, easing, CSS transitions, keyframes, framer-motion.
  • IS NOT: extracting an animation from a video or screen recording (use reverse-engineer-animation), choosing overall visual direction, palettes, or typography (use ui-design), or auditing a whole page's UI quality (use ui-audit).

Reference files

FileRead when
references/decision-framework.mdDefault: deciding whether/why to animate, picking easing character
references/spring-animations.mdUsing spring physics, framer-motion useSpring, configuring spring params
references/component-patterns.mdBuilding buttons, popovers, tooltips, drawers, modals, toasts with animation
references/clip-path-techniques.mdUsing clip-path for reveals, tabs, hold-to-delete, comparison sliders
references/gesture-drag.mdImplementing drag, swipe-to-dismiss, momentum, pointer capture
references/performance-deep-dive.mdDebugging jank, CSS vs JS, WAAPI, CSS variables trap, Framer Motion caveats
references/review-format.mdReviewing animation code: strict review with ten standards, escalation triggers, Before/After/Why table, and a Block/Approve verdict
references/contextual-animations.mdImplementing contextual icon swaps, word-level stagger entrances, or fixed-offset exit animations
references/transition-recipes.mdInstalling a CSS transition: card resize, badge, dropdown, modal, panel, page slide, icon swap, number pop-in, text swap, success animation, avatar hover, error shake

Core rules

  • Animate for feedback, orientation, continuity, or deliberate delight. If the purpose is "it looks cool" and the user sees it often, don't animate.
  • Never animate keyboard-initiated actions (shortcuts, arrow navigation, tab/focus); they repeat hundreds of times daily and animation makes them feel slow.
  • Prefer CSS transitions for interruptible UI; keyframes restart from zero on interruption, transitions retarget smoothly. Use keyframes only for predetermined sequences.
  • Implementation priority: CSS transitions > WAAPI > CSS keyframes > JS (requestAnimationFrame). Under load, CSS stays smooth while JS drops frames.
  • Asymmetric timing: for occasional interactions, enter can be slightly slower and exit should be fast. For high-frequency ephemeral UI (hover highlights, popovers, panel toggles), invert this: enter instantly (0ms), exit with a brief fade (100-150ms) so the action feels immediate.
  • Use @starting-style for DOM entry animations; fall back to a data-mounted attribute where support is insufficient.
  • A small filter: blur(2px) can hide rough crossfades between swapped content.

Motion design principles

  • Continuity over teleportation. Elements visible in both states transition in place. Expand from where elements sit rather than fading in a new instance. Never duplicate a persistent element or hard-cut between views that share components; hard cuts lose spatial context.
  • Directional motion matches position. Tab and carousel transitions animate in the direction matching spatial layout (left-to-right for forward, right-to-left for back).
  • Emerge from the trigger. Overlays, trays, and panels animate outward from the element that opened them. Generic centre-screen entrances break spatial orientation.
  • Consistent polish everywhere. Under-animated areas make the entire product feel unpolished. Motion quality must be uniform across all surfaces.
  • Delight scales inversely with frequency. Rarer interactions have more room for personality. High-frequency actions must be invisible.
  • Motion enhances perceived speed. Smooth transitions between states feel faster than hard cuts, even at identical load times.

What to animate

  • Movement: transform and opacity only; they skip layout and paint.
  • State feedback: color, background-color, and opacity are acceptable.
  • Never animate layout properties (width, height, top, left); they trigger layout recalculation every frame. (Exception: a deliberate container resize tween, see the card-resize recipe.)
  • Never use transition: all; it animates unintended properties and silently picks up future ones. List properties explicitly.
  • Avoid filter animation for core interactions; keep blur ≤ 20px if unavoidable, since heavy blur is expensive, especially in Safari.
  • SVG: apply transforms on a <g> wrapper with transform-box: fill-box; transform-origin: center; without it, transforms rotate/scale around the SVG canvas origin.
  • transform: scale() also scales an element's children (icons, text, borders scale proportionally), unlike width/height. This is a feature for press feedback; account for it when an inner element must keep a fixed size.
  • Disable transitions during theme switches ([data-theme-switching] * { transition: none !important }); otherwise every themed property animates at once.

Easing defaults

ElementDurationEasing
Button press feedback100-160mscubic-bezier(0.22, 1, 0.36, 1)
Tooltips, small popovers125-200msease-out or enter curve
Dropdowns, selects150-250mscubic-bezier(0.22, 1, 0.36, 1)
Modals, drawers200-350mscubic-bezier(0.22, 1, 0.36, 1)
Move/slide on screen200-300mscubic-bezier(0.25, 1, 0.5, 1)
Page transitions250-400msenter or move curve
Simple hover (colour/opacity)200msease
Illustrative/marketingUp to 1000msSpring or custom

Keep routine UI animation under 300ms; scale duration with distance traveled (a full-screen slide can exceed 300ms, a 6px tooltip shift should be under 150ms).

Named curves

  • Enter: cubic-bezier(0.22, 1, 0.36, 1) for entrances and transform-based hover
  • Move: cubic-bezier(0.25, 1, 0.5, 1) for slides, drawers, panels
  • Drawer (iOS-like): cubic-bezier(0.32, 0.72, 0, 1)

Avoid ease-in for UI; it starts slow, so the element lags the user's action and feels sluggish. Prefer custom curves from easing.dev over built-in ease/ease-out, whose gentle acceleration reads soft rather than decisive.

Transition decision rules

Match the UI element first, then choose the recipe from references/transition-recipes.md:

UI patternRecipe
Trigger + floating dot/countNotification badge
Trigger + anchored surfaceMenu dropdown
Centred surface on top of pageModal dialog
Panel sliding into existing containerPanel reveal
List ↔ detail or wizard stepsPage side-by-side slides
Element dimension changesCard resize
Text updating in placeText state swap
Two icons in same slotIcon swap
Number updatingNumber pop-in
Confirmation / success momentSuccess celebration
Hovering item in horizontal stackAvatar group hover
Form validation errorError state shake

Prefer lower-overhead transitions (CSS-only) unless the design requires JS orchestration.

Spatial and sequencing

  • Set transform-origin at the trigger point for popovers; keep center for modals (they represent app-level state, not an anchored trigger).
  • For dialogs/menus, start around scale(0.85-0.9). Never scale(0); nothing in the real world appears from nothing.
  • Stagger reveals at 30-50ms per item; total stagger under 300ms. Vary timing by visual importance; the most important element leads. Uniform stagger removes hierarchy and feels mechanical.
  • Paired elements rule: elements that animate together (modal + overlay, tooltip + arrow, FAB + label) must share the same easing curve and duration. Mismatched timing between paired elements is the usual cause of "something feels off".

Accessibility

  • Every animation needs a prefers-reduced-motion: reduce path: disable transform/keyframe motion, keep instant state changes or opacity-only fades. All transition recipes include the guard.
  • Gate hover animations behind @media (hover: hover) and (pointer: fine); otherwise touch devices replay hover effects on tap. Tailwind v4 hover: utilities apply this guard automatically; skip the manual media query there.
  • During direct manipulation, keep the element locked to the pointer with no easing. Add easing only after release.

Performance

  • Pause looping animations off-screen with IntersectionObserver; they burn GPU even when invisible.
  • Toggle will-change only during heavy motion and only for transform/opacity; remove it after. Each promotion costs compositor memory, and permanent promotion across many elements is worse than none.
  • Do not animate drag gestures via CSS variables on a container; every update recalculates styles for all children. Set transform directly on the moving element.
  • Motion x/y values are the normal choice for axis movement and drag (they bypass React re-renders). Use a full transform string only when one owner must combine multiple transform functions or interop with non-Motion code.
  • See references/performance-deep-dive.md for WAAPI, compositing layers, and the CSS vs JS comparison table.

Anti-patterns

High-signal failures not already covered by the rules above:

  • Animating on mount without a user trigger: unexpected motion is disorienting; the user did nothing to cause it.
  • Hard stops on drag boundaries feel broken; apply friction/damping so movement diminishes past the boundary (see gesture-drag reference).
  • Mixing Motion x/y props with a handwritten transform string on the same element: both write transform, so one silently clobbers the other. Pick one transform owner.
  • Animating both a container and staggering its children: pick one entrance per container. If the panel slides in, its content should already be visible when it arrives.
  • Keyframes on rapidly-triggered elements (toasts, list items): interruption restarts them from zero; use CSS transitions, which retarget.
  • Tooltip animation after the first tooltip is open: subsequent tooltips in the same group open instantly, or the toolbar feels laggy.

Workflow

Copy and track this checklist:

Animation progress:
- [ ] Step 1: Decide whether the interaction should animate
- [ ] Step 2: Choose purpose, easing, and duration
- [ ] Step 3: Pick the implementation style
- [ ] Step 4: Load the relevant component or technique reference
- [ ] Step 5: Validate timing, interruption, and device behavior

1. Answer the four questions in references/decision-framework.md: should it animate? What purpose? What easing? What speed? 2. Pick duration from the easing defaults table above. 3. Choose implementation: CSS transition > WAAPI > spring > keyframe > JS. 4. Load the relevant reference for your component type or technique. 5. When reviewing, apply the strict posture in references/review-format.md: measure against the ten standards, output the Before/After/Why table, then a tiered verdict ending in an explicit Block/Approve decision.

Validation

Produce evidence for each check (DevTools observations, not "looks fine"):

  • Grep the diff for layout property transitions (width, height, top, left) and transition: all.
  • Retoggle components rapidly to confirm transitions retarget cleanly instead of restarting from zero.
  • Slow animations to 10% in the DevTools Animations panel to catch timing and transform-origin issues invisible at full speed.
  • Emulate prefers-reduced-motion: reduce (DevTools Rendering panel) and confirm every animation has a reduced path.
  • Confirm will-change is toggled around animations, not permanently set, and looping animations pause off-screen.
  • Test touch interactions on real devices; simulators under-report gesture and hover-on-tap issues.

Related skills

  • reverse-engineer-animation: extracts an animation spec from a screen recording; hand its output here for production implementation.
  • ui-design: visual direction, palettes, typography; settle the visual system before tuning motion.
  • ui-audit: page/feature-level UI quality audit; its motion findings route back to this skill for fixes.
  • animate-text: curated catalog of named text effects (typewriter, line reveal, stagger builds) with exact JSON specs.

Related skills

How it compares

Pick ui-animation over generic CSS skills when motion needs clipped reveals and sliders rather than simple fade or scale transitions.

FAQ

What properties should be animated?

Use transform and opacity for movement; color and background-color for state feedback; never animate layout properties except deliberate card resize recipes.

CSS transitions or keyframes?

Prefer CSS transitions for interruptible UI; keyframes restart from zero on interruption while transitions retarget smoothly.

How are animations reviewed?

Apply ten standards from review-format.md, output Before After Why table, and end with an explicit Block or Approve verdict.

Is Ui Animation safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.