bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
翻譯準備中
Claude Code skill for MiniMax H3 shot breakdown and character performance. Facial expression only renders when the shot has a <d> dialogue tag — measured, 42 dB vs 18 dB.
翻譯準備中
技能GitHub @phileiny自行安裝營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
安裝型專案無需部署網域也可驗證。個人儲存庫可透過 GitHub 登入驗證,組織儲存庫可使用上方的儲存庫驗證檔案。
正在載入完整 README。 以下為已儲存的摘錄。
A Claude Code skill for turning a script into MiniMax H3 shot lists — with emotional performance that actually renders. Every other H3 skill stops at translation: you decide what you want, they format it into H3's prompt schema. None of them cover the part before that — how to break a script into shots, how many beats a shot can hold, or how to direct a face. This one does. Every rule comes from real output rather than from reading docs, and SOURCES.md says which ones have a controlled comparison behind them and which are still inference. 繁體中文說明在 skills/h3-storyboard/SKILL.md。檢視完整 README ↗
A Claude Code skill for turning a script into MiniMax H3 shot lists — with emotional performance that actually renders.
Every other H3 skill stops at translation: you decide what you want, they format it into H3's prompt schema. None of them cover the part before that — how to break a script into shots, how many beats a shot can hold, or how to direct a face.
This one does. Every rule comes from real output rather than from reading docs, and
SOURCES.md says which ones have a controlled
comparison behind them and which are still inference.
繁體中文說明在 skills/h3-storyboard/SKILL.md。
H3 drops facial instructions silently when a shot holds too many of them. You write "her upper eyelids lift fully open, her eyebrows rise as one line" and nothing happens — no error, no warning, just a neutral face for seven seconds.
Three versions of the same shock beat. Same seed, same references, same facial instructions. One variable changed at a time:
| shot structure | dialogue | PSNR at the emotional peak | result | |
|---|---|---|---|---|
| A | one 7 s close-up holding 9 beats | none | 37–42 dB | face never moved |
| B | three 2–3 s shots, one beat each | none | 22–23 dB | every beat landed |
| C | same as B | <d> line added | 19 dB | slightly larger range |
Lower PSNR means more change between frames. 42 dB is effectively a frozen frame.
A → B is the mechanism. Splitting the shots recovers almost all of it.
B → C is real but it has a price. A fourth run isolated it properly — same
ref_image_size, same seed, one <d> line the only difference. The dialogue tag does not
make faces move; it makes H3 reallocate screen time toward the shot that carries the
line. In a four-shot clip the emotional shot went from 55 frames to 84 (the prompt asked
for 74) — and the shot after it was squeezed from 56 to 42, at which point the background
character standing outside the glass door vanished and the door itself degraded into a
plain window.
So: count your beats before you write anything else. More than two or three expression beats in one shot and it needs splitting.
An earlier version of this repo credited the dialogue tag as the cause. That was wrong — the failing and working versions had changed two things at once. Running the missing control is what corrected it. See
SOURCES.md.
| Never write "nothing changes" | Likely leaks across the whole shot. Put the pause in the edit instead — controllable either way. |
| Size and distance: relationships, not numbers | two thirds as tall as the frame renders at 45–52%; a hand's width short of the base renders as touching it. Describe the crop, or use something in frame as the ruler. |
| Shape: use a reference image | Three text attempts at a 1.75:1 panel all produced a square. A blank reference image fixed it in one. |
| Silent characters use the body | No dialogue means no mount point. Swap jaw clench → exhale with shoulders dropping. |
| Decide the camera before you write the face | If what a character is looking at isn't in frame, H3 has them look at the lens. Adding a head turn fights the scene; moving the camera to where they're already looking doesn't. |
| The last mile is an edit, not a prompt | H3 treats each timestamp as a state to arrive at, so it never anticipates and never snaps. Cover the dead frames with an insert; butt the two ends of an emotional turn together. |
| Verify with PSNR, not eyes | A dB table for reading whether a beat happened. |
ref_audio_0 drives the mouth, not the voice | A real-voice reference moves the pitch toward it but lands two semitones high, with a narrower range, a drifting accent and a synthetic edge. |
| Dialogue steals time from neighbouring shots | Great for the performance beat, bad for whatever shot loses the frames. Keep background continuity out of clips that carry dialogue. |
| Dubbing over H3? Budget by shot, not by beat | H3 spreads mouth movement across the whole shot and ignores the next timestamp. What breaks a dub is putting post-speech beats (swallowing, "finishes speaking") inside the speaking shot. |
| A design change hides there too | Not just expression — an eye design pinned by a different reference image swapped inside one shot, no cut, because the lids were shut across the change. |
| Hide an emotional turn behind something | Written as A→B, H3 crossfades between the two states and the face reads like rubber. Close the eyes, change underneath, open onto the new state — verified frame by frame. |
Plus the physiological ordering of expressions (brow → eye → mouth), an emotion-to-observable-action table, a six-step breakdown workflow, and post-production division of labour.
npx skills add https://github.com/phileiny/h3-storyboard-skill --skill h3-storyboard
Or copy skills/h3-storyboard/ into your .claude/skills/.
Pairs with minimax-h3 — that skill
covers prompt syntax, ComfyUI setup, quantisation and troubleshooting. This one covers
what to put in the prompt. They do not overlap.
SOURCES.md sorts every rule into verified,
partly verified (the effect is real, the cause is not isolated) and inferred.
Five have controlled comparisons, including the headline one above. One is plausible but not isolated. Four are reasoned and untested — among them where the beat-density ceiling actually sits: 9 beats fails, 1 works, the middle is unmeasured.
All of it comes from producing a serialised short-form drama: 9:16, Ref2VA, local ComfyUI, roughly 60 s and 1,100–1,400 frames per episode.
If you test something here and get a different result, please open an issue — that is more useful to everyone than the rule as written.
| In a vertical frame, whole-subject and large are mutually exclusive | A roughly square subject fully in a 9:16 frame tops out around 50–60% of the height. Crop the base off and it reaches 70%. |
| Don't let a preposition touch a brand asset | coffee glistening around its base put coffee up the figurine's whole face. Give the liquid a stated distance instead, and say the surface is dry. |
| Never shoot the collision, or the volume of a liquid | A hand knocking a cup over never made contact; the coffee outgrew the cup and kept pouring. Sweep an arm across frame, cut, and open on the aftermath. |
| Tail collapse | H3 degrades 1.2–1.7 s before the end. Budget the margin, check every clip. |