openvidu.io: Skill for Claude Code

.claude/skills/video-recording/SKILL.md

video-recording is a skill for Claude Code from OpenVidu/openvidu.io. It costs 125 tokens per session (2,918 once invoked), scanned A, original, Apache-2.0.

A procedure for recording a looping demo of an app containing an OpenVidu Meet video call with two simulated camera feeds. Instead of physical webcams, it supplies video frames from files through the browser's camera interface.

In plain words
What is it for?
Use it to inject separate prerecorded clips for two participants, join a real browser-based OpenVidu Meet call, and record a short looping MP4 demo.
Why use it?
It makes a two-person meeting demo repeatable without needing real participants or cameras. It also avoids browser media-loading methods that can cause the meeting to remain stuck while joining.

Skill for Claude Code

Written for Claude Code: installed under .claude/. Also seen: positional $N argument.

This is OpenVidu/openvidu.io's own configuration. It tells Claude Code how to work on openvidu.io itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything openvidu.io configures →

Reuse

Borrowing it

Nothing to install: this file belongs to OpenVidu/openvidu.io. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/OpenVidu/openvidu.io/main/.claude/skills/video-recording/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/OpenVidu/openvidu.io

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for video-recording

README.md
[![agentmods](https://agentmods.dev/badge/skills/openvidu/openvidu.io/video-recording/github.svg)](https://agentmods.dev/skills/openvidu/openvidu.io/video-recording)
Your own site
<a href="https://agentmods.dev/skills/openvidu/openvidu.io/video-recording"><img src="https://agentmods.dev/badge/skills/openvidu/openvidu.io/video-recording/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for video-recording

Your own site · 80×15
<a href="https://agentmods.dev/skills/openvidu/openvidu.io/video-recording"><img src="https://agentmods.dev/badge/skills/openvidu/openvidu.io/video-recording.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 125 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,918 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00125 $0.02918
Opus 5 $0.00063 $0.01459
Sonnet 5 $0.00025 $0.00584
Haiku 4.5 $0.00013 $0.00292

Measured 9d ago against content hash 9ffd4fe565cd, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

video-recording scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

async u => createImageBitmap(await (await fetch(u)).blob())));
.claude/skills/video-recording/SKILL.md · 224 lines

How it starts

The opening of the file, as written. The whole thing — 224 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Recording an embedded-meeting demo with injected camera feeds

Produce a short looping MP4 of a two-person OpenVidu Meet call embedded in an app, where both participants' cameras are pre-recorded clips rather than real webcams. The reference output is the video of the building-a-video-enabled-crm-with-an-ai-agent post: sign in → open an issue → click Join → a live two-way meeting inside the app, ~10 s, looping.

The core idea

OpenVidu Meet takes whatever navigator.mediaDevices.getUserMedia() returns. Override that function before the Meet app runs and hand it a MediaStream built from a <canvas> you paint video frames onto. Meet publishes it over WebRTC as if it were a real camera. Do this once per browser session, one clip per "person".

Do not use these approaches

Each has been tried and fails; use the fix instead.

  1. Do not feed a <video> element or blob straight into captureStream(). Inside the Meet page a <video src=blob:...> (or an http:// src) never leaves readyState 0 and the join hangs on "Preparing room…", while fetch() of the same URL succeeds — it is the media element decode path, not the network. Instead: decode frames out-of-band and cycle them on a canvas (below).
  2. Do not drive the join with Playwright, headless Chrome, headless-shell or snap Chromium. The media pipeline stalls pre-network regardless of sandbox, GPU, WebGL, virtual-background or wait time. Instead: drive the join in the user's real Chrome via the claude-in-chrome extension. Headless Playwright is still the right tool for the static lead-up screenshots.
  3. Do not leave the second participant in a background tab. Chrome stops compositing hidden tabs, so its canvas captureStream goes black. Instead: give it its own visible window — drag the tab out, small but neither minimized nor covered.
  4. Do not click the Meet prejoin by coordinates. It is flaky and depends on device-pixel scaling. Instead: submit the name form and click Join via in-page JS that pierces shadow DOM (below).
  5. Do not reschedule into the same room. The CRM verifies a cached room with a GET that races the async DELETE. Instead: DELETE the room, poll until it returns 404, then schedule.

Read the full file on GitHub · 224 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 9d ago First seen · 224 lines · 125 tokens per session scan A 9ffd4fe565cd

Subscribe to this mod's changes

video-recording is a skill published in the GitHub repository OpenVidu/openvidu.io (5 stars, last pushed yesterday), licensed Apache-2.0. It adds 125 tokens to every session and 2,918 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

html-ppt-knowledge-arch-blueprint

OpenDesign's incident retro: the daemon-restart data bug, the root cause, the fix, and the systemic follow-ups. Built as a decision-grade product management deck for engineering, SRE, leadership.

nexu-io/open-design · 52 tokens

deck-open-slide-canvas

OpenDesign's architecture review: the local daemon + agent-runtime design, the tradeoffs, and the decision to lock. Built as a decision-grade product management deck for staff eng, tech leads, security.

nexu-io/open-design · 47 tokens

mockup-device-3d

A template for presenting app or product interfaces inside CSS-rendered 3D iPhone and MacBook mockups. CSS is the web styling system used to control layout, colors, and visual effects.

nexu-io/html-anything · 48 tokens

deck-product-launch

A visual template for product-launch presentation decks, with a dark opening, bright content slides, feature cards, pricing, and a call to action.

nexu-io/html-anything · 26 tokens

integration-orchestrator

Generate a phased delivery orchestration plan for creative-direction-driven work: which skills run when, what locks at which gate, how handoffs occur, and how the cadence implements in the team's tools (Jira, Linear, Notion, Figma, GitHub) with AI agents via MCP and CLI. A temporal map of phases, lock points, handoff…

rampstackco/claude-skills · 206 tokens

Popular Web Designs

Guides reference-aware website and landing-page work so the result feels intentional, current, and product-grade instead of generic.

agentic-in/elephant-agent · 28 tokens