Skip to content
Back to skills

Scene Expander

ASecurity

Use when expanding a one-line idea into the 12-block Cinematic Scene Blueprint — provider-agnostic, includes optional dialogue + ambient. Triggers 'expand this scene', 'blueprint for X'.

  • 10 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 5, 2026
ai-agentsrustgoreact

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned June 5, 2026

npx -y skills add event4u-app/agent-config --skill scene-expander --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Scene Expander?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Scene Expander
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/event4u-app-scene-expander/badge)](https://www.skillsdirectory.com/skills/event4u-app-scene-expander)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
model_tier: inherit
name: scene-expander
description: "Use when expanding a one-line idea into the 12-block Cinematic Scene Blueprint — provider-agnostic, includes optional dialogue + ambient. Triggers 'expand this scene', 'blueprint for X'."
personas:
  - hollywood-director
domain: product
workspaces:
  - small-business
packs:
  - ai-video
lifecycle: experimental
trust:
  level: experimental
install:
  default: false
  removable: true
---

# scene-expander

> Expand a one-line idea or script line into the **Cinematic Scene
> Blueprint** — 12 labeled blocks consumed by
> [`parse-blueprint.sh`](./scene-blueprint.schema.yaml). Picks
> `hollywood-director` for live-action; hands off animated beats to
> [`pixar-storyteller`](../pixar-storyteller/SKILL.md). Output is
> provider-agnostic — provider tuning is
> [`motion-choreographer`](../motion-choreographer/SKILL.md).

## When to use

- A script line, idea, or beat needs a full blueprint before any
  adapter runs.
- A `/video:from-script` run is parsing `## Scene N` headings and
  needs each scene expanded.

Do NOT use when:

- The brief is already an 11-block cinematic prompt → call
  `video-director` directly to refine it.
- The brief is a static graphic → `canvas-design`.
- Provider-specific token tuning is the next step →
  `motion-choreographer`.

## Procedure

### Step 0: Inspect

1. Read the input line. Classify as **live-action / photoreal** or
   **animated / stylized**.
2. Live-action → load `hollywood-director` voice. Animated → hand
   off to [`pixar-storyteller`](../pixar-storyteller/SKILL.md) (its
   procedure carries the acting / beat-decomposition lens). Hybrid
   (live-action with VFX) → `hollywood-director`; record VFX intent
   in ENVIRONMENT.
3. Check for an existing `character.json` lock under
   `agents/reference/ai-video/<project>/characters/`.

### Step 1: Emit the 12 blocks

One label per line. Order is mandatory.

1. **STYLE** — stylistic anchor (live-action: film stock + decade,
   e.g. "Kodak 5219, 2015"; animated: specific film + year).
2. **SUBJECT** — character read; verbatim identity tokens when a
   lock exists.
3. **ENVIRONMENT** — location, time-of-day, weather, era; what the
   world does in response to the subject.
4. **ACTION** — anticipation / action / reaction with beat counts
   (`0.5s / 1.2s / 0.8s`). No adjective paragraphs.
5. **CAMERA** — position, height, distance, move (lock-off, dolly,
   handheld, push, pull). Off-axis when on-axis is default.
6. **LENS** — focal length in mm and aperture intent. "Cinematic"
   alone fails.
7. **LIGHTING** — key / fill / back / practical named; "golden
   hour" requires a sun angle.
8. **MOOD** — one emotional read.
9. **DIALOGUE** — optional. If present: `speaker: "line"`, one per
   line. Marks `audio: native` capability requirement.
10. **AMBIENT SOUND** — optional. Layer list (wind, traffic,
    crowd, ocean). Marks `audio: native` or routes to ffmpeg mux.
11. **DURATION** — seconds (integer or one decimal).
12. **NEGATIVE** — clichés to reject, load-bearing order top-first.
    Always names: centered framing, symmetric composition, generic
    "cinematic", soap-opera contrast.

### Step 2: Self-review

1. Live-action / animated classification consistent across blocks?
2. LENS present with mm (live-action) OR stylistic anchor with
   film+year (animated)?
3. LIGHTING with a direction?
4. ACTION names beat counts, not adjectives?
5. DIALOGUE / AMBIENT SOUND present → the run requires `audio:
   native` adapter OR ffmpeg-mux fallback declared.
6. NEGATIVE ≥ 4 entries, load-bearing top?
7. SUBJECT verbatim from `character.json` when a lock exists?

Any "no" → revise that block.

### Step 3: Validate

1. Pipe output through `scripts/ai-video/lib/parse-blueprint.sh` —
   exits 0 and emits valid adapter-contract JSON.
2. No provider tokens (no aspect / model / duration flags).

## Output format

1. **`scenes/<id>/prompt.txt`** — 12 labeled blocks, ready for
   `parse-blueprint.sh`.
2. **`scenes/<id>/blueprint.json`** — parser output, adapter-stdin
   ready.
3. **`scenes/<id>/review.md`** — one-paragraph rationale per
   non-obvious choice.

## Gotcha

- The model wants to skip optional DIALOGUE / AMBIENT SOUND blocks
  silently — if they could plausibly belong, emit them; the parser
  treats missing blocks as `null`, not as an error.
- Live-action without LENS mm fails the parser's strict mode.
- Animated without a film+year anchor in STYLE drifts on every run.
- ACTION written as "the character does X dramatically" fails —
  adapters need verbs with beat counts.
- DIALOGUE forces `audio: native` requirement — flag this to the
  orchestrator so it picks a capable adapter (Veo / Sora).

## Do NOT

- Do NOT emit provider tokens — that is `motion-choreographer`.
- Do NOT skip the blueprint parser validation step.
- Do NOT paraphrase identity tokens when a lock exists.
- Do NOT mix live-action LENS prescriptions with animated STYLE
  anchors in the same scene — pick one mode.

## Policies

The 12-block Cinematic Scene Blueprint is the policy choke point — every downstream skill (`motion-choreographer`, `video-director`) inherits whatever the blueprint encodes. Before emitting:

- [`agents/settings/policies/media/likeness.md`](../../../agents/settings/policies/media/likeness.md) — when the SUBJECT block names or visually identifies a real person.
- [`agents/settings/policies/media/public-figures.md`](../../../agents/settings/policies/media/public-figures.md) — when the SUBJECT block is a recognised public figure.
- [`agents/settings/policies/media/brand-impersonation.md`](../../../agents/settings/policies/media/brand-impersonation.md) — when STYLE / ENVIRONMENT references a recognised brand's visual identity.
- [`agents/settings/policies/media/style.md`](../../../agents/settings/policies/media/style.md) — when STYLE anchors to a named living artist or studio as the primary signature.
- [`agents/settings/policies/media/disclosure.md`](../../../agents/settings/policies/media/disclosure.md) — every distributed blueprint output carries the AI-generation disclosure downstream.

Refuse-and-surface at the blueprint layer; do not push policy questions down to the adapter.

Files in this skill

  • SKILL.md6.1 KB
  • scene-blueprint.schema.yaml2.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.