# Higgsfield Seedance

> Rewrites scene descriptions using professional cinematography language, structures prompts with a six-slot formula (camera + subject + action + setting + style + lighting), and diagnoses content filter rejections via a preflight linter. Use whenever the user asks for a Seedance 2.0 / Seedance Pro prompt, describes a scene for Seedance generation, mentions Seedance, reports a Seedance generation failure or flagged prompt, or is burning credits on Seedance regenerations.

- Skill: `gabrielmoreira/higgsfield-seedance` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/higgsfield-seedance`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/higgsfield-seedance/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/gabrielmoreira/higgsfield-seedance

---


# Higgsfield Seedance Director

## QUICK FACTS
*Generated-checked block (scripts/build_index.py verifies anchors). Read the linked sections for full context — these lines are routing aids, not the rules themselves.*
- The filter is an LLM reading full-scene intent, not a keyword blacklist — describe a SCENE, not a subject; fix the voice first [→](#the-filter-model-read-this-first)
- Instant fail (<10s) = filter rejection; delayed fail (>30s) = infra/complexity — never regenerate an instant fail unchanged [→](#instant-fail-vs-delayed-fail-the-diagnostic)
- Six slots, in order: Camera + Subject + Action + Setting + Style + Lighting; missing 3+ slots is where flags come from [→](#the-seedance-prompt-formula)
- Empirical prompt-craft laws: 50–80-word attention sweet spot (front-load the load-bearing element), name a director/lens not "cinematic", "fast" degrades motion, no negative prompts in the body, unidirectional motion chains + named camera endpoint + detail scale follows shot size [→](#prompt-craft-laws)
- Five prompt modes: Reference-Based / Continuation / Expand Shot / Edit Shot / Transformation — pick the mode before writing [→](#seedance-20-prompt-modes)
- [OFFICIAL] block scaffold for production prompts: SCENE CONTEXT → … → POSITIVE LOCKS, distributed style on standalone briefs (connected shotlists glue the compiled Style Prefix verbatim instead), FOV in degrees only, CAMERA block 3rd, cut ladder oner / CUT n / timed / freestyle [→](#official-prompt-architecture-the-block-scaffold)
- [FIELD] 13-project corpus calibration: word length scales with register (218w → 2,059w medians — the 50–80w sweet spot is single-shot-only), video briefs hand-authored (`enhance_prompt` off), Style Prefix = per-project constant compiled into home blocks [→](#field-calibration-the-13-project-production-corpus)
- [FIELD] Three "helpful-instinct" drift sources, each with a standing lock: environment invention (#1, above character drift), character-height equalization, scale drift on wides [→](#positive-locks)
- Build-safe construction for crowds/destruction/creatures: evacuated cities, contained fights ("stays at the sea surface"), the safe benchmark scene [→](#build-safe-construction-crowds-destruction-creatures)
- Extend an existing clip: attach it as a video reference + open with "The scene continues." — match source resolution AND duration; chain cap ~2 (hard 3), then re-anchor from ORIGINAL references [→](#extension-prompting-video-reference-continuation)
- **This file is Seedance 2.0.** For **2.5** — four modes incl. `video_edit` / `video_extension`, 4–30s, 30/10/10 references, in-prompt first-last frames, 720p ceiling — use `../higgsfield-seedance-2-5/SKILL.md`
- Tutorial-demonstrated patterns (reference-role vocabulary incl. VARIETY reference, SCREEN REALISM + duration-match composites, 60:30:10 grade, red-arrow prop annotation): `PRODUCTION-PATTERNS.md` in this directory
- [OFFICIAL] Feature-film pipeline (asset construction, per-scene GEO SPATIAL LAYOUT, the position-fixing first second, dialogue construction, ban dictionary, the 10–15 iteration rule, crowds / giants / thresholds): `HELL-GRIND.md` in this directory
- Performance — objective, obstacle, tactics, beats, subtext, eye life, the acting master profile: `../higgsfield-acting/SKILL.md`
- Hard engine rules (age-blind, exit-frame = cut, off-screen = nonexistent, no reflections, ≤3 tracked characters, double-contrast cuts) + high-risk shot table: `ENGINE-RULES.md` in this directory
- Reference roles: Character / Last-Frame / Environment / Prop — role determines what the prompt may re-describe [→](#reference-roles)
- Working modes: Exploration / Continuation / Bridging / Repair (distinct from prompt modes) [→](#working-modes-vs-prompt-modes-two-taxonomies)
- Layer 1 briefing vs Layer 2 production prompt — never paste Layer 1 into the prompt box [→](#two-layer-prompt-authoring)
- Native **4K** is available in `mode=std` only; `mode=fast` (Seedance 2.0 Fast) caps at 480p/720p — in Cinema Studio the model is still capped at 1080p [→](#pre-flight-linter)
- Always preflight: `python3 scripts/seedance_lint.py --preflight --model seedance_2_0 "<prompt>"` — enums come from `../../specs/model-specs.json` (fast+1080p/4K and Kling 21:9 are auto-caught) [→](#pre-flight-linter)
- 480p drafts validate the prompt, NOT the take — no seed param; pin Hero Frame + start/end frames to carry a look [→](#drafts-validate-the-prompt-not-the-take)
- ZH prompts: hard 1,800-char cap; ZH antislop list enforced by the linter [→](#multi-language-prompt-workarounds)
- Flagged prompt → rewrite playbook per linter rule, then voice pass [→](#the-rewrite-playbook)
- Repeated flags → full loop-breaker procedure + LOG THE OUTCOME (`--confirmed` / `add-quality`) [→](#when-the-user-is-already-in-a-failure-loop)


Use this skill whenever the user wants a Seedance 2.0 / Seedance Pro prompt, OR
whenever a Seedance generation has been blocked, flagged, or silently failed.
This skill's job is to stop credit waste on filter rejections.

> **Engine rules (read with this file):** the hard rendering constraints of the
> Seedance 2.0 engine — age-blind characters, exit-frame = implicit cut,
> off-screen = nonexistent, no reflection shots, ≤3 tracked characters, the
> double-contrast cut rule — live in `ENGINE-RULES.md` in this directory,
> together with the high-risk shot table (reflections, same-character doubles,
> crowds, text rendering) and its mitigations. This SKILL.md is the
> `EN-director` *profile* of that rule core; the `ZH-house` and
> `bilingual-JSON` profiles (`../../docs/Seedance 2 Skill.md`) obey the same
> core. Flag high-risk shot types at authoring time — never silently break a
> rule the project's hero image happens to conflict with.

> **Production patterns (sibling reference):** patterns demonstrated working
> in Higgsfield's own Seedance-4K film tutorial — reference-role vocabulary,
> coordinate blocking, video-reference screen composites, prompted
> imperfection, 60:30:10 grade — live in `PRODUCTION-PATTERNS.md` in this
> directory, labeled `[DEMO]`.

---

## The Filter Model — Read This First

Seedance 2.0's content filter is **not** a keyword blacklist. It is a language
model that reads the full prompt as a single scene and judges intent and context.
Most users burn hours swapping individual words — that loop does not work.

The filter compares two things:

- **A prompt that reads like a filmmaker describing a shot** → tends to pass.
- **A prompt that reads like a note to a friend** → tends to fail.

A word that looks sensitive in isolation can sit inside a well-constructed
cinematic prompt without issue — the filter reads the full picture. A prompt
with no picture to read (no setting, no visual purpose, no narrative logic)
gives the filter nothing to work with, and it errs on the side of caution.

**Practical rule:** the prompt must describe a **scene**, not a **subject**.
Fix the voice first, then fix the words.

---

## Instant Fail vs. Delayed Fail — the Diagnostic

This single heuristic saves time on every failure:

| Failure timing | Meaning | What to do |
|----------------|---------|------------|
| **< 10 seconds** (instant) | Content filter rejection — prompt never reached the GPU | Rewrite for voice + remove risk tokens. Do not regenerate unchanged. |
| **> 30 seconds** (delayed) | Infrastructure, timeout, or complexity — prompt passed the filter but the render failed | Simplify action density, cut length, try again |

If the user is seeing **instant fails in a loop**, it is a filter issue — never
a GPU issue. Stop them from regenerating before the rewrite.

---

## The Seedance Prompt Formula

Every Seedance prompt should hit these six slots, in this order:

```
[Camera movement] + [Subject] + [Action] + [Setting] + [Style] + [Lighting]
```

All six are technically optional — but a prompt that includes all six almost
never gets flagged, because the filter has full context to interpret every
word. A prompt missing 3+ slots is where flags come from.

### Minimum viable Seedance prompt

> **Slow dolly-in on a figure in a dark overcoat standing alone at the end of
> a rain-slick alley. Cold teal shadows, single practical streetlamp, shallow
> depth of field.**

Camera ✓ Subject ✓ Action ✓ Setting ✓ Style ✓ Lighting ✓ — all six slots, ~30
words, passes the filter because the scene is fully legible.

---

## Prompt-Craft Laws

A set of Seedance-2.0-specific prompt rules. These are **empirical** —
practitioner A/B findings that are plausible given the architecture but are
**not** in the official model spec. Treat them as strong heuristics and let the
repo's iteration discipline (`../higgsfield-prompt/SKILL.md` § The Iteration
Rule) confirm them on your own material, rather than as guaranteed model
behavior.

### Length and order — the attention model

Seedance reads the prompt **left-to-right with diminishing attention weight**.
The first sentence carries the most influence; by the third sentence you are in
"detail territory," where the model stops treating elements as primary
instructions and starts sampling them diffusely.

- **Sweet spot: 50–80 words (short-form regime).** A 70-word prompt reliably
  outperforms a structurally identical 200-word version of the same scene —
  more words past ~3 sentences buys diffusion, not control. (Block-scaffold
  production prompts are the other regime: § Official Prompt Architecture.)
- **Structure in three sentences:** ① subject + action, ② camera + style,
  ③ constraints / positive locks.
- **Lead with the single most load-bearing element.** When a shot lives on its
  subject, the subject opens the prompt; when it lives on a camera move, the
  move opens it.

**Relationship to the two length numbers.** This 50–80-word figure is the
*coherence optimum*. The >180-word figure in § Pre-flight Linter is a *different
axis* — the filter/encoder risk ceiling (>220 often hard-fails the text
encoder). 50–80 is where to sit; ~180 is where it starts to break. They don't
conflict.

**Relationship to the six-slot formula.** The six slots guarantee the filter
sees a *complete* scene (presence). The attention model governs *weight* (order
+ length). Keep all six slots present, but the slot list's camera-first ordering
is a completeness checklist, not a mandate to open with the camera word when the
shot's identity is the subject.

### Name the thing — kill empty adjectives

`cinematic`, `epic`, `beautiful`, `high quality`, `amazing` are high-frequency
labels attached to an enormous range of training footage — dark thrillers,
bright rom-coms, nature docs all read as "cinematic" — so the model samples a
broad, diffuse distribution and they move the output toward nothing in
particular. Don't just delete the slop word (Voice Rewrite §6) — **substitute a
named, narrowly-trained referent**:

| Empty adjective | Named substitute (samples a narrow distribution) |
|---|---|
| "cinematic" / "epic look" | a **director**: "Wes Anderson symmetry" (centered framing, pastel) · "Kubrick one-point perspective" (geometric corridors) |
| "cinematic lighting" | a **lighting setup**: "golden-hour backlight, long shadows stretching forward" |
| "beautiful" / "high quality" | a **lens spec**: "anamorphic 2.39:1, lens flare from a practical light source" |

Positive form of `../higgsfield-prompt/SKILL.md` § Anti-Slop Vocabulary.

> **Official override on director names.** Higgsfield's own prompt-writing
> skill forbids director names, signature-work references, and equipment
> model names outright (see § Official Prompt Architecture — the Block
> Scaffold → Measurable-language rules). The director-substitute trick above
> is an empirical short-form fallback; in block-scaffold prompts, describe
> the look in observable terms instead — "centered symmetrical framing,
> pastel palette", not "Wes Anderson symmetry".

### "fast" is the highest-degradation keyword

Combined with complex action or camera movement, `fast` is the single
worst-degrading keyword. The temporal branch already runs multiple high-velocity
calculations when motion is layered; `fast` asks all of them to run at maximum
velocity at once. Two competing fast elements jitter; three compound into error
that's hard to salvage.

**Fix: describe the physics, not the speed.** `feet striking hard, each stride
at full extension, arms pumping at 90 degrees` produces the perception of speed
with no degradation. One element can carry speed — just not all of them
simultaneously. (Same family as Voice Rewrite §3 — describe physics, not
emotion.)

### No negative prompts in the prompt body

Seedance has **no negative-embedding architecture** for the prompt text — every
token is read as a *positive* instruction. `negative: jitter, bent limbs` gets
parsed as scene description the model tries to render (noise), not as a
constraint, and makes the output worse.

Use **positive constraint statements** — direct declarations of what must be
true:

```
Face stable. Limbs anatomically natural. Consistent lighting, no flicker.
Body proportions consistent throughout.
```

**Scope:** this is about the Seedance prompt **body**, and the target is
`negative:` list syntax / bare negation lists — not every "no" token. A short
lock tail inside a positive declaration ("Consistent lighting, no flicker";
the Style Prefix's "Photorealistic — no 3D render") is fine and field-proven
across the harvest corpus. It does **not** override the Higgsfield UI's
dedicated negative-prompt field (which some image models expose and
`../../vocab.md` § Composition Vocabulary uses). The same positive-only
requirement is already documented for Cinema Studio 3.0 in
`../shared/negative-constraints.md`.

### Ambiguous verbs — the homograph trap (v1.10, Peter's find 2026-07-14)

If a word has a plausible second reading, Seedance may take it. The observed
case: *"wind tearing at her coat"* — meant as fabric pulled violently; the
model sometimes reads *tearing* as ripping (fabric shredding) or tearing up
(crying), and the shot changes accordingly. This is not covered by any known
prompt guide — treat it as a first-class law:

**Before a verb ships, ask: is there a second physical thing this word can
look like? If yes, replace it with the phrasing only ONE thing can look like.**

- `wind tearing at her coat` → `wind whipping violently at her coat` /
  `her coat flutters violently in the wind`
- Seed homograph list (grow it whenever a generation misreads a word):
  **tearing** (rip / cry) · **shoot** (fire / film) · **duck** (crouch / bird) ·
  **bolt** (run / lightning / hardware) · **draw** (pull / sketch / weapon) ·
  **wave** (hand / ocean) · **charge** (run at / electricity) · **rock**
  (sway / stone) · **drop** (fall / droplet) · **fire** (flame / shoot /
  dismiss) · **strike** (hit / match / lightning) · **break** (shatter /
  pause / dawn) · **pound** (hammer / heartbeat) · **snap** (break / photo /
  fingers).
- The list is a seed, not the rule — the rule is the self-check, which
  generalizes to any word forever.

### Community v3 cherry-picks (Joey drop, audited 2026-07-14)

Adopted (genuinely absent from this skill until now):

- **Camera on the shadow side, with a stated operator axis.** Place the
  camera on the shadow side of the key light and say where the operator
  stands/moves — light wraps toward the lens and faces keep dimension.
- **Detail-on-wide ("snake cam").** 84° low-angle placed hard against a small
  foreground object — detail-shot intimacy without losing the wide's context.
- **Intimate wide.** 63–84° on a close face instead of a long lens — presence
  without compression; the room stays in the frame.
- **Prompt-reset heuristic.** When iterations are getting *worse*, stop
  stacking fixes: strip the prompt back to subject + action + camera and
  re-add only what's necessary. Density is a bell curve; past the peak you
  can't tell which element the model dropped.
- **Canonical-over-plate.** Every subject keeps its own identity reference
  even when it is visible in the environment plate — the plate carries the
  world, the canonical ref carries identity; never let a plate double as an
  identity source.
- **Contrast curve stated three ways.** When the grade matters, state it as
  tonal curve + specular removal + named grade — one phrasing alone drifts.

Rejected (was: flagged, test day pending): their worldbuilder puts the camera
block at the BOTTOM ("at the top FOV fights identity data") — this contradicts
both this skill's CAMERA-3rd-position rule and their own seedance skill.
**Resolved 2026-07-26 by field evidence instead of a test day** `[FIELD — 13-project
community harvest]`: across ~4,000 harvested production prompts from 9 creators,
the CAMERA block sits mid-document in every final prompt — never at the bottom.
CAMERA-3rd stands; the bottom-position claim is dropped.

### Motion-prompt laws (dramaclaw production corpus, audited 2026-08-09)

`[EMPIRICAL — dramaclaw production corpus, Seedance]` — practitioner findings
earned in dramaclaw's Seedance production work. The craft is model-agnostic
i2v motion-writing rather than a Seedance spec; same epistemic status as the
rest of this section (strong heuristics — confirm on your own material).

- **Unidirectional motion only.** A short action that finishes early leaves
  the model with seconds of clip to fill, and it fills them by **reversing**
  the action — the character walks forward then steps back, leans in then
  pulls away. Chain **2–3 connected actions in the same direction** so the
  motion spends the whole clip; a deliberate there-and-back is **two shots**,
  never one prompt. (Failure face: `FAILURE-MODES.md` § Action-reversal
  fill.)
- **Name the camera endpoint.** A camera move needs a destination, not just
  a name — say **what the frame shows when the move finishes** ("slow
  dolly-in, ending on her hands wrapped around the cup"), not only the
  move's name. A move that runs out of instruction before it runs out of
  clip drifts or reverses — the camera face of the unidirectional law.
- **Detail scale follows shot size.** Close-ups earn micro-detail (fingers
  tightening, a jaw flex); wides earn broad arcs (crossing the courtyard,
  the crowd parting). Cross-matching — micro-detail written into a wide, or
  a broad traversal written into a close-up — is unrenderable at that shot
  size and degrades the whole clip. (Detail *inside* a wide is a
  composition problem, not a prompt-detail problem — see the snake-cam
  cherry-pick above.)

### Already-covered siblings (cross-links, not new rules)

- **Compound camera move** (`dolly in while panning left`) → jitter at the
  transition because the model executes the two vectors in sequence. Use one
  primary move + one texture modifier (`slow dolly in, slightly handheld`). Full
  treatment: `FAILURE-MODES.md` § Multi-motion camera overload.
- **Image-to-video subject drift** → re-describing what's already in the source
  image gives the model two competing inputs for one subject; reconciliation
  introduces drift. Keep an I2V prompt to **motion + camera only**. See
  § Seedance 2.0 Prompt Modes / Reference-Based and
  `../higgsfield-prompt/SKILL.md` (I2V key rule).

---

## Official Prompt Architecture — the Block Scaffold

`[OFFICIAL — Higgsfield prompt-writter.skill, 2026-07]` — Higgsfield ships
its own Seedance 2.0 prompt-writing skill with the Seedance-4K release. This
section is that doctrine, reconciled with the rest of this file. Where the
two disagree, the official rule wins inside block-scaffold prompts; the
empirical rules elsewhere in this skill remain the short-form regime.

**Two regimes, not a contradiction.** The six-slot formula and the
50–80-word sweet spot (§ Prompt-Craft Laws) govern short-form single shots.
The block scaffold is the production regime — multi-shot, reference-heavy,
high-control work — where *structure replaces the word cap*: write densely
where control matters, sparsely where it does not, and say each important
thing once. The pre-flight linter detects this regime automatically (canonical
block labels / shot markers) and suspends the short-form word caps — force it
with `--regime block` if detection misses — while every structural lint rule
(shot counts, beat sums, handle declarations, enum checks) still applies in
full. Likewise, the Voice Rewrite instruction
to put a Style & Mood clause up front is the short-form filter pass — in a
block prompt the filter gets its full scene from SCENE CONTEXT, LOCATION MAP,
and LIGHTING instead, and style is distributed (below).

### Block order

Write blocks in this order, using **only the blocks the shot needs**:

```
SCENE CONTEXT
ACTIVE REFERENCES
LOCATION MAP
FIRST FRAME / BLOCKING
FORMAT MODE
OPTICS
CAMERA
ACTION
PERFORMANCE      (when acting matters)
PHYSICS
LIGHTING
COLOR GRADE      (when the grade is strong / stylized)
WARDROBE         (when costume matters)
AUDIO
STYLE            (technical-style suffix)
OUTPUT SETTINGS  (when format must be pinned)
POSITIVE LOCKS
```

Logic: context and references first, then space and timing, then action and
physics, then descriptive style in its home positions, then a technical
suffix, locks last. A naturalistic single take may drop COLOR GRADE,
WARDROBE, and OUTPUT SETTINGS entirely and fold those notes into LOCATION
MAP / LIGHTING.

### Distributed style — the standalone-block rule

In a **standalone block-scaffold prompt** there is no style-prefix block at
the top; the prompt always opens on SCENE CONTEXT. Each style aspect lives
in the block that governs it: light → LIGHTING; color → COLOR GRADE, or
folded into LOCATION MAP + LIGHTING for a naturalistic look; lens / optical
character → OPTICS; skin realism and acting → PERFORMANCE; format / grain /
fps → the STYLE + OUTPUT SETTINGS suffix just before POSITIVE LOCKS.
Descriptive style sits in the body next to what it describes; technical
style sits as the end suffix; nothing style-related opens the prompt.

**Connected-shotlist carve-out** `[FIELD — 13-project harvest]`: in a
multi-scene shotlist project, the field-proven shape is the opposite — a
per-project compiled **Style Prefix glued verbatim to the top of every scene
prompt** (edit once → changes everywhere), then the scene body. Consistency
across 25 separately-generated scenes outweighs distributed elegance there.
That regime is owned by `../higgsfield-shotlist-director/SKILL.md` § Per-scene
prompt law and `../../templates/seedance/global-style-prefix.md`; this
section governs standalone prompts only.

### FOV anchors + the CAMERA-3rd-position rule

In prompt text, state field of view in **degrees from these discrete
anchors only** — never millimeters, never in-between values (not "23°" —
use 18° or 29°):

| FOV | mm equiv | Use |
|-----|----------|-----|
| 180° | fisheye | spherical distortion — POV, dream-state |
| 107° | 14–16mm | architectural ultra-wide, epic establish |
| 84° | 20–24mm | wide — establish, group blocking |
| 63° | 28–35mm | observational, reportage |
| 47° | 40–50mm | neutral human perspective |
| 29° | 75–85mm | portrait compression, dialogue bust |
| 18° | 100–135mm | close portrait, identity-preserving |
| 12° | 180–200mm | tele-detail — hands, objects |
| 8° | 300–400mm | extreme compression, observation, broadcast |

In a multishot, set FOV per segment and add `"no drift mid-segment"`.

Place the CAMERA block in the **3rd position** of the prompt's core layers
(subject → action → camera → style → constraints). Moved to the end, FOV
gets ignored; moved to the front, it conflicts with identity.

### Measurable-language rules

- **Positive phrasing only** — official confirmation of the empirical
  no-negative-prompts law (§ Prompt-Craft Laws).
- **Speeds in km/h** — "moves at 40 km/h", not "fast" (which is also the
  highest-degradation keyword, § Prompt-Craft Laws).
- **Atmosphere in % / meters** — "fog density 40%", "haze visible at 15
  meters"; build it in steps across shots (20% → 40% → 60%).
- **Giant scale via human-height comparison** — "as tall as four humans
  stacked head to toe", not "huge" or "three meters".
- **Left/right is always from the camera.**
- **Emotion through muscle movement, not labels** — same rule as Voice
  Rewrite §3; the muscle-level extreme is `../higgsfield-facs/SKILL.md`.
- **White balance in Kelvin**, fixed within a scene: 3200K / 4000K / 5600K /
  8500K.
- **Masses and sizes in real units for physics** `[FIELD]` — the PHYSICS
  block writes weights in so gravity reads correctly: `"the spider is 10–12
  centimeters, 50–70 grams — it falls gently; the man is 70–80 kg — the
  drop lands hard."` Material behavior gets the same treatment (`"the liana
  stretches slightly under load and creaks like fibrous wood"`).
