Skip to content
Back to skills

demoday

ASecurity

Make a finished demo video of a piece of software: drive the app on screen (web, macOS desktop 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 v...

  • 5 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 22, 2026
ai-agentsgoshellbashnodegitapi

Works with

  • claude code
  • cursor
  • vscode
  • terminal
  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 17 files and shows the line behind each finding

Scanned September 22, 2026

npx -y skills add mrieck/demoday-claude-plugin --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of demoday?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for demoday
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mrieck-demoday/badge)](https://www.skillsdirectory.com/skills/mrieck-demoday)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: demoday
description: >-
  Make a finished demo video of a piece of software: drive the app on screen
  (web, macOS desktop 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.
license: MIT
compatibility: macOS, Node 20+, ffmpeg. Works with any agent that can run shell commands; MCP client optional.
metadata:
  author: Mark Rieck
  homepage: https://github.com/mrieck/demoday-claude-plugin
---

# 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.

```bash
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

```bash
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_inspect`, `demo_click`, `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:
   ```json
   { "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:
   ```bash
   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:

| guide | read it when |
|---|---|
| `skills/demo-video/SKILL.md` | always — the orchestration and the rules |
| `skills/demo-script/SKILL.md` | writing narration and the `demo.json` manifest |
| `skills/demo-capture/SKILL.md` | staging a window, selectors, desktop coordinates, terminal demos, the action-script format |
| `skills/demo-assembly/SKILL.md` | rendering, transitions, captions, zoom, audio, the dynamic style's moving presenter frame, or a render that came out wrong |
| `skills/demo-shorts/SKILL.md` | a 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.

Files in this skill

  • .claude-plugin/marketplace.json850 B
  • .claude-plugin/plugin.json565 B
  • .codex-plugin/mcp.json161 B
  • .codex-plugin/plugin.json1.7 KB
  • .env.example1.1 KB
  • .mcp.json132 B
  • HOW_IT_WORKS.md10.6 KB
  • SKILL.md6.3 KB
  • commands/create-demo-video.md1.6 KB
  • docs/demoday_banner.html7.2 KB
  • docs/demoday_logo.html4 KB
  • docs/demoday_logo_240.png39 KB
  • docs/demoday_logo_256.png40 KB
  • docs/demoday_logo_512.png96.2 KB
  • docs/demoday_logo_nofill.html4 KB
  • docs/demoday_logo_nofill_240.png39.5 KB
  • docs/demoday_logo_nofill_256.png39.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.