Transform screenplay output from /create-story into animatics with camera framing, visual panels, and timing...
STOP. READ THIS ENTIRE SKILL.MD BEFORE CALLING ANY ENDPOINT.
Transform screenplays into animatics through a collaborative creative dialogue.
Philosophy: The skill acts as your cinematographer - it doesn't just execute, it thinks with you. It makes suggestions, explains rationale, asks for your input, and learns from completed projects.
# Start a new storyboard session (will ask questions)
./run.sh start screenplay.md --json
# Continue with answers to questions
./run.sh continue --session <ID> --answers '{"camera_s1": "sounds good"}'
# Auto-approve all suggestions (non-collaborative mode)
./run.sh start screenplay.md --auto-approve
The skill operates in a question-answer loop with the calling agent:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā COLLABORATION LOOP ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā
ā 1. Agent calls: ./run.sh start screenplay.md --json ā
ā ā ā
ā 2. Skill returns: { ā
ā status: "needs_input", ā
ā suggestions: [ ā
ā "For Scene 3 where Sarah confronts the villain, ā
ā I'm thinking a Panaflex with low-key lighting ā
ā would enhance the tension. A slow pan from her ā
ā face to the window would build suspense. ā
ā What do you think?" ā
ā ], ā
ā session_id: "storyboard-20260129-abc123" ā
ā } ā
ā ā ā
ā 3. Agent/User reviews suggestions, provides feedback ā
ā ā ā
ā 4. Agent calls: ./run.sh continue --session ID --answers ā
ā ā ā
ā 5. Skill proceeds or asks more questions ā
ā ā ā
ā 6. Repeat until status: "complete" ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Instead of dry questions like "What emotion for Scene 3?", the skill offers filmmaker suggestions:
š” Scene 3 - Camera Suggestion
"In Scene 3 where Sarah confronts the villain, I'm thinking we should use a slow push-in as the tension builds. It would really draw the audience into the character's anxiety."
Rationale: The cautious movement and sparse dialogue suggest building dread - a push-in amplifies this without words.
Alternatives: locked-off static for uncomfortable stillness, handheld for visceral unease
ā sounds good / prefer static / let's try handheld / suggest something else
The skill queries /memory to recall learned techniques:
# When screenplay references "Blade Runner 2049"
techniques = recall_film_reference("Blade Runner 2049")
# Returns learned techniques from /ingest-movie
# The skill incorporates this into suggestions:
"I see you've referenced 'Blade Runner 2049' for Scene 1.
From my memory of that film:
⢠2049 Minimal Composition: Desolate, geometric framing...
⢠2049 Hologram Lighting: Magenta/cyan holographic glow...
Should I apply these techniques?"
Memory scopes used:
horus-storyboarding - Storyboard-specific learningshorus-movies - Techniques from ingested filmsStart a new storyboard session.
./run.sh start screenplay.md [options]
Options:
--output-dir, -o Output directory (default: ./output)
--fidelity, -f Panel fidelity: sketch|reference (default: sketch)
--format Output format: mp4|html|panels (default: mp4)
--auto-approve, -y Skip all questions, use defaults
--json, -j Output structured JSON for agent consumption
Continue an existing session with answers.
./run.sh continue --session <ID> --answers '<JSON>' [options]
Options:
--search-dir Directory to search for session files
--json, -j Output structured JSON
Check status of an existing session.
./run.sh status --session <ID>
Run a demo with sample screenplay showing the collaboration loop.
./run.sh demo # Interactive with questions
./run.sh demo -y # Auto-approve, skip questions
./run.sh demo --json # JSON output for agents
| Format | Description | Use Case |
|---|---|---|
mp4 |
Video animatic with timed panels | Preview timing, share with team |
html |
Interactive gallery with navigation | Review, iterate, keyboard controls |
panels |
Directory of PNG images | Custom assembly, integration |
| Level | Description | Speed |
|---|---|---|
sketch |
Composition guides with shot codes | Fast |
reference |
Stick figure placeholders | Medium |
generated |
AI-generated images (requires /create-image) | Slow (raises NotImplementedError) |
This skill is a sub-phase of /create-movie:
/create-movie workflow:
RESEARCH ā SCRIPT ā [STORYBOARD] ā BUILD TOOLS ā GENERATE ā ASSEMBLE
ā
/create-storyboard
Takes screenplay output as input:
# After /create-story generates screenplay.md
./run.sh start /path/to/screenplay.md
Queries for learned filmmaking techniques:
from memory_bridge import recall_film_reference, learn_technique
# Recall techniques
techniques = recall_film_reference("The Godfather")
# Store new technique after project
learn_technique(
"Tension Push-In",
"Slow 10-second push-in during confrontation",
source="Project: Dark Horizon"
)
Techniques ingested via /ingest-movie become available for recall:
# Ingest a film's techniques
/ingest-movie "Blade Runner 2049"
# Later, /create-storyboard can recall:
"From my memory of Blade Runner 2049:
⢠Minimal Composition: Desolate, geometric framing..."
For agent consumption, use --json flag. Response format:
{
"status": "needs_input",
"phase": "camera_plan",
"session_id": "storyboard-20260129-abc123",
"questions": [
{
"id": "camera_s1",
"scene_number": 1,
"question_type": "creative_suggestion",
"question": "For Scene 1, I'm thinking a slow push-in...",
"options": ["sounds good", "prefer static", "suggest something else"],
"context": "The cautious movement suggests building dread..."
}
],
"partial_results": {
"total_shots": 5,
"total_duration": 21.5,
"shot_plan_file": "output/.../shot_plan.json"
},
"message": "Generated 5 shots. Please review my creative suggestions.",
"resume_command": "./run.sh continue --session ... --answers '<JSON>'"
}
Status values:
needs_input - Waiting for answers to proceedin_progress - Phase executing, will continuecomplete - All phases done, outputs readyerror - Something failedcreate-storyboard/
āāā SKILL.md # This file
āāā run.sh # Entry point
āāā orchestrator.py # Main CLI with collaboration loop
āāā screenplay_parser.py # Parse markdown/Fountain screenplays
āāā camera_planner.py # Auto-select shots, estimate timing
āāā panel_generator.py # Generate visual panels
āāā animatic_assembler.py # Create MP4/HTML output
āāā collaboration.py # Session state, questions, structured output
āāā creative_suggestions.py # Natural language filmmaker suggestions
āāā memory_bridge.py # /memory integration
āāā shot_taxonomy.py # Camera shot definitions
āāā sanity/ # Dependency verification
āāā ffmpeg_concat.sh
āāā pillow_composite.py
āāā run_all.sh
$ ./run.sh start screenplay.md
============================================================
š Status: NEEDS_INPUT
š Phase: camera_plan
š Session: storyboard-20260129-134523-a1b2c3
============================================================
š¬ CREATIVE SUGGESTIONS
Here's what I'm thinking for the visual approach:
### 1. Scene 1 - Camera Suggestion
š” For Scene 1 in the APARTMENT, I'm thinking we should use a slow
push-in as the tension builds. It would really draw the audience
into the character's anxiety.
*Why*: The cautious movement and sparse dialogue suggest building
dread - a push-in amplifies this without words.
*Or*: locked-off static for uncomfortable stillness, handheld for
visceral unease
ā sounds good / prefer static / let's try handheld / suggest something else
### 2. Scene 1 - Reference Suggestion
š” I see you've referenced 'Blade Runner 2049' for Scene 1. I could
search my memory for specific techniques from that film - the color
grading, the shot composition, the pacing. Should I pull those details?
*Why*: The reference to Blade Runner 2049 gives us a visual language
to draw from.
ā yes_search_memory / no_skip / skip_all_references
============================================================
Reply with your thoughts on each, or just say 'looks good' to proceed.
============================================================
ā¶ļø To continue: ./run.sh continue --session storyboard-20260129-134523-a1b2c3 --answers '<JSON>'
| Code | Name | Description | Emotional Use |
|---|---|---|---|
| EWS | Extreme Wide | Full environment, tiny figure | Isolation, scale |
| WS | Wide Shot | Full body with environment | Establishing, action |
| FS | Full Shot | Head to toe | Physical performance |
| MWS | Medium Wide | Knees up | Dialogue with movement |
| MS | Medium Shot | Waist up | Standard dialogue |
| MCU | Medium Close-Up | Chest up | Emotional dialogue |
| CU | Close-Up | Face only | Key emotional moments |
| ECU | Extreme Close-Up | Detail (eyes, hands) | Climactic intimacy |
| OTS | Over-The-Shoulder | Conversation framing | Dialogue, presence |
| POV | Point of View | Character's perspective | Empathy, discovery |
./run.sh start screenplay.md --auto-approve # skips creative collaboration
./run.sh start screenplay.md --json
# Review suggestions, then continue with feedback
./run.sh continue --session <ID> --answers '{"camera_s1": "prefer static"}'
./run.sh start screenplay.md # misses learned techniques from /ingest-movie
# The skill queries /memory automatically for film references in the screenplay
# Ensure films are ingested first via /ingest-movie for best results
./run.sh start screenplay.md --fidelity generated # raises NotImplementedError
./run.sh start screenplay.md --fidelity sketch # composition guides (fast)
./run.sh start screenplay.md --fidelity reference # stick figures (medium)
Run sanity checks:
./sanity/run_all.sh