announce
Use when a product or feature is ready to go public — after shipping, when the user says "announce it", "go live", "tell people about it", or wants a release…
Take a developed project end-to-end through launch — domain, hosting, payments, email infra, algorithm-researched copy, and multi-platform distribution — with zero copy-paste. Trigger on "launch <project>", "ship <project>", "take <project> live", or "/launch <dir>".
$ npx -y skills add ucsandman/marketing-studio --skill launch --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/launchContext preview
The summary Claude sees to decide when to auto-load this skill.
Take a developed project end-to-end through launch — domain, hosting, payments, email infra, algorithm-researched copy, and multi-platform distribution — with zero copy-paste. Trigger on "launch <project>", "ship <project>", "take <project> live", or "/launch <dir>".
name: launch description: Take a developed project end-to-end through launch — domain, hosting, payments, email infra, algorithm-researched copy, and multi-platform distribution — with zero copy-paste. Trigger on "launch <project>", "ship <project>", "take <project> live", or "/launch <dir>".
You are orchestrating a product launch using two layers:
Honesty rule: each step below is labeled **[CLI]** or **[session]**. Don't do session work by shelling out, and don't reimplement CLI work inline.
Target `<dir>` is the project directory being launched (sibling of the engine repo).
Humans can drive the same engine visually with `launch ui` (local dashboard, same gates — see docs/ui-dashboard.md); this skill remains the autonomous path.
launch init <dir> --domain <domain> --price <price> [--name --tagline --audience]
Pull flag values from the conversation. Read back `<dir>/.launch/launch.config.json` and confirm the summary with the user. Re-run with `--force` if they correct anything.
1. `select_project` (or `create_project` if this product has no DashClaw project yet). 2. `create_launch` with `declared_stack` from the config — typically `["domain", "vercel", "stripe", "resend"]`. 3. `preflight_launch` — validates every provider token BEFORE any money is spent. If it fails, STOP and present a remediation table (provider → failing check → fix); do not proceed to spend steps.
1. `check_domain_availability` for the config domain (and 2-3 alternatives if taken). 2. Present price and alternatives to the user. 3. **SPEND GATE: ask the user for explicit approval with AskUserQuestion and WAIT for their answer. Never call `purchase_domain` without a fresh approval in this conversation.** Record the approval decision via `dashclaw_guard` + `dashclaw_record` for the audit trail. 4. On approval: `purchase_domain`. On decline: skip to step 4 using an already-owned domain or stop.
1. `create_vercel_project` (link the product repo). 2. `create_vercel_deployment` and poll `get_vercel_deployment_status` until READY. 3. `add_vercel_domain` for the purchased domain. 4. `set_dns_records` per Vercel's required records (A/CNAME from the add-domain response); verify with `get_dns_records`. 5. Set any product env vars with `set_vercel_env_var`.
Stripe best practices: create in TEST mode first, verify the full flow, then — and only then — recreate in live mode behind the gate.
1. `create_stripe_product` + `create_stripe_price` (TEST mode) from config pricing. 2. `create_stripe_webhook` pointing at the product's webhook endpoint; store the signing secret as a Vercel env var (`set_vercel_env_var`), never in the repo. 3. Verify test checkout end-to-end. 4. **SPEND GATE: live mode creates real billable objects. Ask the user for explicit approval with AskUserQuestion and WAIT for their answer before recreating product/price/webhook in live mode.** Audit via `dashclaw_guard` + `dashclaw_record`.
1. `create_resend_domain` for the config domain. 2. `set_dns_records` with the DKIM/SPF records from the response. 3. `verify_resend_domain` (DNS propagation can take minutes — poll, don't fail fast).
1. **[CLI]** `launch research <dir>` (live mode — keyless fetchers: x-algorithm README, Algolia Show HN winners, hunted.space, per-sub Reddit rules). 2. **[session]** WebSearch synthesis per platform (queries from THINKING.md: "X algorithm ranking signals <month year>", "<month year> LinkedIn algorithm what's working", PH featuring criteria). Write the synthesis into each brief's `## Session research` section — the CLI preserves that section on regeneration. 3. **[CLI]** `launch research <dir> --check` must pass (all briefs fresh) before copy.
1. **[CLI]** `launch copy <dir> --scaffold`. 2. **[session]** Fill every draft in `<dir>/.launch/drafts/` with real copy written from the research briefs (hooks from Show HN winners, X thread structure, LinkedIn link-in-first-comment, per-sub Reddit angles, email/SMS from the announcement templates). Replace every `{{placeholder}}` including `{{unsubscribeUrl}}`. 3. **[CLI]** `launch copy <dir> --validate` — loop fill→validate until exit 0.
Render EVERY draft (all platforms + the email HTML + SMS text) to the user in one review block. **Ask for explicit approval with AskUserQuestion (multiSelect per-platform opt-out) and WAIT for the user's answer. Nothing is published until the user approves; platforms they deselect are skipped.** Record the decision via `dashclaw_record`.
1. **[CLI]** `launch post <dir> --all --live` — posts X, Bluesky, Facebook, LinkedIn, YouTube, Reddit via API; submits sitemap + URL inspection to Google; skips blocked providers with a summary; the posted-ledger makes re-runs idempotent. 2. **[CLI]** Assisted platforms at their recommended times (from the briefs):
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,
Repo: ucsandman/marketing-studio
Use when a product or feature is ready to go public — after shipping, when the user says "announce it", "go live", "tell people about it", or wants a release…
Use when the user wants music, voiceover, narration, or a soundtrack added to a video asset, OR wants standalone generated audio for any purpose (e.g.…
Audit and fix the tells that software was vibe-coded / AI-generated, then give it a small distinctive identity, so it ships looking handcrafted and…
Verify frontend changes end to end after editing a web app, instead of manually clicking through pages. Use this whenever you have changed UI code and need to…
Use when the user wants a full launch video, hero video, or 20–60s product film combining product proof, brand, narration, music, and authored motion.
Use when the user wants a logo reveal / logo animation / brand intro video for any product (e.g. "/logo-reveal", "make a logo reveal for DashClaw", "animated…