- **Causal prop interaction** `[FIELD]` — objects never move on their own;
  every prop event needs a visible physical cause with event order:
  `"the cup tips only from visible sleeve contact"` · `"a button press is a
  full mechanical event — contact, 2–3 mm of travel, click, spring-back;
  the screen lights only AFTER the click."`
- **No director names, signature works, or equipment model names** — they
  get ignored or break complex moves; describe the look instead. (Overrides
  the empirical director-substitute in § Prompt-Craft Laws for this regime.)
- **English prompts only** (for the historical ZH exception, see
  § Multi-Language Prompt Workarounds).

### POSITIVE LOCKS

A **lock** is a short hard fixer placed next to what it protects —
`"headlights stay glowing in every shot"`. The POSITIVE LOCKS block closes
the prompt: continuity (characters, props, environment identical across
cuts) plus a single positive restatement of critical info. This is where the
positive constraint statements from § Prompt-Craft Laws live in a block
prompt.

**Three named "helpful-instinct" drift sources** `[FIELD — 13-project
harvest]` — the model's own instincts, each needing a standing lock:

1. **Environment invention — the #1 drift source, above character drift.**
   Whenever a location reference is attached, the model "helpfully" widens
   rooms and adds furniture it wasn't shown; multiple creators called this
   the single largest source of drift between clips. Standing lock: `"the
   set contains only what the reference shows — no added furniture, rooms,
   or geography beyond the reference"`, plus explicit absences where they
   matter (`"nothing on the floor, nothing on the bed"`).
