PluginBench
Skill
Pass
Audit score 90

motion

onmax/nuxt-skills

Production-ready Vue 3/Nuxt animation library with gestures, scroll effects, and spring physics

What is motion?

Motion Vue (motion-v) is a hardware-accelerated animation library for Vue 3 and Nuxt, ported from Framer Motion. Use it for declarative animations, gesture interactions, scroll-linked effects, and layout transitions with minimal bundle overhead.

  • Declarative animations on any HTML/SVG element with initial, animate, and exit states
  • Gesture-based interactions including hover, tap, and drag animations
  • Scroll-linked animations that trigger when elements enter the viewport
  • Layout animations and shared element transitions
  • Spring physics animations with customizable stiffness and damping
  • Composables like useMotionValue, useScroll, useSpring for programmatic control

How to install motion

npx skills add https://github.com/onmax/nuxt-skills --skill motion
Prerequisites
  • Vue 3 or Nuxt 3 project
  • pnpm/npm/yarn package manager
  • For Nuxt: add motion-v/nuxt module to nuxt.config.ts
Claude Code
Cursor
Windsurf
Cline

How to use motion

  1. 1.Install motion-v via pnpm add motion-v
  2. 2.For Nuxt, add motion-v/nuxt to modules in nuxt.config.ts
  3. 3.Import motion component from motion-v in your Vue components
  4. 4.Wrap elements with motion.div (or motion.button, motion.span, etc.) and define animation props
  5. 5.Use :initial, :animate, :exit, and :transition props for state-based animations
  6. 6.Add :whileHover and :whilePress for gesture interactions
  7. 7.Use :whileInView with :viewport for scroll-triggered animations
  8. 8.Load references/components.md for Motion component and gesture details, references/composables.md for useMotionValue and useScroll, or references/examples.md for animation patterns

Use cases

Good for
  • Adding fade, slide, and scale animations to page transitions and component reveals
  • Creating interactive button hover and press effects with spring physics
  • Building scroll-triggered animations that respond to viewport visibility
  • Implementing layout shift animations when DOM elements change position
  • Designing gesture-driven interactions like drag-to-dismiss or swipe animations
Who it's for
  • Vue 3 and Nuxt developers building interactive UIs
  • Frontend engineers implementing micro-interactions and polish
  • Designers translating motion specs into production code
  • Teams prioritizing bundle size and hardware acceleration

motion FAQ

When should I use Motion Vue vs GSAP?

Use Motion Vue for simple declarative animations, gestures, and scroll effects. Use GSAP for complex timelines, SVG morphing, and advanced scroll-triggered sequences.

How much does Motion Vue add to bundle size?

Motion Vue has minimal bundle size (~200 tokens base) and is hardware-accelerated. Load only reference files relevant to your current task to keep context efficient.

Can I use Motion Vue with Nuxt?

Yes. Install motion-v and @vueuse/nuxt, then add motion-v/nuxt to the modules array in nuxt.config.ts.

What animation types does Motion Vue support?

Declarative state animations (initial/animate/exit), gesture animations (whileHover/whilePress), scroll-linked animations (whileInView), spring physics, and layout transitions.

Do I need to load all reference files?

No. Load only files relevant to your task: components.md for Motion component and gestures, composables.md for useMotionValue and useScroll, or examples.md for patterns.

Full instructions (SKILL.md)

Source of truth, from onmax/nuxt-skills.


name: motion description: Use when adding animations with Motion Vue (motion-v) - provides motion component API, gesture animations, scroll-linked effects, layout transitions, and composables for Vue 3/Nuxt license: MIT

Motion Vue (motion-v)

Animation library for Vue 3 and Nuxt. Production-ready, hardware-accelerated animations with minimal bundle size.

Current stable: motion-v 1.x - Vue port of Motion (formerly Framer Motion)

Overview

Progressive reference for Motion Vue animations. Load only files relevant to current task (~200 tokens base, 500-1500 per sub-file).

When to Use

Use Motion Vue for:

  • Simple declarative animations (fade, slide, scale)
  • Gesture-based interactions (hover, tap, drag)
  • Scroll-linked animations
  • Layout animations and shared element transitions
  • Spring physics animations

Consider alternatives:

  • GSAP - Complex timelines, SVG morphing, scroll-triggered sequences
  • @vueuse/motion - Simpler API, less features, smaller bundle
  • CSS animations - Simple transitions without JS

Installation

# Vue 3
pnpm add motion-v

# Nuxt 3
pnpm add motion-v @vueuse/nuxt
// nuxt.config.ts - Nuxt 3 setup
export default defineNuxtConfig({
  modules: ['motion-v/nuxt'],
})

Quick Reference

Working on...Load file
Motion component, gesturesreferences/components.md
useMotionValue, useScrollreferences/composables.md
Animation examples, patternsreferences/examples.md

Loading Files

Consider loading these reference files based on your task:

DO NOT load all files at once. Load only what's relevant to your current task.

Core Concepts

Motion Component

Render any HTML/SVG element with animation capabilities:

<script setup lang="ts">
import { motion } from 'motion-v'
</script>

<template>
  <motion.div
    :initial="{ opacity: 0, y: 20 }"
    :animate="{ opacity: 1, y: 0 }"
    :exit="{ opacity: 0, y: -20 }"
    :transition="{ duration: 0.3 }"
  >
    Animated content
  </motion.div>
</template>

Gesture Animations

<motion.button
  :whileHover="{ scale: 1.05 }"
  :whilePress="{ scale: 0.95 }"
  :transition="{ type: 'spring', stiffness: 400 }"
>
  Click me
</motion.button>

Scroll Animations

<motion.div
  :initial="{ opacity: 0 }"
  :whileInView="{ opacity: 1 }"
  :viewport="{ once: true, margin: '-100px' }"
>
  Appears on scroll
</motion.div>

Available Guidance

references/components.md - Motion component variants, animation props, gesture props, layout animations, transition configuration

references/composables.md - useMotionValue, useSpring, useTransform, useScroll, useInView, animate()

references/examples.md - External resources, component libraries, animation patterns and inspiration