Skip to content

Scripted demos

Product demos built as live, scripted screens.

Each demo used to carry its own, and there were seven. A fix for a reset bug would land in one and be missing from the other six. I built one player with Claude Code and moved them all onto it.

export · scripted demo

Export frame

Hero frame · 760 × 440

Format

PNG
SVG
PDF

Scale

2×

1×2×3×4×

File name

Untitled.png

≈ 602 KB

Saves to Downloads

Cancel
Export

export.tour.ts

6 steps · 10.3s

  1. setFormat("PNG"); setScale(2); setName("")1.1s
  2. pressOn("format-svg")1.5s
  3. dragTo("scale-track", 3)2.1s
  4. pressOn("file-name"); type("hero-frame")2.3s
  5. pressOn("export")0.9s
  6. hold(1000); moveTo(park) → loop2.4s

What it has set

line

format
"PNG"
1
scale
2
1
name
""
1
exported
false
1

What it is

The player behind every demo on this site. Each demo is a short script of steps, like click this, drag that or type here, and the player moves a cursor through them on the real interface.

Why I needed it

A screen recording would be heavy or blurry, and every change to a screen would mean recording and editing it again, down to how the cursor moves and how fast. I work systematically, so I built the demos in code instead.

How I did it

I designed it and built it with Claude Code. Each demo is a list of steps. At every step, the player looks up the control by name, measures where it is on screen right now and animates the cursor there. Scrolling and zooming move or scale the whole page underneath.