Orchestrated movie creation for Horus persona. Guides through phases: Research → Script → Build Tools → Generate → Assemble...
STOP. READ THIS ENTIRE SKILL.MD BEFORE CALLING ANY ENDPOINT.
Orchestrated movie creation for Horus persona. Creates mockumentaries, short films, music videos, and educational content through a phased workflow.
"AI isn't the artist, it's the amplifier" - Nobody & The Computer
Horus uses AI to turn imagination into audiovisual reality. He doesn't just use pre-built tools - he writes code to create his own tools.
HARDWARE CHECK → RESEARCH → SCRIPT → CASTING → EXPERT REVIEW → GENERATE → ASSEMBLE → LEARN
Note: BUILD TOOLS is optional and only triggered when custom effects are needed.
Before any generation, the orchestrator automatically detects hardware via /ops-workstation:
# Automatic hardware check on startup
./run.sh create "prompt"
# → Calls /ops-workstation gpu to detect VRAM
# → Calls /ops-workstation memory to detect RAM
# → Auto-selects optimal model variant
Auto-Selection Logic:
| Detected VRAM | Model Selected | Settings |
|---|---|---|
| ≥24GB | LTX-2 19B FP8 | 720p/1080p, audio on, batch=1 |
| 16-23GB | LTX-2 19B FP4 | 720p only, audio on, batch=1 |
| 12-15GB | LTX-2 Distilled 2B | 720p, audio optional, batch=1 |
| <12GB | RunPod suggested | Prompts to use /ops-runpod |
RAM-Based Optimizations:
| Detected RAM | Optimization |
|---|---|
| ≥128GB | Weight streaming enabled (offload to RAM) |
| 64-127GB | Partial offloading |
| <64GB | No offloading, strict VRAM limits |
Override Auto-Detection:
# Force specific model variant
./run.sh create "prompt" --model ltx2-fp4
./run.sh create "prompt" --model ltx2-distilled
./run.sh create "prompt" --runpod # Force cloud generation
horus-filmmaking scope (past techniques, learnings)horus_lore scope (YouTube transcripts, film analysis)/ingest-movie search for films to watch/ingest-youtube search for tutorials/dogpile for comprehensive multi-source search/surf for specific tutorials/references/create-story skill for screenplay generationFormat Options:
screenplay (default) - Standard INT./EXT. scene headingsmockumentary - Interview segments with talking heads + B-rollreconstruction - Historical recreation with narrator framing/discover-talent (TMDB)Output:
characters/
├── casting_session.json
├── SARAH/
│ ├── character_bible.yaml
│ └── identity_pack/
│ ├── front.png
│ ├── three_quarter.png
│ └── full_body.png
└── voice_assignments.yaml
When a creative team has multiple personas, this phase enforces a feedback loop before generation:
1. DIRECTOR creates vision (shot list, style notes)
2. TECHNICAL EXPERT reviews for AI video execution
- e.g., Dan Kieft for Kling, video model specialist for Veo
3. EXPERT sends formal notes to DIRECTOR
- Technical limitations, proposed changes, questions
4. DIRECTOR approves, revises, or escalates
5. BOTH sign off before generation proceeds
Required Documents:
| Document | Purpose |
|---|---|
{EXPERT}_REVIEW.md |
Technical review with recommendations |
{EXPERT}_TO_{DIRECTOR}_FEEDBACK.md |
Formal notes requiring director decision |
{DIRECTOR}_APPROVAL.md |
Director sign-off on technical changes |
*_V2_APPROVED.md |
Final approved instructions for generation |
Expert Personas (queryable via /memory):
dan-kieft) - Kling AI, multi-shot prompting, character consistency/ingest-youtube + /memory learnWorkflow:
# 1. Create initial instructions
# (output: KLING_INSTRUCTIONS_V1.md)
# 2. Query expert persona
./run.sh recall --q "multi-shot prompting" --scope dan-kieft
# 3. Generate expert review
# (output: DAN_KIEFT_REVIEW.md)
# 4. Send to director for approval
# (output: DAN_TO_WILSON_FEEDBACK.md)
# 5. Director approves
# (output: WILSON_APPROVAL.md)
# 6. Final approved instructions
# (output: KLING_INSTRUCTIONS_V2_APPROVED.md)
# 7. ONLY NOW proceed to generation
Skip Conditions:
--skip-expert-review flag (use with caution)/ops-runpodcd .pi/skills/create-movie
# Full orchestrated workflow (recommended)
./run.sh create "A 30-second film about discovering colors"
# With options
./run.sh create "film noir detective" \
--duration 60 \
--style "high contrast, shadows, venetian blinds" \
--format mp4 \
--work-dir ./noir_project
# Individual phases (for manual control)
./run.sh research "film noir lighting techniques"
./run.sh script --from-research research.json --duration 30 --use-create-story
./run.sh build-tools --script script.json
./run.sh generate --tools ./tools --script script.json --style "cinematic"
./run.sh assemble --assets ./assets --output movie.mp4 --format mp4
./run.sh learn --project-dir ./movie_project
Full orchestrated workflow through all phases.
./run.sh create PROMPT [OPTIONS]
--output, -o Output file (default: movie.mp4)
--work-dir, -w Working directory (default: ./movie_project)
--duration, -d Target duration in seconds (default: 30)
--style, -s Visual style (e.g., 'cinematic', 'film noir')
--format, -f Output format: mp4 or html (default: mp4)
--store-learnings Store learnings in memory (default: true)
--skip-research Skip research phase if research.json exists
--skip-casting Skip casting phase (no identity packs)
Library-first research: checks Horus's memory and ingested content before external search.
./run.sh research TOPIC [OPTIONS]
--output, -o Output file (default: research.json)
--skip-external Only search library, skip external sources
Generate screenplay with scene breakdown. Integrates with /create-story.
./run.sh script [OPTIONS]
--from-research, -r Research JSON file (required)
--prompt, -p Override topic from research
--duration, -d Target duration in seconds
--use-create-story Use /create-story skill for screenplay
--model, -m LLM model (default: chimera)
--output, -o Output file (default: script.json)
Generate custom tools in Docker sandbox.
./run.sh build-tools [OPTIONS]
--script, -s Script JSON file (required)
--output-dir, -o Output directory (default: ./tools)
--skip-docker Use host instead of Docker sandbox
Create images, video, and audio assets.
./run.sh generate [OPTIONS]
--tools, -t Tools directory (default: ./tools)
--script, -s Script JSON file (required)
--output-dir, -o Assets output directory (default: ./assets)
--style Visual style to apply
Combine assets into final output.
./run.sh assemble [OPTIONS]
--assets, -a Assets directory (required)
--output, -o Output file/directory (required)
--format, -f Output format: mp4 or html (default: mp4)
--fps Frames per second for MP4 (default: 24)
Store filmmaking insights in memory after a project.
./run.sh learn [OPTIONS]
--project-dir, -p Project directory (required)
--scope Memory scope (default: horus-filmmaking)
--dry-run Show learnings without storing
Pre-phase: Learn filmmaking topics BEFORE creating movies. Targeted /dogpile with internal (memory) + external (web) search, then stores via /memory learn.
./run.sh study TOPIC [OPTIONS]
--scope Memory scope (default: horus-filmmaking)
--deep/--quick Deep research (dogpile) vs quick (YouTube search)
--list-topics Show suggested filmmaking topics
# Examples:
./run.sh study "cinematography lighting techniques" --deep
./run.sh study "camera framing composition" --deep
./run.sh study --list-topics
Comprehensive learning session - studies all core filmmaking topics.
./run.sh study-all [OPTIONS]
--scope Memory scope (default: horus-filmmaking)
Standard video file, playable anywhere.
Web-based experience with:
HorusShotSpec is a YAML-based shot specification format that replaces KSML for video generation.
shot_id: "ACT1_SC02_SHOT03"
prompt:
text: "A tense noir interrogation in a dim room. Slow dolly push toward suspect."
negative: "text overlays, watermarks, shaky camera"
duration_s: 8 # Valid: 4, 8, 16 seconds
aspect_ratio: "16:9" # Valid: 16:9, 9:16, 1:1
resolution: "1080p" # Valid: 720p, 1080p
references:
subject_images:
- path: "./assets/detective.png"
weight: 0.7
controls:
seed: 42
safety: "default"
renderer:
name: "veo"
model: "veo-3.1-generate-preview"
metadata:
scene: "SC02"
act: "ACT1"
sequence_order: 3
The shot_compiler module validates and compiles YAML to Veo API JSON:
from core.shot_compiler import compile_yaml_to_veo_json
veo_request = compile_yaml_to_veo_json(yaml_content)
# → Returns dict ready for Veo API
| Field | Constraint |
|---|---|
duration_s |
Must be 4, 8, or 16 seconds |
aspect_ratio |
Must be 16:9, 9:16, or 1:1 |
references.subject_images |
Max 6 images |
references.*.weight |
0.0 to 1.0 |
prompt.text |
Max 4000 characters |
DEPRECATED: KSML is deprecated in favor of HorusShotSpec YAML. See
docs/KSML_TO_YAML_MIGRATION.mdfor migration guide.
Quick comparison:
| Feature | KSML (deprecated) | HorusShotSpec (recommended) |
|---|---|---|
| Renderer | Kling | Veo (or any) |
| Schema | Kling-specific | Renderer-neutral |
| Validation | Manual | Built-in constraints |
| Compilation | Export only | YAML → Veo JSON |
See MODELS.md for the video model selection guide, VRAM requirements, camera controls, WAN 2.2, and performance expectations.
See EXAMPLES.md for workflow patterns, multi-model collaboration, and example sessions.
See REFERENCE.md for available skills, free/open-source tools, memory integration, and dependencies.