storyboard-architect
Turn a creative brief into a production-grade storyboard with shot specs, timing, on-screen text, and per-shot rationale. Use when the user describes a video…
Extract a production-ready brand-lock.md from a brand's existing assets. Point it at a website URL, a brand book PDF, screenshots, or a written description and it produces the nine-section brand-lock the rest of shotkit consumes, with a confidence and source noted for every
$ npx -y skills add whystrohm/shotkit --skill brand-lock-extractor --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/brand-lock-extractorContext preview
The summary Claude sees to decide when to auto-load this skill.
Extract a production-ready brand-lock.md from a brand's existing assets. Point it at a website URL, a brand book PDF, screenshots, or a written description and it produces the nine-section brand-lock the rest of shotkit consumes, with a confidence and source noted for every
name: brand-lock-extractor description: Extract a production-ready brand-lock.md from a brand's existing assets. Point it at a website URL, a brand book PDF, screenshots, or a written description and it produces the nine-section brand-lock the rest of shotkit consumes, with a confidence and source noted for every value. Use when the user wants to onboard a brand, says "build a brand lock", "extract my brand", "make a brand pack from my site", or hands over brand assets. The cold-start killer that turns a blank brand-pack template into a filled, validate-ready file. Pairs with storyboard-architect downstream.
The blank `brand-packs/_template.md` is the single biggest point of friction in shotkit. Nobody wants to hand-author nine sections of brand parameters before they can produce a single storyboard. This skill removes that wall: hand it what you already have, get a filled brand-lock back.
The output is a `brand-lock.md` in the exact format `tools/validate_brand_lock.py` validates and every other skill consumes. Same file the pipeline reads, produced from your assets instead of from scratch.
This skill extracts. It does not invent. Every value is sampled from a real asset or flagged as an estimate the user must confirm. A confident-sounding wrong hex is worse than a flagged guess.
Trigger when the user:
If the user has nothing but a vague idea (no assets, no description), they are not extracting, they are authoring. Point them at `brand-packs/_template.md` and help them fill it directly.
You can work from any one of these. More sources is a better extraction.
| Source | How you read it | Best for | |---|---|---| | Website URL | `WebFetch` homepage + about + one more page | Voice, positioning, palette, type | | Brand book PDF | `Read` the PDF | Palette (exact hex), type, motion rules | | Screenshots / image files | `Read` the images | Palette (sample pixels), mood, layout | | Written description | Use directly | Identity, archetype, voice posture |
At minimum you need one source. If the user offers none, ask for the one they have: **"What can I work from, a website URL, a brand book PDF, screenshots, or a short description?"** One question.
Tell the user what you are pulling. Do not ask follow-ups yet, extract first, confirm gaps at the end.
Read `references/extraction-rubric.md`. It maps every brand-lock section to where the signal lives and how to read it. Work the nine sections in order:
1. **Identity** (brand, one-line description, archetype, voice posture) 2. **Palette** (sampled hex, by role) 3. **Typography** (display, body, optional mono, with weights) 4. **Mood adjectives** (3-5, specific, contrast clauses preferred) 5. **Never list** (what the brand avoids, inferred from consistency) 6. **Aspect ratios** 7. **Color grade direction** (one sentence) 8. **Motion language** (one paragraph) 9. **Voice rules** (copy-level constraints)
For every value, hold two things: the value, and where it came from (which asset, which quote, which sampled swatch). You will need the source for the confidence pass.
Each value is one of:
Use `templates/brand-lock.md.tpl`. Fill **every** required section, no placeholders left behind. Then append an `## Extraction notes` section that lists every `inferred` and `needs confirmation` value with its source and your reasoning. This section is the audit trail; it does not break validation (the validator checks the nine required sections are present, extra sections are fine).
Set the footer: `Last updated` to today, `Owner` to the user or "extracted", `Version: 1.0`.
Before you present it, confirm the file would pass validation:
Then hand off:
> "Here is your brand-lock. I sampled the palette and type from your assets and flagged N values that need your eyes (see Extraction notes). Drop it in `brand-packs/`, confirm the flagged values, and run `python tools/validate_brand_lock.py path/to/file.md` to verify. Then: `'30-second explainer. Use brand-packs/your-brand.md as the brand lock.'`"
Colors are sampled, never guessed. Read them from a brand book, from CSS, or by sampling pixels in a screenshot. If you genuinely cannot determine a color,
The pre-production system we use to ship hundreds of videos a month. Open-sourced.
Turn a creative brief into a production-grade storyboard with shot specs, timing, on-screen text, and per-shot rationale. Use when the user describes a video…
Render a structured storyboard (storyboard.md, shots.json, text-overlays.json, brand-lock.snapshot.md) into a single-file HTML preview that is shareable,…
Critique a generated image against its source storyboard shot and prompt, producing revision notes. Use when the user has generated an image and wants feedback…
Generate model-specific prompts from shots.json. Outputs copy-paste-ready prompts for stills (Midjourney, Flux, Ideogram, GPT Image, Nano Banana, Seedream) and…