← Plugin catalog
Productivity
Demo Videos
OpenAI v0.3.1
Publisher description
From the marketplace listing
Record a product walkthrough or start with an existing screen recording. Trim the footage, add captions and zooms, and cover private information. Share the finished video on its own or as a before-and-after comparison.
Language: English · Automatically detected from descriptions.
Files & skills
File archives
Plugin package20 files · 21.6 KBBrowse files →
Skill instructions
capture-demo-video3.3 KB
--- name: capture-demo-video description: Record an app or screen for a product demo, with action timing when available for cursor animations or input badges. --- # Capture a demo video Choose a recorder that works with the app, machine, and available permissions. For a local screen or window, use the bundled Cirro recorder or an existing setup. For synchronized pointer events in a supported Chromium app, use the bundled Chromium helper. See [recorder options](references/recorders.md) for commands, platform limits, and alternatives. For Cirro recording, follow [Set up Cirro](../setup/SKILL.md) to prepare its launcher. For existing footage, continue with [Create Demo Video](../create-demo-video/SKILL.md). ## Choose how to record Try to capture action timing by default using the available recorder or input tool journal. Read [action timing](references/action-timing.md) before recording. Include clicks, typing, shortcuts, scrolling, and dragging when supported; pointer movement alone does not describe those actions. Keep partial logs and note what is missing. If logging is unavailable, continue with the recording rather than blocking the task. Never invent events or precise timestamps. - **Keep the original cursor:** record it as part of the video. Captions, zooms, masks, and speed changes do not need an event log. - **Animate the cursor:** record without the cursor and capture synchronized pointer events. Use input badges only for actual keyboard events. If reliable event timing is unavailable, keep the original recording and edit without those effects. ## Record the story Choose the task and result you want to show. For a before-and-after comparison, perform the same task on both versions with comparable app state and recording settings. Before performing the walkthrough, make a short test recording and inspect it for permission errors, black frames, and cursor visibility. Check input permissions too when the walkthrough needs desktop control. If access is denied, use an available permitted alternative or tell the user which app needs which permission and where to enable it. After access changes, repeat the test before recording the full walkthrough. On macOS, native screen or window recording may need approved execution outside Codex's sandbox, even when Screen Recording consent is already granted. Follow the [macOS permission guidance](references/recorders.md#macos-permissions-and-sandboxing) and keep the exception limited to capture commands. Keep the recording region and scale stable. Show a readable starting state, perform the task, and leave the result on screen long enough to understand it. Keep failed attempts and describe what happened. When collecting events, start logging before the first interaction and align the log with the video. Record timing uncertainty and protect sensitive input as described in the timing reference. Stop and finalize the recording. Stop only processes created for it and restore temporary settings. Check the footage for missing frames, clipped UI, and private content. ## Hand off to editing Keep the original video with the recording settings, task, outcome, and version under test. Include raw logs and clock and coordinate mappings when collected. Continue with [Create Demo Video](../create-demo-video/SKILL.md), passing only trustworthy events in the screenplay.
Referenced files: 4
create-demo-video6.4 KB
--- name: create-demo-video description: Create a demo from new or existing footage, with captions, zooms, privacy masks, and optional cursor animations or input badges. --- # Create a demo video Use Cirro to turn a recording into a product demo. Keep the original recording and write generated files outside tracked repository paths. When footage is needed, use [Capture Demo Video](../capture-demo-video/SKILL.md). Follow [Set up Cirro](../setup/SKILL.md) to prepare its launcher before editing. The examples use the macOS/Linux launcher; pass the same arguments on Windows. If setup fails, report the blocker; do not substitute another editing pipeline. Use Cirro to validate and render the final screenplay, fixing validation errors before delivering the video. ## Inspect the recording Cirro produces VP9/WebM video without audio and can also read supported MP4 recordings. ```sh sh /absolute/path/to/setup/scripts/cirro.sh schema sh /absolute/path/to/setup/scripts/cirro.sh inspect /absolute/path/recording.webm --json ``` Read the schema and [editing guide](references/screenplay-contract.md). Check the recording's dimensions, duration, interface states, and frames around important transitions. Before choosing the trim, identify the outcomes the user's request or session summary says the demo should show, then locate their evidence in the footage. Keep the setup and result for those outcomes. A short demo can compress pauses without reducing a multi-step walkthrough to its last interaction. For a failure and retry, let the viewer recognize the failure, retained work, and eventual result. Show the starting state, interaction, response, and result. Use short captions to explain what's happening. For cursor animations and input badges, use actual event logs with coordinates in recording pixels and timestamps in milliseconds from the first video frame. Keep drag endpoints and button metadata; map tool names only when their meaning is known. Omit `recording.events` when logs are unavailable. The renderer then keeps any cursor in the recording and adds no cursor animation or input badges. If the recording already has a cursor, omit pointer events to avoid drawing a second one; reliable keyboard events can still produce input badges. Use cursor-free footage when supplying pointer events. Never invent events from screenshots. Summarize ordinary typing by count. Protected typing must contain neither its value nor its length. Review the visible interactions as well as the finished file. ## Edit the video Keep one continuous section of the recording. Trim the beginning or end and speed up idle time instead of adding gaps, repeats, freezes, or invented actions. Keep enough of the opening to establish where the viewer is and what will change. Keep important actions and their visible results, including the final success or failure, readable. Compress idle waits aggressively, but preserve time to recognize each new state. The renderer shows a double-chevron icon during fast-forward and adds elapsed source time after ten seconds. Start at full-frame zoom 1. Use a zoom only when it reveals a detail the viewer would otherwise miss. Use a short, deliberate transition, then hold the same framing through the action and result. Avoid a slow zoom throughout a scene or an immediate zoom-out that competes with the action. Keep the cursor, target, and relevant result inside the frame; show enough context to follow scrolling and movement between controls. Highlight visible results sparingly. Inspect the target's bounds in the actual frame; use balanced padding that separates the annotation from the UI without covering nearby controls. Start the highlight after its target appears and end it before the target moves or disappears. Map source times through speed changes before timing overlays. Use ASD-STE100-inspired language for captions: short sentences, active voice, familiar words, and one idea per caption. Explain the action or result and give each caption enough reading time. Keep captions and input badges from overlapping each other or the important UI; omit redundant annotations. If annotations obscure the evidence, simplify or remove them before adding camera motion to make room. A clear, complete static edit is a better starting point than a decorated edit that needs repeated repairs. Recorded click events animate the cursor. Use `edit.style.reduced_motion` when requested. Set `edit.style.accent` to `#4a8fff` for an ordinary demonstration, `#ef6b73` for a bug reproduction, or `#58c98a` for a verified fix. Use the video's actual outcome to choose the color; an unresolved bug is not a verified fix. Use `edit.cover.at_ms` to choose a frame that shows what the viewer should notice. The cover is the first video frame; the complete story follows. Overlay and camera times refer to the story, so do not offset them for the cover. Derive duration from clip ranges and speeds; validate to get the exact mapped event times. Cover private information with opaque masks in every affected frame, including the cover and zooms. If masks would hide the behavior being demonstrated, request a clean recording instead of sharing it. ## Validate and render ```sh sh /absolute/path/to/setup/scripts/cirro.sh validate /absolute/path/screenplay.json --json sh /absolute/path/to/setup/scripts/cirro.sh render /absolute/path/screenplay.json -o /absolute/path/demo.webm --json sh /absolute/path/to/setup/scripts/cirro.sh frame /absolute/path/screenplay.json --at-ms 2000 -o /absolute/path/review.png ``` Start with 60 fps and a width near 1440 pixels, adjusted for the source dimensions and aspect ratio. Upscaling does not add source detail. Wait for encoding to finish. ## Verify and deliver Watch the finished video. Check that the actions and results are easy to follow. Check frames around clicks, zooms, speed changes, masks, and the final result. Watch the opening and ending without relying on the prompt: the viewer should understand the setup and see the outcome, not just the last click. Make sure the cover and captions match what happened and private content stays covered. The renderer decodes the output to check VP9/yuv420p WebM, dimensions, frame count, and timing. That does not establish that the demo shows the task or is easy to follow. When the user is working on a pull request, include the video in that PR using [Share Demo Video](../share-demo-video/SKILL.md). Otherwise, show the final video using its absolute file path. Mention any limitations in the footage.
Referenced files: 3
setup2.46 KB
--- name: setup description: Set up Cirro for recording or editing demo videos. Use when a demo-videos workflow needs the bundled Cirro launcher. --- # Set up Cirro Cirro is a command-line tool for recording screens and windows and editing recordings into demo videos. Use this skill's launcher. On macOS/Linux, run `sh "/absolute/path/to/setup/scripts/cirro.sh" <command> ...`. In Windows PowerShell, run `& "C:\absolute\path\to\setup\scripts\cirro.cmd" <command> ...`. Pass the same Cirro arguments on either platform. Choose one absolute path for `DEMO_VIDEOS_CACHE` from the current task's writable paths, in this order: 1. A shared cache root, when the sandbox allows writing it (for example, `$XDG_CACHE_HOME`, `~/.cache`, `~/Library/Caches`, or `%LOCALAPPDATA%`). 2. An allowed temporary root, such as `$TMPDIR`, `/tmp`, or `%TEMP%`. 3. The task's writable working directory. Use a `demo-videos-cache` subdirectory of the chosen root. On macOS/Linux set `export DEMO_VIDEOS_CACHE="/absolute/chosen/path/demo-videos-cache"`; in PowerShell set `$env:DEMO_VIDEOS_CACHE = "C:\absolute\chosen\path\demo-videos-cache"`. Pass the same value to every Cirro invocation, including new shells, changed working directories, and tests. Do not assume an OS-default cache or temp path is writable unless the active sandbox permits it. The launcher downloads the pinned release from the OpenAI CDN on first use. It checks the SHA-256 of the release's `SHA256SUMS` against the skill's pin, then checks the selected platform archive against that manifest. It caches both files and rechecks them before every use. If `DEMO_VIDEOS_CACHE` is unset, the launcher defaults to `.demo-videos-cache` in the working directory. Each run extracts a fresh private copy, keeps its libraries together, and removes it on exit. A verified cache works offline. No Python, pip, FFmpeg installation, or Node.js is needed for editing. Supports Ubuntu 24.04-compatible Linux x64/ARM64, macOS 14+ Apple Silicon or macOS 15+ Intel, and Windows 11 x64/ARM64. macOS/Linux need curl and unzip; Windows uses system curl and tar. First use needs HTTPS access to `persistent.oaistatic.com`. For setup failures, report the exact error and platform; checksum errors name the cache file to remove before retrying. Keep TLS verification and OS security policies enabled. The macOS and Windows binaries are signed; Linux binaries have no OS publisher signature. The launcher verifies downloaded bytes against the manifest pin, not platform signatures.
Referenced files: 3
share-demo-video5.29 KB
--- name: share-demo-video description: Share demo videos on GitHub, GitLab, or another destination. Use for a single demo or a before-and-after comparison. --- # Share a demo video When the user is working on a PR or MR, upload and include the demo video there as part of completing the work. For other destinations, use the one the user requested. Ask only if the destination or audience is unclear. If the user requests only a draft, keep it unpublished; attachments can become accessible before a comment is posted. ## Choose what to show Use **Before / After** when both recordings show the same task on the original and changed versions. Keep the app state, data, viewport, and pacing comparable where possible. Explain what happened in each video and identify the versions tested. Show failures as they occurred. Do not use an unrelated older video as the baseline. For a new feature, or when there is no baseline, show **Result**. Explain what the video shows and mention any important limitations. Do not add an empty Before column or imply that a baseline exists. Separate operating systems or scenarios when that makes the comparison easier to understand. ## Format the comparison For two related videos, use a two-column table with the players in the same row. This applies to Before / After, platform checks, and two workflows. Label each column for what it shows; two different workflows are not a Before / After comparison. ```markdown ### Theme switching | Before | After | | --- | --- | | Selecting Dark leaves the sidebar light. | Selecting Dark updates both panels. | | [Watch before](BEFORE_URL) | [Watch after](AFTER_URL) | | PLATFORM, VERSION_A | PLATFORM, VERSION_B | ``` Use verified upload URLs and describe what the videos show. GitHub attachment links in the media row can render as players inside the cells; see the [GitHub guide](references/github.md). For GitLab, use image Markdown with the returned upload URLs in that row. Check that both players appear inside their cells, not below a table containing only descriptions. If the destination does not render players in cells, keep labeled links or linked previews in the table. Use stacked players when side-by-side viewing is unsuitable or the user requests it, and explain that layout choice. For a single video, use one heading, a sentence explaining the action and result, and one player or labeled link. Add a still preview if it helps readers or provides a fallback for an unsupported player. Host preview images where the intended audience can access them. ## Prepare the video Use [Create Demo Video](../create-demo-video/SKILL.md) if the recording needs editing. Check the final video for readability and private information. Check the preview frame, captions, audio if present, and filenames too. Keep raw footage private unless the user asked to share it. Prefer the plugin's VP9 `.webm` output. Keep the extension and use `video/webm` when an upload API needs a MIME type. Check the destination's file size limit and test browser playback. A destination that accepts WebM may not play every WebM video. Do not silently change codecs, rename WebM to MP4, or use another host to get around a failed upload. Choose a preview frame that shows what the viewer should notice, such as the failure in Before or the result in After. If rendering with Cirro, set `edit.cover.at_ms` to that frame on the story timeline. Cirro places the composed frame before the video. A codec keyframe does not select the host's thumbnail. Check the hosted preview. If the host chooses a different frame, use its thumbnail option or link a separate preview image if available. ## Upload and describe For GitHub, read [Publish to GitHub](references/github.md). For GitLab, read [Publish to GitLab](references/gitlab.md). Use the repository's host, including its enterprise or self-managed host. Check installed CLI help before using a flag; versions and host capabilities differ. Use authenticated tools without printing tokens. Use a supported attachment flow or an existing integration. For another host, check audience access, link durability, and embedding support. Confirm the repository or project and audience before uploading. Use a private destination for private material. Do not assume that an externally hosted attachment is private because the PR is private. Upload each final file once and reuse its durable URL. Keep temporary signed URLs, credentials, local paths, and expiring CI artifacts out of the description. For an existing PR or MR, keep unrelated description content and follow its template. If the user asks for a comment, post a comment. Add a short heading and explain the task, result, and any platform or version details needed to understand the video. Say what the viewer should notice instead of only saying “it works.” ## Check and return Check the published page, not just the submitted Markdown. Check the players or links, previews, table layout, and access for the intended audience. If inline playback does not work, use a labeled link or linked preview instead of a blank player. Reuse existing upload URLs when fixing formatting. Return the published destination and mention any limitations. If you cannot verify access for the intended audience, say so. If publishing is blocked or the user requested only a draft, return the prepared files and copy-ready Markdown. Label it as a draft.
Referenced files: 3
Package details
Publisher declarations from the archived package. These are separate from our research and the live service's terms.
- Package author
- OpenAI
Declared capabilities
- Read
- Write
Package observed Oct 2, 2026.
Technical details
- First seen
- Sep 30, 2026 · 22:02 UTC
- Last seen
- Oct 2, 2026 · 18:00 UTC
- Collection status
- Collected
Plugin_55ed66408350819183be8eb8c0b045a7
Download plugin data (JSON)