Feel · interactions built on physics

A skill for coding agents. Say how an interaction should feel and your agent builds it on a body with mass, a spring and damping, in a force field. Nothing has a hand-picked duration. Each figure below is the live component beside the motion it just made: the dashed line is what the model predicted, the orange line is what the component did.

npx skills add diip3sh/feel

01 · Heavy toggle

02 · Magnetic drawer

03 · Card thrown to a corner

04 · Detented knob

Install

npx skills add diip3sh/feel

What you install is one folder: the skill, its runtime (one script, one stylesheet and the rig) and four example components. There is no npm install, and Node is only needed for the audit. Or clone it:

git clone https://github.com/diip3sh/feel ~/.claude/skills/feel

How to use it

/feel a toggle that feels heavy, React
/feel bottom sheet with three magnetic stops, slightly bouncy

How it works

  1. 01Words to physics. Feel.words("heavy, snappy") returns a mass, a natural frequency and a damping ratio, and from them stiffness and damping.
  2. 02Choose the model. A spring to a target, magnets that catch a coasting body, walls that stop the overshoot, on a line, in a plane or around a dial.
  3. 03Build on a body. A tap moves the target. A drag pulls through a hand spring, so heavy things lag. A release keeps the real velocity, and the decision comes from where it would coast.
  4. 04Measure it. The rig draws the path the model predicted, walls and fields included, under what the component did. Switch it to CSS keyframes and each release is baked from the same model and played by the browser.
  5. 05Audit. node scripts/audit.mjs fails on any hand-picked duration, easing curve or timer that moves things.

Keys

Tab
Focus a figure, its component or a control in its margin
Space
Toggle the switch
1–4
Send the drawer to a stop, or the card to a corner
[]
Step the knob one detent
←→↑↓
Step the focused component
F
Flick it