muapi-ai-fight-scene — Claude Code skill: fight scene
Builds a 16-cell storyboard image, then drives Seedance 2.0 image-to-video off it to get a 15-second action clip.
npx skills add SamurAIGPT/Generative-Media-Skills --skill muapi-ai-fight-scene -a claude-code
npx skills add SamurAIGPT/Generative-Media-Skills --skill ai-fight-scene -a claude-codeWhat muapi-ai-fight-scene does
The skill runs in four phases. muapi image generate with gpt-image-2-text-to-image draws a turnaround character sheet, then nano-banana-2 designs the location with no characters in frame. Phase C hands both references to muapi image edit with gpt-image-2-image-to-image and composes a single 4×4 grid of 16 numbered cells. The final pass calls muapi video from-image with seedance-v2.0-i2v, which follows that grid cell by cell.
The reasoning: action tension comes from cut density, not from the quality of one shot. A text prompt cannot choreograph that, but a drawn grid gives the video model 16 visual targets — landed punches, reverse angles, ECUs, whip-pans. So the storyboard prompt enforces aggressive shot-size variation and puts every IMPACT on a CU or ECU.
Asymmetric details — a scar over the right eyebrow, a glove on the left hand only — are the safety net here. Skip them and identity drift between cells becomes the main failure mode. Draft with the cheaper seedance-2.0-i2v-480p pass first. Longer fights chain two storyboards, with the last cell of the first reused as a continuity anchor in the second. Prompts work in English and Chinese.
What it helps with
- turn a written action beat into a 16-cell storyboard
- keep the fighter's identity consistent across panels
- get dense cutting instead of one long take
- preview a clip cheaply before the full-res render
- chain two storyboards into a continuous 30-second fight
Example prompts for the agent
- Generate a fight scene: hero cornered in an alley, block, counter-elbow, throw into trash cans
- Make the character sheet and the environment concept, then compose the 4×4 storyboard
- Draft it with seedance-2.0-i2v-480p so we can check the cut density
How to install muapi-ai-fight-scene
1Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill muapi-ai-fight-scene -a claude-codenpx skills add SamurAIGPT/Generative-Media-Skills --skill ai-fight-scene -a claude-code2Manually: put the files in place
~/.claude/skills/ai-fight-scene/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/ai-fight-scene/
1Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill ai-fight-scene -a codex2Manually: put the files in place
.agents/skills/ai-fight-scene/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill ai-fight-scene -a cursor2Manually: put the files in place
.cursor/skills/ai-fight-scene/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install SamurAIGPT/Generative-Media-Skills ai-fight-scene2Manually: put the files in place
.github/skills/ai-fight-scene/SKILL.md1Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill ai-fight-scene -a gemini-cli2Platform CLI
gemini skills install https://github.com/SamurAIGPT/Generative-Media-Skills --path library/motion/ai-fight-sceneManually: put the files in place
.devin/skills/ai-fight-scene/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill ai-fight-scene -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about muapi-ai-fight-scene
How do I install muapi-ai-fight-scene in Claude?
Run npx skills add SamurAIGPT/Generative-Media-Skills --skill muapi-ai-fight-scene -a claude-code. The skill lands in ~/.claude/skills/ai-fight-scene/SKILL.md.
What does muapi-ai-fight-scene do?
It walks through character sheet, environment concept, a 4×4 storyboard, and finally video generation with Seedance 2.0 image-to-video.
Why a storyboard image instead of a text storyboard?
Seedance 2.0 i2v anchors its motion plan to the visual reference. A grid of 16 drawn cells gives it 16 targets to hit, while text shot descriptions get averaged into mush.
Source text
SKILL.md · MIT
---
slug: muapi-ai-fight-scene
name: muapi-ai-fight-scene
version: "1.0.0"
description: Generate a high-cut-density action / fight scene by first composing a 16-cell storyboard image, then driving Seedance 2.0 image-to-video off that storyboard. Stacks GPT-Image-2 (character sheet + storyboard), Nano-Banana-2 (environment concept), and Seedance 2.0 i2v.
acceptLicenseTerms: true
---
# AI Fight Scene Generator
**Generate a high-cut-density action / fight scene by first composing a 16-cell storyboard image, then driving Seedance 2.0 image-to-video off that storyboard.**
The core idea: **action tension comes from cut density, not single-shot quality.** Forcing the video model to follow a pre-drawn 4×4 storyboard grid gives you 16 distinct shots in a 15-second clip — landing punches, reverse angles, ECUs, whip-pans — that no t2v prompt could choreograph on its own.
## Inputs
| Name | Type | Required | Default | Description |
|:---|:---|:---|:---|:---|
| `character_description` | text | yes | — | Full physical description of the fighter(s). Asymmetric details (eye colour, scar side, holster on left hip) help the model preserve identity across panels. |
| `environment_description` | text | yes | — | The scene setting — e.g. "cyberpunk wet back-alley, neon kanji signage, Stray-game aesthetic, rain on chrome." |
| `action_script` | text | yes | — | The action beat — prose or numbered beats. E.g. "Hero is cornered → blocks first punch → counter-elbow → throw opponent into trash cans → finisher." |
| `style_direction` | text | no | cinematic action film, anamorphic lens, high contrast, motion blur on hits | Aesthetic / look tags applied to every frame. |
| `duration` | int | no | 15 | Final video length in seconds. The storyboard's 16 cells map roughly 1 shot per second at default. |
| `aspect_ratio` | text | no | 16:9 | Output aspect — `16:9` cinematic, `9:16` vertical, `1:1` square. |
## Steps
### Phase A — Character Sheet
Generate a clean turnaround-style character sheet using `muapi image generate` (model=`gpt-image-2-text-to-image`):
- Prompt: `Character reference sheet of {{character_description}}. Three views — front, 3/4, profile — on a neutral grey backdrop. Studio lighting, full body, no text overlays, photoreal. Asymmetric identifying details preserved on the correct side. {{style_direction}}.`
- Aspect ratio: `3:2`
Present the character sheet and confirm identity details look right before proceeding. **This image becomes reference #1 for later phases.**
### Phase B — Environment Concept
Use `muapi image generate` (model=`nano-banana-2`) to design the scene/world:
- Prompt: `Wide establishing shot of {{environment_description}}. No characters in frame — environment only. Strong perspective lines, depth, atmospheric haze. {{style_direction}}. Production-design concept art.`
- Aspect ratio: `{{aspect_ratio}}`
Nano-Banana-2 is chosen here for its reasoning-driven composition — it's better than text-to-image-only models at producing locations with believable spatial logic (chokepoints, cover, sightlines) that an action scene can use. Present for approval. **This becomes reference #2.**
### Phase C — 16-Cell Storyboard
Compose the action onto a single 4×4 storyboard image using `muapi image edit` (model=`gpt-image-2-image-to-image`):
- Reference Images: the character sheet from Phase A **and** the environment plate from Phase B.
- Prompt:
```
Compose a 4×4 storyboard grid (16 numbered cells) for the following action sequence:
{{action_script}}
CHARACTER (use reference image 1 identity throughout, asymmetric details preserved):
{{character_description}}
LOCATION (use reference image 2 spatial layout):
{{environment_description}}
Each cell labels: SHOT # (1–16) · SIZE (WIDE / MS / CU / ECU) · CAMERA-MOVE arrow (push, pull, whip, dolly, crash-zoom, handheld) · 1-word RHYTHM note (BEAT / IMPACT / RECOVERY / RESET).
Vary shot size aggressively — never two WIDEs in a row. Land every IMPACT on a CU or ECU.
Hand-drawn comic-book ink-and-wash style, monochrome with selective red accents on hits.
Numbered cells, clear gutters between panels.
Aesthetic: {{style_direction}}.
```
- Aspect ratio: `1:1` (square works best for a 4×4 grid)
Present the storyboard to the user. Confirm:
- The 16 shots read clearly
- Identity stays consistent cell-to-cell
- Cut density / shot-size variation looks aggressive enough
If a panel reads poorly, regenerate just the storyboard with that cell's note bolded ("CELL 7 must be an ECU on the right fist").
### Phase D — Storyboard → Video (Seedance 2.0)
Hand the storyboard to `muapi video from-image` (model=`seedance-v2.0-i2v`):
- Reference Image: the 16-cell storyboard from Phase C.
- Prompt:
```
Generate a {{duration}}-second action sequence that strictly follows the 16-cell storyboard reference image, cell-by-cell, top-left to bottom-right.
- Honour each cell's labelled SHOT SIZE and CAMERA-MOVE — match cuts to the storyboard's rhythm notes.
- Strong cinematic feel and shot language. Exaggerated dynamics. Hits land hard with motion blur and impact frames.
- Camera language: anamorphic, handheld where the storyboard calls for it, locked-off where it doesn't.
- Native audio: impact sfx on every IMPACT cell, footsteps, fabric/Foley, restrained low score under the action.
Action being rendered: {{action_script}}.
Aesthetic: {{style_direction}}.
```
- Duration: `{{duration}}` (default 15)
- Aspect ratio: `{{aspect_ratio}}`
After generation, present the final video. If the cut density feels too low or shots don't match the storyboard, regenerate Phase D first (cheaper than rebuilding the storyboard) with the prompt emphasising "strict cell-by-cell adherence" more aggressively.
## Notes
- **Why the storyboard image and not a text storyboard?** Seedance 2.0 i2v anchors its motion plan to the visual reference. A grid of 16 drawn cells gives it 16 visual targets to hit — text descriptions of shots get averaged into mush.
- **Asymmetric character details matter.** Without something like "scar over the right eyebrow" or "leather glove on the left hand only", identity drift between cells is the #1 failure mode.
- **Use `seedance-2.0-i2v-480p` to draft.** Cheaper preview pass before committing to the full-res `seedance-v2.0-i2v` run.
- **For longer fights**, chain two runs: first run uses storyboard A (cells 1–16, beats 1–15s); second run uses storyboard B (cells 17–32, beats 15–30s) with the last cell of A as a continuity anchor in B's first cell.
- **Language**: Both English and Chinese prompts work in all four models, so the storyboard cell labels can be in either language.
## Trigger Keywords
`fight scene`, `action sequence`, `storyboard to video`, `cut density`, `cinematic action`, `combat choreography`, `seedance 2 storyboard`
## Pipeline at a Glance
```
character_description ──► [GPT-Image-2 t2i] ─► character sheet ──┐
│
environment_description ─► [Nano-Banana-2 t2i] ─► environment plate ┼─► [GPT-Image-2 i2i] ─► 16-cell storyboard ─► [Seedance 2.0 i2v] ─► 15s action video
│
action_script + style_direction ───────────────────────────────────►┘
```
---
## Notes for the Executing Agent
- This recipe is LLM-orchestrated: read each phase, gather any missing inputs from the user, then call `muapi` CLI commands. Use `muapi auth configure` first if `MUAPI_API_KEY` is unset.
- For model IDs without a CLI alias yet, fall back to the raw endpoint via `curl -X POST https://api.muapi.ai/api/v1/<endpoint> -H "x-api-key: $MUAPI_API_KEY" -H 'content-type: application/json' -d '{...}'` and poll with `muapi predict wait <request_id>`.
- Phase C uses TWO reference images (character sheet + environment plate). When calling `gpt-image-2-image-to-image`, pass them as a list under `images_list` (or the model's documented multi-ref field).
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
© SamurAIGPT · MIT · SamurAIGPT/Generative-Media-Skills