agentleFS
mrieckmrieck/demoday-claude-plugin/SKILL.md

demoday

Skill12 starsChanged 58 days agoMITView on GitHub

Make a finished demo video of a piece of software: drive the app on screen (web, macOS desktop, browser extension or terminal) while narrating what it does, generate an AI voiceover and optional on-camera presenter, and render a polished MP4 with Remotion — or cut a vertical 9:16 Short (YouTube Shorts, Reels, TikTok) from one. Use when the user asks to "make a demo video", "record a demo", "create a product video", "make a walkthrough", "show off this app", or asks for a "short", "reel", "TikTok" or "vertical video" of their software. macOS only.

  • Reads credentials

The file

Files
SKILL.md

DemoDay

You are about to produce a finished demo video of someone's software — narrated, paced, with an intro, transitions and a point — not a screen recording. This folder is the whole toolkit: scripts, a rehearsal server, a Remotion template and the five craft guides below. Nothing lives outside it.

Where things are

$CLAUDE_PLUGIN_ROOT in the guides means this folder — the directory that holds this SKILL.md. In Claude Code the plugin sets that variable; installed through npx skills it is ~/.agents/skills/demoday (or the project's .agents/skills/demoday); as a Codex plugin it is the plugin's install directory. Every node scripts/... command in the guides runs from here, e.g.

cd ~/.agents/skills/demoday && node scripts/doctor.mjs

The video project is separate: it lives under the demoed repo at <repo>/demo/<slug>/ and is passed as --project demo/<slug> to every script.

First run — do this before anything else

node scripts/doctor.mjs --install        # installs node packages + Chromium, then checks the machine

doctor prints one line per requirement with the exact fix command. The two things it cannot do for the user: a FAL_API_KEY (fal.ai — narration, presenter, b-roll; store it in the macOS Keychain as printed), and, for desktop or terminal demos, the Screen Recording and Accessibility permissions, which the user grants to the terminal app and then restarts it. Stop and tell the user exactly what to do when either is missing; never fake a capture.

The rehearsal tools

Capture is two passes: rehearse (you drive the app, screenshot after every action, nothing recorded) and perform (a runner replays the rehearsed steps smoothly while recording). The rehearsal tools are demo_open, demo_open_app, demo_open_cli, demo_open_browser, demo_inspect, demo_click, demo_drag, demo_type, demo_key, demo_scroll, demo_highlight, demo_wait_stable, demo_screenshot, demo_undo_step, demo_review_script, demo_save_actions, demo_load_actions, demo_close.

Three ways to reach them, pick the first that applies:

  1. They are already in your tool list (Claude Code plugin, Codex plugin) — call them directly.
  2. Your agent supports MCP servers — register mcp/server.mjs as a stdio server once and the tools appear. Any client config takes the same shape:
    { "mcpServers": { "demo-stage": { "command": "node", "args": ["<this folder>/mcp/server.mjs"] } } }
    (Codex: codex mcp add demo-stage -- node <this folder>/mcp/server.mjs; Cursor: .cursor/mcp.json; Gemini CLI: ~/.gemini/settings.json; VS Code / Copilot: .vscode/mcp.json.) Raise the client's tool timeout if it has one — demo_wait_stable can legitimately take a couple of minutes.
  3. Shell only — scripts/stage.mjs is the same server driven from the command line. The first call starts it in the background; each later call is one tool invocation against the live session, so the browser and the action script persist between commands:
    node scripts/stage.mjs tools                                     # every tool and its flags
    node scripts/stage.mjs open --url http://localhost:3000 --id feature-1
    node scripts/stage.mjs inspect --filter save
    node scripts/stage.mjs click --selectors '[data-testid=save]' --label "Save"
    node scripts/stage.mjs save_actions --file demo/<slug>/actions/feature-1.json
    node scripts/stage.mjs stop                                      # close + end the daemon
    Tool names drop the demo_ prefix. Screenshots are written as PNG files and the path is printed as screenshot: … — open that image after each step; deciding from the text alone is guessing. Desktop clicks take --x --y read off the most recent screenshot, exactly as with the MCP tool.

Everywhere the guides say demo_<name>, read node scripts/stage.mjs <name> if you are on path 3.

The workflow — read this next

Open and follow skills/demo-video/SKILL.md in this folder. It is the end-to-end recipe (recon → direction → script → narration → rehearse → perform → presenter/b-roll → render → QA) and it tells you when to read the others:

guideread it when
skills/demo-video/SKILL.mdalways — the orchestration and the rules
skills/demo-script/SKILL.mdwriting narration and the demo.json manifest
skills/demo-capture/SKILL.mdstaging a window, selectors, desktop coordinates, terminal demos, the action-script format
skills/demo-assembly/SKILL.mdrendering, transitions, captions, zoom, audio, the dynamic style's moving presenter frame, or a render that came out wrong
skills/demo-shorts/SKILL.mda 9:16 Short — listicle, cohost, flashcard or glide

Where a guide says to use AskUserQuestion, ask the user in whatever way your agent asks questions; the answers (style, goal, length, presenter mode) change the whole video, so do not skip them.

Rules that never bend

  • Show the cost estimate (node scripts/plan.mjs --project demo/<slug>) and get an explicit yes before generating anything. Narration, presenter and b-roll bill per second.
  • Narration before capture. Durations drive the pacing of every scene.
  • Rehearse, then perform. Never record yourself exploring.
  • Everything goes in demo.json. State that only exists in your context is lost on the next run.
  • Look at the frames during QA (node scripts/qa.mjs). There is no automatic grader.
  • Report what actually happened. A failed scene is reported, not hidden.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.