affaan-m/everything-claude-code/ui-demo
- community
Checking that the SKILL.md file is still in the repository.
Record polished UI demo videos using Playwright. Use when the user asks to create a demo, walkthrough, screen recording, or tutorial video of a web application. Produces WebM videos with visible cursor, natural pacing, and professional feel.
Install
npx vskill@latest install affaan-m/everything-claude-code/ui-demoSKILL.md
UI Demo Video Recorder
Record polished demo videos of web applications using Playwright's video recording with an injected cursor overlay, natural pacing, and storytelling flow.
When to Use
- User asks for a "demo video", "screen recording", "walkthrough", or "tutorial"
- User wants to showcase a feature or workflow visually
- User needs a video for documentation, onboarding, or stakeholder presentation
Three-Phase Process
Every demo goes through three phases: Discover -> Rehearse -> Record. Never skip straight to recording.
Phase 1: Discover
Before writing any script, explore the target pages to understand what is actually there.
Why
You cannot script what you have not seen. Fields may be <input> not <textarea>, dropdowns may be custom components not <select>, and comment boxes may support @mentions or #tags. Assumptions break recordings silently.
How
Navigate to each page in the flow and dump its interactive elements:
What to look for
- Form fields: Are they
<select>,<input>, custom dropdowns, or comboboxes? - Select options: Dump option values AND text. Placeholders often have
value="0"orvalue=""which looks non-empty. UseArray.from(el.options).map(o => ({ value: o.value, text: o.text })). Skip options where text includes "Select" or value is"0". - Rich text: Does the comment box support
@mentions,#tags, markdown, or emoji? Check placeholder text. - Required fields: Which fields block form submission? Check
required,*in labels, and try submitting empty to see validation errors. - Dynamic content: Do fields appear after other fields are filled?
- Button labels: Exact text such as
"Submit","Submit Request", or"Send". - Table column headers: For table-driven modals, map each
input[type="number"]to its column header instead of assuming all numeric inputs mean the same thing.
Output
A field map for each page, used to write correct selectors in the script. Example:
Phase 2: Rehearse
Run through all steps without recording. Verify every selector resolves.
Why
Silent selector failures are the main reason demo recordings break. Rehearsal catches them before you waste a recording.
How
Use ensureVisible, a wrapper that logs and fails loudly:
Rehearsal script structure
When rehearsal fails
- Read the visible-element dump.
- Find the correct selector.
- Update the script.
- Re-run rehearsal.
- Only proceed when every selector passes.
Phase 3: Record
Only after discovery and rehearsal pass should you create the recording.
Recording Principles
1. Storytelling Flow
Plan the video as a story. Follow user-specified order, or use this default:
- Entry: Login or navigate to the starting point
- Context: Pan the surroundings so viewers orient themselves
- Action: Perform the main workflow steps
- Variation: Show a secondary feature such as settings, theme, or localization
- Result: Show the outcome, confirmation, or new state
2. Pacing
- After login:
4s - After navigation:
3s - After clicking a button:
2s - Between major steps:
1.5-2s - After the final action:
3s - Typing delay:
25-40msper character
3. Cursor Overlay
Inject an SVG arrow cursor that follows mouse movements:
Call injectCursor(page) after every page navigation because the overlay is destroyed on navigate.
4. Mouse Movement
Never teleport the cursor. Move to the target before clicking:
Every call should include a descriptive label for debugging.
5. Typing
Type visibly, not instant-fill:
6. Scrolling
Use smooth scroll instead of jumps:
7. Dashboard Panning
When showing a dashboard or overview page, move the cursor across key elements:
8. Subtitles
Inject a subtitle bar at the bottom of the viewport:
Call injectSubtitleBar(page) alongside injectCursor(page) after every navigation.
Usage pattern:
Guidelines:
- Keep subtitle text short, ideally under 60 characters.
- Use
Step N - Actionformat for consistency. - Clear the subtitle during long pauses where the UI can speak for itself.
Script Template
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 96 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/ui-demo/SKILL.md
Popularity
- Repository stars
- 170,075
- Repository forks
- 26,352
- Repository npm downloads, 7 days
- 1,548
- 7-day trend score
- 78
Stars and forks are for the whole GitHub repository, not this skill alone. Downloads are for the repository's npm package. Refreshed 26 Apr 2026, 6 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/affaan-m/everything-claude-code/ui-demo)