Turns a brief, script, scene breakdown, treatment, or story idea into ONE connected director's shotlist for Seedance 2.0 — a single editable HTML artifact with a global Style Prefix, an @-asset glossary, and named per-scene prompts (1a, 1b, 2a…) each in Style → Characters → Scene → CUT 1..N form. Use whenever the user says 'make a shotlist', 'break this script into prompts', 'generate Seedance prompts for this ad/film', 'turn this brief into a shot list', 'director's shotlist', or wants many connected scene prompts rather than one. Also use to revise an existing shotlist (edit-once-propagates: 'change the style prefix everywhere', 'rewrite scene 4', 'split prompt 6'). Each prompt targets 15s; longer scenes split across 1a/1b/1c under one scene number.
npx skills add https://github.com/OSideMedia/higgsfield-ai-prompt-skill --skill higgsfield-shotlist-director
Turn a brief into one connected shotlist — not a pile of separate prompts.
The deliverable is a single editable HTML artifact the user opens in a browser,
ticks scenes off as they shoot, and comes back to you to revise. This is the
artifact-shaped workflow a fully-AI commercial actually runs on: lock a global
look once, declare the cast/props/locations once, then emit named per-scene
prompts that all inherit both.
> This skill is the connected layer on top of higgsfield-seedance. It does
> not reinvent the prompt grammar — every per-scene prompt obeys the six-slot
> formula and the Prompt-Craft Laws in ../higgsfield-seedance/SKILL.md, and
> every prompt is preflight-linted before delivery. What this skill adds is the
> *document*: the global Style Prefix, the @-glossary, the per-scene numbering,
> and the edit-once / per-scene-override semantics that keep 25 prompts in sync.
@-asset glossary → named per-scene prompts →Style → Characters → Scene → CUT 1..N; each prompt targets 15s; split long scenes as 3a/3b/3c →@-auto-attach, failure-mode awareness, acceptance-rate logging →A single shotlist.html (saved to the user's outputs and presented). It is
self-contained — inline CSS, inline JS, zero external dependencies — so the
user can open it offline and it just works. Structure:
@-asset glossary — the cast/props/locations declared once.localStorage), a one-line scene description, and one or more copy-ready
prompt blocks (Prompt 3a · 15s, Prompt 3b · 15s).
The Style Prefix appears once in the collapsible block and is prepended
verbatim to every prompt's copy-block — so the user copies one prompt into
Seedance and it works standalone, no reassembly.
A single style block glued to every prompt in the document — edit it once and it
changes everywhere. It locks the film's global look: format/resolution, lighting
doctrine, colour ratio, lens/shutter, skin realism, acting register, physics,
composition, continuity, frame rate, and audio convention.
Ship the reusable fill-in-the-blanks block from
../../templates/seedance/global-style-prefix.md.
Always check the conversation first — if the user pasted a custom prefix, use
that one verbatim. Otherwise use the template default.
@-asset glossaryDeclare every recurring asset once, with a stable @-name, then register each
under Elements in Higgsfield with the same name so pasting a prompt
auto-attaches the right images:
@hero — main character @boss — side character
@headphones — product @sneakers · @bag · @skydancer — props
@kitchen · @stadium · @street — locations
@s_hero — athletic-look hero @s_hero_wet — sweaty post-run hero
@music_track (audio_1.wav) — motion locks to this beat
@street_schematic (image_1.png) — top-down position map
The slot→role discipline (@Image1 = character, @Image2 = costume, @Audio1
= rhythm…) comes from ../higgsfield-seedance/SKILL.md § Reference Roles →
Per-Image Role Convention. Multi-state variants get their own locked entry
(@s_hero_wet), built on purpose up front — asking the model to "sweat him up"
later makes it improvise and the face drifts.
Every scene is numbered (1, 2, 3…) and split into named 15-second prompts
(1a, 1b, 2a). One checkbox per scene, even when split across 3a/3b/3c.
Every prompt follows this exact order, top to bottom. (This verbatim-prefix
shape is the connected-shotlist regime [FIELD — 13-project harvest];
a standalone block-scaffold prompt instead distributes style into its home
blocks and opens on SCENE CONTEXT — ../higgsfield-seedance/SKILL.md
§ Distributed style. Which shape ships is decided by the workflow: shotlist →
this law; single standalone brief → distributed.)
[STYLE PREFIX — full block, verbatim (or the per-scene override)]
Characters:
[Only the characters in this prompt. @names + locked physical descriptors +
carried state — wet hair from the prior scene, strap on one shoulder, same
wardrobe unless it changed on screen.]
Scene:
[1–2 sentences. Where, when, and the geo-spatial blocking — where each character
sits relative to the location and to each other. "Hero at the kitchen island,
back to camera; the moka pot is on the left burner."]
CUT 1 — [framing, lens/FOV, camera move]:
[Beat-accurate action: gesture, eye-line, breath, micro-pause; what the camera
does; what the light does; diegetic SFX if relevant.]
CUT 2 — …
Each prompt targets 15s (Seedance generates a fixed-length clip — design the
cuts to fill it, don't pad with dead air). Most 15s prompts hold 1–3 cuts —
that is the live-action narrative norm; stylized registers run denser by
design (3D-animated 6 shots/15s, product montage 8–10 sections with 0.3s macro
cuts — ../higgsfield-style/SKILL.md § Style Recipes), and the flash-establish
/ insert durations in ../higgsfield-camera/SKILL.md § Shot duration by type
are what make dense shapes fit. If a scene runs longer, split it across
3a/3b/3c, each its own 15s block with the full Style Prefix and Characters
block, continuity holding across them.
Beat-by-beat choreography, not "he dances." Generic motion verbs mean nothing
to Seedance — spell the move out: *"two crisp head nods on the beat, shoulders
rolling back one at a time, a soft knee-dip, a loose finger-snap, finishing on a
quarter-spin."* (Full pattern: ../../templates/10-dance-music-performance.md.)
Match-cut via a repeated anchor action. When independently-generated scenes
must cut together, end and begin neighboring scenes on the same gesture (the
ear-cup tap) — the reused motion lets them "cut on action" most of the time.
`[OFFICIAL — Higgsfield shotlist-builder + seedance-2-pro-director skills,
2026-07]` — the shotlist's hardest judgment call is how many script beats
share one 15s prompt. There is no fixed ratio (canonical productions ran
anywhere from 1.4 rows per prompt to 4.7); decide per scene with this
heuristic:
Group shot rows into ONE prompt when ALL of these hold:
1,800-char hard cap; EN block prompts run much longer — see
../higgsfield-seedance/SKILL.md § Field calibration)
Split into separate prompts when ANY of these fire:
insert)
builds across 5–7 beats is never bundled with action. **Don't fragment
grief**: one continuous emotional collapse is ONE prompt even if the
script writes it as three rows.
Complexity budget per prompt (split triggers): more than 2 strong
actions · more than 2 camera moves · more than 3 important characters ·
more than 1 complex VFX event · more than 1 location change — any of these
means the scene wants another envelope. Duration ladder: 4–8s = one strong
action · 8–12s = one action + a reveal · 12–15s = 2–3 simple beats ·
complex fight/chase/transformation = multiple prompts. **Reconciling the
ladder with the 15s target:** 15s is the default envelope, not a
straitjacket — when a scene's beats genuinely fill only 4–8s of screen time,
generate a deliberately shorter clip (Seedance accepts 4–15s) rather than
padding dead air into 15; the prompt-law's "don't pad" rule wins.
When in doubt, err toward more prompts and shorter envelopes — Seedance
handles tight prompts better than overloaded ones, and the user can run them
in sequence.
Auto-enrichment for thin briefs. When a scene row is thin ("a guy in a
room, he's angry"), don't ask — fill in production detail with the default
cinematic choices, never details that change the meaning: 16:9 · one
clear physical action · slow controlled dolly-in or locked-off frame ·
a neutral-to-portrait lens (63°/47° FOV in Seedance block prompts — mm
vocabulary like "35–50mm" is for non-Seedance surfaces; 29° only if a
close-up needs it — ../higgsfield-seedance/SKILL.md § FOV anchors) ·
motivated practical light · subtle ambience + one meaningful SFX · a clear
final frame. Duration is never auto-defaulted — inside a shotlist the
envelope law above governs (target 15s, shorter deliberate clips per the
ladder); for a standalone prompt, ask — the seedance rule "always ask the
user for runtime, never default" stands.
Talk to the user's revisions like an editor of one connected document, never 20
loose chats:
prompt's copy-block in one pass.
prompt's Style Prefix lighting line (e.g. Scene 2 stadium: *"bright, genuinely
sunny midday, strong frontal sun, deep blue sky, hard-edged shadows"*) while
every other scene keeps the soft global prefix. The override is a local edit to
one prompt's prefix, not a change to the global block.
When revising, re-render the same HTML file with the change applied — don't
describe the change in chat. Preserve scene numbering where possible (don't
renumber everything for a one-prompt edit), preserve the Style Prefix unless told
to change it. The user's checkbox state survives via localStorage keyed by
scene number, so stable numbering = no lost progress.
A plain "script → prompts" generator stops at the document. This skill is wired
into the rest of the repo, which is the whole point:
copy-block through the linter — `python3 scripts/seedance_lint.py --preflight
--regime block --model seedance_2_0 "<prompt>"`
(../higgsfield-seedance/SKILL.md § Pre-flight Linter). Copy-blocks are
block-scaffold regime: the linter usually auto-detects this, but pin
--regime block so the short-form word caps can never fire on a
full-density scene prompt. Real names, brand/IP, age markers, conflicting instructions, shot-
count drift, and out-of-enum aspect/resolution/mode are caught before the
user burns credits. A shotlist of 25 prompts is 25 chances to ship a flagged
one.
@-glossary uses the stable slot→roleconvention so @Image1 = character holds across all 25 prompts and nobody
re-checks which face the model expects at shot 47.
same-character doubles, crowds, compound camera moves, door-entry geometry) per
../higgsfield-seedance/ENGINE-RULES.md and
../higgsfield-seedance/FAILURE-MODES.md, rather than
letting them silently break a scene.
many takes — keep candidates, test in motion, lock the winner, and log
kept/rejected outcomes to the ledger (higgsfield-recall). The shotlist is the
plan; iteration is still the skill.
@music_track locks the choreography, write thebeat-sync mapping per ../higgsfield-audio/SKILL.md § Audio as a Conditioning
Input; keep the prompt body diegetic-only and layer score in post.
where each scene turns, lands, and breathes.
default.
@-glossary. One entry per recurring asset; multi-state variantsget their own locked entry.
(honest assessment — a 40s confession is 5a/5b/5c).
1..N), in English even if the user wrote in another language.
Self-contained, dark directing-room aesthetic. Inline everything. Checkbox state
persists in localStorage; each prompt has a Copy button; the Style Prefix is in
a collapsible block at the top and prepended to every prompt's <pre>.
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8">
<title>{{PROJECT_TITLE}} — Director's Shotlist</title>
<style>
:root{--bg:#0e0e10;--panel:#17171a;--panel-2:#1d1d21;--border:#2a2a30;
--text:#e8e8ea;--dim:#9a9aa2;--accent:#d4a259;--done:#4ade80}
*{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--text);
font-family:-apple-system,system-ui,sans-serif;line-height:1.5;padding:32px 24px 80px}
.container{max-width:980px;margin:0 auto} h1{font-size:28px;margin:0 0 4px}
.howto,details.style-prefix,.scene{background:var(--panel);border:1px solid var(--border);
border-radius:8px;padding:14px 18px;margin-bottom:18px}
details.style-prefix summary{cursor:pointer;font-weight:600;color:var(--accent)}
pre{white-space:pre-wrap;font-family:"SF Mono",Menlo,monospace;font-size:12.5px;margin:0}
.scene-header{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}
.scene-num{font-weight:700;color:var(--accent);min-width:48px}
.scene.done .scene-desc{text-decoration:line-through;color:var(--dim)}
.prompt-block{background:var(--panel-2);border:1px solid var(--border);
border-radius:6px;margin-top:12px;overflow:hidden}
.prompt-label{display:flex;justify-content:space-between;padding:8px 14px;
border-bottom:1px solid var(--border);font-size:12px;color:var(--dim);text-transform:uppercase}
.copy-btn{background:transparent;color:var(--accent);border:1px solid var(--border);
border-radius:4px;padding:4px 10px;font-size:11px;cursor:pointer}
.copy-btn.copied{color:var(--done);border-color:var(--done)}
pre.prompt{padding:14px 16px}
</style></head><body><div class="container">
<h1>{{PROJECT_TITLE}}</h1>
<div class="howto">Tick scenes as you finish — progress saves automatically.
Copy any prompt (Style Prefix + Characters + Scene + Cuts). Ask Claude to revise.</div>
<details class="style-prefix"><summary>Global Style Prefix (applied to every prompt)</summary>
<pre>{{STYLE_PREFIX_TEXT}}</pre></details>
{{SCENES_HTML}}
</div><script>
document.querySelectorAll('.scene input[type=checkbox]').forEach(cb=>{
const k='shotlist-scene-'+cb.dataset.scene+'-done';
if(localStorage.getItem(k)==='1'){cb.checked=true;cb.closest('.scene').classList.add('done')}
cb.addEventListener('change',()=>{localStorage.setItem(k,cb.checked?'1':'0');
cb.closest('.scene').classList.toggle('done',cb.checked)})});
document.querySelectorAll('.copy-btn').forEach(b=>b.addEventListener('click',()=>{
const p=b.closest('.prompt-block').querySelector('pre.prompt');
navigator.clipboard.writeText(p.textContent).then(()=>{b.classList.add('copied');
const t=b.textContent;b.textContent='Copied';
setTimeout(()=>{b.classList.remove('copied');b.textContent=t},1500)})}));
</script></body></html>
Each scene block in {{SCENES_HTML}} (one checkbox per scene, data-scene =
scene number as a string):
<div class="scene">
<div class="scene-header">
<input type="checkbox" data-scene="3">
<div class="scene-num">3.</div>
<div class="scene-desc">Hero grooves across the kitchen — the world goes quiet.</div>
</div>
<div class="prompt-block">
<div class="prompt-label"><span>Prompt 3a · 15s</span><button class="copy-btn">Copy</button></div>
<pre class="prompt">[FULL PROMPT — Style Prefix verbatim, then Characters, Scene, CUT 1, CUT 2…]</pre>
</div>
<div class="prompt-block">
<div class="prompt-label"><span>Prompt 3b · 15s</span><button class="copy-btn">Copy</button></div>
<pre class="prompt">[FULL PROMPT for the second 15s chunk of scene 3]</pre>
</div>
</div>
higgsfield-seedance — the prompt grammar this skill emits (six-slot formula,Prompt-Craft Laws, Reference Roles, preflight linter, engine + failure modes)
higgsfield-pipeline — upstream multi-shot production planning the shotlistslots into
higgsfield-audio — @music_track beat-sync + diegetic-only conventionhiggsfield-soul — locked character sheets the @-glossary points athiggsfield-recall — log kept/rejected take outcomes as you shoot the list../../templates/seedance/global-style-prefix.md — the reusable prefix block +a per-scene override example
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Replace with description of the skill and when Claude should use it.
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Take osidemedia/higgsfield-shotlist-director 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.