fluid-interaction-review
Skill16 starsChanged 5 months agoMITView on GitHub
Build or review gesture-driven web interactions such as drag, swipe, sheets, carousels, and draggable panels. Use when pointer tracking, interruption, velocity handoff, momentum projection, hysteresis, rubber-banding, spatial continuity, or motion/transparency/contrast fallbacks materially affect the interaction.
In this repository94 other files it gives its agents.
- agent-friction-ledgerSkill
- agent-learning-layer-triageSkill
- agent-operations-contractSkill
- agents-best-practicesSkill
- agent-tool-contract-reviewSkill
- anti-slop-reviewSkill
- architecture-deepening-reviewSkill
- assumption-excavationSkill
- authorized-security-routerSkill
- book-to-skillSkill
- bounded-evaluationSkill
- bounded-growth-loopSkill
- bounded-orchestration-contractSkill
- brief-first-executionSkill
- browser-verificationSkill
- bug-evidence-protocolSkill
- codex-review-loopSkill
- compaction-survivalSkill
- complexity-optimizerSkill
- confidence-fragility-reviewSkill
- context-degradation-reviewSkill
- corporate-surfaceSkill
- delivery-baseline-auditSkill
- delivery-preflight-gateSkill
- design-critique-polishSkill
- designmd-brand-kitSkill
- design-register-bootstrapSkill
- diagnoseSkill
- doc-grounded-grillingSkill
- doc-to-lora-evaluatorSkill
- durable-context-maintenanceSkill
- dynamic-workflow-packetsSkill
- editorial-surfaceSkill
- evidence-ledger-researchSkill
- filesystem-context-disciplineSkill
- frontend-product-builderSkill
- frontend-taste-layerSkill
- git-native-context-contractSkill
- goal-loop-designerSkill
- graph-guided-code-readingSkill
- handoffSkill
- happy-handoffSkill
- html-brief-artifactSkill
- html-diagram-artifactSkill
- hypothesis-diversificationSkill
- idea-to-ship-gatesSkill
- knowledge-base-enrichmentSkill
- lean-context-layoutSkill
- local-inference-tuningSkill
- loop-hardening-contractSkill
- loopops-protocolSkill
- loop-readiness-reviewSkill
- lottie-motion-builderSkill
- minimal-diff-builderSkill
- motion-review-gateSkill
- overengineering-reviewSkill
- personal-workspace-routerSkill
- phase-spec-executionSkill
- pipeline-readiness-gateSkill
- plan-to-issuesSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Use this only for direct-manipulation surfaces.
- Distinctive: line 38
Prefer a mature interaction library when it already satisfies the contract.
- Distinctive: line 42
Treat these as independent modes.
- Distinctive: line 55
Test slow drag, fast flick, boundary overshoot, pointer cancellation, axis ambiguity, and repeated rapid input.
- Distinctive: line 56
Test mouse/touch or faithful emulation, keyboard operation, native scrolling, and the three fallback modes.
- Very specific: line 57
Run motion-review-gate for general purpose, frequency, timing, GPU-property, and reduced-motion checks.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Fluid Interaction Review
Use this only for direct-manipulation surfaces. It complements motion-review-gate; it is not a general visual-style or Apple-look preset.
Best Fit
- drawers, sheets, swipe actions, carousels, sliders, scrubbers, and draggable panels;
- gesture code using Pointer Events, Motion, Framer Motion, or a library with equivalent primitives;
- reviews where a transition looks acceptable after release but feels disconnected during manipulation.
Do Not Use For
- ordinary buttons, forms, tables, or static marketing sections;
- adding glass, bounce, sound, or haptics as decoration;
- replacing stable library behavior without a reproduced interaction defect;
- imposing universal spring constants or visual styling.
Interaction Contract
- Continuous tracking — while dragging or swiping, the surface follows the pointer 1:1. Preserve the offset from the point where the user grabbed it; do not jump to the element center.
- Pointer ownership — use Pointer Events and
setPointerCapture(pointerId)when implementing custom gestures so tracking survives leaving the element bounds. Release or cancel capture cleanly. - Interruptibility — a moving surface can be grabbed and redirected immediately. Retarget from the current on-screen value and current velocity, not from a stale logical target. Never lock input until an animation finishes.
- Velocity handoff — sample a short, timestamped movement history and pass release velocity into the settling spring. Guard zero distance, sparse events, and extreme velocity.
- Momentum projection — when a flick can cross snap points, select the destination from a bounded projection of release velocity, then settle with the handed-off velocity. Do not choose solely from release position.
- Hysteresis — keep the gesture undecided until movement exceeds a small, input-appropriate threshold. Resolve axis and intent before suppressing native scrolling or committing an action.
- Soft boundaries — beyond a real bound, apply progressively increasing resistance. Do not hard-stop while the pointer is still moving. Clamp the final resting state to a valid target.
- Spatial continuity — enter and exit use the same spatial path unless product meaning requires otherwise. Popovers and panels originate from their trigger or manipulation source; reversible motion preserves direction and velocity continuity.
Prefer a mature interaction library when it already satisfies the contract. Custom physics requires focused tests and browser evidence.
Accessibility Fallbacks
Treat these as independent modes; test combinations, not only each mode alone:
prefers-reduced-motion: reduce: remove momentum, elastic overshoot, parallax, and large spatial travel; retain state feedback through static change or a short non-spatial fade;prefers-reduced-transparency: reduce: replace translucent surfaces with a sufficiently opaque or solid surface when the browser supports the query; keep a solid default/fallback where it does not;prefers-contrast: more: strengthen surface separation, focus indication, controls, and text contrast without depending on blur or transparency.
Pointer behavior must retain keyboard, focus, click/tap, cancellation, and native-scroll semantics. Visual press feedback may start on pointer-down; destructive or committed actions still follow the component's accessible activation contract.
Review Procedure
- Identify the gesture state machine: idle, possible, active, settling, cancelled.
- Trace pointer position, grab offset, timestamps, velocity, projected target, and bounds.
- Interrupt the interaction during settling and reverse direction.
- Test slow drag, fast flick, boundary overshoot, pointer cancellation, axis ambiguity, and repeated rapid input.
- Test mouse/touch or faithful emulation, keyboard operation, native scrolling, and the three fallback modes.
- Run
motion-review-gatefor general purpose, frequency, timing, GPU-property, and reduced-motion checks.
Required Evidence
- browser and route/component tested;
- input modes tested;
- current-value interruption and reversal result;
- velocity/projection and boundary result;
- keyboard, focus, cancellation, and native-scroll result;
- reduced motion, transparency, and contrast result, including unsupported-query fallback;
- targeted automated tests, or an explicit reason they are not practical.
Source inspection or a successful build alone is insufficient interaction evidence.
Output
Return findings first:
| Severity | Evidence | Contract breach | Smallest fix |
| block / high / medium / low | file:line plus observed behavior | named rule | bounded correction |
Then include:
- Decision:
Block,Needs changes, orApprove. - Interaction evidence: tested gesture and fallback matrix.
- Unverified: any input, browser, accessibility mode, or device not tested.
Attribution
Adapted from Emil Kowalski's MIT-licensed apple-design skill, chiefly its direct-manipulation, interruptibility, velocity, momentum, hysteresis, resistance, spatial-consistency, and accessibility guidance. Re-shaped into a bounded ABVX web-interaction contract; it does not adopt Apple visual styling or universal physics constants.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

