Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when a Higgsfield generation fails, produces poor quality, looks wrong, doesn't match the prompt, or the user needs to fix or improve an output.
.claude/skills/osidemedia-higgsfield-troubleshoot/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 163% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 299% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 246% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 252% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 342% | 0% |
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.
notes →reject_reason, the human confirms — advisory until a class clears the agreement gate →Cause: No Soul ID reference; prompt has conflicting appearance descriptions Fix:
Cause: Camera described vaguely, not using exact preset names Fix:
Cause: Prompt too long, conflicting instructions, over-specified Fix:
SKILL.md HARD RULE 8)Cause: No style specified, or style description too vague Fix:
Cause: Preset not explicitly named, or scene context doesn't support the effect Fix:
who can logically transform
Cause: Prompt re-describes the static elements instead of what should animate Fix:
Cause: Wrong model for the preset, or prompt style conflicts with effect Fix:
Cause: No lighting specification, background too plain Fix:
Cause: Platform safety filters triggering on explicit content Fix:
When a Kling 3.0 Motion Control generation comes back wrong, the cause is almost always upstream of the prompt — the motion reference clip, the character image, or the orientation/scene-source settings. Walk this list before you regenerate.
| Symptom | Root cause | Fix | |---------|-----------|-----| | Output suddenly jumps or snaps mid-clip | The motion reference contains a hidden cut, dissolve, or hard transition | Re-trim the reference to a single continuous shot. If the source clip can't be cleaned up, reshoot or pick a different reference | | Output is shorter than the reference clip | The source motion is too fast or too dense for clean transfer | Slow the source (50–75% playback baked in), reshoot at a calmer pace, or pick a reference with simpler motion | | Character face drifts or warps across the clip | The character image doesn't have a clearly readable face — bad framing, low light, or the face is too small in frame | Re-shoot or re-generate the character image with closer framing, even lighting, and a neutral or slight expression | | Body motion looks correct but the face is dead or frozen | Wrong orientation mode for the shot — Image Orientation when you needed Video Orientation, or vice versa | Switch modes: Video Orientation for full-body movement (dance, action); Image Orientation for camera-driven shots with a mostly static body. Regenerate | | Generated character feels detached from the environment | Scene source is set incorrectly — pulling the wrong background | Decide whether the environment should come from the motion video or the character image, then set Scene source accordingly | | Motion transfers but identity drifts across the clip | The character image isn't full enough — head or body is cut off, or framing is too tight to anchor identity | Re-upload a character image that shows both head AND body fully; this is what Element Binding needs to keep the face stable through movement |
> For the full Motion Control workflow and pre-flight input checklist, see ../higgsfield-motion/SKILL.md → "Kling 3.0 Motion Control — When and How to Run It" and "Motion Reference Input Checklist".
Cause: Head motion tokens competing with lip engine, non-MP3 format, clip too long Fix:
higgsfield-audio skillCause: Ambient/music tokens in prompt invite generative audio engine to replace your audio Fix:
Before generating, verify:
> Full negative constraints reference: For a comprehensive, categorized list of all > generation artifacts and the prompt phrasing to prevent them, see > ../shared/negative-constraints.md. This troubleshooting guide covers diagnosis and fixes; > the shared constraints file covers prevention.
> These diagnostics apply to Cinema Studio 3.0's generation engine (Business/Team plan only). For Cinema Studio 2.5 issues, see the general troubleshooting section above.
| Symptom | Likely Cause | Fix | |---------|-------------|-----| | Output blurry, jittery, or morphing | Overspecification — prompt too long or too detailed | Short-form: cut to 30–100 words; use @reference images/videos instead of 50+ words of description. Block-scaffold briefs: don't shorten — tighten structure instead (one axis per clause, HARD RULE 8 regime) | | Camera chaotic, spinning, or jittering | Violated the One-Move Rule — multiple camera moves in one shot | Rewrite to ONE primary camera move per shot. Use Cinema Studio 3.0's Smart mode, or split into multi-shot | | Character doesn't match reference | Prompt is re-describing the character's appearance | Delete ALL physical descriptions. Describe ONLY action and emotion. The @reference carries identity | | Action stiff or lacking impact | Missing intent/physics language | Add degree adverbs (violently, gently, explosively) and physics consequences (dust erupts, sparks fly, fabric tears) | | Output "not what I wanted" (vague) | Ambiguous prompt with subjective language | Run Anti-Slop Check: replace beautiful, stunning, epic, amazing, dynamic with observable, measurable details | | Audio not matching video | Audio description conflicting with visual description, or uploaded audio being overridden | Use timestamp anchoring for uploaded audio. Remove ambient/SFX tokens when using @Audio references |
Output bad?
├── Blurry/morphing → Is it a short-form prompt > 100 words?
│ ├── Yes → Cut to 30–100 words, use @reference
│ │ (block-scaffold briefs: tighten structure, never truncate)
│ └── No → Too many action beats? (>2 per 5s) → Split into multi-shot
├── Camera wrong → How many camera moves specified?
│ ├── Multiple → Reduce to ONE move (One-Move Rule)
│ └── One → Try Smart mode instead, or use @Video camera transfer
├── Character wrong → Does prompt describe character appearance?
│ ├── Yes → Delete appearance, keep only action/emotion
│ └── No → Use better reference (frontal + 3/4 + profile shots)
├── Action weak → Does prompt have physics language?
│ ├── No → Add degree adverbs + physical consequences
│ └── Yes → Reduce beat density (1–2 beats per 5s)
└── Just bad → Run Anti-Slop Check
├── Found slop words → Replace with specific observables
└── Clean → Try different genre setting, or use @referenceCinema Studio 3.0's generation engine produces ~90% usable output. If outputs are consistently bad across multiple attempts, the prompt is almost certainly the problem — not the model. Apply the diagnostic tree systematically before regenerating.
[FIELD — community, Emily2040/seedance-2.0 skill (MIT), re-derived 2026-08-09] The sections above repair outright failure. Most real takes land in between — partially good — and the expensive habit is treating every flaw as a regeneration. Before anything re-fires, every delivered take gets exactly one of five verdicts:
| Verdict | When | Next move | |---------|------|-----------| | Keep | The thing this shot is FOR is delivered and nothing is fatal | Lock it, log it, move on. Perfection in secondary details is post's job | | Fix in post | The flaw lives in the editor's domain: color, on-screen text, sound mix, trim, a few unstable frames at the ends | Never burn takes on what an edit fixes in minutes | | Edit, don't regenerate | Composition and timing are right; exactly one layer is wrong and an edit surface supports it | Repair only the failing layer — the editor-not-regenerator mindset (../higgsfield-seedance/SKILL.md § Keyframe Workflow; ../higgsfield-pipeline/SKILL.md Pipeline E Stage 2) | | Re-roll | The prompt is right; the sample was unlucky | Same prompt again, unchanged — every roll is fresh on this surface (no seed parameter; ../higgsfield-seedance/SKILL.md § Drafts Validate the Prompt, Not the Take). With enough ledger history, let the fork verdict decide iterate-vs-batch instead of eyeballing (higgsfield-recall § Read the verdict) | | Rewrite | The same flaw appears in two takes | Systematic, not luck — two takes with the same flaw = rewrite, by rule. Diagnose (tables above; ../higgsfield-seedance/FAILURE-MODES.md), change the prompt |
The rewrite tripwire cuts both ways: the same flaw twice means stop re-rolling into the same wall, but different flaws on every roll mean the miss is stochastic — that's batch-and-cull territory, not a rewrite (../higgsfield-prompt/SKILL.md § Before You Iterate). When the verdict is re-roll or rewrite and the failure keeps recurring, escalation is governed by the Retry Ladder below.
Whatever the verdict changes — one prompt clause, OR the mode, OR one reference — change exactly one thing between takes so causality stays readable. Full mechanics: ../higgsfield-prompt/SKILL.md § The Iteration Rule — Change One Variable at a Time (and DISCIPLINE.md § Single-Variable Iteration). The shot log below records which variable, per take.
Write two things down before the first fire:
../../production-benchmarks.md (draft-tier exploration stretches it — § Drafts Validate the Prompt, Not the Take).
flaws postable. Without it written down, the bar silently becomes "perfect," and no budget survives that.
At half the budget with no progress on the same flaw, stop iterating and change strategy: a different mode, a shot split, or the Retry Ladder's rung-4 named options. Iteration without a stop condition is how a cheap shot becomes an expensive one. The budget is not a promise of success — it is the tripwire that forces the strategy change.
One line per take — what changed, what resulted — and the repo already has the surface for it: the generation ledger (../../db/ledger/, § Log the Outcome below, 5-second rule). Put the one changed variable in notes ("changed: lens lock line"); prompt_hash already dedupes identical re-rolls. Two rows sharing a flaw is the rewrite tripwire made auditable — re-reading the log beats re-living it.
[FIELD — community, Emily2040/seedance-2.0 skill (MIT), re-derived 2026-08-09] Symptom → likely cause → single repair variable for chained work: continuations, extensions, and start-frame-pinned handoffs. One repair variable per retake — the one-variable rule applied to sequences. Handoff mechanics live in ../higgsfield-pipeline/SKILL.md § Continuation & Extension Handoff; prompt templates in ../higgsfield-seedance/SKILL.md § Continuation Prompt Formula. This table is the symptom-side index into both.
| Symptom | Likely cause | Repair variable (change this one thing) | |---------|-------------|------------------------------------------| | Continuation opens from the planned ending, not the delivered one | Prompt written from the shot plan; the accepted take's actual end state was never reviewed | Rewrite the opening from what the parent clip actually shows — the source carries state, the prompt carries only the delta (higgsfield-pipeline § Source-carries-state rule) | | Action restarts from the top | Completed beat never marked as already done | State the beat as completed ("the door already stands open") and prompt only what happens next | | A later beat shows up early | Future-beat material leaked into this clip's prompt | Strip every future beat from prompt and endpoint — one clip owns one beat | | Identity drifts across extensions | The chain tail displaced the canonical identity reference | Re-anchor from the ORIGINAL character refs, never a frame from the drifted tail (higgsfield-pipeline § Chain management) | | Screen direction flips at the join | Axis never locked, or reset unintentionally | State the direction ("walks screen-left to screen-right") or declare the axis change as intentional coverage | | Mid-flight motion stops dead | Open motion vector not carried across a still-frame handoff | Carry subject/camera speed and direction in prose — one of the three things a frame cannot carry (higgsfield-pipeline § Source-carries-state rule) | | Camera move restarts from rest | Parent's camera-move phase missing from the prompt | Open from the observed camera phase ("mid-dolly, continuing in") | | Prop contradicts the prior clip | Prop owner / position / condition not tracked across the handoff | Add a prop-state line (who holds it, where it sits, what condition); prop sheet for recurring props (higgsfield-pipeline Pipeline E Stage 3) | | Dialogue repeats a delivered line | Audio phase not carried at the cut point | Mark the line as delivered and continue from the audio phase — a frame cannot carry it | | Each extension looks worse than the last | Expected chain-depth drift — each generation re-ingests the previous one's artifacts | Re-anchor from canonical refs or cut intentionally; cap chains at 2 extensions, hard ceiling 3 (higgsfield-pipeline § Chain management) | | A reference bleeds into the wrong role | Transfer / ignore clauses absent | Split the roles: per-image role line plus explicit exclusions (higgsfield-seedance § Reference Roles) | | Too much happens; nothing lands | Several beats compiled into one prompt | Reassign future beats to later clips (higgsfield-seedance § Single-vs-multi-shot decision) |
A repair that works gets logged (§ Log the Outcome). Two takes failing on the SAME row is the rewrite tripwire in § Take Triage — stop re-rolling into the same wall.
[EMPIRICAL — MiniMax H3 skill corpus, re-derived] When a take fails or drifts and the diagnostic tree confirms the references and mappings were right, escalate in this order. Each rung terminates — never loop on one rung:
lines, unedited. If the mapping was right, one clean re-roll is legitimate variance.
envelope and/or split the surplus beats into a new adjacent prompt (the shotlist density split triggers apply), then re-run the preflight linter on both halves before firing either. A second identical re-roll pays twice for the same overload.
the whole piece around a shot the current engine won't hold.
take, re-scope the shot, defer it, or ship with an explicit placeholder: missing clip note in the deliverable. Silent omission is never one of the options.
Log the rung that resolved it (§ Log the Outcome) — rung-2 resolutions are shotlist authoring lessons, not generation luck.
Troubleshooting that isn't logged is troubleshooting the next session repeats. After ANY confirmed fix from this skill, write it to the learning memory (../../scripts/higgsfield_memory.py, databases in ../../db/):
generation): python3 scripts/seedance_lint.py --confirmed "<prompt that passed>"
blocking / audio): python3 scripts/higgsfield_memory.py add-quality '<json>' with original_prompt, failure_description, improved_prompt, model_used — then update-quality <id> improved once verified.
python3 scripts/higgsfield_memory.py update-filter <id> <fixed|workaround|still-blocked>
--project <name> to keep them scopedunder ../../db/projects/ instead of global memory.
Before troubleshooting, also CHECK memory first — that's higgsfield-recall's job (query-filter / query-quality); the preflight's MEMORY RECALL section does it automatically.
The reject_reason you log feeds the iterate-vs-batch fork (higgsfield-recall § Read the verdict). Logged from memory it's hearsay — "I think the face drifted." When you can actually see the rejected output, classify it from the frame instead of from recall. This is an opt-in assist ("diagnose this rejected shot"), and it is advisory: vision proposes, the human confirms.
Scope (v1): stills only — an image, or a single representative frame the user picks from a video. Full-clip motion failures (FPS drift, temporal de-dup, multi-motion) are out of scope here; they need frame-by-frame review (../higgsfield-seedance/FAILURE-MODES.md), not a single-frame classify.
The chain:
media_import_url (never pass a raw URL). Cowork local file → the upload widget. Outputs are not auto-saved, so capture is an explicit step.
reject_reason enum (the table below). Note what yousee in one line (the vision_evidence).
other + note. Some visible failures (warped hand, FPSdrift) have no exact enum value. Route to other with the evidence note; never force-fit a near-miss. If the other pile grows, that's the data that justifies a future enum-extension PR.
physics (warpedleft hand, center frame); confirm or correct?" — then: bash python3 ../../scripts/higgsfield_memory.py log-gen <project> --model <id> \ --tags <shot_tags> --outcome rejected --reason <confirmed> \ --vision-reason <proposed> --vision-evidence "<one line>" --reason is the human verdict (drives the fork); --vision-reason is the proposal (feeds the agreement gate). Logging both is what lets the tool learn.
Mapping table — what vision sees → reject_reason:
| Vision observes | reject_reason | |---|---| | face / identity changed vs reference | identity-drift | | wardrobe or colour shifted vs reference | wardrobe-contamination | | extra cuts / unwanted scene breaks | extra-cuts | | staging or blocking broken | blocking-broken | | flat / wrong performance | performance | | wrong camera move | camera-wrong | | physics or anatomy violation (incl. warped hand) | physics | | garbled on-screen text | text-render | | provider content-filter block | filter-flagged | | bad framing / composition | composition | | FPS drift, temporal de-dup, or no clean home | other + evidence note |
Measure before trusting. Vision is the fork's accuracy backstop only once proven. python3 ../../scripts/higgsfield_memory.py agreement <project> reports, per reject_reason class, how often the proposal matched the confirmed verdict. A class is trusted (vision may be logged without confirmation) only above the agreement gate over enough confirmed diagnoses; until then, confirm every one.
higgsfield-prompt — MCSLA formula, prompt structure, Identity/Motion separationhiggsfield-recall — Pre-generation memory check for past failureshiggsfield-models — Model selection (wrong model = many quality issues)higgsfield-audio — Audio-specific failures and fixeshiggsfield-cinema — Cinema Studio–specific issues (512 char limit, @ Element bugs)higgsfield-pipeline — Continuation & Extension Handoff mechanics (workflow side of the Sequence & Continuation Failure Atlas)../shared/negative-constraints.md — Prevention-focused constraint reference| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 24,719 | 23,310 | -6% | 1 | 1 | 0% | 3,535 | 9,293 | +163% | 0 | 0 | — |
case-02 | fail→fail | 23,186 | 14,926 | -36% | 1 | 1 | 0% | 2,619 | 8,807 | +236% | 0 | 0 | — |
case-03 | fail→fail | 34,110 | 14,592 | -57% | 1 | 1 | 0% | 2,837 | 8,837 | +211% | 0 | 0 | — |
case-04 | fail→pass | 29,072 | 39,547 | +36% | 1 | 1 | 0% | 1,872 | 7,465 | +299% | 0 | 0 | — |
case-05 | pass→pass | 14,550 | 9,209 | -37% | 1 | 1 | 0% | 2,072 | 7,814 | +277% | 0 | 0 | — |
case-06 | fail→pass | 18,061 | 9,634 | -47% | 1 | 1 | 0% | 2,363 | 8,178 | +246% | 0 | 0 | — |
case-07 | fail→pass | 15,746 | 11,071 | -30% | 1 | 1 | 0% | 2,340 | 8,239 | +252% | 0 | 0 | — |
case-08 | pass→pass | 17,002 | 14,081 | -17% | 1 | 1 | 0% | 2,279 | 8,470 | +272% | 0 | 0 | — |
case-09 | pass→pass | 12,557 | 17,497 | +39% | 1 | 1 | 0% | 1,644 | 7,826 | +376% | 0 | 0 | — |
case-10 | fail→pass | 28,179 | 8,617 | -69% | 1 | 1 | 0% | 1,774 | 7,833 | +342% | 0 | 0 | — |
case-11 | fail→pass | 31,700 | 14,453 | -54% | 1 | 1 | 0% | 2,509 | 8,561 | +241% | 0 | 0 | — |
case-12 | pass→pass | 9,591 | 4,209 | -56% | 1 | 1 | 0% | 1,144 | 7,113 | +522% | 0 | 0 | — |
case-13 | pass→pass | 17,885 | 18,306 | +2% | 1 | 1 | 0% | 2,550 | 7,960 | +212% | 0 | 0 | — |
case-14 | fail→pass | 13,711 | 5,421 | -60% | 1 | 1 | 0% | 1,517 | 7,376 | +386% | 0 | 0 | — |
case-15 | fail→pass | 15,568 | 4,564 | -71% | 1 | 1 | 0% | 1,801 | 7,273 | +304% | 0 | 0 | — |
case-16 | fail→pass | 20,148 | 6,752 | -66% | 1 | 1 | 0% | 1,586 | 7,683 | +384% | 0 | 0 | — |
case-17 | fail→pass | 11,191 | 6,453 | -42% | 1 | 1 | 0% | 1,404 | 7,477 | +433% | 0 | 0 | — |
case-18 | pass→pass | 18,232 | 12,765 | -30% | 1 | 1 | 0% | 2,427 | 8,202 | +238% | 0 | 0 | — |
case-19 | fail→pass | 8,136 | 24,335 | +199% | 1 | 1 | 0% | 857 | 7,947 | +827% | 0 | 0 | — |
case-20 | fail→fail | 18,289 | 50,672 | +177% | 1 | 1 | 0% | 2,516 | 8,376 | +233% | 0 | 0 | — |
case-21 | pass→pass | 18,877 | 20,832 | +10% | 1 | 1 | 0% | 2,695 | 8,767 | +225% | 0 | 0 | — |
case-22 | pass→pass | 12,989 | 14,797 | +14% | 1 | 1 | 0% | 2,010 | 8,764 | +336% | 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. 22 cases were attempted. The headline lift of +50 percentage points is the difference between those two pass rates over the 22 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.