motion-and-haptics

Designs deliberate animation, haptic, and sound feedback for Flutter app interactions.

Updated Aug 22, 2026
One-click install
npx skills add https://github.com/zakariaf/NearlyStop --skill motion-and-haptics-zakariaf
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: motion-and-haptics
Source: https://github.com/zakariaf/NearlyStop/tree/main/.claude/skills/motion-and-haptics
Command: npx skills add https://github.com/zakariaf/NearlyStop --skill motion-and-haptics-zakariaf

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Flutter apps that rely on default Material feedback feel unfinished: taps go unacknowledged, haptics fire per animation frame, celebrations loop forever, and reduced-motion users hit broken states. This Skill enforces a designed feedback layer where every interaction is acknowledged in the same frame and every moment degrades gracefully. ## Core Features & Use Cases - Moment catalog: Defines six named moments (press, reject, commit, success, increment, transition), each declaring its trigger, duration role, haptic slot, and reduced-motion fallback before implementation. - Centralized haptics: Maps events to a HapticTheme ThemeExtension with intensity ceilings, one haptic per committed event on the commit frame, and a single central toggle gating all haptics. - Bounded celebrations and stop conditions: Requires interruptible animations, tap-to-skip celebrations that play once, and explicit stop conditions for repeating animations when off-route, backgrounded, or under reduced motion. - Use Case: When adding a success animation for a completed task in a Flutter app, use this Skill to declare the moment's trigger, duration role, haptic slot, and reduced-motion fallback, then wire the haptic through the HapticTheme map instead of calling HapticFeedback at the call site. ## Quick Start Use the motion-and-haptics skill to design the press, commit, and success feedback for my Flutter app's new checkout flow, including haptic slots and reduced-motion fallbacks.

Frequently Asked Questions about motion-and-haptics

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

FAQPage Schema
How do I add haptic feedback to a Flutter app correctly?

Map each event to at most one HapticFeedback verb in a HapticTheme ThemeExtension, then fire it once on the commit frame after state changes. Never call HapticFeedback from animation listeners, onEnd callbacks, or per item in coalesced gestures, and gate everything behind one central toggle.

How should Flutter animations handle reduced motion settings?

Each animation declares its reduced-motion fallback at design time: cross-fade to the end state, appear already complete, or omit the flourish. The end state must be identical and reachable with animations disabled, and feature code never re-reads the platform flag per animation.

When should I use heavyImpact haptics in Flutter?

Reserve heavyImpact for a genuine milestone only, never for errors. Rejection uses the lightest slot that registers, since escalating intensity punishes the user for a mistake the interface could have prevented.

Why does my Flutter celebration animation feel annoying?

Celebrations fail when they loop, block input, spawn from screen edges, or have unbounded element counts. They should play once, originate from the point of action, resolve quickly to the next interactive state, and be skippable with a tap.

How do I stop a repeating Flutter animation from draining battery?

Every repeating or ambient animation needs an explicit stop condition: it must stop when its route is not current, when the app is backgrounded, and under reduced motion. A repeat() call with no stop condition is a battery bug no test will catch.