2. **Character-height equalization.** With two people in frame the model
   drifts toward equal heights. Write real heights into **every** prompt
   with 2+ characters (`"she is 165 cm, he is 178 cm"`) so relative scale
   never floats.
3. **Scale drift on wide shots.** A human anchor shrinks to a speck across
   cuts. Lock it: `"the girl stays the calm human-sized anchor — never
   shrunk to a tiny distant dot."`

### Cut-format ladder

Four precision levels — points on a scale, pick the one the shot needs:

1. **Oner** — `"one continuous shot, the camera does not cut on its own."`
2. **Sequential cuts, no timecodes** — `CUT 1 … CUT 2 … CUT 3`, described in
   order, when cuts matter but exact timing doesn't.
3. **Timed multishot** — explicit cuts at stated seconds
   (`1.0s HARD CUT`), when beats must land on a clock.
4. **Freestyle b-roll** — don't lock cuts; let the model find angles.

Whenever cuts are specified (timed or not), add: `"cuts only at the
specified points, the camera does not cut on its own."` Cut vocabulary:
`HARD CUT`, `SMASH CUT`, `MATCH CUT`, `INSERT CUT`, `REVERSE CUT`,
`WHIP CUT`; fades/crossfades only if explicitly requested. This ladder is
the resolution of the pick-a-side anti-pattern in § Output Format
(per-second labels inside an intended oner read as cut instructions), and
timed beats must still sum to the declared duration (4–15s) per the runtime
arithmetic there.

