πŸ“„ pushing-creation-frames-combo-unlock.md08/05/2026
Documents β€Ί workflows

Generate cinematic images and video from inside Claude

The gap between Claude reasoning about images and Claude making them closed today.

pushing-creation v0.3.0 ships a keychain bridge. Provider keys live in macOS Keychain, the CLI reads them at runtime, and the key value never enters Claude's context. Any Claude Code session in any workspace becomes a generation studio. Brief, image, video, end to end.

The shift

Before v0.3.0: author a brief in Claude, switch apps, paste the prompt, generate, switch back. Now: brief and generate in the same session.

The mechanic is straightforward. macOS Keychain holds the key, encrypted at rest, scoped to your user account. Claude holds the brief. The CLI is the bridge between them.

Keychain bridgeKeychainpushing-creation:gemini●●●●●●●OS encryptedkey bytesbin/frames-genkey ← keychain.read(service)req.auth = keyhttp.post(provider_url, req)# key never printed or loggedsubprocess onlypath onlyClaude transcript/frames-gen --kind image--shot-n 1β†’ savedrenders/shot-1.pngno key in context
The key lives in macOS Keychain. Claude's transcript shows only the output path.

Install

Three commands.

Install ritualInstall1git clone github.com/PUSHINGSQUARES/pushing-creation1. Clone2cd pushing-creation2. Enter3/frames-new my-shoot3. Create
Clone, enter, create. Claude Code picks up the workspace automatically.

Claude Code reads the .claude/ directory on entry and activates the skill. /frames-new my-shoot scaffolds projects/my-shoot/ with starter templates for style.md and storyboard.md.

Add your keys to Keychain

Add each provider key once using the security CLI that ships with macOS:

security add-generic-password -U \
  -s "pushing-creation:gemini" \
  -a "$USER" \
  -w "your-google-ai-studio-key"

When Claude calls bin/frames-gen, that key gets read into a Python variable inside the subprocess and passed straight to the provider's HTTP client. It never crosses into Claude's transcript, it isn't echoed to stdout, and it isn't logged by the CLI. The OS guarantees: encrypted at rest, scoped to your user, accessible only with your authorisation.

The -U flag updates an existing entry rather than creating a duplicate. Run the same command with a new value to rotate a key. The full provider list with key formats for all seven providers is in docs/KEYCHAIN_SETUP.md.

Author the brief

/frames-brainstorm opens a DP interview. Claude reads your reference images from refs/ and asks the questions a director of photography would ask on a location scout. Your answers become the brief. style.md gets written live as you respond.

Brainstorm flowrefs/Your imagesDP Interview
Anamorphic squeeze with oval bokeh, vintage Cooke softness, or modern spherical sharpness?
style.md## STYLE_ANAMORPHIC_HERO## NEG_FLAT_NOON
References in, DP interview, style.md and storyboard.md out.

Generate

Two commands from the same session:

/frames-gen --kind image --shot-n 1
/frames-gen --kind video --shot-n 1

The first call reads shot 1 from storyboard.md, determines the provider from the shot's Provider column (or your workspace default), reads the key from Keychain, and writes renders/shot-1.png. The second does the same for video, writing renders/shot-1.mp4. Claude's only visible output is the saved path. The key bytes stay inside the subprocess.

Pipeline flow/frames-brainstormDP interviewstyle.mdstoryboard.mdbriefbrief in/frames-gen --kind imageshot-1.pngimage outimage out/frames-gen --kind videoshot-1.mp4video out
Brief, image, video. One session, three artefacts.

Where it lives

Every project is four artefacts: a style pack, a storyboard, a reference folder, and a renders folder.

Project formatprojects/my-shoot/style.mdthe visual voicestoryboard.mdthe shot tablerefs/reference imagesshot-01.jpgshot-02.jpgrenders/generated frames
v0.3.0 project structure. renders/ lands alongside refs/.

The unlock

Every Claude Code session in every workspace inherits this once pushing-creation is installed and the keys are in Keychain.

CxN brief. PS product shot. BC live-shoot mood board. Personal portfolio. Same Claude, same methodology, same keys. Two repos clone once. From then on, every workspace is a generation studio.

Provider status

Three providers are verified end to end as of v0.3.0. gemini for image (Gemini 2.5 Flash). openai for image (GPT-image-1). kling for video (Kling v2 Master). The gemini provider also implements Veo 2 video, scaffolded but not yet verified in v0.3.0. Four other providers are scaffolded but not yet verified: openrouter, seedream, seedance, and imagen. The full verification matrix with key formats, model names, and known quirks is in docs/PROVIDERS.md.

The methodology is the install. Once both land, the gap is closed.

Repos

github.com/PUSHINGSQUARES/pushing-creation ships the methodology and the keychain bridge as a Claude Code skill. github.com/PUSHINGSQUARES/pushing-frames is the local browser studio that reads the same project format. Own one or both.

//

Related