osidemedia/higgsfield-recall
> Use this skill AUTOMATICALLY before writing any Higgsfield prompt. Query the memory databases for relevant past failures and pre-apply known fixes before the user even of the higgsfield-prompt skill, any mention of generating a video or image on Higgsfield, any MCSLA prompt construction. This skill should run SILENTLY in the background — don't announce it, just apply what's known. If the databases are empty, skip silently and proceed with normal prompt generation.
npx skills add https://github.com/OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-recall
Before writing any Higgsfield prompt, query both memory databases to find relevant
past failures. Apply known fixes silently — the user should never have to remember what
broke before. The system remembers for them.
This skill runs automatically as part of any Higgsfield prompt generation.
It does not interrupt the workflow unless it finds something relevant.
Bootstrap status: The databases ship with seed entries covering the most common
failure patterns (character drift, VHS style ignored, I2V static output, camera conflicts,
lip-sync desync, content filter blocks for real persons and IPs). These grow automatically
as the user logs new failures.
Run a recall check whenever:
Do NOT announce running the recall check. Just run it, apply what's relevant,
and proceed. Only surface findings when they directly change the prompt.
Before querying, pull the key semantic terms from what the user wants:
Extract:
- Subject/character (person type, appearance)
- Action (what they're doing)
- Location/environment
- Style (visual style, model, camera)
- Topic (the general category: "car chase", "product shot", "horror scene")
# Check for relevant filter blocks:
python3 scripts/higgsfield_memory.py query-filter "<key terms from prompt>" 5
# Check for relevant quality failures:
python3 scripts/higgsfield_memory.py query-quality "<key terms from prompt>" 5
Query strategy:
fix_confirmed: true — these are proven solutionsFor each result returned, assess:
| Question | If yes → |
|----------|----------|
| Does this entry's topic/category directly overlap with this prompt? | Apply the known fix |
| Is a blocked term present in my draft prompt? | Remove/substitute it now |
| Did this model fail on this type of shot before? | Consider switching models |
| Is there a confirmed improved prompt for this scenario? | Use it as the base |
Relevance threshold: Only act on entries with a relevance score > 0 from the query.
Ignore entries that only match on generic words.
For filter block matches:
just present the clean prompt
For quality failure matches:
Only mention the recall results if:
How to surface findings (when needed):
"⚠️ Filter note: Previous attempts with [term] were blocked on [date].
Using '[substitution]' instead — this was confirmed to pass."
"📋 Quality note: [Model] produced [failure type] for this scenario before.
Switching to [better model] based on past results."
If nothing relevant found: proceed silently, no mention of the recall check.
The user can also request a recall check directly:
"What do we know about [topic] failing?"
"Has [model] had issues with [scenario] before?"
"What got blocked when we tried [type of content]?"
"What's our substitution for [blocked term]?"
For these queries, surface the full relevant entries with:
Before finalizing any prompt, check:
Every generation attempt belongs in the generation ledger
(../../db/ledger/ — kept AND rejected; the denominator is what makes
takes-per-kept ratios possible). The write path is agent-side and obeys the
5-second rule: at most one short question, then the agent runs one
command. The human never formats JSON, never fills a form.
When the user reports a generation result (pastes a link, says "that one
worked", "trash", "the face drifted again"):
nothing** — log it directly.
If they don't answer, drop it. Never ask twice, never nag.
python3 ../../scripts/higgsfield_memory.py log-gen <project> \
--model seedance_2_0 --tags dialogue-cu,two-char \
--outcome rejected --reason extra-cuts --credits 160
--tags and --reason come from the controlled vocabularies in../../db/ledger/README.md — map the user's words to the nearest vocab
value ("face drifted" → identity-drift); never invent new values.
--draft for 480p exploration rolls (excluded from headline ratios).<id> outcome=kept` — corrections are superseding rows, history stays.
conversation, else default.
--method quick|mcsla tags the row for the framework-lift A/B(ab <project> --tag <shot_tag>); omit it to leave the row unlabeled and
out of the comparison — never guess a method.
HARD RULE #1 already makes you name the sub-skills you routed to on the first
line of every response. When a production is tracking which skills actually earn
their keep, persist that declaration:
python3 ../../scripts/higgsfield_memory.py log-route --skills higgsfield-prompt,higgsfield-camera
python3 ../../scripts/higgsfield_memory.py routing then ranks sub-skills by opens and
lists the never-opened long tail. This is instrumentation, not a verdict —
it makes "which skills are load-bearing, which to prune" answerable from data
once enough requests accumulate; a small sample is not evidence a skill is dead.
After a few logged rows, python3 ../../scripts/higgsfield_memory.py ratio <project>
prints a per-shot-tag verdict that decides iterate-vs-batch:
iterate (structural-dominant) → the prompt is wrong; hand off tohiggsfield-prompt § The Iteration Rule (one variable at a time).
batch+sel (stochastic-dominant) → the prompt is right; **stop re-rollingone at a time** — lock it, roll a batch, cull (see higgsfield-prompt §
Batch-and-Select).
low-n → fewer than five rows; don't trust the split, call it by eye.A ⚠ plausibility line means a tag is beating its planning default by a wide
margin — *either* real lift *or* under-logged failures; surface it, let the
user decide. The verdict is only as good as the reject_reason labels, so map
the user's words to vocab honestly — and when the rejected output is in hand,
classify it from the frame instead of from memory (higgsfield-troubleshoot §
Vision-Grounded Diagnosis logs a --vision-reason alongside the human verdict,
advisory until the agreement command proves it).
To see current knowledge base size:
python3 scripts/higgsfield_memory.py stats
Empty databases = no recall benefit yet. Start logging failures with higgsfield-troubleshoot
and the recall system gets smarter with every entry.
> Negative constraints: The recall system complements ../shared/negative-constraints.md.
> The shared file covers universal prevention rules; this recall system covers
> user-specific past failures and confirmed fixes.
higgsfield-troubleshoot — Diagnose and fix specific failures (feeds recall DB)higgsfield-prompt — MCSLA formula, Identity/Motion separationhiggsfield-soul — Character drift prevention (common recall topic)higgsfield-models — Model-specific failure patternsTake osidemedia/higgsfield-recall 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.