### Tag naming + minimal reference text

- User-specified tags verbatim; otherwise load-order `@image1 @video1
  @audio1` — consistent with § Reference Roles → Per-Image Role Convention.
- The `@TAG:` reference line = role/build + current state + unique visible
  features + action-critical details + voice (only if it has a line) +
  `"100% matches the reference"`. **No age.** The official skill's own template
  opened this line with an age token; engine rule 1 (`ENGINE-RULES.md`) forbids
  it in either language, and Higgsfield's feature-film brief gives the reason —
  the content filter tightens sharply the moment it reads a minor
  (`HELL-GRIND.md` § Wording rules). Carry the same information through build,
  wear, and posture.
- **Keep reference character text minimal** — long appearance text fights
  the image and degrades it (same mechanism as the I2V subject-drift rule in
  § Prompt-Craft Laws).
- **State critical details in words anyway** — small text, logos, colors —
  even when visible in the reference; the model can drop them.
- **Never place an `@tag` in a shot where that object is not present** — the
  model will force it into frame.

**Naming the tags themselves** `[FIELD — Higgsfield Studio, ONEIRIC breakdown, 2026-08-13]`
The bullets above say what a tag *line* contains; on a project of any size the *name* needs
a convention too, and the rule behind it is **one element, one name**. Without it a project
grows duplicates — the same couch living under three names — and nobody can tell which
reference is the real one:

