A Claude Code skill that records video demos of web app features using Playwright browser automation.
Invoke /record-demo <description> and Claude will:
/record-demo the broken flow, then fix it and record again. Attach both to the ticket.Clone (or fork) this repo, then symlink the skill into your Claude Code skills directory:
mkdir -p ~/.claude/skills/record-demo
ln -sf <local checkout location>/skills/record-demo/SKILL.md ~/.claude/skills/record-demo/SKILL.md
That's it. Claude Code picks up skills from ~/.claude/skills/ automatically — no restart needed.
To update later, just git pull in the repo. The symlink means Claude always reads the latest version.
On first use, the skill will:
~/.claude/record-demo/ for runtime stateThe skill supports layered config (later wins):
demo.config.json in your project root (committed to repo)~/.claude/record-demo/projects/<project-name>.json (personal overrides){
"baseUrl": "http://localhost:3000",
"auth": {
"strategy": "saved-state",
"loginUrl": "http://localhost:3000/login",
"captureDetect": {
"type": "localStorage",
"match": "authToken"
},
"readySelector": null,
"readyTimeout": 15000
},
"viewport": { "width": 1280, "height": 720 },
"browser": "chromium",
"timeoutMs": 120000,
"hints": {
"routesDir": null,
"componentsDir": null,
"selectorStrategy": "prefer text and role selectors",
"waitStrategy": "networkidle",
"notes": null
}
}
saved-state (recommended): Captures browser state once, reuses for recordings. Supports captureDetect to auto-detect login completion and readySelector to wait for auth SDK initialization.form-login: Fills login form programmatically.none: No authentication.custom: Use a custom login script.captureDetect types| Type | Match example | Use case |
|---|---|---|
localStorage | @@auth0spajs@@ | Auth0, Firebase, Supabase |
cookie | session_id | Cookie-based auth |
selector | [data-testid='avatar'] | Wait for a DOM element |
url | ^http://localhost:3000(?!/login) | Wait for redirect back |
readySelectorCSS selector for an element that only appears when the auth SDK has fully initialized (e.g., a[href='/dashboard']). Critical for SPAs where the auth SDK hydrates asynchronously from localStorage.
All runtime state lives in ~/.claude/record-demo/ (never in your project):
~/.claude/record-demo/
package.json # Playwright dependency
node_modules/ # Installed here
projects/ # Per-project config overrides
<project-name>.json
auth/ # Saved browser auth state
<project-name>.json
recordings/ # All recordings
<project-name>/
<timestamp>-<slug>/
script.mjs
*.webm / *.mp4
The saved-state strategy stores browser cookies and localStorage to a JSON file on your machine. This is designed for local development credentials only — the kind of throwaway session tokens you get from logging into localhost:3000. Don't use this with production credentials or anything you'd be nervous about having on disk. If your auth state expires, the skill will detect it and ask you to log in again.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub tjwds/record-demoConvert Playwright traces into polished demo videos with TTS voiceover, styled subtitles, zoom, and speed control
Browser automation and E2E testing with Playwright. Auto-detects dev servers, writes clean test scripts. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use for cross-browser testing, visual regression, API testing, component testing in TypeScript/JavaScript and Python projects.
Claude Code Skill for general-purpose browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp, and autonomously handles any browser automation task.
Canary browser automation + recorded QA sessions: a sandbox scripting reference, verify/automate/session/review skills, JTBD subagents, and /canary slash commands.
Use when the task requires automating a real browser from the terminal (navigation, form filling, snapshots, screenshots, data extraction, UI-flow debugging) via `playwright-cli` or the bundled wrapper script. Originally from OpenAI's curated skills catalog.
Playwright E2E test debugging and interactive browser exploration. Runs tests with action capture (DOM snapshots, network, console, screenshots), diagnoses failures, and provides browser tools for navigating, clicking, and inspecting pages through ARIA snapshots.