From power-platform
Record a Chrome browser tab to video via CLI. Use when the user wants to capture a screen recording of a browser tab. Supports list, start, stop, caption, and status subcommands. No debug mode required — uses a Chrome extension.
How this skill is triggered — by the user, by Claude, or both
Slash command
/power-platform:record-screen [list | start --tab <n> --out <file> | caption <text> | stop | status][list | start --tab <n> --out <file> | caption <text> | stop | status]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Records Chrome browser tabs to MP4/WebM video using a Chrome extension + bridge server. No `--remote-debugging-port` flag needed — works with normal Chrome.
Records Chrome browser tabs to MP4/WebM video using a Chrome extension + bridge server. No --remote-debugging-port flag needed — works with normal Chrome.
Install Node dependencies:
cd .claude/skills/record-screen/scripts && npm install
Load the Chrome extension:
chrome://extensions in Chrome.claude/skills/record-screen/extension folderThat's it. The bridge server auto-starts when you run any command.
Run the recording script with:
node .claude/skills/record-screen/scripts/record.js $ARGUMENTS
| Command | Description |
|---|---|
list | List available Chrome tabs with their index numbers |
start --tab <n> [--out file.mp4] | Start recording tab number n |
caption <text> | Add a timestamped caption at the current point in the video |
stop | Stop the active recording and save the video + captions file |
status | Check if a recording is active and extension is connected |
| Flag | Default | Description |
|---|---|---|
--tab <n> | (required) | Tab number from list or Chrome tab ID |
--out <file> | recording.mp4 | Output file path (.mp4 or .webm) |
If no arguments are provided or just list: Run the list command to show available tabs, then ask the user which tab to record and what to name the output file.
For start: The recording runs server-side — the command returns immediately. Remind the user to use /record-screen stop when finished.
For caption: Logs a caption at the current video timestamp. The timestamp is recorded server-side and converted to video time when the recording stops, so it aligns precisely with the encoded video.
For stop: Wait for encoding to complete (may take a few seconds for MP4 transcoding), then report the output file path, duration, file size, and captions file path.
For status: Shows whether a recording is active and whether the Chrome extension is connected to the bridge server.
You MUST log captions during recording. For every visible action you take on the page, run the caption command in parallel (in the same message) as the browser action. This creates a .captions.json file alongside the video that maps your actions to video timestamps.
Caption rules:
curl for captions (NOT node record.js caption) — curl starts instantly vs ~1s for Node.js, giving much better timing accuracyCaption command (use this exact format):
curl -s -X POST http://localhost:9234/api/caption -H "Content-Type: application/json" -d "{\"text\":\"YOUR CAPTION HERE\"}"
Example — call BOTH tools in the same message:
[Tool 1 - Browser action]: scroll down on the page
[Tool 2 - Bash]: curl -s -X POST http://localhost:9234/api/caption -H "Content-Type: application/json" -d "{\"text\":\"Scrolling down the page\"}"
Both execute simultaneously, so the caption timestamp matches when the action happens in the video.
Example workflow:
node record.js start --tab 1 --out demo.mp4
# For each action, call the browser tool AND curl caption in parallel:
# browser: navigate to Wikipedia + bash: curl caption "Navigating to Wikipedia"
# browser: type in search box + bash: curl caption "Searching for Claude AI"
# browser: scroll down + bash: curl caption "Scrolling down"
# browser: click link + bash: curl caption "Clicking the Anthropic link"
node record.js stop
The captions file is saved as <video-name>.captions.json in the same directory as the video. Format:
{
"videoFile": "demo.mp4",
"videoDuration": 15.2,
"fps": 5,
"totalFrames": 76,
"captions": [
{ "videoTime": 1.2, "text": "Navigated to Wikipedia main page" },
{ "videoTime": 4.6, "text": "Searched for Claude AI" },
{ "videoTime": 8.0, "text": "Scrolled down the page" },
{ "videoTime": 11.4, "text": "Clicked on the Anthropic link" }
]
}
captureVisibleTab which captures whatever is currently shown..mp4 — H.264 encoded via FFmpeg (recommended, most compatible).webm — VP9 encoded via FFmpegThe tool has three parts:
chrome.tabs.captureVisibleTab() to take screenshots at 5 FPS and streams them to the bridge serverThe bridge server auto-starts in the background when you run list, start, stop, or status. The Chrome extension auto-connects to it.
The script outputs machine-readable labels:
RECORDING_STARTED / RECORDING_STOPPED / RECORDING_ACTIVE / NO_ACTIVE_RECORDINGCAPTION_ADDED @ <time> — caption was loggedTAB: / FILE: / DURATION: / SIZE: / EXTENSION: / CAPTIONS: — metadatanpx claudepluginhub mcorbett51090/ravenclaude --plugin power-platformProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.