agentleFS
MicrosoftKnown publishermicrosoft/vscode/extensions/copilot/assets/prompts/skills/record-video/SKILL.md

record-video

Skill194k starsChanged 3 days agoMITView on GitHub

Record a short WebM video of a web page or web-based app with Playwright's page.screencast, demonstrating a feature or bug fix. Use when asked to record evidence, demo a change, show that it works, record a video, or capture a screencast.

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use whichever Playwright page is available: the Integrated Browser's runPlaywrightCode tool, or a Playwright session another skill attaches …

    line 11
  2. Distinctive:

    Don't bypass sign-in, CAPTCHAs, or paywalls.

    line 19
  3. Distinctive:

    Keep it under a minute, in a few clear chapters.

    line 21
  4. Distinctive:

    Write the complete script before recording, so no locators need to be discovered mid-recording.

    line 32
  5. Distinctive:

    Run the whole script in a single Playwright call so pauses between calls don't end up in the video.

    line 37

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Record video

Record a short .webm video of the real outcome with Playwright's page.screencast, and return it with the script that produced it.

Use whichever Playwright page is available: the Integrated Browser's runPlaywrightCode tool, or a Playwright session another skill attaches to an app (for example @playwright/cli run-code). If a skill exists for launching the app under test, follow it to get the page.

Rules

  • Show real behavior. Never fake a result or hide a failed assertion.
  • Don't bypass sign-in, CAPTCHAs, or paywalls; don't record secrets or private data; ask before side effects on real services.
  • Keep it under a minute, in a few clear chapters.

Prepare

  1. Get a Playwright page for the app and make sure it is visible (document.visibilityState === 'visible'); ask the user to reveal it if not. For the Integrated Browser, open a fresh page with openBrowserPage (forceNew: true); if the browser tools are missing, explain that workbench.browser.enableChatTools must be enabled and stop.
  2. Dry-run the scenario without recording. Find stable role/name locators and check the assertions. Reset test data to a known start state.
  3. Write the complete script before recording, so no locators need to be discovered mid-recording.

Record in one call

Run the whole script in a single Playwright call so pauses between calls don't end up in the video. Allow enough timeout for the scenario.

Save the video and script in the current session's storage folder, not in the workspace, and name them after the scenario, for example <session folder>/add-and-complete-task.webm.

const viewport = await page.evaluate(() => ({ width: innerWidth, height: innerHeight }));
const even = v => Math.max(2, Math.floor(v / 2) * 2);
const scale = Math.min(1, 1280 / viewport.width);
await page.screencast.start({
  path: '<session folder>/add-and-complete-task.webm',
  size: { width: even(viewport.width * scale), height: even(viewport.height * scale) },
});
try {
  await page.screencast.showActions();
  await page.screencast.showChapter('Add a task');
  const input = page.getByRole('textbox', { name: 'New task' });
  await input.pressSequentially('Buy milk', { delay: 60 });
  await input.press('Enter');
  const task = page.getByRole('checkbox', { name: 'Buy milk', exact: true });
  if (await task.isChecked()) {
    throw new Error('New task was unexpectedly completed.');
  }
  await page.waitForTimeout(1000);
  await page.screencast.showChapter('Complete the task');
  await task.check();
  if (!await task.isChecked()) {
    throw new Error('Task did not become completed.');
  }
  await page.waitForTimeout(1500);
} finally {
  await page.screencast.stop();
}

The video is only finalized by stop(), so always use try/finally. If the scenario fails, keep the partial video and report the error.

Hand off

Return links to the video and the script, plus a short list of expected vs. actual outcomes. A demo supplements tests and code review; it doesn't replace them.

Download now (ZIP)

Trending

Less talk lately.about the whole repository

Dec 2025: 2 mentionsJan 2026: 2 mentionsFeb 2026: 2 mentionsMar 2026: 1 mentionApr 2026: 3 mentionsMay 2026: 5 mentionsJun 2026: 2 mentionsJul 2026: 3 mentionsAug 2026: 1 mentionSep 2026: 4 mentionsOct 2026: 1 mentionNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the microsoft/vscode repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about microsoft/vscode

The biggest 5 of 148 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 148

Talked about on Bluesky, Hacker News, Stack Overflow, YouTube, GitHub and the web (148 times).

On Bluesky · 46

41 more on Bluesky

On Hacker News · 39

34 more on Hacker News

On Stack Overflow · 24

19 more on Stack Overflow

On YouTube · 21

16 more on YouTube

On GitHub · 9

4 more on GitHub

On the web · 9

4 more on the web

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.