Turn a shot card into a 15-block prompt before video. Use when every in-frame asset is locked and a shot is ready to generate.
npx skills add https://github.com/machina-exm/film-studio-skills --skill shot-prompt
Turn one shot card and its locked asset passports into one versioned prompt.
Keep the fifteen blocks in the fixed order below.
## AI film studio section in the project's CLAUDE.md or AGENTS.md./prompts/, /docs/registry.md, /docs/breakdown.md, and the passports of every in-frame asset under /assets/./prompts/ or /docs/ is missing, offer to create the needed folder in the studio tree.Ask one question at a time throughout.
List every character, state variant, location, and prop named in the shot card.
Match each exact tag and version to /docs/registry.md.
Require every row to be locked before producing a generation-ready prompt.
If any asset is missing or draft, name it, keep the shot blocked, and direct the user to asset-passport or stress-test.
Do not silently substitute another version or base asset.
Read each locked passport.
Copy every active canonical descriptor verbatim.
Do not shorten, paraphrase, or clean up a descriptor inside the prompt.
Carry forward its identity, direction, and camera/edit lanes.
Confirm that the clip contains one action and runs for 10–15 seconds.
Move any sign, screen, title, or other in-frame text to /docs/text-tasks.md; keep it out of generation.
Ask the user about one missing field at a time.
Use numbered headings and this exact order:
EXACT N CHARACTERS — NO DUPLICATES, using the exact count. State the scene, shot goal, and one action.10. Lighting — Use the location passport's light character and palette. Describe shaped light from its actual sources.
11. Audio — Include ambience, in-frame sound, and each verbatim dialogue line in exact quotation marks.
12. Character acting — Direct posture, gesture, breath, gaze, reaction, and living eye behaviour for each character.
13. Style prefix — Apply the locked visual style and give a 60:30:10 dominant, secondary, and accent colour line.
14. Quality bar — State the required reference match, anatomy, material, motion, continuity, lip-sync, and artifact standard.
15. Positive constraints — Rewrite every prohibition as what is visibly present, then add a concrete failure clause for the shot's known risk.
Do not add a negative-prompt section.
Keep the exact quoted dialogue from the shot card.
Keep block content specific enough to verify in the resulting take.
Create the prompt in /prompts/ using the project's existing naming pattern.
If no pattern exists, use <scene>-<shot>-prompt-v<version>.md.
Preserve earlier versions instead of overwriting them.
Record which locked passport versions the prompt uses.
After each generation, append one row to /docs/generation-log.md with:
| shot id | prompt version | what changed | result | verdict |
Change exactly one line for the next prompt version and keep every other line verbatim.
Record the output path and verdict before trying again.
If the shot fails after 10–15 iterations, stop polishing words.
Choose one structural simplification with the user: split the shot in two, drop an action, or change the angle.
Accept only when all checks pass:
Give an accepted take its final name in /selects/sc<NN>/.
Keep raw outputs in /generations/sc<NN>/.
The editor works only from /selects/, never from raw generations.
Report the prompt path and version, the locked passports used, any unresolved issue, and the next generation-log action.
Take machina-exm/shot-prompt 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.