ui-animation

Designs, reviews, and reverse-engineers UI motion including springs, gestures, and easing curves.

Updated Sep 8, 2026
One-click install
npx skills add https://github.com/pedropenha/project-skills --skill ui-animation-pedropenha
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ui-animation
Source: https://github.com/pedropenha/project-skills/tree/main/.agents/skills/ui-animation
Command: npx skills add https://github.com/pedropenha/project-skills --skill ui-animation-pedropenha

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires ffmpeg, opencv-python, numpy, scipy, and includes scripts (resource) and references (resource) components.

What problem does it solve? UI animation work often ships with sluggish easing, janky layout-property transitions, and motion that feels off without a diagnosable cause. This Skill provides a decision framework, component recipes, and measurement scripts so motion is purposeful, performant, and reproducible. ## Core Features & Use Cases - Motion design and implementation: Decide whether an interaction should animate, pick easing and duration from named curves, and apply recipes for modals, drawers, toasts, popovers, and drag gestures using CSS transitions, WAAPI, or Motion springs. - Animation review and debugging: Audit animation code against ten standards with a Block/Approve verdict, and diagnose symptoms like sluggish, robotic, cheap, or jumpy motion via symptom-indexed tables. - Reverse-engineering from recordings: Extract frames with ffmpeg, track motion with OpenCV, and fit spring or cubic-bezier parameters to reproduce an observed animation as code for CSS, Motion, SwiftUI, React Native, or UIKit. - Use Case: Given a screen recording of an iOS drawer animation, run the extraction and curve-fitting scripts to recover its stiffness, damping, and duration, then emit a matching React Motion implementation plus a handoff spec. ## Quick Start Ask the agent to add a smooth open animation to your dropdown component, or to reverse-engineer the motion from an attached screen recording.

Frequently Asked Questions about ui-animation

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

FAQPage Schema
How do I reverse-engineer an animation from a screen recording?▼

Extract frames with the bundled extract_frames.py script using ffmpeg, then track the element with track_motion.py and fit spring or cubic-bezier parameters with fit_curves.py. Pass the same fps used during extraction to fitting, then emit code from the per-target templates.

Should I use CSS transitions or JavaScript for UI animation?▼

Prefer CSS transitions for interruptible UI since keyframes restart from zero on interruption while transitions retarget. The priority order is CSS transitions, then WAAPI, then CSS keyframes, then JS requestAnimationFrame, because CSS stays smooth under main-thread load.

Why does my animation feel sluggish or cheap?▼

Sluggish motion usually comes from ease-in curves, weak built-in easings, or durations over 300ms on frequent interactions. Cheap-feeling motion often starts from scale(0), uses a wrong transform-origin, or shows two overlapping states during a crossfade without a blur bridge.

Does framer-motion still work for new React animation projects?▼

The package is now named motion and React imports come from motion/react. The old framer-motion package still resolves, so a mixed codebase compiles while shipping two copies of the library; install motion for new work.

What are the limitations of fitting curves to recorded animations?▼

Fit error above 0.08 usually indicates multi-phase motion that must be split and fitted per segment. Variable-frame-rate recordings and sampling above the source rate create duplicated frames that inflate error, and open/close directions must be fitted separately.