apple-design

Implements Apple-style fluid interface design with spring animations and gesture-driven interactions for the web.

2|1|Updated Aug 19, 2026
One-click install
npx skills add https://github.com/lanceyuu/mimiwork --skill apple-design-lanceyuu
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: apple-design
Source: https://github.com/lanceyuu/mimiwork/tree/main/coworker/skills/builtin/apple-design
Command: npx skills add https://github.com/lanceyuu/mimiwork --skill apple-design-lanceyuu

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Web interfaces often feel stiff and disconnected because animations are pre-scripted, gestures lack momentum, and motion cannot be interrupted mid-flight. This Skill translates Apple's fluid interface design principles from WWDC talks into concrete web techniques using CSS, Pointer Events, and spring libraries. ## Core Features & Use Cases - Spring-Based Motion: Apply damping ratio and response parameters instead of fixed-duration animations, with concrete values for drawers, rotations, and repositioning. - Gesture Engineering: Implement 1:1 drag tracking with Pointer Events, velocity handoff at release, momentum projection for flick landing points, and rubber-banding at boundaries. - Materials, Typography & Accessibility: Build translucent layers with backdrop-filter, size-specific type tracking and leading, and reduced-motion/reduced-transparency fallbacks. - Use Case: When building a bottom sheet that users can drag, flick, and re-grab mid-animation, use this Skill to wire pointer tracking, project the flick's resting position, and hand off release velocity to a spring so the motion feels continuous. ## Quick Start Review my bottom sheet drag interaction and rewrite it to use interruptible spring animations with velocity handoff following Apple design principles.

Frequently Asked Questions about apple-design

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

FAQPage Schema
How do I make web animations interruptible like iOS?▼

Use spring animations instead of CSS transitions or keyframes, since springs animate from the current on-screen value and can be re-targeted mid-flight. On interrupt, read the element's live transform and start the new animation from there, carrying velocity through the re-target to avoid a visible jump.

How to implement flick momentum projection in JavaScript?▼

Project the resting position with the formula (velocity/1000) * decelerationRate / (1 - decelerationRate), using a deceleration rate around 0.998. Add the projection to the current position, snap to the nearest target, then animate there with the release velocity as the spring's initial velocity.

What spring parameters should I use for UI animations?▼

Start with a damping ratio of 1.0 (critically damped, no overshoot) and a response of 0.3-0.4 seconds for most UI. Use damping around 0.8 only for momentum-driven interactions like flicks, where slight overshoot matches the gesture's physicality.

Can I use CSS transitions for gesture-driven animations?▼

CSS transitions and keyframes should be avoided for gesture-driven UI because they cannot be grabbed and reversed mid-flight. Use a spring library like Motion or Framer Motion that animates from the current value and blends velocity on re-targeting.

How do I handle reduced motion accessibility in animations?▼

Respond to the prefers-reduced-motion media query by replacing slides, springs, and parallax with short opacity cross-fades. Also handle prefers-reduced-transparency by making translucent surfaces solid, and prefers-contrast by adding defined borders.

Why does my drag interaction feel disconnected from the finger?▼

The element must track the pointer 1:1 while respecting the offset where the user grabbed it, not snapping to the element's center. Use Pointer Events with setPointerCapture so tracking continues outside the element's bounds, and record recent move events to compute release velocity.