CommunityImagegithub.com

gallowforge/forge-story

FilmForge story: turns a premise, song, poem or myth into a story bible, a timed screenplay and a shot list sized to a credit budget, written as YAML the tools validate, price and cut to music. Use this skill whenever the user has an idea to turn into a short film, painted film, music video or picture book; wants a premise, logline, story bible, beat sheet, screenplay, storyboard or shot list; asks how many shots or how long a film their credits buy; or wants an existing story tightened so it lands, even if they never say 'shot list'.

What is forge-story?

forge-story is a Claude Code agent skill that filmForge story: turns a premise, song, poem or myth into a story bible, a timed screenplay and a shot list sized to a credit budget, written as YAML the tools validate, price and cut to music. Use this skill whenever the user has an idea to turn into a short film, painted film, music video or picture book; wants a premise, logline, story bible, beat sheet, screenplay, storyboard or shot list; asks how many shots or how long a film their credits buy; or wants an existing story tightened so it lands, even if they never say 'shot list'.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gallowforge/filmforge/tree/HEAD/skills/forge-story

Installed? Explore more Image skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

FilmForge Story

Story comes first: nothing is painted, scored or bought until the film exists on paper, timed to the second and priced to the credit. This skill writes three files: story-bible.md, screenplay.md, shotlist.yaml (templates in templates/). The stage gate passes when the shot list validates and its plan fits the credits.

Paths: scripts/, templates/ and config/ below are folders inside this skill (the base directory shown when it loads), put there by ./install.sh. Working from a clone of the repository, they are tools/, templates/ and config/ at its root.

Step 1. Premise and thesis

  • Premise: one sentence, who wants what and what it costs them.
  • Thesis: one sentence the ending proves.

If either takes two sentences, the story is not found yet. Keep working here; everything downstream inherits it.

Step 2. The heart: six engines

Great short animated films do the same few things. Fill every row; a film that cannot fill one is missing a part.

EngineTest
One relationshipTwo characters the film is about. Everyone else serves them.
One flaw, with a priceThe hero's flaw costs someone something real, on screen.
One choice that breaks your heartThe hero gives up what they wanted, by their own hand.
One twistWhat the audience believed is not what is true, and the truth was planted.
One mirrorAn image that lies early and tells the truth late.
One image, twiceOne composition opens and closes the film, changed by everything between.

