dashclaw
Remote approvals, policy checks, and execution evidence for unattended AI agents.
An agent-driven local marketing studio. The bundled Claude Code plugin adds /marketing and /launch: the agent onboards your brand, films your app, writes the asset suite and review evidence into that product repo, then prepares guarded distribution to X,
> /plugin marketplace add ucsandman/marketing-studio> /plugin install marketing-studio@ucsandman
Repo: ucsandman/marketing-studio
What's inside
An agent-driven local marketing studio. The bundled Claude Code plugin adds /marketing
and /launch: the agent onboards your brand, films your app, writes the asset suite and
review evidence into that product repo, then prepares guarded distribution to X,
LinkedIn, Facebook, Reddit, Bluesky, and YouTube. Publishing is dry-run by default.
/marketing
One run produces, in order:
| # | Asset | Skill behind it |
|---|---|---|
| 1 | Logo reveal (Blender + Remotion) | /logo-reveal |
| 2 | Product demo with camera zooms and cursor (Playwright capture) | /product-demo |
| 3 | 30 to 90 second launch video composing demo, logo, and copy | /launch-video |
| 4 | Voiceover and music scored to the launch video (ElevenLabs) | /audio-track |
| 5 | Social clips per platform (X, LinkedIn, TikTok) | /social-clip |
| 6 | OG image, animated OG loop, README GIF | /og-assets |
The order is deliberate: the cheapest composition renders first so brand-token bugs surface before the expensive assets, and the demo is filmed once so its footage can feed downstream work. Audio starts during direction with a scratch voice/music animatic; the final mix is scored against the approved picture. The run keeps a manifest on disk, so a died session resumes where it stopped instead of starting over.
Around those assets, the pipeline adds:
brief.json that every builder consumes. You approve the whole story on a storyboard page before anything renders.motion token block so each brand's choreography feels like itself. Grain size is stated at 1080p and scaled by frame height, so an asset carries the same visual grain at 4K. Optional halation blooms wherever the frame is actually bright rather than glowing a fixed spot, which is the difference between footage that reads photographed and a flat vector comp.judge-av-sync verifying every cue against the timings. Wordless manifests render exactly as before.check-audio: every delivered film carries a mastered track with narration), and judge-drift, which scores the whole output directory as a set. That last one catches the failure no per-file gate can see — assets that are each individually on-brand but collectively fragment into three or four different-looking brands. It emits a worst-first review grid, because attention is reliable over about six tiles, not twenty.manifest.json, a machine-readable index that the launch/ CLI reads to auto-attach videos to X, LinkedIn, Bluesky and YouTube posts, plus LICENCES.md and DISCLOSURE.md — what is synthetic, which platform toggle to set at upload, and which obligations the kit does not yet cover. Unchanged product UIs are never re-filmed thanks to content-hash caching of capture and Blender staging.Each asset also works standalone: run /logo-reveal, /product-demo, /launch-video, /audio-track, /social-clip, or /og-assets on its own from any repo.
/ship-it chains the two halves: /marketing renders the suite, then /launch posts it with the videos attached, through the same approval gates.
Every run keeps its media beside the product that owns it under
marketing/assets/<brand>/. Mission Control shows the full film, shot samples, and
review controls from that workspace. A deliverable production run hashes its
direction, shot plan, every routed props source including caption/audio-bearing
variants, canonical staged-public inventory, final render, samples, and review.
Review identity is a local operator attestation, not authenticated identity. Live
publishing revalidates the current bytes and production verdict before upload. The
current four-shot, 782-frame proof has 12 measured samples and zero failures, but
remains incomplete on nine human stage/full-film checks; it is not an agency-quality
claim. See Production quality for the acceptance
contract and the playbook for the exact commands.
marketing/assets/<brand>/.studio/ (SocialClip, ProductDemo, LogoReveal, LaunchVideo, AnimatedOG, AgentSession for a scripted Claude Code terminal).brands/<id>.json holds your product's tokens (13 colors, 3 fonts, tagline, voice rules), zod-validated. Templates resolve getBrand(brandId) and never hardcode brand values, so a new product is a JSON file and a logo mark component, not a fork.skills/ directory ships the Claude Code skills that operate this repo, including the hard-won gotchas in docs/PLAYBOOK.md (camera math, seamless-loop rules, Blender API traps) so the agent does not re-derive them.The creative acceptance contract, product-owned workspace, baseline evidence, and strict production gate are documented in Production quality.
The engine requires Node 22+ for the studio, Node 24+ for launch/ (the versions CI
exercises), Python 3.10+, and ffmpeg on your PATH. The engine does not require a
particular agent host. Its Python and Node commands can be run by a human or any agent
with local command access.
The packaged slash-command integration is currently specific to
Claude Code: the plugin manifest, installer destination,
and ${CLAUDE_SKILL_DIR} paths all use its skill layout. Codex can operate the underlying
engine and can use these skills when an external harness installs them, but this repository
does not yet provide or test native Codex, OpenClaw, or Hermes installers.
Optional: Blender for 3D plates, an ElevenLabs API key for voiceover and music, and ComfyUI for AI backdrops. A workflow must select an explicit fallback before treating any missing optional tool as non-blocking.
Remotion licence. Every final video renders through Remotion, which is free for individuals and for companies of three people or fewer. Larger companies need a Remotion company licence. That is Remotion's term, separate from this repo's MIT licence.
/plugin marketplace add ucsandman/marketing-studio
/plugin install marketing-studio@ucsandman
Plugin skills are namespaced, so the commands are /marketing-studio:marketing, /marketing-studio:logo-reveal, and so on.
The plugin manifests declare version 2.0.0. Migrating from 1.x requires a product
repository for every production run: pass --project <product-repo> (or invoke a
supported tool from that product worktree). Generated inputs and outputs no longer
default to the installed engine or its legacy out/ tree.
See the changelog for the release status and migration notes.
The engine ships with the plugin, but its npm dependencies do not. Bootstrap once by asking Claude to "bootstrap the marketing studio engine", or run it yourself against the installed plugin directory:
$pluginDir = "C:\path\to\marketing-studio"
python "$pluginDir\launch.py" --bootstrap
npm --prefix "$pluginDir\feeders\diagram" install
npm --prefix "$pluginDir\launch" install
npm --prefix "$pluginDir\launch" run build
The bootstrap command installs the studio and capture-feeder dependencies and then prints
a toolchain report. The two npm commands install the separate diagram and distribution
packages. Replace $pluginDir with the installed plugin directory. Copy .env.example
to .env there if you have a Blender path or an ElevenLabs key.
git clone git@github.com:ucsandman/marketing-studio.git
cd marketing-studio
python launch.py --bootstrap # installs studio + capture deps, then checks the toolchain
npm --prefix feeders/diagram ci # optional diagram feeder
npm --prefix launch ci # distribution CLI + dashboard
npm --prefix launch run build
cp .env.example .env # set BLENDER_PATH / ELEVENLABS_API_KEY if you have them
node scripts/install-skills.mjs # installs /marketing and friends into ~/.claude/skills
The included installer puts unnamespaced commands in ~/.claude/skills (/marketing
rather than /marketing-studio:marketing). Renderer source stays in the clone; production
inputs and outputs still belong to the selected product repository. Other agent hosts can
run the engine commands directly, but need their own compatible skill installation layer.
Then, from your product's repo:
claude
> /marketing
The agent asks one batched round of questions (brand, destination, audio, platforms, checkpoint mode) and runs the whole pipeline. If your brand is new, it derives tokens from your repo's design system (DESIGN.md, Tailwind config, CSS variables) and only asks for what it cannot infer.
| Skill | What it does |
|---|---|
/marketing | The full pipeline: sequencing, gates, run manifest, resume, final QA and delivery gallery |
/logo-reveal | Animated logo reveal video (Blender draw-on choreography composited in Remotion) |
/product-demo | Screen-Studio style demo: films your running app, adds measured camera zooms and cursor |
Remote approvals, policy checks, and execution evidence for unattended AI agents.
FAQ
marketing-studio is a Claude Code plugin with 15 hand-picked skills for marketing work, indexed on Flowy. Install it with the command on its page. It includes announce, audio-track, de-vibe. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it