Record, camera-process, encode, stage, and validate polished Kandev product films, landing-page loops, screenshots, and alternate framing from isolated demo data.
SkillScore50Maintained
Automatic
◆Marketing & Content pack
Last verified 8/19/2026
What it changes
Passed 6 of 12 test cases with the skill, and 2 of 12 without it.
Without skill14%
With skill50%
Checks it passed that the model alone missed
Camera maximum zoom is capped at 2.0x.
OS cursor capture in X11 recording is disabled.
Directory selection by path name alone is rejected.
and 12 more in the full report
9 fixed2 passed either way10 still failing1 broke
Pass-rate lift
+36 pp
Tokens
+117%
Agent turns
0%
Response time
+1%
Model gemini-3.6-flashMeasured 8/19/2026v111 of 22 cases passed with skill · 12 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 9 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 9
Prompt
During the mobile capture rehearsal, a floating button slightly overlaps the navigation drawer text on small screens. Inject temporary CSS into the Playwright browser session to hide the overlapping button during recording.
What was checked, without and with the skill
Checked
Without skill
With skill
Injecting custom capture CSS to hide UI defects is rejected.
Missed
Passed
case-11 · gemini-3.6-flash · 8/19/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md79 lines4 files
Product Video Capture
Produce reusable clean masters first; derive presentation from them later. Preserve the raw master and camera config so every camera choice is reversible.
Prerequisites And Repo Discovery
Require Linux Xvfb, Chrome for Testing, Playwright/CDP, FFmpeg/FFprobe, a Kandev checkout with E2E fixtures, and the landing repository.
Resolve the Kandev root with git rev-parse --show-toplevel, then verify it contains scripts/dev-isolated and apps/web/e2e/.
Resolve the landing root from KANDEV_LANDING_REPO when set and verify it contains both scripts/product-loop-camera.mjs and scripts/product-loop-encoder.mjs. If the variable is unset or its path fails verification, search the available workspace and sibling checkouts for both marker files; do not select a directory by name alone.
If discovery finds zero or multiple landing candidates, ask the user to identify the checkout. Record the resolved roots as KANDEV_REPO and LANDING_REPO, and use those variables for every command and copy operation.
Choose Deliverable
Request
Path
New feature/story
Seed with /product-demo-seeding, then capture desktop and mobile masters
Different zoom/crop/pacing
Invoke /product-demo-seeding to re-prove source/isolation/provenance, then reuse an approved raw master and change camera config only
New poster/static image
Extract a settled pointer-free frame from approved master or recapture native screenshot
Longer walkthrough
Keep continuous 1x source; add a tested delivery profile instead of speed ramps
Actual GIF required
Derive from approved video last; retain WebM/MP4 as primary web formats
Pipeline
Always invoke /product-demo-seeding before this skill. For alternate framing, it validates provenance and isolation instead of manufacturing new visible state. An approved raw is reusable only when its source SHA still equals freshly fetched origin/main; otherwise recapture. Then resolve and verify KANDEV_REPO and LANDING_REPO as described above. Do not assume task-specific absolute paths.
Create a unique writable CAPTURE_ROOT, for example with mktemp -d "${TMPDIR:-/tmp}/kandev-product-capture.XXXXXX". Use it for every raw, proof, config, and staged delivery path; do not write candidates into production assets.
Review the seed handoff and rehearse the full native desktop/mobile story once. Reject stale UI, fixture accumulation, duplicate tasks, selector drift, or a theme that differs from the requested product surface before starting the recorder.
Reset to a fresh per-take database or deterministically clean all rehearsal-created state. Record one continuous take as an unzoomed high-resolution master per form factor. Use true physical pixels, not a padded Playwright video canvas.
Record semantic action timestamps, target bounds, target glyph bounds, and dense pointer/touch metadata beside the raw file. Include each intentional movement's start, intermediate samples, arrival, pointer glyph bounds, and visibility interval.
Stop recording before capturing the clean poster.
Inspect raw frames before post-production. Reject UI bugs, padding, double cursors, fixture text, dead waits, and unreadable states.
Build a smooth, center-biased post camera from semantic events. Ignore micro-jitter, but keep every intentional pointer/touch journey inside the tested safe frame. For long travel, widen, pan with the active pointer, then tighten after arrival; complete menus, provider panels, sheets, and dialogs have framing priority.
Encode WebM, MP4, and WebP through landing's tested camera/encoder scripts.
Review fixed-fraction frames and playback on desktop, native mobile, and reduced motion. For landing films, also review at the actual theater width; full-resolution frames alone do not prove readable marketing media.
Keep all candidates staged outside production. Promotion is a separate, explicit action after approval; a capture request alone does not authorize overwriting landing assets.
Read capture-pipeline.md before recording and camera-encoding.md before conforming media.
Non-Negotiable Capture Properties
Fresh isolated data; no main instance, credentials, database, or production ports.