create-storyboard

Pass

Transform screenplay output from /create-story into animatics with camera framing, visual panels, and timing. Highly collaborative - the skill acts as a creative cinematographer, making suggestions and asking questions throughout the process. Integrates with /memory for learned techniques.

@majiayu000
MIT2/22/2026
(0)
82
4
17

Install Skill

Skills are third-party code from public GitHub repositories. SkillHub scans for known malicious patterns but cannot guarantee safety. Review the source code before installing.

Install globally (user-level):

npx skillhub install majiayu000/claude-skill-registry/create-storyboard

Install in current project:

npx skillhub install majiayu000/claude-skill-registry/create-storyboard --project

Suggested path: ~/.claude/skills/create-storyboard/

SKILL.md Content

---
name: create-storyboard
description: >
  Transform screenplay output from /create-story into animatics with camera
  framing, visual panels, and timing. Highly collaborative - the skill acts
  as a creative cinematographer, making suggestions and asking questions
  throughout the process. Integrates with /memory for learned techniques.
triggers:
  - create storyboard
  - storyboard this screenplay
  - make an animatic
  - plan the shots
  - camera plan
  - shot breakdown
  - visualize the script
metadata:
  short-description: Collaborative screenplay-to-animatic with AI cinematographer
---

# create-storyboard

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.

## Quick Start

```bash
# 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
```

## Collaboration Loop

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"                          │
│                                                              │
└─────────────────────────────────────────────────────────────┘
```

## Creative Suggestions

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

## Memory Integration

The skill queries `/memory` to recall learned techniques:

```python
# 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 learnings
- `horus-movies` - Techniques from ingested films

## Commands

### start

Start a new storyboard session.

```bash
./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

Continue an existing session with answers.

```bash
./run.sh continue --session <ID> --answers '<JSON>' [options]

Options:
  --search-dir       Directory to search for session files
  --json, -j         Output structured JSON
```

### status

Check status of an existing session.

```bash
./run.sh status --session <ID>
```

### demo

Run a demo with sample screenplay showing the collaboration loop.

```bash
./run.sh demo           # Interactive with questions
./run.sh demo -y        # Auto-approve, skip questions
./run.sh demo --json    # JSON output for agents
```

## Output Formats

| 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       |

## Panel Fidelity

| Level       | Description                                  | Speed                      |
| ----------- | -------------------------------------------- | -------------------------- |
| `sketch`    | Composition guides with shot codes           | Fast                       |
| `reference` | Stick figure placeholders                    | Medium                     |
| `generated` | AI-generated images (requires /create-image) | Slow (not yet implemented) |

## Integration Points

### /create-movie

This skill is a sub-phase of `/create-movie`:

```
/create-movie workflow:
  RESEARCH → SCRIPT → [STORYBOARD] → BUILD TOOLS → GENERATE → ASSEMBLE
                ↑
         /create-storyboard
```

### /create-story

Takes screenplay output as input:

```bash
# After /create-story generates screenplay.md
./run.sh start /path/to/screenplay.md
```

### /memory

Queries for learned filmmaking techniques:

```python
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"
)
```

### /ingest-movie

Techniques ingested via `/ingest-movie` become available for recall:

```bash
# 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..."
```

## Structured JSON Output

For agent consumption, use `--json` flag. Response format:

```json
{
  "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 proceed
- `in_progress` - Phase executing, will continue
- `complete` - All phases done, outputs ready
- `error` - Something failed

## File Structure

```
create-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
```

## Example Session

```bash
$ ./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>'
```

## Camera Shot Taxonomy

| 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     |

## Dependencies

- Python 3.11+
- FFmpeg (for video assembly)
- Pillow (for panel generation)
- Typer (CLI framework)

Run sanity checks:

```bash
./sanity/run_all.sh
```