Your app already contains a design system. Make it visible.
Designed and built by Legion Code Inc.
Make Demo Videos & Audit My UX/UI with Claude turns a running web application into a documented component library, measured design tokens, organized screenshots, demo videos, and actionable UI inconsistency findings.
Inspect what users actually see. Find mismatched colors, inconsistent spacing, and components that behave like they were built by five different teams. Package the results for Claude Design or map them to shadcn/ui.
Designed and built by Legion Code Inc.
I am Legion. We are Legion.
Never used AI coding tools before? You only need the Claude desktop app. Follow these guides in order. Each step says what to click or type, what you will see, and what to do if it goes wrong.
- Install everything: the Claude desktop app, this plugin, and the free tools (once)
- Your first demo video: from zero to a captioned video of your app
- Screenshots, library and audit: the other four jobs
- Finish your video in ChatGPT: voice, intro clip, final stitch
- Make money with it: prices, fees, and selling on Upwork and Fiverr
- Fix problems: what you see, and what to do
All guides in one place: the guide index and the branded PDF.
Already use Claude Code? Jump to Quick start. It works the same in the desktop app's Code tab or in a terminal.
- Start here
- Quick start
- What you get
- Common prompts (copy and paste)
- Finish the video in ChatGPT
- Replicate (only for AI-made intro clips)
- What runs in parallel
- Free B-roll sites
- Make money with it
- Proven on a real app
- Installation
- Requirements
- How it stays safe
- What's inside
- Build from source
- Support, Contributing, Credits, License
Use the Claude desktop app and its Code tab. Open the app's Terminal panel once (title bar, or Ctrl and backtick) and paste:
claude plugin marketplace add legioncodeinc/app-auditor-plugin-claude
claude plugin install webapp-capture@legioncodeincThen start a new Code session on a project folder where your app is running, and type:
/webapp-capture doctor
/webapp-capture all http://localhost:3000
The first command reports missing local requirements and their fixes. The second opens intake and dry-run steps before capturing the full app. New to all this? Use 1. Install everything: it walks through every click. The same commands also work in Claude Code in a terminal.
Type /webapp-capture in Claude Code, answer a few questions, log in once in a browser window, and Claude does the rest.
| Route | Command | You get |
|---|---|---|
| Demo | /webapp-capture demo http://localhost:3000 |
A 1080p MP4 walkthrough with captions and scene titles, sharp key screenshots, a narration script with timing checks, one Eleven v4 clip text per line, a privacy review, an editable cut list, and a verified record of every change the demo made |
| Screenshots | /webapp-capture screenshots http://localhost:3000 |
Every page and every real tab, scrolled top to bottom, named by route: dashboard-billing-001.png, dashboard-billing__invoices-001.png |
| Component library | /webapp-capture library http://localhost:3000 |
One folder per unique component: purpose, anatomy, variants, measured styles, markup, screenshots, icons. Plus a ledger and candidate design tokens in the DTCG 2025.10 format, ready for a design-system AI |
| Claude Design handoff | runs automatically at the end of library, audit, shadcn, and all |
One zip with the component library, tokens, audit findings, page screenshots, and CLAUDE-DESIGN-INSTRUCTIONS.md. Upload it to Claude Design and say "Read CLAUDE-DESIGN-INSTRUCTIONS.md and follow it" to get a brand token guide and design system |
| shadcn/ui map | /webapp-capture shadcn http://localhost:3000 |
Every captured component mapped to shadcn/ui components, variants, and subcomponents, the new variants and custom tokens you need, the exact npx shadcn@latest add command, and a globals.css theme in OKLCH that makes shadcn/ui look like your app |
| Inconsistency audit | /webapp-capture audit http://localhost:3000 |
Near-identical colors that should be one token, sprawling type and spacing scales, components rendered five different ways, and the hardcoded values in your code that cause it |
| Everything | /webapp-capture all http://localhost:3000 |
All of the above, in order |
| Check setup | /webapp-capture doctor |
What is missing on this machine and the exact fix for each item |
flowchart LR
A[Your running app] --> B["/webapp-capture"]
B --> D[demo]
B --> S[screenshots]
B --> L[library]
B --> U[audit]
B --> N[shadcn]
L --> Z[Claude Design handoff zip]
U --> Z
N --> Z
New to the plugin? Read the usage guide (also as a branded PDF): what it installs, a first run step by step, every route, and the demo safety model, with diagrams.
The package is built from measured values, never guesses. It reads the rendered page, not your source, so it works with React, Svelte, Vue, Next.js, Rails, plain HTML: anything that runs in a browser.
You talk to the plugin by typing /webapp-capture, then what you want, then your app's web address. Write the rest like you would tell a coworker. Claude asks about anything it needs before it starts.
Swap http://localhost:3000 for your own app's address.
| Type this | What happens |
|---|---|
/webapp-capture doctor |
Checks your computer. It lists anything missing and the exact fix. Run this first. |
/webapp-capture doctor demo |
The same check, plus the tools needed to make videos (ffmpeg). |
| Type this | What happens |
|---|---|
/webapp-capture demo http://localhost:3000 a 60 second video for new customers showing how to book a job |
Claude writes a script and a plan, shows them to you, and records only after you say yes. |
/webapp-capture demo http://localhost:3000 show the onboarding flow for a new admin, no data changes |
A demo that only clicks around and changes nothing. |
/webapp-capture demo http://localhost:3000 book one appointment on the first free Tuesday slot and assign Sam |
A demo that changes data. Claude lists each change for you to approve, then checks that each one worked. |
Retake the demo. I reset the test data. |
Records a new take in a new folder. Claude shows which changes will happen again before it starts. |
Run the privacy review on the demo |
Makes contact sheets (a grid of frames) and a list of emails and phone numbers that showed on screen, masked. You look at every frame. |
Narration is too long in scene 2. Trim the line and rebuild the captions. |
Shortens the words, then rebuilds captions and timing. |
/webapp-capture handoff |
Packs the finished demo into a zip for ChatGPT to add the voice, the intro and the final cut. See Finish the video in ChatGPT. |
| Type this | What happens |
|---|---|
/webapp-capture screenshots http://localhost:3000 |
A picture of every page and every tab, top to bottom. |
/webapp-capture screenshots http://localhost:3000 dark mode only, skip the settings pages |
Same, with your rules. |
/webapp-capture library http://localhost:3000 try 3 pages first and show me |
Starts the component library on a few pages so you can check it before the full run. |
/webapp-capture audit http://localhost:3000 the code is in ./web |
Finds UI that does not match (colors, spacing, buttons) and the code that causes it. |
/webapp-capture shadcn http://localhost:3000 |
Maps your components to shadcn/ui and makes a matching theme. |
/webapp-capture all https://staging.myapp.com |
Everything, one step at a time. You can stop after any step. |
- Route: one kind of job (demo, screenshots, library, audit, shadcn).
- Plan: the list of steps for a demo. Nothing records until you approve it.
- Write: a step that changes data in your app, like booking an appointment. Each one needs your yes.
- Take: one recording. A retake is a new recording in a new folder.
- B-roll: extra footage that is not your app, like a short opening shot.
- MCP: a plug-in connection that gives an AI new tools. This plugin includes one for Replicate video models.
- Replicate: a website that runs AI video models for a small fee per clip. See What is Replicate?
- Token: a long password that lets a tool use your account. Keep it private.
Claude records your app. ChatGPT finishes the video: it adds the voice, the intro clip, and stitches it all together. Here is the whole trip.
flowchart TD
subgraph Claude
A["/webapp-capture demo"] --> B[Review and edit]
B --> C["/webapp-capture handoff<br/>zip file"]
end
subgraph ChatGPT
C --> D[Read CHATGPT-INSTRUCTIONS.md]
D --> E[Voice clips with ElevenLabs<br/>one per caption line]
D --> F[Intro clip<br/>free B-roll or Replicate]
E --> G[finish_video.py<br/>stitch]
F --> G
G --> H[demo-final.mp4]
end
Step 1. In Claude: record and check. Run the demo route, then the privacy review. Fix anything you do not want to show.
Step 2. In Claude: make the handoff zip. Type /webapp-capture handoff. You get <demo>-chatgpt-handoff.zip. It holds the silent video, the captions, one text file per voice line, a brief for the intro, a step-by-step CHATGPT-INSTRUCTIONS.md, and finish_video.py. It will not build the zip until the privacy review exists, because the zip leaves your computer.
Step 3. In ChatGPT: set up once.
- Install this plugin in the ChatGPT desktop app (Work mode or Codex). It uses the same folder (
plugins/webapp-capture/), read throughplugin.jsonandmcp.json, and gives ChatGPT the Replicate video tools and thedemo-intro-videoskill. Steps: guide 4, step 2. - Connect ElevenLabs with Add to ChatGPT on elevenlabs.io/mcp. Use a paid ElevenLabs plan for client work: the free plan has no commercial license.
- Only if you want AI-made intros: get a Replicate token and save it once. See Get your Replicate token. Never paste a key into a chat.
- Install ffmpeg and Python 3.11 or newer.
Full step-by-step version, with screenshots of what to expect: 4. Finish your video in ChatGPT.
Step 4. In ChatGPT: finish. Attach the zip and type:
Read CHATGPT-INSTRUCTIONS.md and finish this demo video. Use free stock B-roll for the intro unless I say otherwise. Ask me before anything that costs money.
ChatGPT then:
- makes one ElevenLabs voice clip per caption line (Eleven v4, your voice choice),
- finds a free B-roll clip or, if you ask, generates one with a Replicate model (Veo, Kling, Wan and others),
- checks the intro frame by frame, and
- runs
python3 finish_video.py --intro intro/intro.mp4. That puts the intro first, lines up each voice clip with its caption, moves the captions to match, and savesfinished/demo-final.mp4.
Other prompts for ChatGPT:
| Type this | What happens |
|---|---|
Check the Replicate video connection without generating anything. |
Runs the doctor. Nothing is paid for. |
Find 3 free B-roll clips for a 5 second intro about field service software. Show me before downloading. |
Searches free sites and shows choices. |
Generate a 6 second intro with Veo 3.1 from INTRO-BRIEF.md. Tell me the cost first. |
Writes the prompt and waits for your yes before the paid render. |
Line 3 is too long. Shorten it, regenerate the voice, and stitch again. |
Fixes one line and rebuilds. |
Replicate is a website that runs AI models for you in the cloud. Video models like Google Veo, Kling and Wan need huge, expensive computers. Replicate owns those computers and rents you a few seconds of time on them. This plugin talks to Replicate for you, so you never have to use its website to make a clip.
Do I need it? Only if you want an AI-made intro clip. Free stock B-roll does not need Replicate. Everything else in this plugin works without it.
What does it cost? You pay only for what you use (billing). Each model shows its price on its page on replicate.com, and video models cost much more than image models, so check the price before you render. A few models can be tried for free, but after a bit Replicate asks you to set up billing (a card, or prepaid credit). If a run fails, you are not charged. If you cancel a run partway, you may still be charged for the time it ran. The plugin always asks before any paid render.
A token is a long password that lets this plugin use your Replicate account. It starts with r8_. Treat it like a bank card number.
- Go to replicate.com and sign up (or sign in).
- Set up billing on the billing page (a card, or prepaid credit). Video models will not run without it.
- Open replicate.com/account/api-tokens. Replicate makes a default token when you sign up. You can use it, or click to create a new one named
webapp-captureso you can turn it off later without breaking anything else. - Copy the token.
- Save it in one of these places. Never paste it into a chat with Claude or ChatGPT.
- Claude desktop app (or Claude Code): open the Terminal panel (title bar, or Ctrl and backtick), run
claude plugin configure webapp-capture@legioncodeinc, and paste the token into the private field. Claude keeps it in your computer's secure credential store. Start a new session. - ChatGPT: open your computer's Terminal app (or the Claude app's Terminal panel), go to this plugin's folder, and run
python3 mcp/replicate-video/scripts/set_token.py --check. Paste the token when it asks. The typing is hidden. The--checkpart makes one free, read-only call to confirm the token works. It saves the token to~/.config/webapp-capture/replicate.env, a file only you can read. Restart the app. Not sure where the plugin folder is? Ask Claude or ChatGPT: "Where is the webapp-capture plugin folder on this computer?" - Advanced: set
REPLICATE_API_TOKENin the environment that starts the app. It wins over the saved file.
- Claude desktop app (or Claude Code): open the Terminal panel (title bar, or Ctrl and backtick), run
- Check it: ask Claude or ChatGPT to "check the Replicate video connection without generating anything." This runs the production doctor. It says whether a token is there but never shows it.
Lost it or leaked it? Delete that token on replicate.com/account/api-tokens, make a new one, and save it again. To remove it from this computer, run python3 mcp/replicate-video/scripts/set_token.py --remove.
Some steps do not depend on each other, so you (or several AI agents) can run them at the same time.
| Where | These run at the same time | Why it is safe |
|---|---|---|
| Claude | Screenshot and inventory shards (parallel.mjs) |
Each browser reads different pages. The memory limit sets how many. |
| Claude | Component describe batches | Each agent gets its own batch of components. |
| ChatGPT | All voice clips | Each caption line is its own request. |
| ChatGPT | Voice clips and the intro clip | Neither needs the other. Only the stitch needs both. |
| ChatGPT | Several B-roll searches or draft renders | Pick the best one, then stitch once. |
Demo recording itself runs one scene at a time on purpose, so each change can be checked before the next one.
Most intros do not need custom footage. These sites let you use clips in paid client videos for free (checked 2026-10-23):
| Site | Free for client work | Credit needed | Good to know |
|---|---|---|---|
| Pexels | Yes (license) | No | Has a free API an AI agent can search. Up to 4K. |
| Pixabay | Yes (license) | No | Has a free API. No clips with brands for commercial use. Up to 4K. |
| Mixkit | Yes, for clips marked Free License (license) | No | Some clips are personal use only, so check the label. Do not bulk download with scripts. |
| Coverr | Yes (license) | No | Logos in clips need separate permission. |
| Vecteezy | Limited (license) | Yes, on free clips | Free clips are capped at a $1,000 production budget. |
| Videezy | Yes (license) | Yes, on free clips | Add a credit line. |
Rules that keep you safe:
- Save the clip link, the creator, the license and the date for every clip you use.
- Skip clips with logos, brand names, or a person who would look like they endorse the product.
- Give the client the finished video, never the raw stock clips.
Need something custom? The demo-intro-video skill can generate an intro with a Replicate model instead. That costs money per clip. The full list with API limits is in free-broll-sources.md.
You can sell what this plugin makes as a service on Upwork or Fiverr: demo videos, screenshot sets, UI audits and design system docs. Real listings checked on 2026-10-23 suggest about $250 to $900 for a narrated demo video on Fiverr, $400 to $1,500 on Upwork, and $900 to $4,000 for a full bundle. Fiverr keeps 20%, and Upwork takes 0% to 15%.
Prices, fees, packages, portfolio tips and the AI disclosure rules are in 5. Make money with it.
The first production run captured an 87-route AI gateway dashboard: 107 page states, 25,698 elements, grouped into 948 visual groups and merged into 252 documented components, with 255 icon glyphs, candidate tokens, and a 74-finding visual audit. Findings included seven near-identical white overlays used 1,678 times, eight different fills for "primary" buttons, and three incompatible treatments for destructive actions.
The quick start is the recommended Claude Code installation path. The equivalent interactive commands are /plugin marketplace add legioncodeinc/app-auditor-plugin-claude and /plugin install webapp-capture@legioncodeinc.
Download dist/webapp-capture-plugin-2.0.0.zip from this repository and upload it as a plugin. Use the /webapp-capture command from the plugin's commands.
Download dist/webapp-capture-stinger-2.0.0.skill and upload it under Settings, Capabilities, Skills. The skill carries the full procedure; script-based capture needs an environment that can run Node and a browser.
Verify downloads against dist/SHA256SUMS.
| Need | Why | Install |
|---|---|---|
| Node 20.9 or newer | Runs the capture scripts and satisfies the Sharp 0.35 runtime floor | nodejs.org |
| Chromium for Playwright | Headless browser | Claude runs npx playwright install chromium for you when missing |
| Python 3.11 or newer | Only for the Replicate video tools and finish_video.py (intro and final stitch) |
python.org |
| ffmpeg | Demo video assembly only | brew install ffmpeg, apt install ffmpeg, or winget install ffmpeg |
| A running copy of your app | The thing being captured | Local, staging, or a seeded demo account is best |
The plugin's script dependencies (Playwright core and sharp) install on first use into the skill's own scripts/node_modules/. Nothing else is installed globally except Playwright's Chromium cache. The usage guide lists every file the plugin writes into your project.
- You log in, Claude never does. A real browser window opens; you sign in (MFA and SSO work). Claude never sees, types, or stores your password. The saved session is owner-only and checked for gitignore coverage.
- Read-only by default. Ordinary capture navigates pages, scrolls, and switches tabs. An optional local or seeded onboarding plan can submit only the exact setup actions you approve, once, with a screenshot before every step and built-in blocks for secrets and destructive controls.
- Stays on your app. Navigation to any other origin is blocked; popups are closed.
- Secrets stay out. Captured text passes redaction patterns seeded from GitHub secret scanning and the OWASP logging guidance. Sensitive screen regions are painted over with solid masks.
- Demos need your approval, and prove what they change. The recorder refuses a demo plan you have not approved. Every scene that can change data (drag, select, check, confirm a dialog) is listed with its expected effect and approved one by one, then checked read-only after it runs. A ledger refuses reruns that would repeat earlier changes until you choose to retake, and a mismatch stops later changes.
- Demos get a privacy review. Visible text is scanned for emails, phone numbers, and your redaction patterns while recording (only masked hits are kept), and per-scene contact sheets let a person check every frame before the video is shared.
- Nothing ships silently. Every run ends with a report and a security, quality, and repository hygiene gate before anything is committed.
.claude-plugin/marketplace.json marketplace catalog (legioncodeinc)
plugins/webapp-capture/
.claude-plugin/plugin.json plugin manifest
docs/ usage guide (Markdown and branded PDF)
mcp/replicate-video/ Replicate video MCP: 7 model tools, doctor, frame review, token setup
plugin.json, mcp.json, .codex-plugin/ ChatGPT desktop manifests for finishing demos
commands/webapp-capture.md /webapp-capture orchestrator instructions
agents/webapp-capture-worker-bee.md agent for delegated capture runs
skills/webapp-capture-stinger/
SKILL.md the skill
guides/ foundation, demo, library, audit, shadcn procedures
references/ field tables, shadcn catalog, prompt templates, research archive
scripts/ doctor, session, parallel runner, capture, inventory, handoff, shadcn, demo, audits
skills/demo-intro-video/ intro and B-roll: free stock sources, model prompts, finish_video.py
dist/ Cowork plugin zip, claude.ai skill file, checksums
tools/build-dist.sh rebuilds dist/
tools/build-guide-pdf.mjs renders the usage guide to the branded PDF
git clone https://github.com/legioncodeinc/app-auditor-plugin-claude.git
cd app-auditor-plugin-claude
claude plugin validate ./plugins/webapp-capture
tools/build-dist.shFor installation help and reproducible bug reports, see SUPPORT.md. Feature requests and fixes are welcome through GitHub Issues and pull requests.
If this plugin saves you time, help us keep building.
Sponsor Legion Code Inc. to support maintenance, documentation, compatibility updates, and new capabilities for our open-source developer tools.
I am Legion. We are Legion.
Verified sponsorship links will be added after the corresponding funding accounts are active.
See CONTRIBUTING.md for setup, validation, generated-distribution rules, and pull-request expectations. Please read SECURITY.md before reporting a vulnerability.
Webapp Capture was designed and built by Legion Code Inc.: the capture pipeline, the component grouping and merge method, the safety model, the orchestration, and the research behind it. It stands on Playwright, sharp, FFmpeg, and the Design Tokens Community Group format.
Licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). Use it commercially or privately, free of charge. Keep the copyright and license notices intact, and if you modify it, share your changes under the same license.
© 2026 Legion Code Inc.
I am Legion. We are Legion.
#vibewithlegion
