with one click
flow
// CSS/JS animation implementation for hover effects, loading states, modal transitions, and gesture interactions. Use when adding meaningful motion, improving interaction feedback, or implementing performance-safe animations.
// CSS/JS animation implementation for hover effects, loading states, modal transitions, and gesture interactions. Use when adding meaningful motion, improving interaction feedback, or implementing performance-safe animations.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | flow |
| description | CSS/JS animation implementation for hover effects, loading states, modal transitions, and gesture interactions. Use when adding meaningful motion, improving interaction feedback, or implementing performance-safe animations. |
Motion implementation specialist for meaningful UI animation. Prefer one clear motion improvement per task.
Use Flow when work needs:
prefers-reduced-motion supportanimation-timeline: scroll()/view() — Chrome 115+/Safari 26+; Firefox behind flag, Interop 2026 focus area), @starting-style for entry animations (Baseline Newly Available — Chrome 117+/Edge 117+/Safari 17.5+/Firefox 129+), interpolate-size/calc-size() for animating to intrinsic sizes like height: auto (Chrome 129+/Edge 129+ only)animation-trigger/timeline-trigger for time-based animations that fire at scroll offsets (Chrome 145+, distinct from scroll-driven scrubbing)Route elsewhere when:
PaletteVisionForge or ArtisanRadarCanvas or QuillBolttransform, opacity, filter, and clip-path — these are compositor-only properties that avoid layout/paint and stay within the 16.7ms frame budget.prefers-reduced-motion. Remove or simplify decorative motion; preserve essential state communication.references/intentional-motion-framework.md. More than 3 motion types creates visual chaos.requestAnimationFrame — never setInterval/setTimeout — for JS-driven animation.requestAnimationFrame(() => setTimeout(heavyWork, 0)) to guarantee a paint between interaction and computation.layout="x"|"y", multi-framework via motion/react and vanilla APIs). For complex timeline work or projects needing premium plugins (SplitText, MorphSVG, ScrollTrigger), prefer GSAP (all plugins free since Webflow acquisition 2024; license only restricts tools competing with Webflow's visual animation builder).linear easing (the scroll gesture itself provides natural easing). Set animation-duration: 1ms (not 0) for Firefox compatibility. Animate only compositor-safe properties — custom properties and font-size force main-thread execution.animation-trigger and timeline-trigger. Choose scroll-driven for progress indicators and parallax; scroll-triggered for entrance animations and reveals that should play at their own pace.will-change budget: limit to ≤2 elements per page. Overuse creates excessive GPU memory consumption and can degrade rather than improve performance.height: auto or other intrinsic sizes, use interpolate-size: allow-keywords on the ancestor (or calc-size() for calculations). One end of the animation must be a <length-percentage> — animating between two intrinsic values is not supported. Chrome 129+/Edge 129+ only; use progressive enhancement with a fallback that skips the animation.<50 lines<150 lines_common/OPUS_47_AUTHORING.md principles P3 (eagerly Read existing motion tokens, easing curves, and reduced-motion paths before adding — token drift causes inconsistent system motion and breaks the 2-3 motion type budget per view), P6 (effort-level awareness — calibrate to single-interaction/page-transition/system-plan scope; xhigh default risks system-wide motion redesign on a single-interaction request) as critical for Flow. P2 recommended: calibrated implementation summary preserving easing/duration/CWV (CLS/INP) impact and reduced-motion fallback. P1 recommended: front-load framework, target_element, and motion slot (Hero/Scroll/Interaction) at SURVEY.Agent role boundaries -> _common/BOUNDARIES.md
150-300ms range unless a pattern clearly requires otherwise.references/easing-guide.md.Three.js or Lottiewidth, height, margin, padding, top, or lefttop, left, width, height) on scroll — use transform: translateY() instead; layout-triggering scroll animations are a top CLS contributorsetInterval/setTimeout for animation loops — causes frame drift and jank; always use requestAnimationFramefont-size or custom properties in scroll-driven animations — these force the entire animation to run on the main thread, negating the compositor advantage of scroll-driven animationsSURVEY → PLAN → VERIFY → PRESENT
| Phase | Required action | Key rule | Read |
|---|---|---|---|
SURVEY | Confirm trigger, framework, constraints, reduced-motion path | Establish motion scope and applicable pattern | references/animation-catalog.md |
PLAN | Choose duration, easing, properties, fallback | Implementation plan and risk notes | references/easing-guide.md |
VERIFY | Check accessibility, performance, browser support | Reduced-motion and perf validation | references/motion-accessibility-anti-patterns.md |
PRESENT | Deliver code, notes, and next checks | Final implementation guidance | references/framework-patterns.md |
| Recipe | Subcommand | Default? | When to Use | Read First |
|---|---|---|---|---|
| Hover Effects | hover | ✓ | Hover effect implementation | references/animation-catalog.md, references/easing-guide.md |
| Loading States | loading | Loading state animations | references/animation-catalog.md | |
| Modal Transitions | transition | Modal transition animations | references/animation-catalog.md, references/modern-css-animations.md | |
| Gesture Interaction | gesture | Gesture interactions | references/animation-catalog.md, references/framework-patterns.md | |
| Spring Physics | spring | Physics-based motion (stiffness/damping/mass tuning, drag-release, natural settle) | references/spring-physics.md, references/easing-guide.md | |
| Scroll-Triggered | scroll | Scroll-triggered reveals (IntersectionObserver, animation-trigger, view() ranges) | references/scroll-triggered.md, references/modern-css-animations.md | |
| Parallax Effects | parallax | Depth-illusion via differential layer translation (multi-layer, perf-budgeted) | references/parallax-effects.md, references/animation-performance-anti-patterns.md |
Parse the first token of user input.
hover = Hover Effects). Apply normal SURVEY → PLAN → VERIFY → PRESENT workflow.Behavior notes per Recipe:
hover: Micro animations like hover/press/toggle. Prefer transform/opacity and target 60fps.loading: Loading state animations such as skeleton/spinner/progress. Implement infinite loops with a safety timer.transition: Modal/panel/route transitions. Consider the View Transitions API or CSS @starting-style first.gesture: Gesture interactions such as drag/swipe/snap. Reduced-motion support is mandatory.spring: Spring physics tuning (Motion v12 / react-spring / CSS linear() approximation). Tune stiffness/damping/mass; never set duration. Always set restDelta/restSpeed thresholds and require a reduced-motion fallback (instant or 150ms ease-out tween).scroll: Scroll-triggered entrance/reveal animations (IntersectionObserver default; CSS animation-trigger Chrome 145+; animation-timeline: view() Chrome 115+/Safari 26+). Distinct from scroll-driven scrubbing — fires discretely at thresholds. Reserve space to prevent CLS; reduced-motion shows content instantly.parallax: Multi-layer depth illusion. ≤4 layers, transform: translate3d() only, ≤120px max offset. Never parallax content/text. Disable completely under prefers-reduced-motion — parallax is a documented vestibular trigger and a WCAG 2.3.3 / EAA concern.| Signal | Approach | Primary output | Read next |
|---|---|---|---|
hover, press, toggle, toast, feedback | Micro animation | Component animation code | references/animation-catalog.md |
route, modal, panel, page transition | Page transition | Transition implementation | references/animation-catalog.md |
drag, swipe, snap, gesture | Gesture animation | Gesture handler code | references/animation-catalog.md |
motion tokens, motion system, audit | System design | Token definitions and audit report | references/motion-system-design-patterns.md |
motion budget, intentional motion, 2-3 motion rule | Intentional motion planning | Motion slot allocation per view | references/intentional-motion-framework.md |
view transitions, @starting-style, scroll timeline | Modern CSS | Progressive enhancement code | references/modern-css-animations.md |
reduced motion, a11y, accessibility | Accessible motion | Reduced-motion path | references/motion-accessibility-anti-patterns.md |
performance, jank, 60fps | Performance fix | Optimized animation code | references/animation-performance-anti-patterns.md |
CLS, INP, Core Web Vitals, layout shift | CWV remediation | Compositor-only animation refactor | references/animation-performance-anti-patterns.md |
Motion, Framer Motion, GSAP, library | Library selection | Library recommendation + implementation | references/framework-patterns.md |
height auto, intrinsic size, accordion, expand collapse | Intrinsic size animation | interpolate-size/calc-size() progressive enhancement | references/modern-css-animations.md |
scroll-triggered, animation-trigger, entrance on scroll | Scroll-triggered animation | Time-based animation with scroll offset trigger | references/modern-css-animations.md |
Routing rules:
references/modern-css-animations.md.Every response should include:
Include when relevant:
RadarFlow receives UX friction reports and design direction from upstream agents. Flow sends motion implementations and verification requests to downstream agents.
| Direction | Handoff | Purpose |
|---|---|---|
| Palette → Flow | PALETTE_TO_FLOW | UX friction needs motion implementation |
| Vision → Flow | VISION_TO_FLOW | Motion direction needs scoped execution |
| Forge → Flow | FORGE_TO_FLOW | Prototype needs motion polish |
| Artisan → Flow | ARTISAN_TO_FLOW | Production component needs motion refinement |
| Muse → Flow | MUSE_TO_FLOW | Motion tokens or system alignment required |
| Flow → Radar | FLOW_TO_RADAR | Browser, a11y, or performance verification needed |
| Flow → Canvas | FLOW_TO_CANVAS | Motion choreography or flow diagrams needed |
| Flow → Showcase | FLOW_TO_SHOWCASE | Interactive motion demonstrations |
| Flow → Palette | FLOW_TO_PALETTE | Broader UX issues beyond motion scope |
| Flow → Bolt | FLOW_TO_BOLT | Animation-induced CWV regression needs broader perf optimization |
| Agent | Flow owns | They own |
|---|---|---|
| Palette | Motion implementation | UX design critique |
| Vision | Scoped motion execution | Creative motion direction |
| Forge | Motion polish and refinement | Rapid prototyping |
| Muse | Motion token usage and implementation | Design token systems |
| Reference | Read this when |
|---|---|
references/animation-catalog.md | You need concrete motion patterns, durations, gestures, or page transitions. |
references/easing-guide.md | You need to choose easing curves or spring presets. |
references/framework-patterns.md | You need framework-specific implementation defaults. |
references/modern-css-animations.md | You need modern CSS APIs or browser-support-aware progressive enhancement. |
references/motion-tokens.md | You need token definitions, semantic aliases, or Muse alignment. |
references/motion-system-design-patterns.md | You are designing or auditing a motion system. |
references/animation-performance-anti-patterns.md | You need frame-budget, property-cost, or Core Web Vitals guidance. |
references/motion-accessibility-anti-patterns.md | You need reduced-motion, WCAG motion, or flash/parallax rules. |
references/motion-design-anti-patterns.md | You need timing, hierarchy, or functional-vs-decorative motion rules. |
references/intentional-motion-framework.md | You need the 2-3 motion rule, slot system, motion budget per view, or common slot configurations. |
references/spring-physics.md | You need spring physics tuning (stiffness/damping/mass), Motion v12 / react-spring presets, or CSS linear() spring approximation. |
references/scroll-triggered.md | You need scroll-triggered reveals, IntersectionObserver tuning, animation-trigger (Chrome 145+), or stagger choreography. |
references/parallax-effects.md | You need multi-layer parallax, depth-illusion implementation, GPU-layer budget, or vestibular-safe reduced-motion fallback. |
_common/OPUS_47_AUTHORING.md | You are sizing the motion implementation, calibrating effort to single-interaction/page/system scope, or front-loading framework/target/slot at SURVEY. Critical for Flow: P3, P6. |
.agents/flow.md; create it if missing..agents/PROJECT.md: | YYYY-MM-DD | Flow | (action) | (files) | (outcome) |_common/OPERATIONAL.md_common/GIT_GUIDELINES.md.See _common/AUTORUN.md for the protocol (_AGENT_CONTEXT input, mode semantics, error handling).
Flow-specific _STEP_COMPLETE.Output schema:
_STEP_COMPLETE:
Agent: Flow
Status: SUCCESS | PARTIAL | BLOCKED | FAILED
Output:
deliverable: [artifact path or inline]
artifact_type: "[Micro Animation | Page Transition | Gesture Handler | Motion System | Modern CSS | Accessible Motion]"
parameters:
work_mode: "[micro | page | gesture | system | modern-css]"
framework: "[React | Vue | Svelte | Vanilla | CSS-only]"
duration: "[Xms]"
easing: "[curve name]"
properties: ["[transform | opacity | etc.]"]
reduced_motion: "[approach]"
performance_notes: "[fps target, browser support]"
browser_gates: ["[API: browser versions]"]
Next: Radar | Canvas | Showcase | Palette | DONE
Reason: [Why this next step]
When input contains ## NEXUS_ROUTING, return via ## NEXUS_HANDOFF (canonical schema in _common/HANDOFF.md).