```
@loc_ON_dorm_commonroom_front_s2     type + project + name + [angle] + scene
@char_ON_Rudy_s2_v1                  type + project + name + scene + version
@prop_ON_pizza                       type + project + name
```

- **The scene suffix ties an asset to where it lives**, so two dressings of one room, or
  two versions of a location across a time jump, cannot collide.
- **The version suffix appears when a state changes** — and a changed state is a **new
  asset with a new name, never an overwrite**. One character in a dorm room and the same
  character in a hospital bed are two assets of one man. The identity discipline behind
  that split lives in `../higgsfield-soul/SKILL.md` § The Untouched Base; this bullet is
  only the naming half of it.
- Tags are arbitrary strings, so mixed case is safe and **consistency is the only rule**.
  Pair related names visibly (a location and its staging reference sharing a stem) so it
  reads at a glance which assets belong together — see
  `../../templates/seedance/staging-reference.md` § Tag naming for the staging-side form.

### Context isolation

Every generation is a blank slate with no memory of previous shots. Never
carry in scene numbers, script headings, prior-scene summaries, unused tags
or characters, or "as above / continues" phrasing. This is *why* the
Continuation Prompt Formula (below) demands a verbatim identity re-paste
rather than a reference back to the earlier prompt.

### Special protocols

- **4-mechanism extreme-FOV multishot stack** (8° / 107°): ① sequence-wide
  identity lock (single location reference across all beats), ② LENS LOCK
  opener — explicit FOV phrase starting each beat, ③ LENS CHECK closer
  confirming FOV at the end of each beat, ④ color via material + light, not
  a list. **All four or extreme-FOV multishots break down after 2–3 beats.**
