Use when turning a scene idea into the 11-block cinematic prompt for live-action AI video — lens, lighting, blocking, motion, negatives. Triggers 'cinematic prompt', 'film-grade scene'.
Scanned 6/5/2026
Install via CLI
openskills install event4u-app/agent-config---
model_tier: inherit
name: video-director
description: "Use when turning a scene idea into the 11-block cinematic prompt for live-action AI video — lens, lighting, blocking, motion, negatives. Triggers 'cinematic prompt', 'film-grade scene'."
personas:
- hollywood-director
domain: product
workspaces:
- small-business
packs:
- ai-video
lifecycle: experimental
trust:
level: experimental
install:
default: false
removable: true
---
# video-director
> Turn a scene idea into the **11-block cinematic prompt** the
> `hollywood-director` persona ships. Output is provider-agnostic
> prose; provider-specific tuning is handed off to
> [`motion-choreographer`](../motion-choreographer/SKILL.md).
## When to use
- A scene idea, beat, or script line needs to become a cinematic
prompt ready to feed an image+video pipeline.
- A draft prompt reads as "AI video" — flat, centered, generic
golden-hour — and needs directorial choices on the page.
- Live-action / photoreal scenes. For animation acting beats, route
to [`pixar-storyteller`](../pixar-storyteller/SKILL.md).
Do NOT use when:
- The deliverable is a still graphic or poster → `canvas-design`.
- The work is provider-specific token tuning →
`motion-choreographer` after this skill has produced the blocks.
- A character identity must be re-used across scenes → run
[`character-consistency`](../character-consistency/SKILL.md) first
to lock identity tokens, then call this skill.
## Procedure
### Step 0: Inspect
1. Confirm the input is a live-action / photoreal beat (not animation).
2. If a `character.json` exists under `agents/reference/ai-video/<project>/characters/`,
read the identity tokens — they are reused verbatim.
3. Read the scene's intent in one sentence — what is the camera
witnessing, and why now?
### Step 1: Draft the 11 blocks
Emit each block on its own labeled line. Blocks are mandatory and
in this order:
1. **SCENE** — location, time-of-day, weather, era.
2. **CHARACTER** — verbatim identity tokens from `character.json`
when present; otherwise silhouette + wardrobe + signature prop.
3. **ACTION** — verbs and beats. Anticipation → action → reaction
named separately. No "doing things" prose.
4. **CAMERA** — position, height, distance, move (lock-off, dolly,
handheld, push, pull). Off-axis when on-axis is the AI default.
5. **LENS** — focal length in mm (24 / 35 / 50 / 85 / 200) and
aperture intent (deep / shallow). "Cinematic" alone fails.
6. **LIGHTING** — key, fill, back, practical sources named. "Golden
hour" requires an angle (low-east 15°, etc.).
7. **ENVIRONMENT MOTION** — what the world does (wind, water,
crowd, traffic) and on which beat.
8. **SECONDARY MOTION** — hair, cloth, dust, breath. Names the
reactive layer that sells the primary action.
9. **MOOD** — one emotional read; no compound moods.
10. **DURATION** — seconds. Integer or one decimal.
11. **NEGATIVE CONSTRAINTS** — clichés to reject, in load-bearing
order (top survives truncation). Always names: centered framing,
symmetric composition, generic "cinematic", soap-opera contrast.
### Step 2: Self-review
1. Lens length present? "Cinematic" without mm → fail.
2. Lighting direction present? "Golden hour" without angle → fail.
3. ACTION names beats, not adjectives?
4. NEGATIVE block has at least 4 entries, load-bearing on top?
5. CHARACTER block reuses identity tokens verbatim when a lock exists?
Any "no" → revise that block before handing off.
### Step 3: Validate
1. Output is plain text, one labeled block per line, ready for
`scripts/ai-video/lib/parse-blueprint.sh` (Phase 3 Step 5).
2. No provider tokens (no `--aspect`, no `--model`). That is
`motion-choreographer`'s job.
## Output format
1. **`scenes/<id>/prompt.txt`** — 11 labeled blocks, one per line,
ready for the blueprint parser.
2. **`scenes/<id>/review.md`** — one-paragraph rationale per
non-obvious directorial choice (lens, light angle, camera move).
## Gotcha
- The model defaults to centered, on-axis, symmetric — name an
off-axis or rule-of-thirds camera or it will silently center.
- "Golden hour" alone reads as a sunset GIF; require a sun angle.
- ACTION written as a paragraph of adjectives ("dynamically", "powerfully")
fails — adapters need verbs with beat counts.
- When `character.json` exists, paraphrasing identity tokens breaks
Character Lock — copy them verbatim.
- Negative constraints in the truncated tail get dropped — load-
bearing ones go first.
## Do NOT
- Do NOT emit provider-specific tokens (aspect ratio, model id,
duration flags) — that is `motion-choreographer`'s scope.
- Do NOT collapse anticipation / action / reaction into one verb.
- Do NOT use "cinematic" without lens + lighting + camera move.
- Do NOT invent character details when a `character.json` exists.
## Policies
11-block cinematic prompt is live-action shape — real-person + brand-impersonation risks highest in cluster. Before emitting:
- [`agents/settings/policies/media/likeness.md`](../../../agents/settings/policies/media/likeness.md) — prompt names / visually identifies real person on camera.
- [`agents/settings/policies/media/public-figures.md`](../../../agents/settings/policies/media/public-figures.md) — subject is recognised public figure.
- [`agents/settings/policies/media/brand-impersonation.md`](../../../agents/settings/policies/media/brand-impersonation.md) — prompt copies journalism / broadcaster / regulated-industry visual identity.
- [`agents/settings/policies/media/style.md`](../../../agents/settings/policies/media/style.md) — LIGHT / LENS anchored to named living cinematographer's signature.
- [`agents/settings/policies/media/disclosure.md`](../../../agents/settings/policies/media/disclosure.md) — every distributed live-action AI clip carries non-removable AI-generation disclosure.
Refuse-and-surface at directorial layer; live-action realism amplifies every downstream policy gap.
No comments yet. Be the first to comment!