SN Motion HTML
OpenSenseNova/SenseNova-Skills
Builds HTML stories where one continuous camera journey advances with page progress, using researched structure, AI stills, Seedance video clips and browser QA.
Controls facial expressions in Seedance 2.0 with FACS (Facial Action Coding System) Action Unit codes — muscle-level direction (AU12 = lip-corner puller, AU6 = cheek raiser) instead of emotion labels.
$ npx skills add OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-facs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OSideMedia/higgsfield-ai-prompt-skill higgsfield-facs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/OSideMedia/higgsfield-ai-prompt-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/higgsfield-facs .claude/skills/higgsfield-facs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "higgsfield-facs" agent skill from https://github.com/OSideMedia/higgsfield-ai-prompt-skill/tree/main/skills/higgsfield-facs into .claude/skills/higgsfield-facs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "higgsfield-facs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/OSideMedia/higgsfield-ai-prompt-skill/tree/main/skills/higgsfield-facsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-facs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OSideMedia/higgsfield-ai-prompt-skill higgsfield-facs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OSideMedia/higgsfield-ai-prompt-skill.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/higgsfield-facs .agents/skills/higgsfield-facs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "higgsfield-facs" agent skill from https://github.com/OSideMedia/higgsfield-ai-prompt-skill/tree/main/skills/higgsfield-facs into .agents/skills/higgsfield-facs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "higgsfield-facs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-facs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OSideMedia/higgsfield-ai-prompt-skill higgsfield-facs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OSideMedia/higgsfield-ai-prompt-skill.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/higgsfield-facs .cursor/skills/higgsfield-facs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "higgsfield-facs" agent skill from https://github.com/OSideMedia/higgsfield-ai-prompt-skill/tree/main/skills/higgsfield-facs into .cursor/skills/higgsfield-facs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "higgsfield-facs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/OSideMedia/higgsfield-ai-prompt-skill.git --path skills/higgsfield-facs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-facs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OSideMedia/higgsfield-ai-prompt-skill higgsfield-facs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OSideMedia/higgsfield-ai-prompt-skill.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/higgsfield-facs .gemini/skills/higgsfield-facs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "higgsfield-facs" agent skill from https://github.com/OSideMedia/higgsfield-ai-prompt-skill/tree/main/skills/higgsfield-facs into .gemini/skills/higgsfield-facs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "higgsfield-facs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install OSideMedia/higgsfield-ai-prompt-skill higgsfield-facsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-facs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OSideMedia/higgsfield-ai-prompt-skill.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/higgsfield-facs .github/skills/higgsfield-facs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "higgsfield-facs" agent skill from https://github.com/OSideMedia/higgsfield-ai-prompt-skill/tree/main/skills/higgsfield-facs into .github/skills/higgsfield-facs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "higgsfield-facs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-facs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OSideMedia/higgsfield-ai-prompt-skill higgsfield-facs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OSideMedia/higgsfield-ai-prompt-skill.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/higgsfield-facs .opencode/skills/higgsfield-facs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "higgsfield-facs" agent skill from https://github.com/OSideMedia/higgsfield-ai-prompt-skill/tree/main/skills/higgsfield-facs into .opencode/skills/higgsfield-facs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "higgsfield-facs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
higgsfield-facsControls facial expressions in Seedance 2.0 with FACS (Facial Action Coding System) Action Unit codes — muscle-level direction (AU12 = lip-corner puller, AU6 = cheek raiser) instead of emotion labels.
Higgsfield Facs is an agent skill from OSideMedia/higgsfield-ai-prompt-skill. Controls facial expressions in Seedance 2.0 with FACS (Facial Action Coding System) Action Unit codes — muscle-level direction (AU12 = lip-corner puller, AU6 = cheek raiser) instead of emotion labels. Use whenever the user wants precise facial acting, a forced/uncanny/mixed expression, micro-performance in a close-up, monologue or dialogue facial beats, a 'which AU code for anger/fear/disgust' answer, or to generate a FACS reference sheet for a character. Pairs with higgsfield-soul Micro-Expressions (named…
Its SKILL.md is about 6.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering AI video generation and Image generation. It works with Seedance. The repository describes itself as: Claude AI skill for cinematic Higgsfield AI prompts — 32 sub-skills covering Seedance 2.5 (omni-reference, video edit + extend) and 2.0, the Hell Grind feature-film pipeline, an… The licence is MIT.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7075497. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Higgsfield Facs loads about 6.8k tokens when it runs. Until then it costs about 159 tokens; SKILL.md has 3,076 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from OSideMedia/higgsfield-ai-prompt-skill at commit 7075497, republished under its MIT licence (© OSideMedia). 3,076 words, ~6,768 tokens.
.claude/skills/higgsfield-facs/SKILL.md (or your agent's skills folder).Direct a face the way an animator does — by muscle, not by mood. FACS (the
Facial Action Coding System) names each facial movement as an Action Unit:
AU12 is the lip-corner puller (smile), AU6 is the cheek raiser, AU4 is the
brow lowerer. Put those codes in a Seedance 2.0 prompt and the model renders the
corresponding action. It is the highest-resolution facial control available on
the platform, and it is where forced smiles, uncanny faces, mixed emotions, and
honest micro-performance in close-up dialogue come from.
This skill is a facial-control layer on top of
../higgsfield-seedance/SKILL.md. Every FACS prompt is still a Seedance prompt — six-slot formula, Prompt-Craft Laws, preflight linter. FACS only changes how you specify the face: AU codes instead of (or alongside) emotion words. It is the muscle-level case of the Voice Rewrite rule "describe physics, not emotion."
Routing aids — read the linked sections for the actual rules.
AU12) vs codes + short anatomical description; test both, neither is universally better →[AUDIO: Xs] lip-sync block; every line gets pre / during / post-line beats →The Facial Action Coding System (Ekman & Friesen) breaks the face into Action Units — the smallest visually distinguishable muscle movements. Instead of asking for "happy" (which the model samples diffusely across an enormous range of footage), you ask for the muscles that produce the expression:
AU6 — cheek raiser (orbicularis oculi tightens, crow's feet appear)AU12 — lip-corner puller (zygomaticus major pulls the corners up and out)AU6 + AU12 = a Duchenne smile (the genuine, eyes-involved one)A smile that uses only AU12 reads as polite/forced — the eyes don't
participate. That distinction is invisible to "smile" as a prompt word and
trivial to specify in FACS. This is why it's the tool for forced smiles,
suppressed expressions, mixed emotions, and the uncanny — the cases where the
difference between two similar expressions carries the meaning.
FACS is used by professional facial animators in film; here it is repurposed as a prompt vocabulary for Seedance 2.0.
Three layers, increasing resolution:
| Layer | Surface | Granularity |
|---|---|---|
| Named expression | ../higgsfield-soul/SKILL.md § Micro-Expressions (Suppressed Smile, Cold Calculation…) | A whole emotion in one label |
| Behavior channel | ../../vocab.md § Emotion as Visible Behavior — Channels (breath, jaw tension, eye behavior…) | Emotion → observable behavior |
| Action Unit (this skill) | AU codes | Emotion → named muscle |
The channels are the behavioral substrate; AUs are the anatomical substrate. A named expression like "Quiet Devastation" = a channel mix (glassy eyes + tight jaw) = an AU combo (AU1 + AU15 + AU17 + AU24). Reach for FACS when a named expression is too coarse and you need the specific muscles.
Two different kinds of claim live in this skill — keep them apart:
The AU vocabulary is standard science. Which code means which muscle, and the classic emotion→AU prototypes (EMFACS), are stable, citeable ground truth. Treat the AU reference table and the emotion recipes as reliable.
Seedance's interpretation of AU codes is [EMPIRICAL]. The seedance_2_0
spec exposes no FACS field, no expression enum, nothing facial (verified
against the spec snapshot, 2026-06-27). So "write AU12 and get a smile" is a
prompt convention the model happens to interpret well — not a documented
capability. Practitioner report: success rate is high, but codes do not
guarantee the exact expression, and a multi-AU prompt may render most but
not all of the units.
The rule: present FACS as a strong heuristic, and let the repo's iteration
discipline (../higgsfield-prompt/SKILL.md § The Iteration Rule) confirm it on
the user's own material. Same provenance class as the Seedance Prompt-Craft Laws
(../higgsfield-seedance/SKILL.md § Prompt-Craft Laws). Never tell the user a
FACS prompt is deterministic.
If a future Seedance spec adds a real facial/expression parameter, the spec-drift tripwire should catch it — at which point this "no model field" claim is what needs updating.
The single most important discipline, and the one practitioners get wrong:
Plan the expressions you need → generate a FACS sheet for only those → write the codes into the prompt.
Do not generate the full 49-AU reference sheet and then cherry-pick a few. That is explicitly the wrong move: a sheet asked to render all 49 units spreads the image model thin, captions come out unreadable, and you've paid for 45 panels you'll never use. You get better identity consistency and cleaner labels by generating a small sheet of exactly the 3–6 expressions the scene calls for.
The three steps:
The sheet is optional. Codes work in a text-to-video prompt with no image at all (the practitioner generated whole videos from codes alone). Generate a sheet when you need the character's face to stay consistent across shots — same reason you'd use a Soul ID sheet.
A FACS sheet is a labelled-grid image — the character's face in each target
expression, captioned with its AU code — used as an identity + expression
reference. It is a reference-sheet image task; the image-model mechanics live in
../higgsfield-gpt-image-2/SKILL.md (Format A — structured grids) and the
reference-sheet-workflow.md satellite there. This section owns the
FACS-specific prompt.
Models: GPT Image 2 and Nano Banana Pro both work; Nano Banana Pro tends to read more cleanly. Captions sometimes come out unreadable — iterate.
Upload the character image, then prompt the image model. Replace the character description and trim the AU list to only the units you planned — do not paste all 49 unless you genuinely need them:
Create a clean educational FACS Action Unit expression grid featuring
[CHARACTER — e.g. a realistic woman: role, build, one visible marker]. Use minimal studio
lighting, neutral white background, high readability, professional facial
anatomy reference-sheet aesthetic, realistic skin texture, consistent identity
across all panels.
COLOR SYSTEM: soft pastel color coding by category, sheet kept minimal and
elegant —
Forehead & Brow AUs: soft pastel blue
Eye & Eyelid AUs: soft pastel lavender
Nose & Cheek AUs: soft pastel peach
Lip & Mouth AUs: soft pastel pink
Head Movement AUs: soft pastel mint
Eye Direction AUs: soft pastel cyan
Special / Misc AUs: soft pastel beige
Apply color subtly: panel background tint, thin borders, small label accents.
Keep colors soft, muted, professional.
Include these Action Units (one captioned panel each):
[PASTE ONLY THE AUs YOU PLANNED — e.g.
AU6 Cheek Raiser, AU12 Lip Corner Puller, AU1 Inner Brow Raiser,
AU4 Brow Lowerer, AU15 Lip Corner Depressor](The full category→AU list to draw from is in § AU Code Reference below.)
The image model is an LLM — it can put the wrong muscle under a code. The
sample sheet that circulates labels nostril dilation AU82, while standard
FACS (and the practitioner's own dialogue example) uses AU38 for the same
action; AU8 (lips toward each other) appears in real prompts but is absent from
that sheet entirely. Treat any auto-generated sheet as a draft: check the
panels against the § AU Code Reference table, and against a trusted external
reference such as the FACS cheat sheet at melindaozel.com/facs-cheat-sheet.
This mislabeling risk is the strongest reason to plan a small, verifiable sheet
rather than trust a 49-panel dump.
Once you know the AUs, they go into an ordinary Seedance 2.0 prompt. Everything
in ../higgsfield-seedance/SKILL.md still applies — six slots, Prompt-Craft
Laws, preflight linter. FACS only changes the face specification.
| Style | Looks like | When |
|---|---|---|
| Codes only | AU10, AU20, AU27, AU45 | Beat lists, dense schedules; the practitioner ran whole videos this way and the model interpreted most units well |
| Codes + short anatomical description | AU6 (cheek raiser, orbicularis oculi tightens, crow's feet) + AU12 (zygomaticus pulls corners up) | When a unit keeps getting missed; the description gives the model a second, redundant signal |
Neither is universally better. Test both on your material — codes-only is terser and often enough; add descriptions for the units the model drops.
@Image1 only when you need the character's identity to stay
consistent across shots — it changes consistency, not whether the AUs fire.../higgsfield-seedance/SKILL.md § The Filter Model). Keep the
framing/lighting/mood slots present — a bare list of AU codes with no scene is
thin. The examples below all carry a Style/Mood header for this reason.For a timed performance, give each beat a number or a time range and its AU set:
1: AU10
2: AU20
3: AU22
4: AU45or with time ranges and descriptions:
2-4s: Happy — AU6 (cheek raiser, crow's feet) + AU12 (lip corners up), Duchenne smile
4-6s: Sad — AU1 (inner brow raise) + AU4 (brow knit) + AU15 (lip corners down)The per-beat time labels obey the same runtime arithmetic as any multi-beat
Seedance prompt (../higgsfield-seedance/SKILL.md § Runtime arithmetic): the
beats must sum to the stated duration. Note these are expression beats within a
continuous close-up, not hard cuts — keep the camera move singular (a slow
push-in) so the model doesn't read the schedule as a shot list.
The Action Units from the standard sheet, grouped by facial region. Use this to build a sheet prompt and to verify an auto-generated sheet's labels.
| Code | Action |
|---|---|
| AU1 | Inner Brow Raiser |
| AU2 | Outer Brow Raiser |
| AU4 | Brow Lowerer |
| AU71 | Brow Furrow |
| AU72 | Brow Bulge |
| Code | Action |
|---|---|
| AU5 | Upper Lid Raiser |
| AU7 | Lid Tightener |
| AU41 | Lid Droop |
| AU42 | Slit Eyes |
| AU43 | Eyes Closed |
| AU44 | Squint |
| AU45 | Blink |
| AU46 | Wink |
| Code | Action |
|---|---|
| AU6 | Cheek Raiser |
| AU9 | Nose Wrinkler |
| AU11 | Nasolabial Deepener |
| AU82 | Nostril Dilator |
| AU83 | Nostril Compressor |
| Code | Action |
|---|---|
| AU10 | Upper Lip Raiser |
| AU12 | Lip Corner Puller |
| AU13 | Sharp Lip Puller |
| AU14 | Dimpler |
| AU15 | Lip Corner Depressor |
| AU16 | Lower Lip Depressor |
| AU17 | Chin Raiser |
| AU18 | Lip Pucker |
| AU20 | Lip Stretcher |
| AU22 | Lip Funneler |
| AU23 | Lip Tightener |
| AU24 | Lip Pressor |
| AU25 | Lips Part |
| AU26 | Jaw Drop |
| AU27 | Mouth Stretch |
| AU28 | Lip Suck |
| AU84 | Tongue Up |
| AU85 | Tongue Out |
| Code | Action |
|---|---|
| AU51 | Head Turn Left |
| AU52 | Head Turn Right |
| AU53 | Head Up |
| AU54 | Head Down |
| AU55 | Head Tilt Left |
| AU56 | Head Tilt Right |
| AU57 | Head Forward |
| AU58 | Head Back |
| Code | Action |
|---|---|
| AU61 | Eyes Turn Left |
| AU62 | Eyes Turn Right |
| AU63 | Eyes Up |
| AU64 | Eyes Down |
| Code | Action |
|---|---|
| AU81 | Chewing |
Numbering caveat. Some codes on the circulating sheet are non-standard or reassigned relative to canonical FACS — notably the AU82 (vs standard AU38) nostril dilator noted in § Step 1, the AU71/AU72 brow codes, and the AU82–AU85 range. Canonical FACS also has codes this sheet omits (e.g.
AU8lips toward each other, used in real prompts). Use this table for this sheet's convention, but when a code's behavior surprises you, cross-check melindaozel.com/facs-cheat-sheet.
When the user asks "which code for anger / fear / disgust," these are the standard EMFACS emotion prototypes — the canonical AU combinations behavioral science maps to each basic emotion. Reliable as recipes; the Seedance rendering of them is still [EMPIRICAL].
| Emotion | Core AUs | Reads as |
|---|---|---|
| Happiness (genuine / Duchenne) | AU6 + AU12 | Eyes-involved smile, crow's feet |
| Happiness (polite / forced) | AU12 only (no AU6) | Mouth smiles, eyes don't — the uncanny/forced smile |
| Sadness | AU1 + AU4 + AU15 | Oblique brows, down-turned mouth |
| Surprise | AU1 + AU2 + AU5 + AU26 | Raised brows, wide eyes, jaw drop |
| Fear | AU1 + AU2 + AU4 + AU5 + AU7 + AU20 | Raised+knit brows, wide eyes, stretched lips |
| Anger | AU4 + AU5 + AU7 + AU23 | Lowered brow, hard stare, tightened lips |
| Disgust | AU9 + AU15 + AU16 | Nose wrinkle, lowered lip corners |
| Contempt | AU12 + AU14 (one-sided) | Unilateral smirk |
Mixing for nuance. The interesting expressions are blends: a forced-warmth
mask is genuine-smile muscles (AU6+AU12) fighting fear muscles (AU1+AU7) in the
same frame; "bitter amusement" is AU12 with no AU6 plus a faint AU4. Build a
blend by listing the AUs of both emotions and letting the conflict read — that is
the FACS path to ../higgsfield-soul/SKILL.md § Micro-Expressions like
Suppressed Smile and Nervous Composure.
[OFFICIAL — Higgsfield shotlist-builder skill, 2026-07; re-authored from the Chinese source] — AU codes stop at the face. Production performance direction
extends the same muscle-level discipline to throat, breath, skin, and
posture. These recipes drop into the PERFORMANCE section of a block prompt
alongside (or instead of) AU codes.
These are menus, not checklists. The 3–4-expressions-per-generation cap and the 1–2-AUs-per-beat rule apply to physical beats by the same logic — stacking degrades accuracy. Pick the 2–4 tells that carry the beat from the recipe below; the eight-item anger recipe is the vocabulary to choose from, never a stack to render at once:
| Register | Physical recipe |
|---|---|
| Anger / determination | Masseter visibly pulsing at the jaw · carotid pulse visible at the neck · temple veins rising · nostrils flaring on stressed words · pupils tightening · outer eye corners hardening (genuine intensity, not a cheap squint) · no blink at the climax · faint sweat beads at brow and nostrils |
| Anxiety / nervousness | One visible swallow (Adam's apple) · a short shallow nasal inhale before the line · tongue wetting a dry lower lip · lower lip pulled slightly in · capillary flush on the cheeks · pupils dilating on the key word |
| Sadness without tears | Outer eye corners dropping · eyes wet with catchlight — but never spilling · corrugator knit between the brows · a faint lip tremble · head sinking a few degrees |
| Control / calm / superiority | Even, steady breathing (contrast against a tense scene partner) · relaxed fingers · slow deliberate blinks · slight chin lift · a Duchenne smile that builds gradually — never opening on the finished smile |
| Heaviness / weighed down | Shoulders sinking · head dropping slightly · deep slow breathing · a small 5–15° head tilt when answering |
| Shock / freeze | Body frozen 0.3–0.5s at the trigger — no movement at all · pupils dilating inside the freeze · lips parting silently · one delayed sharp nasal inhale as the freeze breaks · eyes locked on the trigger, no blink, no gaze drift |
| Suppressed emotion (the hardest) | Written as physical resistance: every facial muscle fighting the rising emotion · masseter slowly tightening · one delayed, effortful swallow · eyes gradually welling until they shine — tears never falling · one slow, deep, controlled inhale with visible chest rise · a single jaw tremor, instantly re-clenched |
Defaults that prevent AI-video tells:
"Roko turns his head first; 0.4s later, Rein; another 0.4s, Jax"). Three characters never sync perfectly.The anti-AI test. Before delivering, re-read the performance section and ask: could this have come from a prompt template, or does it read like notes from a director who watched the actor rehearse? If it reads templated, rewrite — micro-beats should feel observed, not generated.
The reason FACS matters: facial expressions in isolation are a parlor trick; the payoff is acting during speech — close-up monologue and dialogue where the face carries subtext the words don't say. This is where forced smiles, leaking fear, and mixed emotions during a line land.
Schedule one AU set per spoken beat, aligned to the line being delivered:
Beat 1 (0-1s): AU5 + AU38 (upper lid raiser + nostril dilator — genuine fear, pre-dialogue)
Beat 3 (2-4s): AU12 + AU6 (Duchenne smile — forced warmth) — delivers "everything's fine"
Beat 5 (5-6s): AU7 (lid tightener — eyes betraying the fear the smile hides)
Beat 7 (8-10s): AU4 + AU24 (brow lowerer + lip presser — seriousness cracking through)The art is the contrast within a beat: the mouth performs safety (AU12) while the eyes leak terror (AU7) — the audience reads both at once. Keep each beat to 1–2 AUs so the performance stays legible.
[OFFICIAL — shotlist-builder] — a spoken line is never just the words. Write
all three phases:
Pre-line: one short nasal inhale, one visible swallow. Line: "Don't ask me again." — the stress lands on again, nostrils flaring on the word. Post-line: gaze stays locked on the opponent for 0.5 seconds — then drifts away.
A dialogue FACS prompt pairs naturally with the audio conditioning layer:
[AUDIO: Xs] script block (../higgsfield-audio/SKILL.md § Audio
as a Conditioning Input) to place the spoken lines — quoted text generates
speech with automatic lip-sync, so the mouth shapes the words while your AU
schedule drives the expressive muscles around them.@Image1 identity
reference (the audio skill's Lip-Sync Rules) — the same close framing FACS
wants anyway.All three are lightly normalized from practitioner prompts. Run each through the
preflight linter before generating (python3 scripts/seedance_lint.py --preflight --model seedance_2_0 "<prompt>").
**Model:** Seedance 2.0
**Aspect ratio:** 1:1 **Duration:** 15s
Use the provided character @Image1 as the fixed identity reference.
Cinematic tight close-up, subtle neutral background, high facial clarity, slow
micro push-in, shallow depth of field. 14 beats, beat-synced:
1: AU10 2: AU20 3: AU22 4: AU23 5: AU27 6: AU28 7: AU45
8: AU53 9: AU61 10: AU62 11: AU64 12: AU85 13: AU84 14: AU46
Uneasy, hypnotic, controlled mood.
**Camera:** slow push-in(Codes-only, one AU per beat — expect most to land, some only partially; that is the documented behavior, not a failure to fix by over-prompting.)
**Model:** Seedance 2.0
**Aspect ratio:** 16:9 **Duration:** 15s
**Style & Mood:** photoreal, face and shoulders only, bare skin no makeup, soft
diffused light, plain white background, shallow depth of field.
Timeline:
0-2s: Neutral resting face, eyes forward, relaxed brow and lips.
2-4s: Happy — AU6 (cheek raiser, crow's feet) + AU12 (lip corners up and out),
Duchenne smile, slight eye squint from cheek push.
4-6s: Sad — AU1 (inner brow raise, oblique brow) + AU4 (brow knit) + AU15 (lip
corners down), eyes slightly glassy.
6-8s: AU61 then AU62 — gaze shifts left, then right, head still.
8-11s: AU46 left wink, then AU46 right wink, subtle smirk between.
**Camera:** static medium close-up**Model:** Seedance 2.0
**Aspect ratio:** 16:9 **Duration:** 15s
Use the provided character @Image1 as the fixed identity reference.
Dim interior, single warm lamp, slight low angle, handheld micro-sway, shallow
depth of field.
[AUDIO: 0s] "Hey, hey — everything's fine, okay? We're just gonna play a game
where we stay really quiet. Can you do that for me?"
Beat 1 (0-1s): AU5 + AU38 (upper lid raiser + nostril dilator — genuine fear, pre-dialogue)
Beat 2 (1-2s): AU45 (blink — composing the mask)
Beat 3 (2-5s): AU12 + AU6 (forced Duchenne warmth) — "everything's fine, okay?"
Beat 4 (5-8s): AU2 + AU12 (smile + outer brow raise — performing fun) — "we're just gonna play a game"
Beat 5 (8-10s): AU4 + AU24 (brow lowerer + lip presser — seriousness cracking) — "where we stay really quiet"
Beat 6 (10-15s): AU6 + AU17 + AU1 (eyes smiling while chin trembles, desperation) — "can you do that for me?"
Devastating contrast between performed safety and visible terror — the face never
fully commits to either; the audience reads both at once.
**Camera:** handheld micro-sway, slow push-inTemplate version of this beat structure:
../../templates/seedance/facs-expression-beats.md.
../higgsfield-seedance/SKILL.md — the base prompt grammar every FACS prompt
obeys (six slots, Prompt-Craft Laws, preflight linter, § Voice Rewrite "physics
not emotion" — FACS is its muscle-level case)../higgsfield-soul/SKILL.md § Micro-Expressions — 19 named expressions; FACS
is the precise-control layer beneath them../higgsfield-audio/SKILL.md § Audio as a Conditioning Input — the
[AUDIO: Xs] block + lip-sync for dialogue FACS../higgsfield-gpt-image-2/SKILL.md — Format A reference-sheet image mechanics
for the FACS sheet../../vocab.md § Emotion as Visible Behavior — Channels — the behavioral
sibling of the AU vocabulary../../templates/seedance/facs-expression-beats.md — beat-synced AU schedule template</content>
© OSideMedia, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/higgsfield-facs of OSideMedia/higgsfield-ai-prompt-skill.
Open the folder on GitHubat commit 7075497
Higgsfield Facs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Higgsfield Facs this skillOSideMedia/higgsfield-ai-prompt-skill | 713 | — | ~6.8k | Automated safety check: Pass | MIT | |
| SN Motion HTMLOpenSenseNova/SenseNova-Skills | 5.7k | — | ~2.2k | Automated safety check: Notes | MIT | |
| Character Design with genmediafal-ai-community/skills | 251 | — | ~1.3k | Automated safety check: Pass | None | |
| Professional Media Promptsagentscope-ai/QwenPaw | 36k | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Pp Wavespeedmvanhorn/printing-press-library | 2.1k | — | ~8.4k | Automated safety check: Notes | Apache-2.0 | |
| Seedance Storyboard Generatorliangdabiao/Seedance2-Storyboard-Generator | 2.6k | — | ~2.2k | Automated safety check: Pass | None |
OpenSenseNova/SenseNova-Skills
Builds HTML stories where one continuous camera journey advances with page progress, using researched structure, AI stills, Seedance video clips and browser QA.
fal-ai-community/skills
Builds consistent characters, reference and expression sheets, outfit variations and character-to-video shots with the genmedia CLI while keeping identity stable.
agentscope-ai/QwenPaw
Compiles production-grade prompts for character identity boards, cinematic storyboards and reference-to-video generation, keeping characters and shots consistent.
mvanhorn/printing-press-library
Run any WaveSpeed model from the terminal, with price checks, safe uploads, and recovery-safe downloads.
liangdabiao/Seedance2-Storyboard-Generator
专业的Seedance 2.0平台AI视频脚本和分镜生成器。当用户要求:(1) 将文章/故事转换为视频脚本,(2) 生成Seedance 2.0分镜提示词,(3) 规划多集AI视频系列,(4) 为GPT-Image-2、Seedream、Nano Banana…
nexu-io/nexu
Seedance 2.0 video & image generation via LibTV Gateway - AI text-to-video, image-to-video, video continuation, style transfer, and text-to-image using Seedance 2.0 model.
OSideMedia/higgsfield-ai-prompt-skill
A skill your agent uses whenever the user asks anything about Higgsfield AI — writing or refining video/image prompts, choosing a model (Kling, Veo, Wan, Seedance, Minimax Hailuo, DoP, Soul, Nano…
OSideMedia/higgsfield-ai-prompt-skill
A skill your agent uses when the user asks about Higgsfield Assist (the built-in GPT-5 copilot), how to use the platform's native AI assistant, credit optimization strategies, plan selection, how to…
OSideMedia/higgsfield-ai-prompt-skill
A skill your agent uses when the user wants to generate a cinematic still image on Higgsfield, asks about shot framing, camera angle, or composition for image prompts, needs a specific shot type…
OSideMedia/higgsfield-ai-prompt-skill
A skill your agent uses when the user asks about Mixed Media, wants to apply artistic preset styles to an image (Noir, Sketch, Paper, Canvas, Particles, Neon, etc.), combine multiple artistic…
OSideMedia/higgsfield-ai-prompt-skill
A skill your agent uses when the user asks about Moodboard, building a moodboard from reference images, curated moodboard presets, Soul Hex color transfer, applying a visual style direction to…
OSideMedia/higgsfield-ai-prompt-skill
A skill your agent uses when the user wants to apply a named Higgsfield motion preset, asks about VFX presets, transformation effects, elemental effects, or transition presets.
Works with
Categories
Controls facial expressions in Seedance 2.0 with FACS (Facial Action Coding System) Action Unit codes — muscle-level direction (AU12 = lip-corner puller, AU6 = cheek raiser) instead of emotion labels. Higgsfield Facs is an agent skill from OSideMedia/higgsfield-ai-prompt-skill.0 with FACS (Facial Action Coding System) Action Unit codes — muscle-level direction (AU12 = lip-corner puller, AU6 = cheek raiser) instead of emotion labels.
Higgsfield Facs fits situations like: the user wants precise facial acting; A forced/uncanny/mixed expression; micro-performance in a close-up; dialogue facial beats.
Run `npx skills add OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-facs -a claude-code`. Or copy the skill folder (skills/higgsfield-facs in OSideMedia/higgsfield-ai-prompt-skill) into .claude/skills/higgsfield-facs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-facs -a codex`. Or copy the skill folder (skills/higgsfield-facs in OSideMedia/higgsfield-ai-prompt-skill) into .agents/skills/higgsfield-facs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-facs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/higgsfield-facs, .gemini/skills/higgsfield-facs, .github/skills/higgsfield-facs and .opencode/skills/higgsfield-facs in your project.
SKILL.md names no scripts, command-line tools or credentials: Higgsfield Facs is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Higgsfield Facs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.8k tokens (SKILL.md is roughly 27k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Higgsfield Facs: SN Motion HTML (OpenSenseNova/SenseNova-Skills, 5.7k stars), Character Design with genmedia (fal-ai-community/skills, 251 stars), Professional Media Prompts (agentscope-ai/QwenPaw, 36k stars) and Pp Wavespeed (mvanhorn/printing-press-library, 2.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OSideMedia (a GitHub user) maintains it in OSideMedia/higgsfield-ai-prompt-skill, which has 713 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on September 27, 2026.
Source: OSideMedia/higgsfield-ai-prompt-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.