minimax-h3-skill
CLAUDE.md9 starsChanged 55 days agoMITView on GitHub
A Claude Code skill (plus two portable chat prompts) that teaches prompt-writing and ComfyUI setup for MiniMax H3 — an open-weight, omni-modal video model that generates video and native stereo audio in one forward pass, at 24 fps, over a trained clip length of ~124–362 frames. It ships as two separate checkpoints, fl2va (frame-conditioned) and ref2va (reference-conditioned). The skill is built on MiniMax's own prompt-writing guides, plus the failure modes those guides don't cover. This repo is documentation. There is…
- Reads credentials
- Commits and pushes
In this repository2 other files it gives its agents.
- minimax-h3Skill
- minimax-h3-reel-makerSkill
The file
We split this CLAUDE.md into the rules it gives an agent
9 rules. About 0 are common, 5 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 33
Don't commit or push on the user's behalf.
- Distinctive: line 75
Never state Empirical or Community claims as documented fact.
- Very specific: line 77
When you add or alter a claim in any model-facing file, add or update its SOURCES.md row.
- Distinctive: line 98
Keep that distinction — users who say "swap" usually mean the second one.
- Very specific: line 110
Terminology: use T2VA / I2VA / FL2VA / L2VA / Ref2VA for modes.
- Distinctive: line 150
Prefer *correcting* a claim over piling on hedges.
- Very specific: line 152
Don't duplicate content beyond what the three-deliverable split forces.
- Distinctive: line 154
When the skill produces a prompt for a user, it emits the complete prompt in one code block every time, never a fragment or a diff.
- Very specific: line 159
Do not build any mass/batch/parallel automation of Claude calls (API, SDK, or many chat sessions) — e.g.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
MiniMax H3 skill — working notes
What this is
A Claude Code skill (plus two portable chat prompts) that teaches prompt-writing
and ComfyUI setup for MiniMax H3 — an open-weight, omni-modal video model that
generates video and native stereo audio in one forward pass, at 24 fps, over a trained
clip length of ~124–362 frames. It ships as two separate checkpoints, fl2va
(frame-conditioned) and ref2va (reference-conditioned). The skill is built on MiniMax's
own prompt-writing guides, plus the failure modes those guides don't cover.
This repo is documentation. There is nothing to build, run, or test — the "product" is the
prose in SKILL.md, references/, portable-prompt.md and reels-portable-prompt.md,
and the one script in tools/.
After every edit: hand over the push commands
The git repo with origin (teskor-hub/minimax-h3-skill) lives on the PC, at
D:\claude\minimax-h3-skill. The VPS copy has no remote — nothing can be pushed from
there. So the last thing every editing session does is:
- Copy the changed files to the PC over the tunnel
(
scp -O -T -i ~/.ssh/vps_to_pc -P 2222 <file> win10@127.0.0.1:'D:\claude\minimax-h3-skill\<file>'). End the reply with a ready-to-paste command block the user runs on the PC —
cd,git addnaming exactly the files that changed,git commit -m,git push. One block, nothing to edit by hand, no commentary inside it.The shell is Windows PowerShell 5.1, not git-bash. No
&&, no trailing\line continuations — they are parse errors there. Write one command per line, backslash paths, and let PowerShell run the lines in order. Always include thecd, orgitruns inC:\Users\win10and fails withnot a git repository.
Don't commit or push on the user's behalf; hand over the commands.
Where things live
- Source of truth: this repo,
/workspaces/usual/minimax-h3-skill— git, remoteteskor-hub/minimax-h3-skill, branchmain. - Installed copy:
/root/.claude/skills/minimax-h3— what Claude Code actually loads. Currently byte-identical to this repo. After editingSKILL.md,references/, ortools/, re-sync the installed copy (git pull / re-clone / copy) or the running skill is stale. - This session's cwd
/workspaces/h3 minimaxis an empty scratch dir, not the project.
Three deliverables, kept in sync
The same knowledge ships in three shapes:
SKILL.md+references/*.md+tools/— the Claude Code skill (references are lazy-loaded only when needed).portable-prompt.md— one self-contained block pasted into any chat model (ChatGPT, Grok, Gemini). Same knowledge minus the ComfyUI half, because a chat model can't lazily loadreferences/.reels-portable-prompt.md— the same H3 knowledge wrapped in a reel pipeline: shot breakdown → per-clip length → reference shopping list → one prompt per clip → edit sheet. Also chat-model-only, also without ComfyUI. It restates most ofportable-prompt.md, because a pasted prompt has to stand alone.
Rule: any factual change to one must be propagated to the others, and to SOURCES.md.
The git log is full of "propagate corrections to every copy" and "close the last copy
divergences" passes — drift between the skill and the portable prompts is the recurring bug
here. When you change a claim, grep all three surfaces for it.
Rule: editing tools/reel_shots.py means editing reels-portable-prompt.md too. The
reel prompt tells the chat model what the tool outputs and how to read it — its CLI, its
flags, manifest.json's field names, h3_length_options, the frames/ naming. Change the
tool's interface or output shape and that prompt starts describing a script that no longer
exists. references/reel-to-prompt.md documents the same tool and needs the same pass.
Provenance discipline — the core working rule
SOURCES.md tags every claim as Official (MiniMax docs) / Implementation (read from
ComfyUI source) / Empirical (observed tendency) / Community (third-party, unverified).
- Never state Empirical or Community claims as documented fact. Say which kind you're leaning on when it affects a decision.
- When you add or alter a claim in any model-facing file, add or update its
SOURCES.mdrow. If a statement isn't traceable to a row, that's a gap worth flagging. - Implementation facts were read against ComfyUI
masteron 2026-08-04 (comfy/text_encoders/minimax.py,comfy_extras/nodes_minimax_h3.py,video_minimax_h3_r2v.json). Re-verify against current source before trusting them — they change when ComfyUI does. - Several widely-repeated figures are community, not primary: the 2K/1440 output cap, the 7000-char prompt field, the "12-file limit", "standalone audio is rejected". The last two are contradicted by the node schema. Don't present any of them as documented.
Domain invariants — don't let an edit break these
Load-bearing facts the whole skill rests on; see SKILL.md for the full treatment.
fl2vaandref2vaare separate weights, not modes of one model. Mode → checkpoint table isSKILL.md§1.fl2vapowers T2VA/I2VA/FL2VA/L2VA;ref2vapowers Ref2VA.- There is no negative prompt — the template uses
BasicGuider, CFG ≈ 1, no negative socket. Rewrite every ban as a positive statement of the desired state. - There is no video-to-video. Sampling starts from an empty latent; no source frame
survives → no frame-preserving character swap. But "a new video in which the subject
resembles my photo and moves like this clip" is
reference generation, and works. Keep that distinction — users who say "swap" usually mean the second one. - Identity lives in
<Subject N>, never a standalone<Picture N>.<Picture N>is only a concrete frame anchor. Merge multiple assets into one subject to resolve reference conflicts. - Frame count snaps up to the
17k+5grid (124, 141, 158, … 362), silently. Not multiples of 4. - Duration is read literally as event speed. An over-long beat renders as slow motion, not as headroom. Budget real-world beat durations.
- Never write
cameraas a noun the subject interacts with —she holds the camerarenders a physical camera. Use the official move vocabulary; keep body and camera in separate sentences; usePOVwhen the device is the viewpoint. - Structure beats instruction, the model can't count, and bans amplify what they ban.
- Terminology: use
T2VA / I2VA / FL2VA / L2VA / Ref2VAfor modes; usefl2va/ref2vaonly for checkpoint files. Recognise the aliases (T2V/I2V/FLF2V/R2V) but don't emit them.
File map
| File | Audience | Contents |
SKILL.md | Claude Code | core: mode selection, output formats, labels, camera, hard rules |
references/prompting.md | Claude Code | official T2VA/I2VA/FL2VA/L2VA format + length method |
references/reference-mode.md | Claude Code | official six-section Ref2VA format |
references/templates.md | Claude Code | fill-in templates + worked examples |
references/comfyui.md | Claude Code | checkpoints, quants, VRAM tiers, node settings, wiring |
references/troubleshooting.md | Claude Code | symptom → cause → fix |
references/reel-to-prompt.md | Claude Code | rebuilding a reference clip into a prompt |
portable-prompt.md | any chat model | all of the above except ComfyUI, in one block |
reels-portable-prompt.md | any chat model | the reel pipeline: breakdown → lengths → references → per-clip prompts → edit sheet |
SOURCES.md | maintainers | provenance ledger for every claim |
tools/reel_shots.py | run manually | shot detection + frame/length extraction |
The tool
tools/reel_shots.py turns a reference clip into measured cut times and frames, so beats
aren't guessed. Needs ffmpeg + ffprobe (and yt-dlp for URLs).
python3 tools/reel_shots.py <url-or-file> -o work/reel01 # --threshold 0.30, --no-audioWrites manifest.json (measured cuts, per-shot start/end/duration, h3_length_options),
frames/ (head/mid/tail per shot), and audio.wav. Run it before writing a rebuild
prompt, then read the frames — don't describe the clip from memory.
Its interface is described to chat models in reels-portable-prompt.md — see the sync rule
above before changing flags, output paths or manifest.json keys.
Voice and editing conventions
- Terse, honest, evidence-aware. State which kind of claim (Official/Impl/Empirical/ Community) you're relying on when it matters.
- Prefer correcting a claim over piling on hedges; remove claims found to be wrong — the git history does exactly this ("Correct claims the ComfyUI source contradicts").
- Don't duplicate content beyond what the three-deliverable split forces. One
SOURCES.mdrow covers a rule and all the places it's restated. - When the skill produces a prompt for a user, it emits the complete prompt in one code block every time, never a fragment or a diff.
Hard constraint (from ~/.claude/CLAUDE.md)
Do not build any mass/batch/parallel automation of Claude calls (API, SDK, or many chat sessions) — e.g. a pipeline that fans out hundreds of H3 prompt generations. Single interactive prompt-writing is fine; a batch generator is not. If asked, stop, name the rule, and offer a manual/one-at-a-time alternative.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

