Story, cursor and loops
intermediate·8 min·Markdown for agents
What this lesson teaches
Script an animated product demo with three to five beats, a cursor that moves like a hand, a poster frame that works alone, and a loop that resets for a reason.
Watch the pointer. It travels to the empty assignee, presses, the menu opens from that button, it picks Maya, and the result lands twice: her avatar on the row, a small toast at the bottom. Then everything holds still long enough to read.
An animated demo is a short film the viewer did not ask for. Every move needs a reason, and the whole thing has to survive being watched twice.
Pick the story's shape
What is the product valued for? That decides the shape:
- How it feels to use. The gesture is the story: a cursor does one satisfying thing and the result appears under its hand. The demo above is this kind.
- A flow in an app. A few screens told as one continuous object, the payoff on the last.
- What the system does. The consequence lands somewhere else, and the link is drawn: a value travelling along a line, a card flying into a list. Usually no cursor at all.
And one tie-breaker from Benji Taylor: between a richer story and a calmer, better-framed one, choose the frame.
Beats and the payoff
- 10 to 16 seconds per loop, 3 to 5 beats, building to a . One gesture and one response can be enough.
- Open on a finished screen that works as a still. The first real content is there before the first beat.
- The payoff arrives whole and is visible at the shown size: a panel, a state change, a card coming forward. Never a blank surface for a quarter second.
- The payoff holds about 2 seconds, and nothing sits still for more than 3.
Resets that have a reason
A loop has to get back to the start. A good has a seen cause (an undo with its keys shown, a Clear button, a panel closing), or it happens while hidden. Data never rewinds in view. A number counting backwards on screen looks like a bug, because it is one.
Also: no product shrinks an app back into its notification. Leave the way the real product leaves.
Two clocks: story and product
Storytelling motion is unhurried. Taylor's kit moves things across the stage on cubic-bezier(0.45, 0, 0.1, 1) and brings new things in over 0.8 to 1 second on cubic-bezier(0.25, 0.8, 0.25, 1).
But the product's own feedback, a button press, a menu opening, keeps the product's real speed, under 300ms. That menu in the demo opens in about 240ms. Only the story slows down; the UI never does.
| Motion in the kit | Value |
|---|---|
| A card flying to its slot | 750ms on a soft arc, no bounce on landing |
| A new row opening | height over 0.42s, content fading in with it |
| A popover | scales over 0.24s from the side nearest its trigger |
| A stagger within a scene | 40 to 80ms apart, in reading order |
A cursor that moves like a hand
The cursor is a character. Drag the slider, then move both:
clamp(260 + 0.9 × distance, 300, 650) ms. Try 40px: the fixed cursor takes more than twice as long for a tiny hop.
The rules for the pointer, with the numbers from Stageshow's code:
- Travel is timed by distance on a shallow arc:
clamp(260 + 0.9 × distance, 300, 650)ms, bowing sideways by up to 24px. - A press reads: a short pause on arrival, the pointer dips to 0.9 for a moment, and the state changes after the click completes. The pressed control shows its own press.
- It never covers the words it clicks. Aim inside the target, off its text, about 85% across and 60% down.
- It rests on empty surface near its next move, never parked on a control, and fades after about 4 seconds still.
- Its shape comes from what it crosses: an I-beam over text, a hand on a link, an open hand over something draggable. That is the , and it switches as the pointer crosses the edge, not after it arrives.
Drags, selections and phones
A drag is one motion: the thing follows the pointer the whole way. The , where the hand took hold, stays fixed through travel and drop. A carried card lifts slightly (scale 1.03, a deeper shadow, a degree of tilt) and lands flat.
A text selection reads left to right from a word boundary and stays under the I-beam on every frame. Nothing scrolls unless the pointer is over it. And the camera pushes in only when the payoff would be too small to read, once per story.
On a phone there is no arrow cursor. A touch dot appears only where the finger taps or drags. A swipe is a flick: a third of the screen in about a quarter second. A notification is tapped to open its app, the way people actually use phones.
Script this faux UI as an animated demo: - Story shape: how it feels to use. One gesture: assign the selected conversation to Maya. - 4 beats: travel to the assignee, press, pick Maya from the menu, result lands (avatar on the row + a toast). Payoff holds 2s. - Set the poster frame first: the assigned state with the toast visible. - Cursor travel clamp(260 + 0.9 × distance, 300, 650)ms on a shallow arc; aim off the label (85% across, 60% down); rest on empty surface. - The menu opens at product speed (~240ms) from its trigger; story motion may be slower. - play once with a Replay button, or loop with a visible cause for the reset and a pause button if it runs over 5s.
Quick check
Your demo loops every 12 seconds. At the end, the revenue number on screen counts back down from $4,210 to $3,980 so the next loop can count up again. What should change?
In the skill
The nodes your agent reads when it does this work.
- Demo story and loopsThe timeline of an animated product demo — one of three story shapes, 3–5 beats in 10–16 s, a poster frame that tells the story alone, a payoff held 2 s, resets that have a cause, data that never rewinds in view, two storytelling curves beside product-quick feedback, and the measured kit values for flights, rows, rolling text and connectors.
faux-ui/demo-story-and-loops - Demo cursor and touchDriving a product demo like a hand — cursor kinds set by the elements it crosses, travel timed by distance on a shallow arc, a visible press, never over the label it clicks, rests on empty surface; drags as one motion with a fixed grab offset; selections that stay under the I-beam; one camera push-in; phones driven by touch with flicks and UIKit-quick responses.
faux-ui/demo-cursor-and-touch
Connected lessons
What this lesson builds on and leads to, across every course.