Agent skill

Demo Video

by alinaqi in alinaqi/maggy

Record captioned product walkthrough videos of any web app with Playwright + ffmpeg — proof videos for stakeholders, feature demos, bug-fix evidence

MITAuto-check passedMedia & Creative

Install Demo Video

skills CLI
$ npx skills add alinaqi/maggy --skill demo-video -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install alinaqi/maggy demo-video --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/alinaqi/maggy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/demo-video .claude/skills/demo-video && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
demo-video
GitHub stars
707
Token cost
~1.4k tokens
SKILL.md length
508 words
Files
1
Skills in repo
71
Repo updated
First seen
Licence
MIT

At a glance

Record captioned product walkthrough videos of any web app with Playwright + ffmpeg — proof videos for stakeholders, feature demos, bug-fix evidence

  • Works in 5 steps: Write a temporary Playwright spec… → Record via Playwright's built-in video,… → Narrate with an injected caption bar —… → …
  • Tasks that involve Video production
  • SKILL.md covers The method, Recording gotchas (learned the…, Produce and verify and Deliver and clean up, plus 1 more section
  • Calls ffmpeg and npx

What it does

Demo Video is an agent skill from alinaqi/maggy. Record captioned product walkthrough videos of any web app with Playwright + ffmpeg — proof videos for stakeholders, feature demos, bug-fix evidence

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative, covering Video production, Debugging and Browser testing. It works with Playwright and FFmpeg. The repository describes itself as: What started as an opinionated Claude Code setup kit is now an autonomous AI engineering command center. The licence is MIT.

When your agent uses it

  • Tasks that involve Video production
  • Tasks that involve Debugging
  • Tasks that involve Browser testing

Example prompts

  • “/demo-video”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Write a temporary Playwright spec (e2e/zz--video.spec.ts or scratchpad) that
  2. Record via Playwright's built-in video, never external screen capture
  3. Narrate with an injected caption bar — the video must explain itself without audio.
  4. Structure as chapters: caption → act → assert → caption the outcome. Keep real
  5. Reuse the project's e2e helpers (logins, seeded data, fixtures) instead of

What it can do on your machine

Read from SKILL.md and the folder at commit 72a456e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • ffmpeg
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Demo Video loads about 1.4k tokens when it runs. Until then it costs about 40 tokens; SKILL.md has 508 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~40
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from alinaqi/maggy at commit 72a456e, republished under its MIT licence (© alinaqi). 508 words, ~1,402 tokens.

Download SKILL.mdSave it as .claude/skills/demo-video/SKILL.md (or your agent's skills folder).
name
demo-video
description
Record captioned product walkthrough videos of any web app with Playwright + ffmpeg — proof videos for stakeholders, feature demos, bug-fix evidence
when-to-use
Default visual validation for web projects — when asked for a video, screen recording, walkthrough, or visual proof of features/fixes in a web app, and as the…
user-invocable
true
effort
medium

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

  1. Write a temporary Playwright spec (e2e/zz-<name>-video.spec.ts or scratchpad) that walks the real flows as one continuous test. One test = one video.
  2. Record via Playwright's built-in video, never external screen capture:
    ts
    test.use({ video: { mode: 'on', size: { width: 1280, height: 800 } }, viewport: { width: 1280, height: 800 } })
    test.setTimeout(240000)
  3. Narrate with an injected caption bar — the video must explain itself without audio. Call before each chapter; the pause gives viewers time to read:
    ts
    async 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)
    }
    The caption bar is re-injected automatically because caption() re-creates it after each page.goto (the element does not survive navigation — call caption AFTER navigating).
  4. 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.
  5. 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 (scrollIntoViewIfNeeded or 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.
Show full SKILL.md (194 more words)Show less

Produce and verify

bash
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.png

Read 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:
    bash
    DIR=~/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"
    Never 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.
  • ffmpeg on PATH for the webm→mp4 conversion and frame extraction.

© alinaqi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/demo-video of alinaqi/maggy.

Open the folder on GitHubat commit 72a456e

Compare with similar skills

Demo Video next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Demo Video compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Demo Video this skillalinaqi/maggy707—~1.4kAutomated safety check: PassMIT
Cs Code VideoChenShuo2004/cs-skills197—~2.1kAutomated safety check: PassMIT
Render Chatgpt Chatgooseworks-ai/goose-skills1.2k—~2.3kAutomated safety check: PassMIT
Character Animation QAcalesthio/OpenMontage66k—~389Automated safety check: PassMIT
Browser Video Recordingnirholas/three.ws2301 repos~1.5kAutomated safety check: PassApache-2.0
Render Apple Notes Chatgooseworks-ai/goose-skills1.2k—~1.6kAutomated safety check: PassMIT

Similar skills

  • Cs Code Video

    ChenShuo2004/cs-skills

    用代码做动画视频:页面暴露 render(t),Playwright 逐帧截图 + FFmpeg 合成 mp4,可接合成配乐、出图和配音。通用模式先明确主题、规格、风格和声音,出风格卡、分镜与关键帧后逐镜制作;Vibe知识大赏模式额外查证来源、记录真实素材许可、先渲 10 秒样片。触发词包括…

    197 GitHub stars~2.1k tokensUpdated 3 days ago
    Media & CreativeAuto-check passed
  • Render Chatgpt Chat

    gooseworks-ai/goose-skills

    Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…

    1.2k GitHub stars~2.3k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Character Animation QA

    calesthio/OpenMontage

    Review local character animation with schema checks, Playwright browser previews, frame sampling, and FFmpeg/ffprobe final output checks.

    66k GitHub stars~389 tokensUpdated 7 days ago
    Media & CreativeAuto-check passed
  • Browser Video Recording

    nirholas/three.ws

    Create polished 60 fps 4:3 4K browser screen-recording style videos from Codex in-app browser captures, with browser-only crop, natural macOS cursor styling, deliberate click choreography…

    230 GitHub starsUsed in 1 repo~1.5k tokens
    Media & CreativeAuto-check passed
  • Render Apple Notes Chat

    gooseworks-ai/goose-skills

    Assemble an Apple Notes list video ad from a note + end-card JSON — a frame-accurate fake iPhone screen recording of a short list being typed into Apple Notes (character by character, key pops…

    1.2k GitHub stars~1.6k tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • Sprint Summary

    shopsys/shopsys

    Generates a Czech sprint summary article from Jira sprint data (Jira MCP first, CSV fallback), publishes it to Confluence with embedded screenshots and MP4 clips, and records the clips with…

    350 GitHub stars~7k tokensUpdated yesterday
    Media & CreativeAuto-check passed

More from alinaqi/maggy

All 71 skills in this repo
  • Aeo Optimization

    alinaqi/maggy

    AI Engine Optimization - semantic triples, page templates, content clusters for AI citations

    707 GitHub stars~3.7k tokensUpdated 17 days ago
    Auto-check passed
  • Agent Teams

    alinaqi/maggy

    Claude Code Agent Teams - default team-based development with strict TDD pipeline enforcement

    707 GitHub stars~5k tokensUpdated 17 days ago
    Auto-check: notes
  • AI Models

    alinaqi/maggy

    Latest AI models reference - Claude, OpenAI, Gemini, Eleven Labs, Replicate

    707 GitHub stars~4.1k tokensUpdated 17 days ago
    Auto-check passed
  • Android Java

    alinaqi/maggy

    Android Java development with MVVM, ViewBinding, and Espresso testing

    707 GitHub stars~3.9k tokensUpdated 17 days ago
    Auto-check: notes
  • Android Kotlin

    alinaqi/maggy

    Android Kotlin development with Coroutines, Jetpack Compose, Hilt, and MockK testing

    707 GitHub stars~3k tokensUpdated 17 days ago
    Auto-check passed
  • Autonomous Testing

    alinaqi/maggy

    AI-driven testing agent that auto-discovers, generates, executes, evaluates, and fixes tests for any project type

    707 GitHub stars~1.1k tokensUpdated 17 days ago
    Auto-check passed

Questions about Demo Video

What does Demo Video do?

Record captioned product walkthrough videos of any web app with Playwright + ffmpeg — proof videos for stakeholders, feature demos, bug-fix evidence. Demo Video is an agent skill from alinaqi/maggy.

When should I use Demo Video?

Demo Video fits situations like: tasks that involve Video production; tasks that involve Debugging; tasks that involve Browser testing.

How do I install Demo Video in Claude Code?

Run `npx skills add alinaqi/maggy --skill demo-video -a claude-code`. Or copy the skill folder (skills/demo-video in alinaqi/maggy) into .claude/skills/demo-video in your project. Claude Code loads it when a task matches its description.

How do I install Demo Video in Codex?

Run `npx skills add alinaqi/maggy --skill demo-video -a codex`. Or copy the skill folder (skills/demo-video in alinaqi/maggy) into .agents/skills/demo-video in your project. Codex loads it when a task matches its description.

Can I use Demo Video in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add alinaqi/maggy --skill demo-video -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/demo-video, .gemini/skills/demo-video, .github/skills/demo-video and .opencode/skills/demo-video in your project.

What does Demo Video need to run?

Going by SKILL.md and its folder, Demo Video needs the command-line tools its instructions call (ffmpeg and npx). Our summary lists: Node.js.

Does Demo Video access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Demo Video safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Demo Video use?

Demo Video is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Demo Video use?

About 1.4k tokens (SKILL.md is roughly 5.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Demo Video?

Skills that share tags, products or a category with Demo Video: Cs Code Video (ChenShuo2004/cs-skills, 197 stars), Render Chatgpt Chat (gooseworks-ai/goose-skills, 1.2k stars), Character Animation QA (calesthio/OpenMontage, 66k stars) and Browser Video Recording (nirholas/three.ws, 230 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Demo Video?

alinaqi (a GitHub user) maintains it in alinaqi/maggy, which has 707 GitHub stars. The repository holds 71 skills in this directory. The repository was last updated on September 24, 2026.

Source: alinaqi/maggy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.