- **Whip-pan needs ≥0.8s of blur travel** — under 0.8s it renders as a hard
  cut without blur (settled → 0.8s WHIP → settled).
- **Mixed real-time / slow-mo:** hard cuts only between speed modes; each
  shot is one speed start to finish.
- **Anti-impact locks** for cracks/breaks: `"crowd PRESSES, not strikes"` ·
  `"fracture originates from edge stress, not center impact"` · `"no impact
  point — pressure-based crack"` · sequential timing edge-to-center, not
  radial from a point.
- **Observation pattern** (hidden-camera effect), all three at once:
  foreground occlusion over 20–30% of frame + atmospheric haze between
  camera and subject + distance vantage at 8–12°. Change the occlusion type
  between beats; keep the vantage single.

For these protocols applied on real footage — per-segment LENS LOCKs, timed
SMASH/MATCH cuts, screen composites — see `PRODUCTION-PATTERNS.md` in this
directory.

### Field calibration — the 13-project production corpus

`[FIELD — community harvest 2026-07-18: 13 shared Higgsfield projects, 9
creators, ~4,000 production prompts pulled via API with full params]`. What
the corpus confirms and calibrates about the block scaffold:

- **The scaffold holds platform-wide.** Every project — photoreal adventure,
  K-drama romance, broadcast-TV drama, anime, stop-motion folklore — runs the
  same Style-Prefix-plus-Constraints-plus-variable-SHOT structure with the
  same block anatomy. "SHOT" markers appear in 95% of the flagship project's
  1,240 Seedance prompts; 15s is the dominant duration (they generate long
  multi-shot clips and cut the best seconds).
