Marketing Studio
Reusable video/animation/image source lives in one engine repo (Remotion + Blender +
Playwright + ComfyUI feeders). Its root is:
${CLAUDE_SKILL_DIR}/../..
Call it ENGINE below. The product repo is PROJECT. Reusable source changes belong in
ENGINE; every generated input, capture, audio file, prop, public-stage asset, review
record, render, and delivery file belongs in
PROJECT/marketing/assets/<brand>/. Pass --project PROJECT to generators and
renderers. Do not render into ENGINE and copy out later.
REQUIRED READING before any asset work: ${CLAUDE_SKILL_DIR}/../../docs/PLAYBOOK.md
(engine map, onboarding, process, delivery contract) plus ONLY the
${CLAUDE_SKILL_DIR}/../../docs/playbook/<topic>.md files the recipe names; do not
read the other topic files. Those were expensive to discover; do not re-derive or
second-guess them.
Workflow shape (every asset skill follows this)
- Shared-repo guard:
git -C "${CLAUDE_SKILL_DIR}/../.." status --short. If the tree has
uncommitted modifications you did not make, ANOTHER session is likely mid-flight
in the engine repo — tell the user what you found and ask whether to wait or
proceed (scope-lock if proceeding in parallel). Never build on top of a stranger's
uncommitted edits silently.
cd "${CLAUDE_SKILL_DIR}/../.." && python launch.py --check — verify the toolchain.
- Brand check: does
brands/<id>.json exist for the product? If not, run the
PLAYBOOK's "Onboarding a new brand" section first (tokens from the product repo's
DESIGN.md/tailwind/CSS vars; mark component; registries). Ask the user only for
values you cannot derive.
- For hero creative, choose a direction with references/provenance, approve a style
frame, and build an audio-bearing animatic before finish work. Use capture, native UI,
2D, 3D, or hybrid shots according to the product proof, not a house-style ritual.
- Execute the asset recipe with
--project PROJECT. Remotion commands that use staged
media also pass --public-dir=PROJECT/marketing/assets/<brand>/public.
- Inspect representative stills before any full render. For a production film, inspect
start/middle/end evidence for every shot and watch the complete scored cut with sound.
- Run the asset gates plus
node scripts/check-audio.mjs <brand> --project PROJECT.
Narration is the default; music-only is an explicit recorded exception. Mechanical
PASS never substitutes for the named non-author “would I share this?” review.
- The finished artifact already lives in PROJECT. Send it to the user; it is not done
until they have seen it. Commit only reusable ENGINE source/config changes and the
product-owned run artifacts appropriate for PROJECT.
Non-negotiables
- Brand values only from
brands/<id>.json via getBrand(brandId); never literal hex
in templates. Honor the brand's stated color rules (noban: profit gold, never green).
- Nullable asset props + placeholder fallbacks (clean-clone smoke stays green).
- Production generators never write personal/product material into ENGINE. Diagnostic
probes use the explicit temp mode supplied by their wrapper and stay under OS temp.
- Copy: no em dashes, no hype words.
- Fail loudly; generated props files are edited via their builder scripts only.
Token discipline
Recipes are solved — execute, don't explore. Render logs: | tail -2. Inspect
stills, never videos (extract frames via npx remotion ffmpeg when needed).
Subagent any visual-tuning loop so iteration images land in discarded context.
Routine runs work fine on Opus/Sonnet; escalate model tier only for new template
design or visual bugs the PLAYBOOK doesn't cover.
1---2name: marketing-studio-23description: Use when generating any brand video, animation, image, or audio asset (logo reveal, social clip, product demo, launch video, OG image, README GIF, music, voiceover) for any product/repo, or when working inside the marketing-studio engine repo. Required background for /logo-reveal, /social-clip, /product-demo, /launch-video, /og-assets, /audio-track.4---56# Marketing Studio78Reusable video/animation/image source lives in one engine repo (Remotion + Blender +9Playwright + ComfyUI feeders). Its root is:1011 ${CLAUDE_SKILL_DIR}/../..1213Call it ENGINE below. The product repo is PROJECT. Reusable source changes belong in14ENGINE; every generated input, capture, audio file, prop, public-stage asset, review15record, render, and delivery file belongs in16`PROJECT/marketing/assets/<brand>/`. Pass `--project PROJECT` to generators and17renderers. Do not render into ENGINE and copy out later.1819**REQUIRED READING before any asset work:** `${CLAUDE_SKILL_DIR}/../../docs/PLAYBOOK.md`20(engine map, onboarding, process, delivery contract) plus ONLY the21`${CLAUDE_SKILL_DIR}/../../docs/playbook/<topic>.md` files the recipe names; do not22read the other topic files. Those were expensive to discover; do not re-derive or23second-guess them.2425## Workflow shape (every asset skill follows this)26270. Shared-repo guard: `git -C "${CLAUDE_SKILL_DIR}/../.." status --short`. If the tree has28 uncommitted modifications you did not make, ANOTHER session is likely mid-flight29 in the engine repo — tell the user what you found and ask whether to wait or30 proceed (scope-lock if proceeding in parallel). Never build on top of a stranger's31 uncommitted edits silently.321. `cd "${CLAUDE_SKILL_DIR}/../.." && python launch.py --check` — verify the toolchain.332. Brand check: does `brands/<id>.json` exist for the product? If not, run the34 PLAYBOOK's "Onboarding a new brand" section first (tokens from the product repo's35 DESIGN.md/tailwind/CSS vars; mark component; registries). Ask the user only for36 values you cannot derive.373. For hero creative, choose a direction with references/provenance, approve a style38 frame, and build an audio-bearing animatic before finish work. Use capture, native UI,39 2D, 3D, or hybrid shots according to the product proof, not a house-style ritual.404. Execute the asset recipe with `--project PROJECT`. Remotion commands that use staged41 media also pass `--public-dir=PROJECT/marketing/assets/<brand>/public`.425. Inspect representative stills before any full render. For a production film, inspect43 start/middle/end evidence for every shot and watch the complete scored cut with sound.446. Run the asset gates plus `node scripts/check-audio.mjs <brand> --project PROJECT`.45 Narration is the default; music-only is an explicit recorded exception. Mechanical46 PASS never substitutes for the named non-author “would I share this?” review.477. The finished artifact already lives in PROJECT. Send it to the user; it is not done48 until they have seen it. Commit only reusable ENGINE source/config changes and the49 product-owned run artifacts appropriate for PROJECT.5051## Non-negotiables5253- Brand values only from `brands/<id>.json` via `getBrand(brandId)`; never literal hex54 in templates. Honor the brand's stated color rules (noban: profit gold, never green).55- Nullable asset props + placeholder fallbacks (clean-clone smoke stays green).56- Production generators never write personal/product material into ENGINE. Diagnostic57 probes use the explicit temp mode supplied by their wrapper and stay under OS temp.58- Copy: no em dashes, no hype words.59- Fail loudly; generated props files are edited via their builder scripts only.6061## Token discipline6263Recipes are solved — execute, don't explore. Render logs: `| tail -2`. Inspect64stills, never videos (extract frames via `npx remotion ffmpeg` when needed).65Subagent any visual-tuning loop so iteration images land in discarded context.66Routine runs work fine on Opus/Sonnet; escalate model tier only for new template67design or visual bugs the PLAYBOOK doesn't cover.