Shotkit / Free and open source
From a brief to a storyboard you can check.
Five Claude skills turn a video brief into a storyboard, prompts for ten image and video generators, and a review of every frame you make. Every input, prompt and reviewed frame is pinned by a content hash.
git clone https://github.com/whystrohm/shotkit.git
cd shotkit && ./install.shInstalls the five skills into ~/.claude/skills/. Restart Claude Code and they are live.
02 / What comes out
Files, not panels. Open the plan.
The output of one real run. A plan in Markdown and JSON that an editor, a motion designer or a developer can act on.
output/
- prompts/One file per generator, per round12 files
- frames/round-N/Your frames go here.Shotkit writes the prompts and checks the frames. You make the frames in your generator.
- critiques/The critic's verdict on each frame16 files
- preview.htmlOne file to open, print and share. It is in the next section.
03 / Live example
One file you can hand to an editor.
storyboard-html-preview turns the run into a single HTML page. Shotkit’s own renderer built this page from the run above; the frames are web-sized copies. Scroll it.
04 / How it works
Five skills, one closed loop.
Each skill works alone. Together, the critic writes a verdict the prompt forge can act on, so a weak frame goes back for another round instead of into the edit.
- 01brand-lock-extractorReads a site, a brand book PDF or screenshots and writes a brand lock: palette, type, voice and visual rules, each with its source.
- 02storyboard-architectTurns the brief into storyboard.md and shots.json: timing, framing, motion and a reason for every shot.
- 03visual-prompt-forgeWrites one prompt file per generator from the same shot data. Six stills models and four motion models.
- 04visual-asset-criticChecks each frame you make against its shot and the brand lock. ACCEPT, REVISE or REJECT, with the hash of what it judged.
- 05storyboard-html-previewBuilds one HTML file of the whole storyboard that you can open, print and share.
The verdicts from the run above, per shot and per round. 5 of 5 shots end on ACCEPT; 2 went round more than once.
- shot_01world, EWS, 0.0 to 3.5sRound 1ACCEPT
- shot_02hero, MS, 3.5 to 6.5sRound 1REVISERound 2REVISERound 3ACCEPT
- shot_03hero, WS, 6.5 to 9.5sRound 1REVISERound 2ACCEPT
- shot_04transformation, EWS, 9.5 to 12.0sRound 1ACCEPT
- shot_05transformation-cta, EWS, 12.0 to 15.0sRound 1ACCEPT
REVISE sends the shot back to visual-prompt-forge, which writes new prompts for that shot only, into the next round. REJECT stops and asks, because it means no fix path exists.
05 / Checks you can run
Do not take our word. Run the checks.
Every claim on this page has a command behind it.
- The verdict gate
Recomputes every hash. With --require-accept it exits 0 only when every shot has a critique and every latest verdict is ACCEPT.
python ~/.claude/shotkit-tools/validate_provenance.py output/ --require-accept- Every check at once
The same entry point CI runs, so a green local run means a green pull request. Each validator ships a selftest that proves it catches a failure.
./tools/check.sh- CI
GitHub Actions runs tools/check.sh on every push, on every branch.
See the runs on GitHub- Changelog
Latest: 3.1.0, .
The full changelog
06 / Free and Pro
The kit is free. Pro is planned.
Shotkit
Free, Apache 2.0
- The five skills
- The validators and tools/check.sh
- The brand pack template and worked examples
- Your files stay yours: Markdown, JSON and HTML
Shotkit Pro
Planned. Join the waitlist.
Pro is not built yet. What it would add:
- A render package that turns shots.json into video in the WhyStrohm film style, cut to 16:9, 9:16, 4:5 and 1:1
- Pro brand packs, and more preview themes
- A team setup: several brands in one workspace, and one command that runs every validator
- Updates
07 / Questions
Plain answers.
Does it work outside Claude Code?
Yes. Claude Code is the main target: ./install.sh puts the five skills in ~/.claude/skills/ and the validators in ~/.claude/shotkit-tools/.
In Claude.ai, all five install as .skill uploads, on the web, desktop and mobile apps. Through the Claude API, they run on the Skills API. Other agents that read the SKILL.md format may work, but they are not tested.
Which image and video generators does it write prompts for?
Ten, from the same shot data. Six for stills: Midjourney, Flux, Ideogram, GPT Image, Nano Banana and Seedream. Four for motion: Kling, Veo, Seedance and Hailuo.
Names only. Shotkit has no partnership with any of these companies, and it calls none of their APIs. You paste the prompt in yourself.
Does Shotkit make images or video itself?
No. Shotkit stops at prompts and specs. You make the frames in your generator and put them in frames/round-N/. The critic then reviews each one against its shot and the brand lock.
What is a brand lock, and how do I make one?
One Markdown file that fixes a brand's palette, type, voice and visual rules for a project. brand-lock-extractor writes one from a website URL, a brand book PDF, screenshots or a short description, and notes a source and a confidence for every value. You can also start from brand-packs/_template.md.
How do updates work?
Run git pull in your clone, then ./install.sh again. ./install.sh --force overwrites the installed skills without asking.
What leaves my machine?
Shotkit has no server and calls no generator API. It is skills, files and prompts inside your Claude session, and what you put in that session goes to Claude, as it does in any session.
If you give brand-lock-extractor a URL, Claude fetches those pages with its web fetch tool. You paste the prompts into your generator yourself. The preview page can load the brand's fonts from Google Fonts; tools/shots-to-html.py --no-web-fonts builds one that makes no network request.
What is the licence?
Apache 2.0. It covers the code and docs in the repo. It does not grant rights to the Shotkit or WhyStrohm names.
Further reading
08 / Start
Start with the free kit. Or have it built and run for you.
Shotkit is the pre-production method WhyStrohm uses on its own work.
git clone https://github.com/whystrohm/shotkit.git
cd shotkit && ./install.sh