- **Word-length ladder by register.** Median Seedance prompt length tracks
  register and ambition, not a fixed cap: tech-demo 218w → broadcast-TV drama
  538w → commercial 779w → genre anthology 955w → adventure film 1,433w
  (p90 2,648) → stop-motion emotional drama 2,059w. The 50–80-word sweet spot
  (§ Prompt-Craft Laws) is *single-shot* doctrine; production multishot briefs
  live an order of magnitude above it. Length scales with performance
  complexity — never truncate a reaction arc to be neat.
- **Register contracts the template.** Photoreal keeps every block (PHYSICS
  with real masses, pore-level PERFORMANCE); stylized work (anime,
  stop-motion) drops PHYSICS/skin realism and keeps SHOT beats + continuity +
  a hard medium lock. See `../higgsfield-style/SKILL.md` § Register Poles.
- **The Style Prefix is a per-project compiled constant.** In connected
  shotlist projects the corpus ships it **verbatim at the top of every scene
  prompt** (the Style-Prefix-plus-Constraints-plus-SHOT structure in the
  first bullet — that is the delivered form, not just an authoring note).
  Standalone block prompts instead *distribute* those aspects into their
  home blocks (§ Distributed style — the standalone-block rule). Which form
  ships is decided by the workflow, not by taste — see
  `../higgsfield-shotlist-director/SKILL.md` § Per-scene prompt law.
