mcpField
A
apple-design-interaction

apple-design-interaction

github.com/s1gmamale1Design & UI3155 installsUpdated 22w ago
Repository

About apple-design-interaction

A design skill for deciding how interfaces navigate, respond to state changes, and handle input. It is intended for interface designers and builders who need functional behavior guidance alongside Apple’s visual and motion design skills.

Key features

  1. 01Navigation pattern selection
  2. 02Loading, empty, error, and disabled states
  3. 03Responsive feedback and optimistic updates
  4. 04Focus, keyboard, and touch input guidance
  5. 05Scroll behavior and reduced-motion guidance

Use cases

  1. 01Choose between tabs, sheets, and navigation stacks
  2. 02Plan recovery paths for errors and empty screens
  3. 03Improve feedback during slow operations
  4. 04Make actions accessible to keyboard and touch users

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/s1gmamale1/apple-design-skills --skill apple-design-interaction

After installing, type/apple-design-interactionin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
navigation-models.md
perceived-performance-and-input.md
state-and-feedback-logic.md

Details

From the project README

Apple Design — Interaction Logic (how it behaves, not how it looks)

The functional decision layer: which navigation, which state behavior, how it responds, and why. This is the technical/functionality half of Apple design — what makes an interface feel right beyond how it looks. Reach here for behavior decisions; reach for apple-design-motion for the animation that executes them and apple-design-os for the components they configure.

When to use

  • Choosing navigation/presentation: push vs sheet vs modal vs tab vs popover vs split-view vs full-screen.
  • Designing state behavior: loading/empty/error/disabled, optimistic updates, pull-to-refresh, pagination.
  • Tuning perceived performance / responsiveness.
  • Handling focus, keyboard, input, hit targets, pointer-vs-touch.

Core rules

  • Match navigation to information hierarchy. Push = drilling into a hierarchy; sheet/modal = a self-contained sub-task that returns; tab = peer top-level sections; split view = master/detail on wide screens; full-screen cover = an immersive/focused mode. Back must be obvious & predictable; preserve and restore state on return.
  • Respond in <100 ms, always. Instant visual feedback on touch; optimistic UI for likely-success actions; spinners only for >1 s, skeletons for content-shaped waits. Never block input behind a spinner.
  • Design every state, not just the happy path: loading, empty (with a path forward), error (with recovery), disabled (with a reason), success. Empty/error states are features, not afterthoughts.
  • Make targets reachable & affordant: ≥44 pt, primary actions in the thumb zone, visible focus, full keyboard operability; every gesture has a visible fallback.
  • Scroll is an input — decide consciously. Continuous scroll-progress motion (properties bound to scrollY) makes the user feel they are driving the interface. HELPS on flagship/marketing/product/onboarding surfaces where pacing and narrative are the goal — commit fully or skip entirely; half-measures read as glitches. HURTS on utility/productivity surfaces (lists, dashboards, forms, settings, docs) — it slows task completion and fights muscle memory; keep scroll plain and fast there. ABSOLUTE: never scroll-jack (never preventDefault wheel/touchmove, never overflow:hidden fake-scroll, never page-level vertical snap). You may smooth the read value via lerp; you may never seize control of the scrollbar position. Always preserve a working native scrollbar and keyboard scroll. Pointer-reactive motion (tilt, magnetic, spotlight) is (pointer:fine) desktop-only sugar — touch users must lose nothing. Gate all scroll-driven transforms under prefers-reduced-motion. → See references/perceived-performance-and-input.md §Scroll as a continuous input/affordance + apple-design → restraint-and-antislop.md for the surface-axis classification.

References

FileUse for
references/navigation-models.mdpush/sheet/modal/tab/popover/split-view/full-screen decision framework, back behavior, deep-linking, state restoration
references/state-and-feedback-logic.mdloading/skeleton/empty/error/disabled/optimistic behavior, pull-to-refresh, pagination/infinite scroll, validation timing
references/perceived-performance-and-input.mdlatency thresholds, instant feedback, prefetch/progressive loading; focus/keyboard/input/pointer-vs-touch + hit-target affordances; scroll-as-continuous-input decision (helps/hurts surface axis, momentum/inertia, never-scroll-jack absolute, reduced-motion degradation)

Common mistakes

  • Modal overuse (a sheet where a push belongs); unpredictable back; lost state on return.
  • Spinner for everything; blocking input; no optimistic UI; janky perceived performance.
  • Only the happy path — no empty/error/disabled design.
  • Gesture-only actions with no fallback; unreachable primary actions; no visible focus ring.

Related: the motion that animates these transitions → apple-design-motion · the components these decisions configure → apple-design-os · grid reflow/adaptivity → apple-design-foundations.

Comments

Markdown supported