recording-demos

Records agent-driven browser sessions as captioned, trimmed WebM demo videos.

518|49|Updated Apr 7, 2021
One-click install
npx skills add https://github.com/dxos/dxos --skill recording-demos
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: recording-demos
Source: https://github.com/dxos/dxos/tree/main/.agents/skills/recording-demos
Command: npx skills add https://github.com/dxos/dxos --skill recording-demos

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @playwright/test, ffmpeg, and includes scripts (resource) components.

What problem does it solve?

Demonstrating a feature in a running app requires driving the UI step by step and capturing the result, but Playwright specs fix every step up front and cannot perform steps that have no underlying operation. This Skill lets an agent drive the real app one gesture at a time, record the session as a captioned video, and trim the dead air so the output is ready to share.

Core Features & Use Cases

  • Interactive browser driving: A loopback HTTP driver exposes ops like click, fill, drag, eval, and screenshot against a live Chromium session, so each gesture can depend on what the previous one rendered.
  • Captioned, annotated recordings: Step captions are burned into the video and also muxed as Matroska chapters and a WebVTT track, with a self-contained HTML viewer for clickable step navigation.
  • Dead-air trimming: A trimmer caps motionless stretches with separate budgets for caption-reading pauses, plus a report mode that prices each cap before encoding.
  • Use Case: Run a .mdl QA flow such as the chess plugin walkthrough, caption each step from the spec, trim the 13-minute raw recording down to its minutes of motion, and attach the resulting WebM and screenshots to a PR.

Quick Start

Ask the agent to start the composer app, launch the recording driver, walk through the feature's steps with captions, then trim and send the finished demo video.

Frequently Asked Questions about recording-demos

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I record a video of an agent driving a web app?

Start the app, launch driver.mjs with a port, target URL, and output directory, then issue one HTTP op per gesture such as click, fill, or drag. Call the stop op to close the recording context, which is what writes the WebM video file.

When should I use a Playwright spec instead of recording a demo?

Use a Playwright spec for repeatable regression tests with assertions that run in CI. Recording a demo suits flows where the next gesture depends on what rendered, steps have no runtime operation behind them, or the output is a video for a human to watch.

How do I trim dead air from a screen recording?

Run trim-static.mjs with --report first to see motion versus still time, then re-run with --max-static and --caption-hold to cap each pause. It compares frames on a strided Y-plane sample so small moving objects like dragged pieces are not mistaken for stillness.

Why does the bundled Playwright ffmpeg fail when trimming videos?

The ffmpeg build bundled with Playwright is stripped and lacks rawvideo, PNG decoding, and the select/concat filters, so frames cannot be fed back into it. Install a full ffmpeg via apt-get or point FFMPEG_PATH at a complete build.

Can I attach a demo video directly to a GitHub PR?

A video cannot be embedded in a PR body because the proxy escapes video tags and GitHub's sanitizer strips them. Publish the WebM to shared artifact hosting and link it, or commit a contact sheet of frames and embed a SHA-pinned raw image URL.

Why does a drag gesture silently fail on some UI elements?

Drop targets built on pragmatic-drag-and-drop only arm after observing movement, so a single synthetic jump or dragTo never fires canDrop. The driver's drag op moves in stepped increments, and the target element must be large enough, such as a full board rather than a small card.