AgentStack
SKILL verified MIT Self-run

Framer Motion

skill-tommylower-cortex-framer-motion · by tommylower

Production-ready Framer Motion patterns for React/Next.js: scroll-triggered fade-ups, staggered children for grids and lists, hover and tap micro-interactions, page transitions, layout animations, and shared element transitions. Use when adding animation to a React component, doing entrance animations on scroll, animating cards or list items, building interactive hover states, or polishing motion…

No reviews yet
0 installs
0 views
view→install

Install

$ agentstack add skill-tommylower-cortex-framer-motion

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Framer Motion? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Framer Motion Patterns

Animation patterns for React/Next.js using Framer Motion. Use for scroll-triggered reveals, hover states, transitions, and micro-interactions.

Installation

pnpm add framer-motion

Core Patterns

Fade-up on scroll (section entries)

import { motion } from 'framer-motion'

  {children}

Staggered children (card grids, lists)

const container = {
  hidden: {},
  show: {
    transition: {
      staggerChildren: 0.08,
    },
  },
}

const item = {
  hidden: { opacity: 0, y: 16 },
  show: { opacity: 1, y: 0, transition: { duration: 0.4 } },
}

  {items.map((i) => (
    {i}
  ))}

Hover scale (cards, buttons)


  {children}

Smooth accordion (FAQ)

import { AnimatePresence, motion } from 'framer-motion'

  {isOpen && (
    
      {content}
    
  )}

Navigation blur on scroll

const [scrolled, setScrolled] = useState(false)

useEffect(() => {
  const handler = () => setScrolled(window.scrollY > 20)
  window.addEventListener('scroll', handler)
  return () => window.removeEventListener('scroll', handler)
}, [])

Page/section transitions

Timing Guidelines

  • Micro-interactions (hover, tap): 100-200ms
  • Element reveals (fade-up): 300-500ms
  • Section transitions: 400-600ms
  • Stagger delay between children: 50-100ms
  • Spring stiffness for UI: 300-500
  • Spring damping for UI: 20-30

Principles

  • Every animation serves a purpose: direct attention, confirm interaction, or reveal content
  • No decorative animation — if removing it doesn't hurt clarity, remove it
  • Use viewport={{ once: true }} for scroll reveals so they don't replay
  • Prefer springs over duration-based for interactive elements (hover, drag)
  • Prefer easeOut for entrances, easeIn for exits
  • Keep total animation time under 600ms — anything longer feels sluggish
  • Use DialKit to tune spring values in real time during polish phase

Native View Transitions

If the task is specifically about route transitions, shared-element morphs, browser-native transitions, or React `, load view-transitions` instead of solving it with Framer Motion by default. View Transitions are better for continuity between DOM states; Framer Motion remains better for gesture-driven and component-local animation.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.