Walkr — scriptable product walkthrough engine
npx claudepluginhub janhoon/walkrCreate product walkthrough demos with Walkr — guides agents through script authoring, preview, and export
Create polished web product demos, programmatically.
Walkr lets you script interactive walkthroughs of any website — animated cursor movements, clicks, typing, highlights — and export them as videos or embeddable players. Think screen recording, but deterministic, editable, and pixel-perfect every time.
Write a short TypeScript script, point it at your app, and get a production-ready product demo you can embed in your landing page, docs, or sales deck.

Walkr ships as a single CLI package that includes everything you need:
npm install -g @walkrstudio/cli
Or use it without installing:
npx @walkrstudio/cli dev demo.ts
sudo pacman -S chromiumsudo apt install chromium-browserbrew install --cask chromiumCHROMIUM_PATH to point at any Chrome/Brave/Edge binarymp4, webm, gif)Create a file called demo.ts:
import { walkr, moveTo, click, type, highlight, hover, wait, drag } from "@walkrstudio/core";
export default walkr({
url: "https://your-app.com",
title: "Signup walkthrough",
steps: [
moveTo("#email-input", { name: "Focus email field", duration: 600 }),
click("#email-input", { name: "Click email input" }),
type("[email protected]", { name: "Enter email", selector: "#email-input", delay: 35 }),
wait(300, { name: "Pause before highlight" }),
highlight(".submit-btn", { name: "Spotlight submit", spotlight: true, color: "#22d3ee", duration: 1200 }),
moveTo(".submit-btn", { name: "Move to submit", duration: 400 }),
click(".submit-btn", { name: "Submit form" }),
],
});
Preview with live reload:
walkr dev demo.ts
Export to video:
walkr export demo.ts --format mp4 --output demo.mp4
walkr dev <script> Start Walkr Studio with live script reload
walkr export <script> [options] Export walkthrough as video or embed
| Flag | Description | Default |
|---|---|---|
--format | mp4, gif, webm, or embed | mp4 |
--output | Output file path | output.<ext> |
--width | Video width in px | 1920 |
--height | Video height in px | 1080 |
--realtime | Use real-time screencast instead of virtual time | off |
Virtual time (default) uses Chrome's virtual time API to step through the walkthrough frame-by-frame. Every frame is a full captureScreenshot, so the output is fully deterministic — identical input always produces identical output. Frames stream directly to ffmpeg with no temp files.
Real-time (--realtime) plays the walkthrough at 1x speed using Chrome's Page.startScreencast for push-based frame delivery. Wall-clock time roughly equals walkthrough duration. Useful when your app has animations or transitions that depend on real browser timing.
# Deterministic capture (default)
walkr export demo.ts --format mp4
# Real-time capture
walkr export demo.ts --format mp4 --realtime
All step functions are imported from @walkrstudio/core.
Every step accepts an optional name in its options. Names appear in the Studio timeline, engine lifecycle events (step_start, step_end, step_error), and error messages — making walkthroughs easier to read and debug.
moveTo('#settings', { name: 'Open settings menu' })
click('#save-btn', { name: 'Save changes' })
wait(1000, { name: 'Wait for animation' })
When a step has no name, the Studio timeline falls back to showing the step type (e.g. CLICK).
walkr(options)Define a walkthrough. Returns a Walkthrough object.
walkr({
url: "https://your-app.com", // target URL to load in the iframe
title: "My Demo", // optional title (shown in embed player)
description: "A product demo.", // optional description
viewport: { width: 1920, height: 1080 },
cursor: { shape: "arrow", color: "#10b981", size: 24, shadow: true },
steps: [ /* ... */ ],
})
moveTo(selector, options?)Animate the cursor to the center of a DOM element.
moveTo("#signup-btn", { duration: 600, easing: "ease-in-out" })
Harness-native ECC skills, hooks, rules, MCP conventions, and operator workflows
Claude Code marketplace entries for the plugin-safe Antigravity Awesome Skills library and its compatible editorial bundles.
Production-ready workflow orchestration with 84 marketplace plugins, 192 local specialized agents, and 156 local skills - optimized for granular installation and minimal token usage