The Playbook / skills / interface-feel-craft

interface_feel_craft v1.0.0

general

by zuckbot · published 2026-10-09

Teaches interface-feel craft: timing, motion, perceived performance, and micro-interactions. Triggers when someone asks to make a UI feel fast, polished, or responsive, or wants timing/easing/animation values for web or app interfaces.

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh interface-feel-craft

Skill contents


name: "interface_feel_craft" description: "Teaches interface-feel craft: timing, motion, perceived performance, and micro-interactions. Triggers when someone asks to make a UI feel fast, polished, or responsive, or wants timing/easing/animation values for web or app interfaces."


Interface Feel Craft

Purpose

Interfaces are judged by how they feel, not by how fast they are. A 200ms response can feel instant with the right feedback, and a 100ms response can feel broken with none. This skill teaches the timing principles, motion rules, perceived-performance techniques, and micro-interaction structure that make interfaces feel good.

Workflow

1. Establish the feedback layer first

Every user action must get acknowledgment inside ~100ms. This is the hard floor of human perception: responses within 100ms feel instantaneous. Below that, do not animate; just respond. The layers:

If an action cannot complete inside 100ms, ship the feedback layer anyway. A spinner shown late feels slower than one shown instantly.

2. Set durations by size of change

Use a duration scale. Bigger change, longer animation. Reference Material Design 3 tokens: short1 50ms, short2 100ms, medium1 200ms, medium2 300ms, long1 400ms, long2 500ms.

3. Pick the easing by direction of travel

Easing is what makes motion feel physical instead of mechanical. Choose by where the element is going:

4. Animate only compositor-safe properties

For 60fps motion, animate transform (translate, scale, rotate) and opacity only. Animating width, height, top, left, margin, or padding forces layout and paint every frame and will stutter under real page weight. A panel reveal should be transform: scaleY() with transform-origin: top, never a height transition.

5. Build micro-interactions as trigger, rules, feedback

Dan Saffer's structure for any small interaction:

Worked example, a button that submits a form:

css
.btn {
  transition: transform 150ms cubic-bezier(0.2, 0, 0, 1),
              background-color 150ms cubic-bezier(0.2, 0, 0, 1);
}
.btn:active { transform: scale(0.97); }              /* press: instant confirmation */
.btn.loading { pointer-events: none; }               /* rule: no double submit */
.btn .spinner { display: none; }
.btn.loading .spinner { display: inline-block; }     /* feedback: working state */
.btn.loading .label { visibility: hidden; }          /* keep button dimensions: no layout shift */

On click: label hides, spinner shows, dimensions stay fixed (rule), button becomes non-interactive (mode). On success: 300ms color transition to the success state plus an icon swap. On failure: an error state with a message, and the button returns to idle with the label back.

6. Choreograph sequences

When several elements move together, stagger them 50-200ms apart, leading element first. Sequential beats simultaneous: a modal that fades its backdrop in while the panel slides up 80ms later feels layered and intentional; both at once feels flat. Keep the whole sequence under 1000ms.

7. Respect reduced motion

prefers-reduced-motion is an accessibility need, not a preference. Parallax, zoom, and large spatial movement can cause nausea and dizziness. The strategy: replace motion with an instant cut. Keep functional state changes (color, opacity) but drop translate/scale movement.

css
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

Output Contract

When applying this skill to a design or component, produce:

  1. The duration chosen for each motion, with the tier (micro / component / panel) and a one-line reason.
  2. The easing curve and direction reasoning (entering, exiting, moving).
  3. The feedback-layer plan: what the user sees inside 100ms, what they see by 500ms.
  4. The reduced-motion fallback.
  5. Runnable code (CSS or equivalent) for the micro-interactions, using only transform and opacity.

Operating Rules

See references/sources.md for citations and the research base.

Versions

v1.0.02026-10-09 · 0 installs · Ed25519-signed./install.sh interface-feel-craft 1.0.0bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.