Skip to content
Marketing
Skill

/ship-it

Ship a product end to end — render marketing assets with the marketing studio (/marketing), then run the launch/ flow (/launch) with videos attached to X, LinkedIn, Bluesky and YouTube posts. Run from the product's repo.

From plugin
marketing-studio
25515 skills

Claude Code

$ npx -y skills add ucsandman/marketing-studio --skill ship-it --agent claude-code

SKILL.md

ship-it.SKILL.md
name: ship-it
description: Ship a product end to end — render marketing assets with the marketing studio (/marketing), then run the launch/ flow (/launch) with videos attached to X, LinkedIn, Bluesky and YouTube posts. Run from the product's repo.

/ship-it — develop → public, one command

Run from the product repo you want to ship. Studio root = `${CLAUDE_SKILL_DIR}/../..` (rendering). Its launch CLI lives at `${CLAUDE_SKILL_DIR}/../../launch` (distribution) — run subcommands via `node "${CLAUDE_SKILL_DIR}/../../launch/dist/index.js" <cmd>` or `npx --prefix "${CLAUDE_SKILL_DIR}/../../launch" launch <cmd>`, from the product repo so its `.launch/` state lands there. This skill is the pipeline.

Steps

1. **Find the brand + kit.** Brand id = the product's brand in `${CLAUDE_SKILL_DIR}/../../brands/<id>.json` (ask only if ambiguous). Kit = `<product>/marketing/assets/<brand>/postkit/manifest.json`. 2. **Render if needed.** If the manifest is missing, run `/marketing` first (full pipeline, its own approval gates). If it exists, show its `generatedAt` and ask: reuse or re-render? Staleness is the user's judgment call, never a heuristic. 3. **Launch flow.** In the product repo, run the launch sequence — `launch init` (if no `.launch/launch.config.json`), then research, copy scaffold/fill, validate. Wire the kit: either set `postkitDir` in the config (the dashboard marketing tab does this with a picker) or pass `--kit "<product>/marketing/assets/<brand>/postkit"` to `launch post`. 4. **Dry-run, then post.** `launch post <dir> --all --dry-run` and show the user the previews — X and LinkedIn must show the video upload step. Live posting only after the user confirms, through the normal gates (ledger, validation, typed confirmation in the dashboard). 5. **Manual platforms.** TikTok / Shorts / Instagram are manual by design. Point the user at the dashboard marketing tab (Open folder per platform) or the kit's `POST.md` checklists. YouTube is NOT manual any more: `launch post --all --live` uploads to it whenever the three YOUTUBE_* keys are set. Uploads land private unless `YOUTUBE_PRIVACY` says otherwise -- say so out loud before any live run, and confirm it the same way as every other api-mode platform.

Rules

  • Never skip the dry-run step. Never post live without explicit user confirmation.
  • If the kit manifest promises a video whose file is missing, posting refuses — fix by re-running

`render-matrix.mjs <brand> --project <product> --production` and `build-postkit.mjs <brand> --project <product> --production`, not by unwiring the kit.

  • Live publishing remains blocked until the current media, production plan, per-row

evidence, and named full-film review are hash-bound and PASS. A dry run may preview an incomplete kit but never weakens the live gate.

  • Drafts own the copy; the kit contributes media. Do not paste kit captions over validated drafts.
Read more
@ucsandman
Ships withmarketing-studio

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,

Stars on GitHub

Momentum

stars in total
255
Star history of ucsandman/marketing-studio on GitHub, a chart by star-history.com

Other skills on marketing-studio.

announce

announce

Use when a product or feature is ready to go public — after shipping, when the user says "announce it", "go live", "tell people…

audio-track

audio-track

Use when the user wants music, voiceover, narration, or a soundtrack added to a video asset, OR wants standalone generated audio…

de-vibe

de-vibe

Audit and fix the tells that software was vibe-coded / AI-generated, then give it a small distinctive identity, so it ships…

launch-video

launch-video

Use when the user wants a full launch video, hero video, or 20–60s product film combining product proof, brand, narration, music,…

launch

launch

Take a developed project end-to-end through launch — domain, hosting, payments, email infra, algorithm-researched copy, and…

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about ship-it.

Which coding agents can use ship-it?
ship-it installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.