craft-motion

Implements token-driven UI animations in CSS, GSAP, and Framer Motion with stagger math and reduced-motion gating.

1|Updated Jul 13, 2026
One-click install
npx skills add https://github.com/dineshrevunuru/SuperSkills --skill craft-motion-dineshrevunuru
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: craft-motion
Source: https://github.com/dineshrevunuru/SuperSkills/tree/main/craft-motion
Command: npx skills add https://github.com/dineshrevunuru/SuperSkills --skill craft-motion-dineshrevunuru

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires gsap, framer-motion, and includes references (resource) components.

What problem does it solve? UI animation often ships with robotic easing, janky layout-triggering properties, inconsistent timing values scattered across a codebase, and no reduced-motion fallback. This Skill turns a motion intent into shipped, token-driven animation with a disciplined six-step method. ## Core Features & Use Cases - Token-driven implementation: All curves and durations come from a single motion-tokens file filled from design-taste, so no inline cubic-bezier or raw millisecond values drift across the codebase. - Choreography and stagger math: Stagger tables, the 1/3 distance and density rules, and a hard 500ms total stagger cap govern multi-element reveals. - Framework recipes: Ready-to-adapt implementations for CSS transitions, GSAP timelines with matchMedia, and Framer Motion variants, plus a gesture register for drag, sheet, swipe, and voice surfaces using springs with velocity handoff. - Use Case: When asked to animate a case-study metrics row on scroll, it produces a hero-first entrance with a 60ms chip cascade, a reduced-motion opacity-only fallback, and a pre-ship gate checklist. ## Quick Start Use the craft-motion skill to animate this modal entrance and its content with a staggered reveal, including the reduced-motion fallback.

Frequently Asked Questions about craft-motion

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a staggered reveal animation to a list of cards?

Use the stagger table: 50-80ms per-item delay for cards with a total budget under 400ms, all siblings sharing one easing token. Stagger only the first 6-8 items of long lists and land the rest together, triggering once via IntersectionObserver or Framer Motion viewport settings.

Should I use CSS, GSAP, or Framer Motion for UI animation?

CSS transitions are the default choice with zero dependencies. Choose GSAP for timeline sequencing across many elements, and Framer Motion inside React when mount and unmount drive the motion. All three consume the same motion-tokens file for curves and durations.

When are springs allowed in UI animation?

Springs are allowed only on genuine direct-manipulation surfaces such as drag, bottom sheets, swipe-to-dismiss, and voice barge-in, where motion must inherit the user's velocity. In the presentation register for content entrances and state feedback, springs and overshoot are banned.

Why does my animation feel janky or robotic?

Jank usually comes from animating layout properties like width, height, margin, or box-shadow instead of transform and opacity. Robotic feel comes from ease-in or linear easing on spatial movement; use a strong custom ease-out curve and keep frequent interactions in the sub-300ms quick tier.

How do I handle prefers-reduced-motion for animations?

Design the reduced-motion equivalent during planning, not after: convert spatial movement to opacity-only fades at roughly half duration, replace loops with static states, and keep focus indicators fully visible. Implement it as a first-class path via media queries, gsap.matchMedia, or useReducedMotion.

What are the limits of this motion design approach?

It does not decide whether a motion idea should exist, render verdicts on finished motion, or measure fps and bundle impact mechanically; those belong to design-taste, craft-critique, and verify-ui-quality respectively. Chart animation is handled by visualize-data.