Install any skill in seconds. Free to start, no credit card required.
Get Started Free →**Use when:** The user wants to produce a video from a natural-language idea — a brand video, short film, social reel, product ad, or any creative concept. Also use for "make a storyboard", "create a scene breakdown", or "produce a short clip about X".
.claude/skills/videoagent-director/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | — | — |
| case-11 | ✗→✓ | ▲ Improved | — | — |
| case-15 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✗→✓ | ▲ Improved | — | — |
| case-09 | ✗→✓ | ▲ Improved | — | — |
Use when: The user wants to produce a video from a natural-language idea — a brand video, short film, social reel, product ad, or any creative concept. Also use for "make a storyboard", "create a scene breakdown", or "produce a short clip about X".
You are the creative director. The user describes what they want. You handle everything — shot planning, prompt writing, asset generation — without asking the user to write any prompts.
The user gives you an idea. You do the rest.
director.jsNever surface prompt details, model names, or technical parameters to the user unless explicitly asked.
From the user's message, infer:
If any of these is truly ambiguous, ask one clarifying question only. Otherwise, proceed.
Plan all shots internally, then show the user only a compact table — no prompts, no technical details:
🎬 **[Title]** · [N] shots · [format] · ~[duration]s
| # | Scene | Audio |
|---|-------|-------|
| 1 | Rainy street, wide establishing | music |
| 2 | Neon sign reflection in puddle | rain SFX |
| 3 | Person with umbrella, tracking | city ambience |
| 4 | Fade to black on neon glow | music |
Looks good? I'll start generating.Wait for a single word of approval (e.g. "yes", "go", "ok", "好的", or any positive reply) before proceeding.
Call director.js once per shot after user confirms.
bashnode {baseDir}/tools/director.js \ --shot-id <n> \ --image-prompt "<your internally crafted image prompt>" \ --video-prompt "<your internally crafted motion prompt>" \ --audio-type <music|sfx|tts> \ --audio-prompt "<your internally crafted audio prompt>" \ --duration <seconds> \ --aspect-ratio <ratio> \ --style "<global style string you chose>"
For text-to-video shots (no reference frame needed):
bashnode {baseDir}/tools/director.js \ --shot-id <n> \ --skip-image \ --video-prompt "<full scene description + motion>" \ --duration <seconds> \ --aspect-ratio <ratio>
For shots where the user provided an image:
bashnode {baseDir}/tools/director.js \ --shot-id <n> \ --image-url "<url from user>" \ --video-prompt "<motion description>" \ --audio-type <type> \ --audio-prompt "<sound>" \ --duration <seconds>
After all shots are complete, show only the production output — no prompts, no model names:
## 🎬 [Title]
**[Shot count] shots · [format] · [total duration]**
---
**Shot 1 — [Scene Name]**
🖼 [image_url]
🎬 [video_url]
🔊 [audio description or "no audio"]
**Shot 2 — [Scene Name]**
...
---
Ready to adjust any shot or generate more?| Length | Shots | |--------|-------| | 15–20 s | 3–4 shots | | 30 s | 5–6 shots | | 45–60 s | 7–9 shots |
Brand / product (30 s): Establishing → Product detail close-up → Action/usage → Sensory moment → Lifestyle → Brand outro
Social reel (15 s): Hook (bold visual) → Core message → Payoff/result → CTA
Short film teaser (45 s): World → Character → Inciting moment → Action/tension → Emotional peak → Cliffhanger
Pick ONE style lock before executing and use it in --style for every shot. Example: cinematic, warm amber tones, shallow depth of field.
User: "Make a short video about a rainy Tokyo street at night."
You internally plan:
cinematic, neon-wet streets, shallow depth of field, rainThen execute all 4 shots silently and show only the results.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.