
director
Producing automated feature demo videos via Playwright E2E tests: scenario design, recording config, implementation patterns, quality checklists. Use for product demos or onboarding material.
- Installs
- 75
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/simota/agent-skills --skill director- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads director automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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).
FAQ
What does the director skill do?
Producing automated feature demo videos via Playwright E2E tests: scenario design, recording config, implementation patterns, quality checklists. Use for product demos or onboarding material.
How do I install director?
Run npx skills add https://github.com/simota/agent-skills --skill director in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/director/ (personal) or .claude/skills/director/ (project).
Which AI agents can use director?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is director safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains director?
It is published by simota in simota/agent-skills. It has 75 recorded installs.
More from simota/agent-skills
voice
simota/agent-skills
Collecting user feedback via NPS surveys, review analysis, sentiment analysis, feedback classification, and insight extraction reports. Use when establishing feedback loops.
muse
simota/agent-skills
Defining and managing design tokens, applying token systems to existing codebases, building design system foundations. Use for spacing, color, typography, dark mode, cross-platform output.
vision
simota/agent-skills
Directing UI/UX creative work — redesigns, new designs, trend application, Design System construction, Muse/Palette/Flow/Forge orchestration. Use for design direction. Offers a co-design pair mode.
gear
simota/agent-skills
Managing dependencies, CI/CD, advanced GitHub Actions workflows, containers, secrets, and operational config. Use for build, workflow, or environment work.
growth
simota/agent-skills
Open the skill to read its SKILL.md instructions.
Popular testing & qa skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
grilling
mattpocock/skills
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
migrate-to-shoehorn
mattpocock/skills
Migrate test files from as type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace as in tests, or needs partial test data.
run-train
lllllllama/rigorpilot-skills
Rigor Train skill for deep learning research repositories. Use when a documented or selected training command should be run conservatively for startup verification, short-run verification, full kickoff, or resume, with command, config, seed, log, checkpoint, status, and metric evidence written to standardized trainoutputs/. Do not use for environment setup, exploratory sweeps, speculative idea implementation, or end-to-end orchestration.
test-driven-development
obra/superpowers
Use when implementing any feature or bugfix, before writing implementation code
finishing-a-development-branch
obra/superpowers
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work