Record a live video of your running app — in the cloud or locally — and share it. One interview, one clean pass: environment detected, app launched, session recorded, video uploaded.
Cursor has it. Now Claude Code has it too.
Note
These skills have been built and tested with Claude Code. Codex support is untested. If you try them on Codex, we'd love your help. Open an issue to share what works and what doesn't.
npx skills add -g amajorai/replay.mdThen in Claude Code:
/replay
or point it at something specific:
/replay record the checkout flow on https://myapp.com
# Update this skill
npx skills update replay
# Update all installed skills (interactive scope prompt)
npx skills update
# Update only global or project skills
npx skills update -g
npx skills update -p
# Non-interactive (auto-detects scope)
npx skills update -y/plugin marketplace add amajorai/replay.md
/plugin install replaymd@amajorai
Invoke as /replaymd:replay.
- 👻 spec.md to spec out the feature before building it — then use replay to record video proof once each atomic unit is shipped.
- 🪅 vibe.md to provision a 24/7 cloud server — replay auto-detects it and records there without any local setup.
- 📦 ship.md to fix issues found during recording. Ship recommends
/replayat the end of every pipeline run so you can record proof of what shipped. - 🔎 fix.md to dig into bugs spotted during recording — use
/fixto instrument and confirm root cause before fixing. - 🎉 party.md to run replay autonomously on every deploy — drop a record issue into your board and party.md handles the rest.
- 🧪 sandbox.md to record your app running inside a cloud sandbox — replay auto-detects the sandbox environment and connects directly.
- 📋 context.md to document how to run the app so replay agents can launch it without a setup interview.
| Skill | What it does |
|---|---|
/replay |
Detect environment, interview for recording approach + storage provider, launch app, record session, upload video, return URL to chat |
flowchart TD
A(["/replay"]) --> B["🔍 Environment Detection\nlocal · vibe server · Docker · tools check"]
B --> C["🎤 Interview\napproach · host · storage · scenarios"]
C --> D["🔧 Setup\ncredentials · install tools · start app"]
D --> E{Recording approach}
E -->|Browser automation| F["🎭 Playwright\n--video flag, headless Chromium"]
E -->|VNC + ffmpeg| G["🖥️ Xvfb + ffmpeg\nfull screen capture"]
E -->|Computer Use| H["🤖 Claude Computer Use\nreal desktop VM via Anthropic API"]
F & G & H --> I["📤 Upload"]
I --> J{Storage provider}
J -->|Cloudflare R2| K["⚡ R2 + Wrangler"]
J -->|Hetzner| L["🇩🇪 Hetzner Object Storage"]
J -->|YouTube| M["▶️ YouTube unlisted"]
J -->|Local| N["💾 ./replay-recordings/"]
K & L & M & N --> O["🔗 Video URL in chat"]
O --> P{Issues found?}
P -->|Yes| Q["Recommend /ship to fix issues"]
P -->|No| R([Done])
| Approach | Best for | Requires |
|---|---|---|
| Browser automation (Playwright) | Web apps | Nothing extra — Playwright installed automatically |
| VNC + ffmpeg | Any app type (web, desktop, TUI, CLI) | Linux with Xvfb + ffmpeg (auto-installed) |
| Computer Use API | Most realistic "Cursor-like" experience | ANTHROPIC_API_KEY + Docker |
| Provider | Cost | Setup |
|---|---|---|
| Cloudflare R2 | Very cheap, global CDN | CLOUDFLARE_ACCOUNT_ID + R2_BUCKET + CLOUDFLARE_API_TOKEN |
| Hetzner Object Storage | Low cost, EU-based | AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY + HETZNER_ENDPOINT |
| YouTube (unlisted) | Free | YOUTUBE_CLIENT_ID + YOUTUBE_CLIENT_SECRET |
| Local file | Free | Nothing |
If you've run /vibe, replay auto-detects your server:
# replay checks for:
cat ~/.vibe/server 2>/dev/null # written by /vibe on first setup
echo $VIBE_SERVER # or set this env var manuallyWhen found, replay uses the vibe server for recording — no local Docker needed, no ephemeral VPS costs, full 24/7 availability.