CommunityImagegithub.com

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

What is forge-style-lock?

forge-style-lock is a Claude Code agent skill that 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,...

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

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

A film made of separate generations only looks like one film if every image is made the same way: one model, one setting, one look sentence pasted word for word, every character's sheet attached to every prompt, and a fixed order for everything else. This skill writes style-lock.yaml, the character sheets and the character section of continuity.yaml, then proves the lock with 2 to 4 proof frames before the paint stage may spend.

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. One model, one setting

Choose once and never mix within a film. The default for painted films: GPT Image 2.5, high quality, 2K, 16:9 (2.75 credits a painting), upscaled to 4K in code. A picture book can use medium quality (about 1 credit) because pages are seen smaller and still. Record it under model: with the price table's model_id.

If the look is undecided, paint the same proof frame in two or three candidate looks (cheap) and choose by eye at 100%. Do not lock on a thumbnail.

Step 2. The look sentence

One sentence, opening every prompt word for word. It names the medium, the line, the colour, the texture and the light, and it points at the references: "in exactly the style of the attached sheets". Worked looks from real films (more in references/looks.md):

A frame from a hand-drawn 2D anime feature film, in exactly the clean style of the attached images: confident ink lines, cross-hatching only in the shadows, flat cel colour, expressive anime faces. No painterly texture, no noise.

That is Simorgh's lock. Buried Soul's picture book used two, because its drawing carried the story: a LIVING look (Cartoon Saloon-like brush-ink outlines with visible pencil construction, flat graphic shapes, layered watercolour and gouache, Celtic knotwork, glowing golden song-lines) and a FROZEN look (the same style ruled with a ruler: straight woodcut lines, grey hatching, flat medieval perspective, slate, ash and bone; only the girls keep their colours). Use a second look only when the change of drawing is part of the story.

Step 3. The avoid tail

One line, closing every prompt word for word: what the model drifts into. The house tail: Avoid: 3D render, photorealism, text, watermark, extra fingers, distorted faces. Add only what this look drifts into (anime, plastic, CGI, a wrong medium). Negations that belong to one shot go in that shot's LOCKS slot.

Step 4. Palette and colour rules

Name the swatches in palette: and the colour script per scene in continuity.yaml (colour.script). Turn every colour rule of the story into a forbid rule with a prompt clause: the clause goes into every prompt the rule covers, and ledger.py palette measures every painting against it. Example: Simorgh's burning sky allowed no blue until shot 41; every prompt before it carried "Absolutely no blue".

Step 5. Lens and composition language

For a painted film: paintings hold like film frames, so composition does the camera's work. Write the lens feel (focal length, height), what never happens (no fisheye, no tilt), and the composition rules (subjects on thirds, a quiet area for words when a shot has them).

Step 6. Character sheets (templates/character-sheet.md)

One sheet per character, attached to every prompt that character appears in.

  • Panels dead-on (front, back, face), flat shadowless light on a plain mid-grey field, so no lighting bakes in. Face and hand studies for stylised characters; expressions: neutral, the key emotion, its opposite.
  • A scale bar: the character drawn beside every character or prop they share frames with, at true relative size. This is the lesson of a hoopoe drawn too small in five frames of Simorgh: scale must live on the sheet and in the ledger, never in hope.
  • Non-human characters get a material sheet: what they are made of, a wrong-materials list ("embers, not fur, not glass"), how they move.
  • Every shot prompt carries a relight clause: "relight to this scene; do not copy the sheet's flat light".

Step 7. Handles, anchors, scale locks

For each character write into continuity.yaml: a handle (the visual name every prompt uses: "the girl in the red knitted hood"), an anchor (the full look in one sentence, pasted word for word), a scale lock (a ratio to something always nearby), and add the character's name to names:. Names never go into prompts: a model can paint a name as text, and a name carries no visual information.

Step 8. The prompt grammar (every painting, this order)

#SlotWhat goes in
1LOOKthe look sentence, word for word
2REFERENCESwhat each attachment governs, in attach order; the relight clause
3SHOTframing, camera height, lens feel, who sits on which third
4SUBJECT AND SCALEeach character's handle, anchor and scale lock; sizes as ratios; counts ("exactly one owl")
5MOMENTthe one instant of the beat; emotion shown in face and body
6SETTINGplace, weather, time of day, what is in the background
7LIGHTdirection, quality, temperature, and its source in the world
8COLOURthe scene's colour-script words
9TEXT AREA"keep the upper third quiet: pale sky for text" (only when words go there)
10CONTINUITYprops and states, word for word from the ledger
11LOCKSforbidden-colour clauses, word for word; shot-specific negations
12AVOIDthe avoid tail, word for word

ledger.py prompts checks slots 1, 4, 10, 11 and 12 mechanically before any credit is spent. Details and a full example: references/prompt-grammar.md.

Step 9. Prove the lock

Paint the sheets, the empty set plates, and 2 to 4 proof frames (the shots that must make people feel something). Run forge-frame-qa on them at 100%. Repaint a sheet now rather than later: every painting inherits its faults. Then production.py signoff style --by <you> --note "<what you read>".

Output format

  1. style-lock.yaml (template): model, looks, default_look, avoid, grammar, references, lens, palette, max_chars.
  2. One prompt per sheet and plate in prompts/, the sheets themselves in art/sheets/.
  3. continuity.yaml: characters (handle, anchor, scale), names, colour script and forbid rules.
  4. The proofs with their QA verdicts.

Gate checklist

  • One model and setting, recorded with its price-table id
  • Look sentence(s) and avoid tail written; no names in either
  • Every character: sheet with scale bar, handle, anchor, scale lock; name in names:
  • Colour script and every colour rule as a forbid with a prompt clause
  • Sheets, plates and proofs read at 100% and accepted
  • Signed off

Repair table

SymptomFix
Paintings drift apart in styleThe look sentence is not word for word in every prompt, or two models were mixed
Faces change between shotsThe sheet was not attached, or the anchor was paraphrased; attach and paste
A character comes out the wrong sizeNo scale lock in the prompt, or no scale bar on the sheet
Names or words appear painted in the frameA name or quoted text in the prompt; use handles; text belongs to code
Flat, studio-lit scenesThe sheet's flat light was copied: add the relight clause
A forbidden colour creeps inThe clause is missing from LOCKS, or the rule's thresholds are too loose; measure with ledger.py palette

References

  • references/prompt-grammar.md: each slot's rules with a full annotated prompt
  • references/looks.md: worked looks and sheet prompts from real productions, and how to write a new one

Individual skills in this repo

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

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

Related Skills