- **Video prompts are hand-authored.** `enhance_prompt` was absent/off on
  every harvested Seedance job but ON for 1,022 image jobs — let the enhancer
  expand image prompts, never the video brief.
- **Platform-layer params observed on Seedance jobs** (Higgsfield surface,
  not necessarily the raw model API): `multi_shot_mode: "custom"` (the timed
  multishot mode), `genre: "auto"`, `speedramp: "auto"`, `mode: "std"`,
  `bitrate_mode: "high"`, `generate_audio: true`, 21:9 at 4K.
- **Iteration economics** (TESTS-first culture, 65–100 generations per kept
  shot, five-bucket folder discipline): `../../production-benchmarks.md`
  § Community-corpus anchors.

---

## Seedance 2.0 Prompt Modes

Seedance 2.0 exposes five generation modes that each take the six-slot formula
but apply it to a different starting point. Picking the right mode is upstream of
prompt writing — the same sentence will produce different results in different
modes, because each mode reads the prompt as a different kind of instruction.

### Reference-Based

The prompt builds a scene around a source image that carries the visual identity —
character, wardrobe, palette, sometimes composition. The prompt's job is NOT to
re-describe what the image already shows; it's to place the subject into a new
action, setting, or motion context. This is the workhorse mode for any sequence
that needs a consistent character across varied shots.

```
[Source image role: "as the main character" / "as the starting frame"].
[Action the subject performs]. [Environment and atmosphere if not visible in source].
[Camera movement]. [Lighting cue if different from source].
```

### Continuation

The prompt extends a prior Seedance generation forward in time, picking up at the
final frame of the previous clip. Identity, wardrobe, environment, and emotional
state all carry over. The prompt should describe what happens NEXT — never what
just happened. For the full five-rule construction pattern, see the Continuation
Prompt Formula section directly below.

```
[Continuing from prior clip]. [New action that follows from the last frame].
[Camera direction for the continuation]. [Any state change — light shift, new beat].
```

### Expand Shot

The prompt grows the canvas or spatial extent of an existing frame — pulling the
frame boundaries outward to reveal what's beyond the original edges. This is NOT
a time extension (that's Continuation) and NOT a zoom-out camera move within the
original generation. It rewrites the frame itself to include more scene. Useful
for turning a tight composition into a wider establishing shot without
regenerating from scratch.

```
[Source frame reference]. Extend the scene [direction: outward / upward / leftward].
[What appears in the newly revealed area]. [Preserve the original subject/composition].
```

### Edit Shot

The prompt modifies specific elements of an existing generation while everything
else stays exactly as it was. Think of it as a targeted patch: change a jacket
color, remove a background figure, swap a prop, adjust a facial expression.
Identity, camera, composition, and lighting stay locked unless you explicitly
name them in the change list. The Keep Rule matters here: always state what to
preserve alongside what to change.

```
Change [specific element] to [new state]. Keep [everything else] unchanged.
[Preserve identity, composition, lighting, and camera behavior from the original.]
```

### Transformation

The prompt describes an explicit state change inside a single clip — the subject,
object, or environment visibly becomes something else within the shot's
duration. Distinct from Continuation (which extends time across two clips) and
from Edit Shot (which modifies a generated clip after the fact). Transformation
happens *during* the generation, in one continuous take.

> **Not to be confused with footage transformation (video-to-video).** This
> Transformation *prompt mode* is an in-clip morph generated from scratch. When
> the user starts from a **real clip they already shot** and wants to preserve
> the subject + camera move while adding a VFX element, swapping the world, or
> dropping in a creature, that is the video-to-video workflow in
> `../higgsfield-seedance-vfx/SKILL.md` (`@source` grammar, lock-down clauses,
> lighting integration, std-4K). Use it when the shot's
core idea is the change itself: a character morphing, an object decaying, a
landscape shifting from one season to another. The skeleton below is written
for character → character; the same pattern applies to object → object and
environment → environment with the relevant noun substituted.

```
[Subject in starting state — full identity descriptors]. [Triggering moment or
cue]. [Subject mid-transformation — what visibly changes, in observable
physical terms]. [Subject in ending state — new identity descriptors].
[Camera behavior across the change]. [Lighting / palette shift if any].
```

The transformation must be one continuous arc, not a cut. Describe the
intermediate state explicitly — the model needs a midpoint anchor or it will
either snap from start to end (looks like a cut) or render an ambiguous blur.
Keep the duration short (5–8 seconds is the sweet spot for a single
transformation); longer clips drift.

### Mode Selection Rule

Reference-Based for new action with an existing character. Continuation for the
next beat in time. Expand Shot to widen the frame spatially. Edit Shot to patch
specific details. Transformation prompt mode when the shot's core idea is a
state change inside a single clip — the change is the content. If you find
yourself writing across multiple modes in one prompt — stop, pick one,
generate, then use the output as input to the next mode.

---

## Contin

…(truncated)