Worked example (The Lantern Moth, the repository's text example, 36 s): one relationship, a lighthouse girl and the ember moth, the first warm thing she has held all winter. One flaw with a price: she wants to keep the warmth, and while she cups it the boat drifts toward the rocks. One choice: she opens her hands toward the dead lamp and lets the moth go into it. One twist: the moth does not burn out; at dawn the lamp glass is covered in a hundred small ember moths. One mirror: her reflection in the lamp lens, alone and lit by the moth, then lost in the beam's light. One image twice: the dead lighthouse at night opens the film, the warm lighthouse at dawn closes it.

Step 3. Setups and payoffs

A table where nothing appears only once. Each row: what is planted (shot), what it pays off (shot). If an image has no payoff, cut it or give it one. Rows from The Lantern Moth: the dead lamp in the first frame / the same frame at dawn, the lamp warm; the empty lantern she carries everywhere / it stays behind on the floor once the moth is gone; one moth on her fingertip / a hundred moths on the glass; no warm gold anywhere / the beam blazes gold.

Step 4. The colour script

One row per scene: time range, 3 to 5 colours, the feeling. Add the rules that carry meaning ("no warm gold before the lamp is lit", "the only warm colour before the lamp is lit is the moth's orange", "no blue in the sky until dawn"). Rules become forbid entries in the continuity ledger, measured on every painting.

Step 5. The screenplay, timed

  • Scenes with time ranges; shots with start, length, framing, and only what a camera can photograph, in the present tense. A beat that cannot be photographed is not in the film.
  • Under each scene, what the music does (instruments, energy, a named hit, a written silence). The Lantern Moth's screenplay puts "a low drone, a soft kick on each bar. Cold and alone." under The Dark, and "the hit at 0:24, then warm full chords" under The Light. If the music already exists (a song, a piano piece), the story walks through its sections in order, one mood line under each, and the shots or pages turn with it.
  • Words: say only what the pictures cannot (who is speaking, why they go, who dies, what the end means). Wordless is a strength: it plays to anyone anywhere. Narration is handwritten on screen or spoken; either way it is timed in film time later (forge-sound).

Step 6. Size the film to the credits

paint_credits = credits x 0.95 - sheets - plates - proofs - score
paintings     = floor(paint_credits / (price x 1.3))        # 1.3 = the repaint buffer
runtime       = paintings x average hold                     # painted holds: 4 to 6 s each

Worked example: 70 credits (66.5 spendable), two sheets and one plate (8.25, about 11.8 with buffers), a 64 s score (9.28): about 45.4 left for paintings, so 12 paintings at 2.75 with the buffer: a 60-second film at 5 s a hold. The Lantern Moth runs 6 shots in 36 s; budget.py plans it at 39.08 of 66.50 spendable, with 27.42 to spare after what is already spent: room for 7 more paintings with retakes.

Rules while sizing:

  • Hero frames first: name the 2 to 4 shots that must make people feel something. They are painted as proofs before everything else.
  • Real motion only where nothing else works (flight, a transformation that is the climax). Elsewhere, key poses that snap (poses: 2) and life in post.
  • Reuse a plate or a painting where the story allows (kind: reuse): the image-twice engine is free.

Step 7. The shot list

Write shotlist.yaml (schema: references/shotlist-schema.md). Each shot: id, scene, dur, kind, framing, beat, characters, refs (every character's sheet), cut_on, and where the music brief names a story hit, pin. Then:

python3 scripts/shotlist.py validate shotlist.yaml
python3 scripts/budget.py shotlist.yaml --production production.yaml

Iterate until validate shows no errors and budget says FITS. Warnings to act on: painted holds under 1.5 s or over 10 s, narration faster than 2.4 words a second, a character in frame without their sheet attached.

Output format

  1. story-bible.md: premise, thesis, the six engines, world, characters (handle, look, want, movement), props and states, setups and payoffs, colour script, production rules.
  2. screenplay.md: scenes with times, music notes, shots with start, length, framing, action, words.
  3. shotlist.yaml: validates, fits.
  4. A short report: runtime, shot count, credits planned versus available, the hero frames, the one risk.

Gate checklist

  • Premise and thesis are one sentence each
  • All six engines filled; every setup paid off
  • Colour script with its rules
  • Every shot photographable; every beat under its music
  • shotlist.py validate: no errors
  • budget.py: FITS, reserve untouched
  • Hero frames named

Repair table

SymptomFix
The ending does not landThe choice is missing or made for the hero; or the twist was not planted. Re-check engines 3 and 4
It feels like a slideshowBeats describe states, not actions; rewrite each beat as something changing in the frame
Over budgetFewer, longer holds; reuse plates; key poses instead of video; then cut priority 3 shots
Narration warningsFewer words, or let the line run across the next cut (narration lives in film time)
Characters do not read as the same peopleNot a story fault: forge-style-lock (sheets, anchors, scale locks)

References

  • references/story-engine.md: the six engines in depth, with The Lantern Moth broken down
  • references/shotlist-schema.md: every shot-list field, its values and which tool reads it

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

gallowforge/forge-deliver

FilmForge deliver: encodes and checks every deliverable of a finished film or book (4K master, 1080p for posting, phone copy, cover stills, print-book PDF, making-of, localised editions) with exact ffmpeg settings, verifies streams, loudness and picture-to-music sync on the finished files, then builds the production archive with a SHA-256 completeness proof that anyone can re-verify later, and proves backup copies byte for byte. Use this skill whenever the user wants to export, encode or render final versions, post a film, make a phone copy or covers, produce a print PDF or a translated edition, back up or archive a production, or prove that an archive or copy is complete.

gallowforge/forge-director

FilmForge director: runs an AI film production end to end (story, style lock, score, paintings, frame QA, motion in code, sound, delivery, archive) through stage gates, so no credit is spent before its gate passes. Keeps the production state file (production.yaml) and the credit ledger, prices the plan against the credits, and always names the one next action. Use this skill whenever the user wants to make, plan, budget, continue or check on a short film, painted film, animated story, music...

gallowforge/forge-frame-qa

FilmForge frame QA: inspects every painting at full size against the character sheets and the continuity ledger, measures colour rules, palette and exposure with tools, scores it on a nine-criterion rubric and decides: accept, fix in code (naming the module and the exact parameters), or repaint (with the root cause and the full corrected prompt). Use this skill whenever paintings, stills, keyframes, character sheets or book pages come back from an image model, when the user asks whether...

gallowforge/forge-motion

FilmForge motion: plans each shot's life in code instead of credits (painted holds brought alive with drifting fog, ash, snow, rain, embers, glints, light sweeps, firelight flicker, heat shimmer, shake, lightning, glass cracks, transitions, golden threads, handwritten words and titles), maps every effect to the painted-film-pipeline renderer's exact parameters, applies frame-QA code fixes, exports the edit timeline and renders the preview; decides when paid video is worth its credits. Use...

gallowforge/forge-painter

FilmForge painter: writes every shot's image prompt from the shot list, the character sheets and the style lock, on a fixed twelve-slot order with continuity anchors (handles, anchors, scale locks, props, states, forbidden-colour clauses); keeps the continuity ledger; lints every prompt before a credit is spent; paints in batches of four and hands each batch to frame QA. Use this skill whenever the user wants image prompts for a film's shots or a picture book's pages, storyboard frames,...

gallowforge/forge-style-lock

FilmForge style lock: fixes one image model and setting, one look sentence (or two when the drawing itself carries the story), the palette and colour rules, the line, brush and lens language, the character-sheet specs with scale bars, and the prompt grammar every shot must follow, so every painting in a film or book matches. Use this skill whenever the user starts the visual side of a film, music video or picture book, wants consistent characters or one consistent look across many images,...

Related Skills