demo-video
Skill708 starsChanged 5 months agoMITView on GitHub
Record captioned product walkthrough videos of any web app with Playwright + ffmpeg — proof videos for stakeholders, feature demos, bug-fix evidence
- Deletes or force-pushes
27 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- SaudSatopay/bullseyetheir own version, first seen Nov 8, 2026
- dxdleady/playwright-demo-videotheir own version, first seen Nov 1, 2026
- yzhao062/agent-configtheir own version, first seen Nov 1, 2026
- Kewton/CommandMatetheir own version, first seen Oct 30, 2026
- liaohch3/claude-taptheir own version, first seen Oct 25, 2026
- ooiyeefei/ccctheir own version, first seen Oct 25, 2026
Used with
Projects with it also use karpathy-coder, ai-act-readiness and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
csiddhant796-blipSkillkarpathy-coder
Use when writing, reviewing, or committing code to enforce Karpathy's 4 coding principles — surface assumptions before coding, keep it simple, make surgical changes, define verifiable goals. Triggers on "review my diff", "check complexity", "am I overcomplicating this", "karpathy check", "before I commit", or any code quality concern where the LLM might be overcoding.
Also in 4 projects that use this
Hussain-ElfalahSkillai-act-readiness
Also in 3 projects that use this
Hussain-ElfalahSkillc-level-agents
Also in 3 projects that use this
csiddhant796-blipSkillself-eval
Honestly evaluate AI work quality using a two-axis scoring system. Use after completing a task, code review, or work session to get an unbiased assessment. Detects score inflation, forces devil's advocate reasoning, and persists scores across sessions.
Also in 4 projects that use this
- +8 more from Hussain-Elfalah
Other versions27 projects use a version of this.
Word for word · 1
- alinaqi/maggy★ 711100% same
Edited · 1
- alinaqi/demo-video-skill★ 059% same
Wrote their own version · 25
- liaohch3/claude-tap★ 3.3ksame name
- microsoft/hve-core★ 1.6ksame name
- ooiyeefei/ccc★ 497same name
- getsentry/junior★ 409same name
- hmislk/hmis★ 244same name
- Kewton/CommandMate★ 44same name
- Hassaan146/claude-skills★ 18same name
- yzhao062/agent-config★ 16same name
- mrieck/demoday-claude-plugin★ 12same name
- rosslevinsky/portable-agent-skills★ 12same name
15 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository75 other files it gives its agents.
- templates/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- templates/CLAUDE.mdCLAUDE.md
- aeo-optimizationSkill
- agentic-developmentSkill
- agent-teamsSkill
- ai-modelsSkill
- android-javaSkill
- android-kotlinSkill
- autonomous-testingSkill
- aws-auroraSkill
- aws-dynamodbSkill
- azure-cosmosdbSkill
- baseSkill
- build-in-publicSkill
- cloudflare-d1Skill
- code-deduplicationSkill
- code-graphSkill
- code-reviewSkill
- codex-reviewSkill
- commit-hygieneSkill
- context-shuntSkill
- council-reviewSkill
- cpg-analysisSkill
- credentialsSkill
- cross-agent-delegationSkill
- database-schemaSkill
- dataforseoSkill
- existing-repoSkill
- external-model-delegationSkill
- firebaseSkill
- flutterSkill
- gemini-reviewSkill
- icpgSkill
- iterative-developmentSkill
- klaviyoSkill
- llm-patternsSkill
- maggySkill
- medusaSkill
- mnemosSkill
- model-routingSkill
- ms-teams-appsSkill
- nodejs-backendSkill
- playwright-testingSkill
- polyphonySkill
- posthog-analyticsSkill
- project-toolingSkill
- pwa-developmentSkill
- pythonSkill
- react-nativeSkill
- react-webSkill
- reddit-adsSkill
- reddit-apiSkill
- security-auditSkill
- securitySkill
- session-managementSkill
- shopify-appsSkill
- site-architectureSkill
- supabase-nextjsSkill
- supabase-nodeSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 24 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 31
Call before each chapter; the pause gives viewers time to read:
- Very specific: line 62
OTP/async steps: after submitting a form that triggers an email/side effect, wait for the next UI state (await …
- Distinctive: line 84
Read the extracted frames with the Read tool and confirm captions render and each chapter shows what it claims.
- Very specific: line 105
Never video.mp4, never a name without its date and index.
“Common” is measured: kept by at least 6 in 10 of the 24 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Demo Video Skill — visual validation for web apps
Record a captioned walkthrough video of a running web app, verify it frame-by-frame, convert to mp4, and deliver it. Battle-tested on real client-feedback proof videos.
This is the harness's default visual validation for web projects: a demo video walks a real user flow end-to-end and doubles as a passing E2E test, so "it works" is proven visually, not claimed. It complements [[visual-validation]] (autonomous screenshot-regression checks) and [[playwright-testing]] (the E2E suite): screenshots catch pixel regressions, the suite proves behavior, and a demo video proves the whole user-facing flow the way a person would see it.
The method
- Write a temporary Playwright spec (
e2e/zz-<name>-video.spec.tsor scratchpad) that walks the real flows as one continuous test. One test = one video. - Record via Playwright's built-in video, never external screen capture:
test.use({ video: { mode: 'on', size: { width: 1280, height: 800 } }, viewport: { width: 1280, height: 800 } }) test.setTimeout(240000) - Narrate with an injected caption bar — the video must explain itself without audio.
Call before each chapter; the pause gives viewers time to read:
The caption bar is re-injected automatically becauseasync function caption(page: Page, text: string) { await page.evaluate((t) => { let bar = document.getElementById('demo-caption') if (!bar) { bar = document.createElement('div') bar.id = 'demo-caption' bar.style.cssText = 'position:fixed;left:0;right:0;bottom:0;z-index:99999;background:#142b1e;color:#f7f5f0;' + 'font:600 15px/1.4 Inter,system-ui,sans-serif;padding:12px 20px;letter-spacing:0.01em' document.body.appendChild(bar) } bar.textContent = t }, text) await page.waitForTimeout(2200) }caption()re-creates it after eachpage.goto(the element does not survive navigation — call caption AFTER navigating). - Structure as chapters: caption → act → assert → caption the outcome. Keep real assertions in the spec so the video doubles as a passing test — a video of a broken flow must fail loudly, never ship silently.
- Reuse the project's e2e helpers (logins, seeded data, fixtures) instead of hand-rolling flows. Prefer fake/deterministic AI modes so runs are repeatable.
Recording gotchas (learned the hard way)
- Scroll-reveal animations: elements animated in by IntersectionObserver stay
invisible in captures unless you actually scroll. Walk the page (
scrollIntoViewIfNeededor step-scroll) before asserting/capturing. - OTP/async steps: after submitting a form that triggers an email/side effect, wait
for the next UI state (
await expect(page.locator('#code')).toBeVisible()) before reading outboxes/fixtures — racing the write is the #1 flake. - Selector traps: "first link" often matches a New/Create button; exclude it
(
a[href^="/x/"]:not([href$="/new"])). - Demonstrating error states: drive the app's real error surface (e.g. navigate to the URL the failing action redirects to) rather than mocking pages that don't exist.
Produce and verify
rm -rf test-results/zz-<name>* # stale videos have the same filename
npx playwright test e2e/zz-<name>-video.spec.ts
find test-results -name "video.webm" # the recording
# Convert to mp4 (universal playback, ~2-3x smaller)
ffmpeg -y -i "<video.webm>" -c:v libx264 -pix_fmt yuv420p -movflags +faststart out.mp4
# ALWAYS spot-check frames before delivering — extract a few and LOOK at them
ffmpeg -y -i out.mp4 -vf "select='eq(n\,60)+eq(n\,300)+eq(n\,600)'" -vsync vfr frame_%d.pngRead the extracted frames with the Read tool and confirm captions render and each chapter shows what it claims. Never deliver an unviewed video.
Deliver and clean up
- Copy the mp4 to your stakeholder-updates archive (e.g.
~/Documents/updates/<project>/, the house archive for stakeholder updates), and send it to the user (SendUserFile or equivalent). - Naming is mandatory and identifying:
YYYY-MM-DD-NN-<project>-<what-it-proves>.mp4— the date it was recorded, then a two-digit index so several videos on the same day stay ordered and every video is uniquely identifiable at a glance. Allocate the next free index with a no-clobber loop — never a count (wc -l), which reuses an index if an earlier file was deleted and silently overwrites an existing mp4:
NeverDIR=~/Documents/updates/<project>; DATE=$(date +%F); mkdir -p "$DIR" NN=1 while printf -v F '%s/%s-%02d-<project>-<what-it-proves>.mp4' "$DIR" "$DATE" "$NN" && [ -e "$F" ]; do NN=$((NN+1)) done cp out.mp4 "$F"video.mp4, never a name without its date and index. - Delete the temporary spec — it is a capture script, not a test; it must not join the suite or CI.
Prerequisites
- Playwright installed in the project (
@playwright/test) with a working dev/preview server. ffmpegon PATH for the webm→mp4 conversion and frame extraction.
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
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.

