Shotkit / Docs / Install
Install Shotkit in Claude Code.
~/.claude/skills/, and the validators and brand packs next to them. We ran every command below on 2026-09-26, installing into an empty home folder, and each grey block is what it printed. Home paths are shortened to ~.01 / Before you start
What you need on the machine.
- Claude Code, for the skills. Shotkit also runs in Claude.ai and the Claude API; the last section covers Claude.ai.
- git and a bash shell, for the clone and
install.sh. - Python 3 with
pyyamlandjsonschema, for the validators.
We ran this page on macOS with Python 3.14.5. Shotkit is free and open source under the Apache 2.0 licence.
02 / Install
Clone the repo and run the script.
git clone https://github.com/whystrohm/shotkit.git
cd shotkit && ./install.shInstalling shotkit scope: user skills: ~/.claude/skills tools: ~/.claude/shotkit-tools packs: ~/.claude/shotkit-brand-packs [install] brand-lock-extractor [install] storyboard-architect [install] visual-prompt-forge [install] visual-asset-critic [install] storyboard-html-preview [install] shotkit-tools [install] shotkit-brand-packs Done. Restart your Claude Code session to pick up the new skills. The validators need two packages: pip install pyyaml jsonschema Brand packs, including the blank template, are at: ~/.claude/shotkit-brand-packs/ Then, from the folder that holds a project's output/ directory: python ~/.claude/shotkit-tools/validate_shots.py output/ python ~/.claude/shotkit-tools/validate_provenance.py output/ --require-accept To check the install itself: ~/.claude/shotkit-tools/check.sh --quiet Try: "30-second founder explainer for your-brand. Pain-reframe-promise structure."
Three folders go in. The skills cite the validators and the brand packs by path, so all three have to be on disk.
| Folder | What is in it |
|---|---|
| ~/.claude/skills/ | The five skills: brand-lock-extractor, storyboard-architect, visual-prompt-forge, visual-asset-critic, storyboard-html-preview. |
| ~/.claude/shotkit-tools/ | The validators, the preview renderer, the prompt copier, check.sh, and a VERSION file. |
| ~/.claude/shotkit-brand-packs/ | The blank brand-lock template, the WhyStrohm pack and a neutral example. |
On our run, ~/.claude/shotkit-tools/VERSION read 3.1.0 on line 1 and the exact checkout on line 2.
03 / Validators
Give the validators their two packages.
The check script uses python3 unless you set PYTHON. With neither package installed, it stops and says so:
~/.claude/shotkit-tools/check.sh --quietshotkit checks, using Python 3.14.5 Missing Python package(s): pyyaml jsonschema python3 -m pip install pyyaml jsonschema Then re-run ~/.claude/shotkit-tools/check.sh
On our machine that suggested command failed, because Homebrew’s Python refuses system-wide installs (error: externally-managed-environment). A virtual environment works everywhere:
python3 -m venv ~/.venvs/shotkit
~/.venvs/shotkit/bin/pip install pyyaml jsonschemaSuccessfully installed attrs-26.1.0 jsonschema-4.26.0 jsonschema-specifications-2025.9.1 pyyaml-6.0.3 referencing-0.37.0 rpds-py-2026.6.3
04 / Check
Check the install.
PYTHON=~/.venvs/shotkit/bin/python ~/.claude/shotkit-tools/check.sh --quietshotkit checks, using Python 3.14.5 PASS skills: selftest PASS skills: frontmatter PASS schemas: selftest PASS schemas: are valid schemas PASS capabilities: selftest PASS capabilities: matrix PASS brand-lock: selftest PASS brand-lock: packs PASS brand-lock: flagship pack PASS brand-lock: snapshots PASS shots: selftest PASS shots: bundled examples PASS shots: worked run PASS prompts: selftest PASS prompts: worked run PASS critique: selftest PASS critique: fixtures PASS provenance: selftest PASS provenance: worked run PASS contracts: selftest PASS contracts: schemas and examples PASS preview renderer: selftest PASS prompt helper: selftest ───────────────────────────────────────── 23 passed, 0 failed
This is the same entry point the repo’s CI runs. It checks the skills’ frontmatter, the schemas, the generator matrix, the brand packs, the bundled examples, the critique gate and the provenance chain.
05 / Load
Restart Claude Code and confirm the skills.
Claude Code reads ~/.claude/skills/ when a session starts, so restart any open session. Then confirm the five folders are there:
ls ~/.claude/skills/ | grep -E "storyboard|visual|brand-lock"brand-lock-extractor storyboard-architect storyboard-html-preview visual-asset-critic visual-prompt-forge
You do not call the skills by name. Describe the work, for example “Storyboard a 15-second launch film for my brand”, and Claude Code picks the skill whose description fits. The quickstart walks one full run.
06 / Options
Project scope, dry runs, updates and removal.
./install.sh --help lists every option:
Usage: ./install.sh # install to ~/.claude/ (user scope) ./install.sh --project # install to ./.claude/ (project scope) ./install.sh --skills-only # skip the tools and packs, skills only ./install.sh --dry-run # show what would happen, change nothing ./install.sh --force # overwrite existing skills without prompting ./install.sh --uninstall # remove the skills, the tools, and the packs ./install.sh --help # show this help The validators need two packages: pip install pyyaml jsonschema
One project only
Run the script from inside the project folder with --project. Everything lands in that folder’s .claude/, which you can commit so collaborators get the same skills.
/path/to/shotkit/install.sh --projectInstalling shotkit scope: project skills: ./.claude/skills tools: ./.claude/shotkit-tools packs: ./.claude/shotkit-brand-packs [install] brand-lock-extractor [install] storyboard-architect [install] visual-prompt-forge [install] visual-asset-critic [install] storyboard-html-preview [install] shotkit-tools [install] shotkit-brand-packs
See first, change nothing
./install.sh --dry-run prints each copy it would make and writes nothing.
Update
Pull, then install again. A second plain run asks before it replaces each skill; --force replaces them without asking. Brand packs you keep elsewhere and your output folders are not touched.
git pull
./install.sh --forceAlready up to date. [replace] brand-lock-extractor [replace] storyboard-architect [replace] visual-prompt-forge [replace] visual-asset-critic [replace] storyboard-html-preview [replace] shotkit-tools [replace] shotkit-brand-packs Done. Restart your Claude Code session to pick up the new skills.
Remove
./install.sh --uninstallUninstalling shotkit from ~/.claude [remove] brand-lock-extractor [remove] storyboard-architect [remove] visual-prompt-forge [remove] visual-asset-critic [remove] storyboard-html-preview [remove] shotkit-tools [remove] shotkit-brand-packs Done.
07 / Claude.ai
Using Claude.ai instead.
Claude.ai takes skills as .skill zip uploads, one per skill. From the folder that holds your clone, zip each skill:
cd shotkit/skills
for s in *; do (cd "$s" && zip -qr "../../$s.skill" .); doneThat writes five files into the shotkit folder: brand-lock-extractor.skill, storyboard-architect.skill, storyboard-html-preview.skill, visual-asset-critic.skill and visual-prompt-forge.skill. The repo’s doc says to upload each one in Claude.ai under Settings, then Skills. The validators do not run inside Claude.ai, so save the output and run them on your machine. The Claude.ai workflow doc in the repo has the details.
Next
Want it built and run for you? Apply for a free reel