osidemedia/higgsfield-character-design
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 consistent across shots', 'develop my film/series concept', or 'I keep getting generic AI characters'. Routes the locked outputs into higgsfield-prompt + the right model. Adapted from Higgsfield's official character-design framework by @vavavinca.
npx skills add https://github.com/OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-character-design
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 model
The 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.> [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/sceneTake osidemedia/higgsfield-character-design from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.