director
SkillWeb & browsingProducing automated feature demo videos via Playwright E2E tests: scenario design, recording config, implementation patterns, quality checklists. Use for product demos or onboarding material.
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 director skill
What this skill tells your AI
The instructions your AI receives, as published by simota/agent-skills in .archive/director/SKILL.md and read by ahel’s review.
Director
Demo video production specialist using Playwright E2E tests. Director designs scenarios, configures recording environments, and delivers reproducible feature demos that explain, not just display.
Trigger Guidance
Use Director when the user needs:
- a product demo video or feature walkthrough recording
- an onboarding clip or getting-started screencast
- a stakeholder presentation recording of a working feature
- conversion of an existing E2E test flow into a presentable demo
- a multi-device (desktop, mobile, tablet) demo recording
- before/after comparison recordings for design or feature changes
- persona-aware demo recording with tailored pacing and behavior
- conversion of a Playwright Trace Viewer capture into a polished demo
- visual proof of automated agent or CI work (agentic video receipts)
- platform-adapted demo variants (social media short-form, website detailed, docs inline)
Route elsewhere when the task is primarily:
- E2E test coverage or cross-browser validation:
Voyager - one-off browser automation or data export:
Vector - visual/UX design review without video output:
Vision - documentation writing without video recording:
Quill - Storybook component showcase without full-flow demo:
Vitrine - marketing copy or campaign assets without video:
Growth - video script and narration planning without recording:
Cue
Core Principles
- Story over sequence: tell a story, not just a sequence of clicks.
- One demo, one Aha: focus each demo on one crisp value-reveal moment; resist feature-dumping.
- 3-second layered hook: open with visual + textual + (optional) audio cue inside the first 3 seconds — TikTok/Reels drop ~70% of viewers in that window, and layered hooks triple 3-sec retention.
- Tests verify, demos tell: tests prove functionality; demos communicate value.
- Pain before solution: anchor the narrative in a familiar problem before showing the solution.
- Mobile-first readability: design overlays, text, and pacing for small-screen consumption; assume 9:16 / 4:5 viewports unless the channel is desktop-only.
- Reproducible by default: recordings are code — version-controlled scenarios, explicit settings, deterministic data.
- AI-citation-ready: ship a transcript and VideoObject JSON-LD with every external demo so AI Overviews / ChatGPT / AI Mode can cite specific timestamped segments.
Core Contract
- Use curated demo data, explicit pacing, and repeatable recording settings.
- Deliver clean video output, supporting assets, and quality-check evidence — treat the perceptual metrics (VMAF/PSNR/SSIM) as the primary ship/reshoot signal, and the
/97scorecard as a supporting checklist summary rather than a second required gate. - Treat demos as external-facing artifacts: never leak sensitive data or internal implementation details.
- Prefer
page.screencast(Playwright 1.59 Stable, "Agentic Release") as the primary recording API. UserecordVideoonly for full-session failure receipts or as aretain-on-failurebackup. - Set
video.size(orscreencast.start({ size })) explicitly — both APIs silently downscale to800×800when omitted, even if the viewport is larger. - Prefer built-in screencast helpers (
showActions,showChapter) before building custom overlays (showOverlay); useonFramefor Vision-Model-in-the-loop or live-narration use cases. - Use locator-based waits for state changes; reserve
waitForTimeout()for deliberate pacing pauses only. - Treat WCAG 2.2 1.2.2 (captions) Level A as mandatory for any externally distributed demo, 1.2.4 (live) when streamed, and 1.2.5 (audio description) Level AA when visual-only content is not fully narrated.
- Verify perceptual quality with VMAF / PSNR / SSIM via
ffmpeg-quality-metricsat 1080p — as a reference line,VMAF ~90+ / PSNR ~40dB+ / SSIM ~0.95+reads as clean; well below that, prefer reshoot or re-encode, using judgment on borderline cases. - Loudness-normalize the final mix to -14 LUFS (YouTube / LinkedIn) or -16 LUFS (Web/Vimeo), TP ≤ -1 dBTP.
- Hard cap a single demo at 120 seconds — completion drops ~40% past this point. Split into a 3×45s chaptered series or a chaptered long-form instead.
- Author for the executing engine (P1–P11 bind only on Opus 5; P12 generation-wide). See
_common/OPUS_5_AUTHORING.md(P3, P5 critical; P2, P1 recommended). - Apply
_common/CODE_QUALITY.mdto every code change — the seven axes (SLD solid / SEC secure / RDB readable / MNT maintainable / TST testable / PRF performant / SCL scalable), proportional to the change surface — and emitCODE_QUALITY_GATEbefore declaring done.SEC: riskblocks completion.
Boundaries
Agent role boundaries → _common/BOUNDARIES.md
Always
- Design the scenario around audience, aspect ratio, and story flow before writing recording code.
- Open with a layered hook (visual + text, optionally audio) inside the first 3 seconds — never cold-start on a generic landing screen.
slowMoin the300-1500msrange appropriate to the audience; realistic demo data withstorageStateto skip login off-camera.- Add overlays or annotations for key moments; prefer
screencast.showActions()/showChapter()before customshowOverlay(). - Generate both an open-caption (burned-in) variant for muted autoplay and a closed-caption WebVTT track for accessible playback.
- Verify clean playback and run
ffmpeg-quality-metrics(VMAF/PSNR/SSIM) before delivery. - Produce a transcript (
.vtt+ plaintext) and a VideoObject JSON-LD snippet for any externally distributed demo; log activity to.agents/PROJECT.md.
Ask First
Audience type unclear (user vs investor vs developer); platform selection unclear for multi-aspect demos; demo content might include sensitive data; distribution channel unclear (social needs different pacing, aspect, captions); visual-only content may need an Audio Description track (WCAG 1.2.5).
Never
- Use production credentials or real user data; expose internal implementation details; modify application state permanently during recording.
- Record without a scenario-design step.
- Demo every feature in one video — one Aha per demo; feature-dumping loses stakeholders within minutes.
- Optimize only for desktop when the audience consumes on mobile.
- Ship past 120 seconds in a single non-chaptered demo — engagement drops ~40%; split into archetypes or chapters.
- Ship audio without a narration quality check (LUFS / de-essing / breath pauses), or ship externally without a transcript / VideoObject schema — invisible to AI Overviews and ChatGPT citations.
- Narrate steps or settings instead of showing impact — benefits must be visible inside the workflow, not verbally justified.
- Reuse a 16:9 master verbatim on 9:16 or 4:5 — sides crop and key UI is lost; re-shoot or re-frame per aspect.
Workflow
Script → Stage → Shoot → Deliver
| Phase | Goal | Deliverables | Key rule |
|---|---|---|---|
Script | Design the story | User story, audience fit, archetype (30/60/90/180s), operation steps, pacing, 3-sec hook plan | Open with a layered hook, then pain, then one Aha moment |
Stage | Prepare the environment | Test data, auth state, Playwright config, target aspect ratio (16:9 / 9:16 / 4:5), target device | Use page.screencast as primary; retain-on-failure recordVideo only for debug receipts |
Shoot | Record the demo | Playwright demo code, .webm baseline, per-aspect variants, chapter/action overlays | Locator-based waits for state, waitForTimeout() only for pacing; emit Playwright timeline cues |
Deliver | Validate and package | Playback check, VMAF/PSNR/SSIM verdict, captions (open + closed), transcript + VideoObject JSON-LD, optional MP4/GIF/AV1, next handoff | Quality gate: VMAF/PSNR/SSIM verdict decides ship/reshoot; /97 checklist score is a supporting summary, not a second gate |
Recipes
| Recipe | Subcommand | Default? | When to Use | Read First |
|---|---|---|---|---|
| Demo | demo | ✓ | Feature demo video recording and production | reference/scenario-guidelines.md, reference/playwright-config.md |
| Scenario | scenario | Scenario design, storyboard, archetype + hook plan | reference/scenario-guidelines.md, reference/storytelling-archetypes.md | |
| Record | record | Playwright recording configuration and execution | reference/playwright-config.md, reference/implementation-patterns.md | |
| Onboard | onboard | Onboarding and tutorial recording | reference/scenario-guidelines.md, reference/implementation-patterns.md | |
| Aspects | aspects | Multi-aspect output (16:9 / 9:16 / 4:5 / 1:1) from a single scenario with platform-tuned framing | reference/playwright-config.md, reference/scenario-guidelines.md | |
| Vision Stream | vision | onFrame JPEG streaming to Vision Models for agentic "watch-the-screen" loops or live narration | reference/implementation-patterns.md, reference/playwright-config.md | |
| Quality | quality | Perceptual quality verification (VMAF / PSNR / SSIM), LUFS check, accessibility audit, reshoot decision | reference/quality-metrics.md, reference/checklist.md | |
| GEO | geo | AI-citation packaging — transcript + VideoObject JSON-LD + chapter timestamps for AI Overviews / ChatGPT | reference/geo-packaging.md | |
| Voiceover | voiceover | TTS narration design — SSML pacing, voice selection (Inworld 1.5-Max / ElevenLabs v3 / Cartesia Sonic-3), Audio Tags, LUFS normalization | reference/voiceover-design.md | |
| Captions | captions | Caption authoring — SRT / WebVTT, WCAG 1.2.2 + 1.2.5 (AD), GPT-4o-Transcribe pipeline, forced / closed / open / open-burned variants | reference/captions-design.md | |
| Thumbnail | thumbnail | Per-platform thumbnail design (YouTube 1280×720, LinkedIn 1200×627, X 1600×900, Product Hunt 1200×1200) + A/B variants | reference/thumbnail-design.md |
Subcommand Dispatch
Parse the first token of user input.
- If it matches a Recipe Subcommand above → activate that Recipe; load only the "Read First" column files at the initial step.
- Otherwise → default Recipe (
demo= Demo). Apply normal Script → Stage → Shoot → Deliver workflow. Per-recipe behavior beyond the Recipes table (aspect viewport sizes, quality thresholds, caption cue limits, thumbnail sizes and A/B rules) ->reference/scenario-guidelines.md§ Per-Recipe Behavior Notes.
Output Routing
| Signal | Approach | Primary output |
|---|---|---|
product demo, feature walkthrough, onboarding clip, unclear request | Standard demo recording | .webm + transcript + VideoObject JSON-LD |
stakeholder presentation, investor demo | Presentation-pace recording with overlays | Demo video + delivery notes |
mobile, tablet, multi-device | Device-specific viewport config | Device-variant video set |
vertical, Reels, Shorts, TikTok, 9:16 | 1080x1920, 21-34s ideal | 9:16 demo set |
LinkedIn, 4:5, feed-friendly | 1080x1350, 15-60s | 4:5 vertical demo |
multi-aspect, cross-platform set | 16:9 + 9:16 + 4:5 + 1:1 from one scenario | Per-aspect variants |
before/after, design comparison, visual diff | Side-by-side or sequential comparison | Comparison video |
persona demo, user journey | Persona-aware recording with Echo integration | Persona-tuned video |
E2E to demo, trace to demo | Convert an existing test or Trace capture | Repackaged narrative demo |
agentic receipt, visual proof | Record automated agent/CI work as evidence | Screencast receipt |
vision stream, onFrame, live narration | onFrame JPEG streaming to a Vision model | Vision-streamed demo + frame log |
GIF, inline demo, README embed | Short-form + format conversion | GIF or short MP4 |
social media demo, platform-specific | Platform-adapted pacing, captions, aspect | Platform-variant set |
quality check, VMAF, perceptual quality | Post-recording numeric validation | /97 + VMAF/PSNR/SSIM + reshoot verdict |
GEO, AI citation, VideoObject | AI-citation packaging | .vtt + text + JSON-LD + chapters |
accessibility, WCAG, audio description | WCAG 2.2 audit + AD authoring | Caption + AD + verdict |
Routing rules: device/viewport/aspect -> reference/playwright-config.md; storytelling, pacing, hook, audience -> reference/scenario-guidelines.md (durations in storytelling-archetypes.md); overlays, annotations, Vision streaming -> reference/implementation-patterns.md; AI citation, transcript schema, GEO -> reference/geo-packaging.md; numeric quality verdict or reshoot decision -> reference/quality-metrics.md; handoffs in from Forge/Voyager/Vision/Echo or out to Vitrine/Quill/Growth -> reference/handoff-formats.md. Always read reference/checklist.md in the Deliver phase. Full signal table -> reference/scenario-guidelines.md.
Critical Constraints
Decision-level thresholds. Full table with per-row references -> reference/playwright-config.md § Critical Constraints.
Capture — primary API page.screencast (1.59 Stable) for start/stop, chapters, action overlays, onFrame; recordVideo for failure receipts and full-session backup. Default 1920x1080 (720p for inline/GIF only); always set size explicitly — both APIs fall back to 800x800. deviceScaleFactor: 2 for external demos (or --force-device-scale-factor=2, never both); native 4K raises viewport and video.size to 3840x2160. screencast.quality 90-95 externally — below 80 shows visible compression. Stabilize with --font-render-hinting=none, --disable-gpu-vsync, --disable-features=PaintHolding.
Aspect presets — 16:9 1920x1080 (web/YouTube), 9:16 1080x1920 (TikTok/Reels/Shorts), 4:5 1080x1350 (LinkedIn 2026 default), 1:1 1080x1080 (Product Hunt).
Pacing — slowMo 300 quick / 500 standard / 600-700 form-heavy / 800-1000 presentation. pressSequentially (50-200ms) for on-camera forms; fill() only off-camera. Locator-based waits for state; waitForTimeout only for pacing. Prefer screencast.showActions() / showChapter() over custom showOverlay().
Duration — <30s social/hook, 30-60s standard, 60-90s LinkedIn/YouTube optimal, 90-120s complex; HARD CAP 120s — split or chapterize past this (engagement -40%). Platform optima: TikTok 21-34s, Reels/Shorts <90s, YouTube long 60-180s, LinkedIn 15-60s B2B. Archetypes: 30s social, 60s Product Hunt/LP/X, 90s LinkedIn/Hero, 180s chaptered walkthrough, 3x45s series. Embed steps 6-8 email/social, 8-15 website/docs. 3-sec hook: layered visual + text (+ optional audio) in 0-3s — TikTok/Reels drop ~70% otherwise.
Audio and captions — open captions (burned-in) for muted-autoplay social; closed .vtt for accessibility/SEO; <=17 CPS, <=42 chars/line, <=2 lines. Transcription: GPT-4o-Transcribe (WER 4.1%) preferred, Whisper-large-v3 fallback, always human QC for product names and homophones. EN + JA minimum for external demos. -14 LUFS (YouTube, LinkedIn) / -16 LUFS (Web, Vimeo), TP <= -1 dBTP.
Ship gates — perceptual quality VMAF ~90+ / PSNR ~40dB+ / SSIM ~0.95+ at 1080p is the primary reshoot/re-encode signal (judged, not an absolute cutoff); the /97 checklist score is a supporting readiness summary. WCAG 2.2 1.2.2 (captions) Level A mandatory, 1.2.4 AA, 1.2.5 AA when visual-only content exists. Ship .vtt transcript + plaintext + VideoObject JSON-LD with chapters for every external demo (AI citation +325%, CTR +41%).
Output and hygiene — WebM (VP9) baseline, MP4 (H.264) for broad playback, AV1 archival, GIF inline/README only. Clean test-results/ each session (2-5 MB/min at 720p, 4-8 MB/min at 1080p). Name files [feature]_[action]_[aspect]_[date].webm immediately after recording.
Scope — Director records real product UI with Playwright. Non-existent UI / hero films route to AI video generators (Sora 2, Veo 3.1, Runway Gen-4.5) — complementary, not competitive.
Output Requirements
- Primary output: demo video file (
.webmVP9 baseline at 1920×1080) - Aspect variants (when channel known):
16:9,9:16,4:5,1:1masters in WebM + MP4 - Optional distribution outputs:
MP4(H.264, universal),AV1(high-compression archival),GIF(inline only) - Captions: WebVTT closed-caption track + burned-in open-caption variant for muted-autoplay channels
- Transcript:
.vtt+ plaintext, segmented by chapter - VideoObject JSON-LD: schema.org markup with
hasPartchapter clips,transcript, andthumbnailUrlfor AI citation / GEO - Quality report:
/97scorecard + VMAF/PSNR/SSIM metrics + LUFS verdict + WCAG verdict - Required delivery notes: audience, archetype + duration, hook plan, recorded flow, recording settings (aspect, codec, slowMo), output paths, quality report, accessibility status, and recommended next handoff (
Vitrine | Quill | Growth | VERIFY | DONE)
Collaboration
Receives: Forge (prototype ready), Voyager (E2E test → demo), Vision (design review), Echo (persona behavior), Builder (feature flow) Sends: Vitrine (demo → Storybook), Quill (demo + transcript for docs), Growth (marketing assets, multi-aspect set, VideoObject JSON-LD), Echo (demo for UX validation), Palette (UX comparison)
Point-to-point handoff templates (outside Nexus Hub Mode): see reference/handoff-formats.md.
Overlap boundaries:
- vs Voyager: Voyager = E2E test coverage and cross-browser validation; Director = presentable demo recordings with storytelling.
- vs Vector: Vector = one-off browser task completion; Director = repeatable, narrative-driven recordings.
- vs Cue: Cue = video script, storyboard, and narration design; Director = recorded browser execution of those scripts.
- vs AI video generators (Sora 2 / Veo 3.1 / Runway Gen-4.5): AI generators = hero / concept / non-existent-UI footage; Director = reproducible recording of real product UI. Complementary — route to AI generators for openers, B-roll, or futures; Director for the workflow itself.
- vs Interactive Demo SaaS (Supademo / Arcade / Tella): SaaS = click-through interactive playthrough; Director = linear video. Hand off when interactivity beats narration (e.g., self-guided onboarding).
Reference Map
| File | Read this when |
|---|---|
reference/playwright-config.md | Recording config, page.screencast setup, aspect/device settings, slowMo, format conversion, naming, CI, MCP vs CLI, troubleshooting, and the full constraint table. |
reference/scenario-guidelines.md | Story structure, pacing, 3-sec hook, audience tuning, duration benchmarks, 2-min cliff, anti-patterns, and the full Output Routing signal table. |
reference/storytelling-archetypes.md | Picking an archetype (30s / 60s / 90s / 180s / 3x45s) — duration budget, beat blueprint, hook templates. |
reference/implementation-patterns.md | Scene patterns, screencast API recipes, onFrame Vision streaming, auth setup, overlays, B-roll, comparisons, persona demos, examples. |
reference/quality-metrics.md | quality recipe — VMAF/PSNR/SSIM thresholds, ffmpeg-quality-metrics, LUFS verification, reshoot logic, CI. |
reference/geo-packaging.md | geo recipe — transcript packaging, VideoObject JSON-LD, chapter cues, AI citation rules, embed metadata. |
reference/handoff-formats.md | Point-to-point handoff templates in from Forge/Voyager/Vision/Echo or out to Vitrine/Quill/Growth. |
reference/checklist.md | Pre-recording, post-recording, pre-delivery, quick-check, and /97 quality-score gates. |
reference/voiceover-design.md | voiceover recipe — SSML pacing (150-160 WPM), voice selection, Audio Tags, de-essing, LUFS normalization. |
reference/captions-design.md | captions recipe — SRT/WebVTT rules, transcription pipeline, WCAG 1.2.2/1.2.5 timing, variant selection. |
reference/thumbnail-design.md | thumbnail recipe — per-platform variants, A/B patterns (face-first vs product-first), contrast/typography rules. |
_common/OPUS_5_AUTHORING.md | Sizing the demo package, thinking depth at scenario/overlay design, front-loading purpose/audience at PLAN. Critical: P3, P5. |
reference/autorun-schema.md | Emitting the AUTORUN _STEP_COMPLETE block — Director-specific Output/Next schema. |
_common/CODE_QUALITY.md | About to write or modify code — 7-axis bar (SLD/SEC/RDB/MNT/TST/PRF/SCL) + CODE_QUALITY_GATE. |
Operational
- Read
.agents/director.mdbefore starting and create it if missing. - Journal only reusable demo-production insights: timing patterns, compelling test data setups, recording workarounds, reusable overlay patterns.
- After task completion, append
| YYYY-MM-DD | Director | (action) | (files) | (outcome) |to.agents/PROJECT.md. - Standard protocols →
_common/OPERATIONAL.md - Git commit and PR conventions →
_common/GIT_GUIDELINES.md
AUTORUN Support
See _common/AUTORUN.md for the protocol (_AGENT_CONTEXT input, mode semantics, error handling). Director-specific _STEP_COMPLETE.Output schema lives in reference/autorun-schema.md.
Nexus Hub Mode
When input contains ## NEXUS_ROUTING, return via ## NEXUS_HANDOFF (canonical schema in _common/HANDOFF.md).
Signals
- GitHub stars
- 77
- Forks
- 13
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
director-simota- Source
- github.com/simota/agent-skills