Create Demo Video
SkillWeb & browsingCreate captioned engineering proof videos from real CLI, deployed Playwright, or Apple evidence with bounded media processing and frame-only review.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Create Demo Video skill
What this skill tells your AI
The instructions your AI receives, as published by glowingkitty/openmates in .agents/skills/create-demo-video/SKILL.md and read by ahel’s review.
Use this skill for engineering proof, not marketing video production. Start with one command:
python3 scripts/proof_video_workflow.py start --current --spec <name>.spec.ts
The command resolves the current sessions.py session, subject commit, and matching passing run. If evidence is missing or ambiguous, follow its single reported next action instead of searching artifacts manually.
Approval Boundary
If start --current --spec ... returns status: contract_approved with
approval_source: spec_timeline, the deployed spec already emitted its checked-in
proof contract and passed every declared assertion. Do not ask for a second chat
approval; continue directly to render/review/publish.
Only for legacy proofs without a spec-owned timeline, draft and show the user the complete proof contract before capture:
- Three to five short tutorial-style caption sentences.
- One to five assertions describing what must be visibly or terminally true.
- Required device profiles.
- Every caption sentence and assertion lists the exact device profiles where it applies.
For legacy proofs, save the canonical contract only after explicit approval, then persist the approval record before rendering:
python3 scripts/proof_video_workflow.py approve --session <short-session> --spec <name>.spec.ts --contract <contract.json>
An unchanged already-approved contract may be reused. The spec-owned or approved
transcript is canonical; audio is off by default and --audio-path is an explicit
opt-in.
Capture And Render
- Use a real passing deployed Playwright result, Apple run, or real OpenMates CLI command.
- For Playwright/spec proofs, the rendered video must include real source-video
segments from the attested Playwright recording. Checkpoint frames may only be
short freeze segments; never publish checkpoint-frame-only screenshot montages
or a manifest with
rendered_from: spec_timeline_checkpoint_frames. - For web UI component proofs, use the focused component spec recording from
https://app.dev.openmates.org/dev/preview/{component-path}?chrome=0. Every inspection and recording must includechrome=0and show only the component, never the configuration UI. Use the.preview.tsdefault fixture for the standard state and encode every non-default input or configuration in URL query parameters such asvariant,props,theme,background, andwidth. Publish the component video for every modified UI component, use separate phone/laptop profiles only when responsive behavior differs, and derive still frames only from the completed video for failures, explicit requests, or ambiguous visual inspection. - Use CLI proof only when the actual
openmatesCLI is the product surface being demonstrated or fixed. Do not use CLI proof for generic smoke scripts, pytest helpers, Node scripts, or shell wrappers that do not visibly execute the OpenMates CLI. - Browser/native capture must record an explicit ready timestamp after required UI is visible. Trim only to that marker minus the fixed lead; do not scan or crop until a product defect disappears.
- Exact profiles remain mandatory: web phone
390x844, web laptop1440x900, iPhone portrait393x852, iPad landscape1366x1024, CLI1280x720. - Captions are sentence-level WebVTT cues delivered through the video player's toggleable captions track. Never burn captions into video pixels or shrink, pad, border, or otherwise reserve frame area for captions. Pacing may use only whole-video
slowdown to
0.75xand a final hold, with a 35-second output cap. - Process one device at a time. Do not use OCR or place the full video in model context. Sample periodically every five seconds, prioritize event boundaries, deduplicate nearby timestamps, and cap the immutable index at twelve frames per device.
Review And Repair
Run the canonical review command rather than manually selecting frames or writing claim verdicts:
python3 scripts/proof_video_workflow.py review --run-dir <path> --correction-round 0 --correction-kind none
Review every clean frame in the immutable one-to-twelve-frame device index plus the complete device-applicable WebVTT cue text, approved device-applicable assertions, and deterministic metadata. Before evaluating assertions, complete the mandatory per-frame critical UI scan for layout, readability, geometry, controls, visual assets, application state, consistency, and proof alignment. Return exactly one status:
passedcapture_defectrender_defectproduct_defectuncertain
Every verdict needs frame-grounded observations. Blank opening frames may be corrected mechanically once. Caption syntax, ordering, and bounds are deterministic checks rather than visual-review concerns. Unexplained scroll state returns to
capture. Clipping, broken headers, wrong UI state, raw implementation text, stale
loading, and broken navigation are product defects. When the reviewer classifies
the defect intent as obvious, automatically add or strengthen a failing test,
fix the product, deploy, and recapture. When intent is unclear, upload the
representative blocker frame and ask the user for consent before product-code
changes. Never hide defects through trimming, cropping, caption edits, or transcript edits.
Contrast, text-size, opacity, font-weight, and related typography/readability findings
are advisory design concerns from frame-only review: report them to the user as
unclear warnings and never route them to automatic product correction.
Do not ask that visual-intent question until the exact cited blocker image is
successfully embedded in the same response with a short explanation of what the
user should inspect. If media delivery fails, repair or retry it first; never
substitute a text-only question, local path, or uncited description.
After explicit user approval, bind the exact unclear finding into the receipt with
python3 scripts/proof_video_workflow.py approve-intent --run-dir <path> --finding-id <id> --reason "<decision>" --approved-at <ISO-8601>. This may resolve only
uncertain checks cited by that finding and must not override failed checks or
unsupported assertions.
The entire proof contract is limited to six AI review calls and forty-eight cumulative submitted frames. It permits one initial review plus at most two automatic correction rounds, including at most one product-code correction round. Re-review only changed device hashes. Unclear intent, uncertain findings, repeated defect fingerprints, or exhausted budgets require immediate user input.
If review returns any blocker status (capture_defect, render_defect,
product_defect, or uncertain), inspect the returned blocker_media metadata
before responding. Run its upload_command and paste the returned <video> HTML
in the blocker response so the user can see the exact failed recording. If
blocker_media.media_status is missing, state that as a workflow defect and
include the missing video_path; do not report the blocker or ask for design
consent with text alone. Run image_upload_command and embed the cited frame before
any visual-intent question.
After a passed frame review, upload the approved proof video with its hash-bound WebVTT sidecar or representative
proof screenshots with python3 scripts/response_media.py <path> --alt "..." and paste the returned image Markdown or <video> HTML in the final
Codex response. Do not send proof media to Discord unless the user explicitly
asks for a separate Discord mirror. Retain transcripts, captions,
manifests, hashes, review evidence, and response-media publication state.
Signals
- GitHub stars
- 46
- Forks
- 3
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
create-demo-video- Source
- github.com/glowingkitty/openmates