| name | pushing-creation |
| description | Cinematic prompt methodology for AI image and video generation. Activates when the user mentions cinematic projects, shot lists, shoot briefs, storyboards, style packs, or visual generation workflows. |
PUSHING CREATION_
Cinematic prompt methodology workspace. You're helping a user author style packs and storyboards that produce professional-grade AI-generated images and video.
The thesis
Stop prompting. Start defining outcomes.
Treat the AI like a director of photography you've hired. You don't tell a DP "make it cinematic." You tell them ARRI Alexa 35, 50mm prime at T1.5, golden-hour rim from frame right, anamorphic squeeze, 24fps at 1/48 shutter, and you hand them three reference images.
Specificity transfers craft. Years of being on set compressed into a sentence the model can act on. Vague prompts produce average results because models default to the average of their training data.
Three principles
- Brief the DP. Camera, rig, lens, T-stop, shutter, fps, lighting state and direction, focal subject, time of day. Every field a real DP would need on the day.
- References do the heavy lifting. Words narrow. Images aim. Drop reference stills for skin tone, fabric, livery, location mood.
- Negative blocks fight defaults. The plastic-skin centred-front-lit hero is the AI's default because it's the average of training data. Pull against that average loudly and consistently.
Project format
Every project is a folder with three things:
projects/<slug>/
style.md # STYLE_ and NEG_ blocks (the visual voice)
storyboard.md # shot table (camera, lens, action, style refs)
refs/ # reference images
style.md
Named blocks prefixed STYLE_ (positive) or NEG_ (negative). Each block is a dense, comma-separated string optimized for model consumption. The block name describes intent; the body is the prompt fragment.
STYLE_ blocks define the visual voice: film stock, lighting state, lens character, grain, composition rules. NEG_ blocks fight specific AI failure modes: plastic skin, centred composition, flat lighting, anatomy glitches.
Mix blocks per shot. A macro close-up needs STYLE_MACRO_TACTILE + STYLE_GRAIN_HALATION but not STYLE_ANAMORPHIC. Fewer, targeted blocks beat stacking everything.
storyboard.md
A markdown table with columns: Shot | Provider | Model | Camera | Lens | Aspect | Action | Refs | Style | Neg | Mode | Duration
The Action column is the prompt. Lead with Shot on [camera] mounted on [rig]. State T-stop, shutter speed, ISO, fps. Then describe the scene with the precision a DP brief demands.
The Style and Neg columns reference block names from style.md. The generation tool (or the user) expands these into the full prompt at render time.
refs/
Reference stills, plates, mood frames. Drop images here. /frames-brainstorm reads them via vision to ground style interviews in real visual material.
Authoring guidance (hand-editing)
When helping a user author style.md by hand:
- Start from the starter template (
templates/style.md). It ships a curated STYLE_/NEG_ library covering the most common AI failure modes.
- Interview for their voice. Ask about: visual references (films, photographers), colour palette (warm/cool, film stock), grain and texture, camera and lens preferences, subject-specific negatives, prompting tricks they've found reliable.
- Be specific, not decorative. "ARRI Alexa 35, 50mm at T1.5, golden-hour rim from frame right" beats "cinematic golden hour lighting." Every word should change what the model renders.
- Test negative blocks. Generate without negs, then with. The difference should be visible and consistent.
Using /frames-brainstorm
The interactive alternative to hand-editing. The user drops reference images into projects/<slug>/refs/, runs /frames-brainstorm, and Claude conducts a DP-voiced interview grounded in vision analysis of those refs. Each answer gets compressed into a STYLE_ or NEG_ block and written to style.md in real time. The user talks naturally about their visual taste; Claude listens, compresses, writes. Aim for 6-10 blocks per session.
Using /frames-shotlist
The storyboard generator. Reads style.md block names, analyses reference images via vision, gathers the project concept (from CONCEPT.md or by asking), and drafts a full shot table. Each row is a self-contained brief with camera, lens, T-stop, action description, and style/neg references. Default target is 6-10 shots. Run after /frames-brainstorm to go from visual voice to shot-by-shot execution plan.
Using /frames-shot
The single-shot editor. Pass a shot number to refine an existing row, or new to append. DP-voiced conversation that pushes back on vague input and compresses feedback into the storyboard table. Uses Edit tool to modify only the target row, preserving table integrity.
When helping author storyboard.md:
- One row per shot. Each shot is a self-contained brief.
- Camera and lens first. These set the spatial and depth-of-field baseline before the scene description.
- Aspect ratio matters. 21:9 for cinematic wides, 16:9 for action, 4:5 or 9:16 for social.
- Reference images per shot. If a shot depends on a specific visual anchor (a hand pose, a car livery, a location), name the ref file in the Refs column.
Templates and examples
templates/style.md is the starter STYLE_/NEG_ library. Curated blocks fighting the most common AI defaults.
templates/storyboard.md is a worked BMW M-Series Track Day example. Six shots showing the format end-to-end.
templates/example-project/ is the full BMW pack with style, storyboard, and refs folder.
Available commands
/frames-new <slug> scaffolds a new project folder with starter templates.
/frames-brainstorm runs a vision-grounded DP interview that writes style.md live from your reference images.
/frames-shotlist generates a full storyboard from style + refs + concept.
/frames-shot <N> authors or refines a single shot in the storyboard.
/frames-gen <N> generates an image or video for shot N, reading API keys from macOS Keychain.
/frames-keys manages provider API keys stored in Keychain (add, list, test, remove).
Direct generation (v0.3+)
You can generate images and video directly from Claude Code without leaving the session.
How it works: bin/frames-gen reads the shot from storyboard.md, expands style blocks from style.md, reads the provider API key from macOS Keychain at call time, and calls the provider. Claude never sees the key value. The output path is the only thing printed to stdout.
Setup: Add provider keys once with bin/frames-keys add <provider> or via /frames-keys. See docs/KEYCHAIN_SETUP.md for the exact commands per provider.
Supported providers:
| Provider | Image | Video |
|---|
| gemini | yes | yes (Veo 2) |
| openai | yes | no |
| openrouter | yes | no |
| kling | no | yes |
| seedream | yes | no |
| seedance | no | yes |
| imagen | yes | no |
Usage pattern:
/frames-keys add gemini # once per provider
/frames-gen 1 # generates shot 1 using the provider in the storyboard
For providers that need two credentials (Seedream, Seedance), store them as access_key:secret_key (colon-separated) in a single Keychain entry.
Relationship to PUSHING FRAMES
This workspace is the methodology. PUSHING FRAMES is the generation tool. They're siblings, not dependencies. Projects authored here open cleanly in PUSHING FRAMES. You don't need PUSHING FRAMES to use this workspace, and you don't need this workspace to use PUSHING FRAMES.