Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Pre-production story-and-character development for Higgsfield projects — the upstream layer that decides WHAT to prompt before any model runs. Use when the user wants to build a character, design a world, develop a story or premise, create a character sheet / character bible / story bible, lock a visual style or 'visual DNA', plan a multi-shot narrative with consistent characters, or says things like 'help me design a character', 'build the world', 'I need a backstory', 'make this character cons
.claude/skills/osidemedia-higgsfield-character-design/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 143% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 222% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 172% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 200% | 0% |
The rest of this skill library answers "how do I prompt this?" This skill answers the question upstream of it: "what am I prompting, and why this and not generic AI slop?" It is the pre-production layer — premise, world, character, story, and a locked visual style — that you build before writing a single generation prompt, then hand off to higgsfield-prompt and the model guides.
> Attribution. The framework, worksheet structure, and the "world first" method are adapted from Higgsfield's official Character Design materials by @vavavinca. We reuse the schemas and method; all examples here are original. Credit Vinca when sharing.
Routing aids — read the linked sections for the actual method.
../../templates/character-design/ — hand them to the user or fill them together →higgsfield-prompt →A world is a system of constraints. Decide what the world will not let a character do, and you have decided who they have to become. So the order is not negotiable — each step locks an output the later steps depend on, and you don't loop back to relitigate it:
1. PREMISE one arguable sentence, no characters yet
2. WORLD six dimensions, filled before anyone is cast
3. CHARACTER 9 questions + a relationship web
4. STORY SPINE 10–20 beats, "therefore / but", never "and then"
5. STYLE SHEET palette + lighting + materials + a FORBIDDEN list (the Visual DNA)
6. HAND OFF feed the locked sheets into higgsfield-prompt + a modelThe failure mode this prevents is the common one: open Higgsfield → generate a cool image → realize there's no story or consistency → quit. Build the bible first; the image is the receipt, not the recipe.
If the user arrives mid-stream ("I already have a character"), don't force them back to step 1 — locate where they are, check the upstream outputs exist (a character with no world is the usual gap), and fill the missing layer.
One sentence, no character names. It states an arguable claim about people or the world, not a plot. Four fields, then a pressure test (worksheet: ../../templates/character-design/premise.md).
Pressure test (all five): compresses to ONE sentence (no "and", no semicolon) · contains NO character names · is arguable · has a real counter-argument · names a feeling, not just an event.
Fill all six before casting anyone (worksheet: ../../templates/character-design/world-sheet.md). Each answer must be specific and must not change when characters arrive.
| Dimension | The question it answers | Original example | |-----------|-------------------------|------------------| | Physical | Look, sound, smell, climate, geography, architecture | "A tide-city built on stilts; the streets flood twice a day and everyone owns a boat before they own shoes." | | Social | Who has power, how it passes | "Status is measured in dry land. The few who own ground above the tideline never have to row." | | Economic | Currency, what's scarce, what people kill for | "Fresh water is the real currency; salt ruins everything, so sealed jars are inheritance." | | Ideological | What's sacred, shameful, unspoken | "Drowning is shameful — it means you didn't read the water. Nobody says a drowned name aloud." | | Historical | What everyone remembers or has forgotten | "The Great Surge took the old capital a century ago; half the city pretends it's coming back." | | Sensory | The daily textures the body knows | "Rope-burned palms, the green smell of low tide, lantern oil, the constant give of a floor that moves." |
Done check: read it aloud — does it sound like one world (no contradictions)? Is every answer specific? Will it stay true once characters walk in? Lock it. See also Hard vs soft worldbuilding for how knowable the rules should be.
The framework's flagship artifact (worksheet: ../../templates/character-design/9-question-character-sheet.md). Header: name, age, world, archetype. Then, in order — vague answers are the enemy; only this character should be able to give them:
Characters reveal themselves in friction, never alone (worksheet: ../../templates/character-design/character-web.md). Map four spokes around the hero — Opponent (the primary opposite), Ally (who they lean on), Mentor (who taught them), Foil (the variation that exposes them). Characters can move through roles over the story (a mentor who becomes an opponent is a person; one stuck in a single bubble is a function). Diagnostic: if you can take one spoke away and the hero says the same line in every scene, the web is too thin.
10–20 numbered beats (worksheet: ../../templates/character-design/story-spine.md). Beat format:
Beat N: [character] [does / discovers / loses] [thing]. Result: [the next problem].Connect beats with "therefore" or "but" — never "and then" (that's a list, not a story). Mark the Midpoint Turn: which beat flips the premise against the lead. Stop when the premise is proven — don't pad to hit 20.
Lock the look once, then inject it verbatim into every prompt (worksheet: ../../templates/character-design/style-sheet.md). Two ways to build it: (A) let the model draft it from the World Sheet (the worksheet carries a ready-to-paste prompt), or (B) fill it by hand. Six constants:
#1B3A4B, #6FA8A0, …). Inject the hex, don't describe colors in prose.The Forbidden List is the most valuable field — name what the world is NOT. It's often more useful than the palette and it's your strongest anti-slop lever:
> NO generic flooded-city teal-and-orange. NO neon. NO pristine surfaces — everything is salt-scarred. NO clear blue sky. NO photoreal celebrity faces. NO pure-black shadows; use deep indigo instead.
This Visual DNA — hex palette + forbidden list — is what gets pasted into prompts to keep a series consistent. See higgsfield-soul (Soul HEX) and higgsfield-style for how the color lock is applied at generation time.
This skill produces inputs; it does not generate. When the bible is locked, route forward:
higgsfield-prompt (MCSLA structure). Inject the Visual DNA (hex + forbidden list) verbatim, and pull the subject from the character's Silhouette + Contradiction, the action from the relevant Story Spine beat.model-guide.md / image-models.md. For a character who recurs across many shots, train a Soul ID / Soul Cast identity (higgsfield-soul) rather than re-rolling one-offs; for a single hero image that won't reappear, a one-off generation is fine.higgsfield-cinema (Cinema Studio) for shot-by-shot continuity; the Story Spine beats become the shot list.[DEMO — Joey story-bible-builder, 2026-08-16] [UNPROVEN HERE] A bible that lives in a chat transcript gets re-explained every session, drifts a little each time it is retyped, and is the reason "the same" character comes back subtly different a week later. Write it out once as a single dense canon document and reuse the file — one artifact that every later prompt reads from, rather than context reassembled from memory.
Two ways it gets used, and they want slightly different shapes:
human reading it.
characters, voices, tone and production rules are already known. Optimised for retrieval: short labelled sections, one fact per line, no narrative throat-clearing.
Keep it in workspace/input/ so it is found the way every other supplied document is (root SKILL.md § Workspace). For anything recurring, give each character a voice lock and a movement lock — one line each, fixed wording, reused verbatim — so speech register and physical signature stay pinned the way the Visual DNA pins the look.
Build it by interview, not by questionnaire dump. Scope first (how big is this — one short, or a series?), then the spine (premise, thesis, timeline, aesthetic), then factions, locations and world rules, then characters, then relationships and ensemble dynamics, then the structural engines, then the production rules. Ask in that order and each answer constrains the next; ask everything at once and you get a pile of unrelated facts that contradict each other three sections later.
Only build the part that is needed. A single hero image does not need a faction table. Scope the interview to the work in front of you and leave the rest unbuilt — an unfinished bible is normal, an invented one is not.
[FIELD — AI-vs-VFX, 2026-08-08] The sections above decide what is on the sheet. These are the construction laws for the sheet as an artifact — the flaws they prevent are the ones you otherwise pay for in every downstream generation that references it.
Plain grey background, always. Not a set, not an environment, not a gradient. A sheet built on a busy background makes the downstream model decide which pixels are the character and which are the world, and that decision costs re-rolls. Grey is the credit-saver.
Creature and non-human sheets carry two head close-ups: mouth open and mouth closed. A creature detailed enough to be interesting is detailed enough to glitch between expressions — a jaw that reshapes the skull when it opens. Two close-ups at the same angle, one closed and one in a full roar, pin both extremes. The canonical layout is three panels: full body, head closed, head open.
The face-lock crop. A three-panel human sheet gives the model three faces to average — front full-body, back full-body, close-up — and at full-body scale the face is only a few dozen pixels, so averaging drags identity toward generic. Crop the heads out of the full-body panels. The full-body frames keep doing their real job (build, silhouette, wardrobe); the close-up becomes the single source of truth for the face.
Scale between two subjects needs its own asset. Relative size is the first thing to drift and the last thing words can fix — "tiny compared to the enormous creature" returns a different size every generation, and worst on wides. Build a size-ref frame: merge the two character sheets plus a frame whose scale was right into one image showing them together, write the proportion in human-height comparisons ("wingspan as wide as twenty humans lying head to toe"), save it as its own named asset, and attach it to every shot containing both. Add the asymmetry lock — if scale is uncertain, render the smaller subject smaller, never larger — because an undersized subject reads as distance while an oversized one reads as fake.
Fix a flawed sheet; don't rebuild it. A warped logo or a colour cast on an otherwise good sheet is a one-line edit on the model that holds inputs best (Nano Banana 2), not a re-prompt: change the logo to the one in image two. Re-prompting re-rolls everything that was already right. Model routing per asset class: ../../image-models.md § Routing by Asset Class.
> EMPIRICAL — community workflow] Adapted from a community casting-director system prompt. It works in the field; it is not a platform guarantee.
The bible tells you who the character is; the generated stills tell you they look right. Neither tells you how they move, speak, and react — and that is what every scene generation you are about to pay for depends on. So before spending on real scenes, run one cheap audition video and watch the character act. This is the same thesis as ../../templates/ad-asset-prep.md's generate-many → test-in-motion → lock-the-winner loop, applied to a person instead of a product: consistent-looking is not the same as castable.
Six steps, in order — the user chooses at step 5; never skip ahead to the final prompt:
Divergence rule: if the user comes back and picks a different role type, rebuild the acting logic from scratch — new objective, new tactics, new beat pattern. A mentor read is not a villain read with softer adjectives; the same beats reworded is the audition-room version of slop.
quiet, transactional, barely controlled.../higgsfield-facs/SKILL.md — AU codes, not emotion labels.../higgsfield-soul/SKILL.md (Soul ID / Soul Cast) so every real scene starts from the version that can act — the lock-the-winner step of the ../../templates/ad-asset-prep.md loop.Three fast tests for killing slop, usable at any step:
How knowable should the world's rules be? Decide with three questions (worksheet note in world-sheet.md):
Hard worlds reward consistency in your prompts (repeat the same physical rules); soft worlds reward atmosphere over explanation. This choice changes how literal your World Sheet's Physical/Historical dimensions should be at generation time.
Fillable worksheets in ../../templates/character-design/ (hand them to the user or fill collaboratively):
| Worksheet | Step | |-----------|------| | premise.md | 1 — theme + counter-argument + pressure test | | world-sheet.md | 2 — six dimensions + hard/soft check | | 9-question-character-sheet.md | 3 — the flagship character schema | | character-web.md | 3 — Opponent / Ally / Mentor / Foil map | | story-spine.md | 4 — beats + midpoint turn | | style-sheet.md | 5 — Visual DNA + Forbidden List (+ AI-draft prompt) |
higgsfield-prompt — turns the locked sheet into an MCSLA generation prompt (the primary hand-off)higgsfield-soul — Soul ID / Soul Cast for recurring-character consistency; Soul HEX for the palette lockhiggsfield-cinema — Cinema Studio multi-shot sequences; Story Spine → shot listhiggsfield-style — applying the Visual DNA / forbidden list at generation timemodel-guide.md · image-models.md — picking the model for the character/scene| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 76,914 | 61,251 | -20% | 1 | 1 | 0% | 7,766 | 10,424 | +34% | 0 | 0 | — |
case-02 | fail→pass | 33,097 | 19,111 | -42% | 1 | 1 | 0% | 3,351 | 8,136 | +143% | 0 | 0 | — |
case-03 | fail→fail | 63,308 | 26,463 | -58% | 1 | 1 | 0% | 2,830 | 9,275 | +228% | 0 | 0 | — |
case-04 | fail→pass | 17,264 | 13,508 | -22% | 1 | 1 | 0% | 2,264 | 7,298 | +222% | 0 | 0 | — |
case-05 | fail→pass | 19,989 | 12,809 | -36% | 1 | 1 | 0% | 2,671 | 7,272 | +172% | 0 | 0 | — |
case-06 | fail→pass | 20,665 | 29,019 | +40% | 1 | 1 | 0% | 2,583 | 7,746 | +200% | 0 | 0 | — |
case-07 | fail→pass | 21,650 | 10,835 | -50% | 1 | 1 | 0% | 2,845 | 6,985 | +146% | 0 | 0 | — |
case-08 | pass→pass | 19,490 | 14,271 | -27% | 1 | 1 | 0% | 2,819 | 7,360 | +161% | 0 | 0 | — |
case-09 | fail→pass | 18,849 | 13,864 | -26% | 1 | 1 | 0% | 2,052 | 7,501 | +266% | 0 | 0 | — |
case-10 | fail→pass | 24,077 | 34,697 | +44% | 1 | 1 | 0% | 3,101 | 8,250 | +166% | 0 | 0 | — |
case-11 | fail→pass | 34,105 | 7,180 | -79% | 1 | 1 | 0% | 2,915 | 6,457 | +122% | 0 | 0 | — |
case-12 | pass→pass | 13,247 | 9,301 | -30% | 1 | 1 | 0% | 1,794 | 6,870 | +283% | 0 | 0 | — |
case-13 | fail→pass | 20,293 | 11,276 | -44% | 1 | 1 | 0% | 2,569 | 7,173 | +179% | 0 | 0 | — |
case-14 | fail→pass | 27,762 | 11,381 | -59% | 1 | 1 | 0% | 2,291 | 6,175 | +170% | 0 | 0 | — |
case-15 | fail→pass | 19,596 | 13,449 | -31% | 1 | 1 | 0% | 2,628 | 7,390 | +181% | 0 | 0 | — |
case-16 | pass→pass | 17,101 | 22,588 | +32% | 1 | 1 | 0% | 2,218 | 7,379 | +233% | 0 | 0 | — |
case-17 | fail→pass | 41,521 | 25,765 | -38% | 1 | 1 | 0% | 2,921 | 7,631 | +161% | 0 | 0 | — |
case-18 | fail→fail | 21,343 | 37,076 | +74% | 1 | 1 | 0% | 2,813 | 8,199 | +191% | 0 | 0 | — |
case-19 | pass→pass | 19,868 | 19,197 | -3% | 1 | 1 | 0% | 2,545 | 8,524 | +235% | 0 | 0 | — |
case-20 | fail→fail | 12,261 | 15,337 | +25% | 1 | 1 | 0% | 1,801 | 7,689 | +327% | 0 | 0 | — |
case-21 | fail→fail | 27,058 | 17,413 | -36% | 1 | 1 | 0% | 2,123 | 8,222 | +287% | 0 | 0 | — |
case-22 | fail→fail | 20,435 | 20,413 | -0% | 1 | 1 | 0% | 3,398 | 8,372 | +146% | 0 | 0 | — |
case-23 | fail→pass | 20,417 | 13,106 | -36% | 1 | 1 | 0% | 2,216 | 7,442 | +236% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +61 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.