OPS ► GTM COMMAND CENTER skill

OPS on-demand: This skill should be used when the user asks to "go to market", "GTM plan", or…

by Lifecycle-Innovations-Limited·MIT license·★ 543 Stars on the repo·GitHub ↗

Use now

Inside this skill

SKILL.md · the author's own words
# OPS ► GTM COMMAND CENTER

Load `ops-rules` before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If `AskUserQuestion` / `Work…

Strategy layer that sits on top of `/marketing`. `/marketing` runs campaigns; `/gtm` decides what to run, across paid, unpaid, sales, and A…

## Runtime Context

Before executing, load available context:

1. **Preferences**: Read `${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json`
   - `timezone` — timestamp all output correctly
   - `gtm_default_project`, `gtm_default_audience`, `gtm_brand_voice` — project-level defaults when set
   - `gtm_monthly_budget`, `gtm_stage` (`pre-launch|beta|ga|scale`) — used to tune channel recommendations

2. **Cached plans**: List `${CLAUDE_PLUGIN_DATA_DIR}/gtm/*.md` to surface recent plans. Never overwrite a prior plan file — always append a…

Word-for-word excerpt, not a result. Read the full SKILL.md ↓

Files of OPS ► GTM COMMAND CENTER

Lifecycle-Innovations-Limited/main1 file shown
SKILL.md
Show the full text307 lines

OPS ► GTM COMMAND CENTER

Load ops-rules before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If AskUserQuestion / Workflow are missing, follow Rule 10 in ops-rules (Hermes: numbered options / two-turn Telegram card; delegate_task).

Strategy layer that sits on top of /marketing. /marketing runs campaigns; /gtm decides what to run, across paid, unpaid, sales, and AI-automation channels, and then hands the executable pieces to /marketing via the Skill tool.

Runtime Context

Before executing, load available context:

  1. Preferences: Read ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json

    • timezone — timestamp all output correctly
    • gtm_default_project, gtm_default_audience, gtm_brand_voice — project-level defaults when set
    • gtm_monthly_budget, gtm_stage (pre-launch|beta|ga|scale) — used to tune channel recommendations
  2. Cached plans: List ${CLAUDE_PLUGIN_DATA_DIR}/gtm/*.md to surface recent plans. Never overwrite a prior plan file — always append a new dated file.

  3. Daemon health: Read ${CLAUDE_PLUGIN_DATA_DIR}/daemon-health.json. If action_needed is not null, surface it before running any long planning flow.

  4. Repo auto-scan (background): For the current working directory, in parallel and with run_in_background: true:

    • git remote -v → infer project slug and org
    • cat README.md (or README.*) → product description, ICP hints
    • Glob package.json, pyproject.toml, Cargo.toml, go.mod → tech stack
    • Glob .planning/**/*.md and docs/**/*.md → prior briefs, positioning notes
    • Resolve: project name, one-line pitch, primary tech, existing channels hinted in the repo
  5. /marketing credential probe (read-only): Do NOT re-resolve API keys in this skill. Instead, when the user asks to launch something, delegate to /marketing via the Skill tool — /marketing owns the credential resolution chain (userConfig → env vars → Doppler → Dashlane → Keychain → gcloud ADC).

Agent Teams support

If CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 is set, use Agent Teams for the plan sub-command so the four research agents share context and report progress in real-time:

TeamCreate("gtm-research-team")
Agent(team_name="gtm-research-team", name="paid-research",       prompt="Research paid acquisition channels that fit ${PROJECT_TYPE} at ${STAGE} with $${MONTHLY_BUDGET}/mo. Return a ranked list with fit signals, expected CAC, and which /marketing sub-command (if any) executes each channel.")
Agent(team_name="gtm-research-team", name="unpaid-research",     prompt="Research organic channels (SEO, content, community, PR, partnerships, referrals, lifecycle email) for ${PROJECT_TYPE} at ${STAGE}. Return ranked list with effort estimate, time-to-signal, and /marketing sub-command mapping.")
Agent(team_name="gtm-research-team", name="sales-research",      prompt="Design a sales motion for ${PROJECT_TYPE}: outbound vs inbound vs PLG vs channel. Propose a 30/60/90 plan with concrete activities and target metrics.")
Agent(team_name="gtm-research-team", name="automation-research", prompt="Propose AI-automation recipes: lead enrichment, personalized outreach, content ops, lifecycle copy, support deflection, lead scoring. For each, list trigger, model/tool stack, and where it plugs into /marketing.")

If the flag is NOT set, use standard fire-and-forget subagents with the same four prompts.


Sub-command Routing

Route $ARGUMENTS to the correct section below:

Input Action
(empty), plan Full GTM plan across all four avenues
paid Paid acquisition deep-dive (Meta, Google, LinkedIn, TikTok, affiliates, sponsorships)
unpaid Organic deep-dive (SEO, content, community, PR, partnerships, referrals, lifecycle email)
sales Sales motion (outbound, inbound, PLG, channel / partner)
automation AI-automation playbook for GTM
launch 30/60/90 launch calendar + pre-flight checklist
brief One-page positioning brief (ICP, value prop, messaging pillars)
setup Configure default project, audience, budget tier, brand voice

Arguments are free-form — treat /gtm plan for my-project $2k/mo pre-launch as equivalent to plan with intake values pre-filled.


Project Intake

Before producing any plan section, make sure the following are known. Source them in this order — only ask the user for what's still missing.

  1. Auto-scan the repo (step 4 of Runtime Context).
  2. Read prefs for gtm_default_* keys.
  3. Parse free-text in $ARGUMENTS for budget, stage, and project name.
  4. AskUserQuestion for gaps — respect Rule 1 (max 4 options per call; batch if needed).

Use these four questions in order, skipping any already known:

  • Project type — [B2B SaaS, B2C product, Marketplace, Dev tool / API]
  • Stage — [Pre-launch, Beta / early access, GA (live), Scale (growth)]
  • Primary goal (next 90 days) — [Awareness, Signups / leads, Revenue, Retention / expansion]
  • Monthly budget tier — [<$1k, $1k–5k, $5k–25k, $25k+]

If a Rule-1 batch overflows (e.g. more than 4 project types needed), paginate with [More options...] as the 4th slot.

Per Rule 3, never silently skip an intake question — if the user hits Escape, offer [Paste manually] / [Use default] / [Skip this only].


Channel / Avenue Catalog

See references/catalog.md.

plan — full GTM plan (default)

  1. Intake per Project Intake section.

  2. Spawn the four research agents (Agent Teams if flag set, else fire-and-forget).

  3. Assemble the plan in this order:

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     GTM PLAN — [project]  ([stage], [goal], $[budget]/mo)
     [timestamp]
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     POSITIONING
      ICP:            [one sentence]
      Value prop:     [one sentence]
      Messaging:      [3 pillars, comma-separated]
    
     PAID (next 30 days)
      1. [Channel]  $[X]/mo  Expected CAC: $[X]  Execute: /marketing ads
      2. [Channel]  $[X]/mo  Expected CAC: $[X]  Execute: manual
    
     UNPAID (next 90 days)
      1. [Channel]  Effort: [L/M/H]  Signal in: [X wks]  Execute: /marketing seo
      2. [Channel]  ...
    
     SALES
      Motion:         [Outbound / Inbound / PLG / Channel]
      30/60/90:       [one line summary]
    
     AUTOMATION (AI-powered)
      1. [Recipe]     Plugs into: /marketing email
      2. [Recipe]     Plugs into: outbound
    
     KPIs
      North star:     [metric + target]
      Leading:        [3 leading indicators]
    
     BUDGET ROLLUP
      Paid:           $[X]/mo
      Tools/SaaS:     $[X]/mo
      Total:          $[X]/mo
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
  4. Persist the plan to ${CLAUDE_PLUGIN_DATA_DIR}/gtm/<project-slug>-$(date +%Y-%m-%d).md (create the directory if missing). Never overwrite — if the file exists, append -v2, -v3.

  5. Handoff prompt — end with an AskUserQuestion (≤4 options per Rule 1):

    • [Launch via /marketing] — hand top executable items to /marketing
    • [Save only] — keep the plan file, take no action
    • [Refine plan] — re-run with adjusted intake
    • [Schedule follow-up] — revisit in 7/30 days (delegate to /ops cron if available)

On [Launch via /marketing], iterate through plan items whose execution path starts with /marketing and invoke them one at a time via the Skill tool:

Skill("ops-marketing", args="campaigns")
Skill("ops-marketing", args="ads")
Skill("ops-marketing", args="email")

Never silently skip an item (Rule 3) — for each, ask [Launch, Skip, Edit first].

Per Rule 5, do NOT auto-launch anything that spends money or sends to real recipients without explicit per-item confirmation. The plan recommends; /marketing executes; the user approves each paid or outbound action.


paid — paid acquisition deep-dive

Same intake, but only spawn the paid-research agent. Render just the PAID block, with up to 5 channel rows and for each:

  • Expected CAC range (cite source or reasoning)
  • Creative angle suggestion
  • Starting budget
  • Attribution setup note (how /marketing attribution will measure it)
  • Execute: line pointing to the /marketing sub-command or manual

End with the same handoff prompt as plan, scoped to paid channels.


unpaid — organic deep-dive

Spawn unpaid-research only. For each recommended channel output:

  • Why it fits (fit signals from intake)
  • First-30-days concrete actions (3 bullets)
  • Time-to-signal
  • Measurement: which /marketing sub-command tracks it (/marketing seo, /marketing email, /marketing instagram) or manual + tool
  • Lifecycle email is first-class here — recommend specific Klaviyo flows and note that /marketing email can scaffold them

sales — sales motion

Spawn sales-research only. Produce:

  1. Motion pick with one-paragraph rationale (Outbound / Inbound / PLG / Channel — Rule 1: these are the exact 4 options if you need the user to choose).
  2. ICP slice — which segment to hit first, sized from intake.
  3. 30/60/90 plan — week-by-week activities (e.g. week 1: build list of 500 accounts; week 2: 200 outbound opens; …).
  4. Tooling — CRM, enrichment, sequencer; note when AI automation from the automation section fits.
  5. Handoff — offer [Automate outreach via /gtm automation, Skip, Edit motion].

automation — AI automation playbook

Spawn automation-research only. Render each recipe with:

  • Trigger condition (what event fires it)
  • Model / tool stack (default to Claude + the ops tool listed in the catalog)
  • Integration point — specifically, which /marketing sub-command or external system it reads from and writes to
  • Risk flags (PII, cost, brand-voice drift) and the guardrails that mitigate them
  • Starter prompt / pseudo-code snippet so the user can copy-paste

End with AskUserQuestion offering [Scaffold recipe now, Save only, Pick different recipe].


launch — 30/60/90 launch calendar

Used at stage = pre-launch or beta. Produces a week-by-week calendar of launch activities across all four avenues.

Required pre-flight checklist (render and check what's ready vs open):

☐ Positioning brief  →  /gtm brief
☐ Landing page live  →  manual
☐ Analytics wired    →  /marketing setup (GA4 + GSC)
☐ Email capture live →  /marketing email  (Klaviyo list)
☐ Ad accounts ready  →  /marketing setup (Meta, Google)
☐ Social handles claimed   →  manual
☐ Product Hunt / HN plan   →  this skill, below
☐ Press / creator list     →  manual

Launch-day playbook: render hourly timeline for T-7d through T+14d, with concrete actions and the /marketing command (or manual step) for each.


brief — one-page positioning brief

Fast path — does NOT spawn the four research agents. Just intake + a single call to write the brief. Fields: ICP, Pain, Value prop, 3 messaging pillars, Proof points, Anti-positioning (who it's NOT for). Save to ${CLAUDE_PLUGIN_DATA_DIR}/gtm/<project-slug>-brief-$(date +%Y-%m-%d).md.

This is the cheapest entry point — recommend running /gtm brief before /gtm plan when the project's positioning isn't already written down.


setup

Configure GTM defaults so subsequent runs skip the intake questions. Per Rule 4, run every Bash call with run_in_background: true unless the result is needed for the very next decision.

Auto-scan (background) first:

# Existing prefs
jq -r '{project: .gtm_default_project, audience: .gtm_default_audience, voice: .gtm_brand_voice, budget: .gtm_monthly_budget, stage: .gtm_stage}' "$PREFS_PATH" 2>/dev/null

# Repo signals
git -C "$PWD" remote get-url origin 2>/dev/null
head -50 README.md 2>/dev/null
ls .planning/ 2>/dev/null

Then prompt for what's missing (≤4 options per Rule 1), in this order:

  1. Default project name — free-text, pre-filled from git remote slug
  2. Project type — [B2B SaaS, B2C product, Marketplace, Dev tool / API]
  3. Stage — [Pre-launch, Beta, GA, Scale]
  4. Monthly budget tier — [<$1k, $1k–5k, $5k–25k, $25k+]
  5. Brand voice — [Playful, Professional, Technical, Bold]

Save to $PREFS_PATH as gtm_default_project, gtm_project_type, gtm_stage, gtm_monthly_budget, gtm_brand_voice. Never write API keys here — GTM does not own any credentials (/marketing does).

Finish with a smoke test: run /gtm brief in background and report ✓ setup complete — try /gtm plan or ✗ [error].


Plugin Rules compliance (required reading)

All behavior above respects claude-ops/CLAUDE.md:

  • Rule 0 — public repo: every example above uses your-project, [email protected], <YOUR_TOKEN>. Never save user-specific data outside $PREFS_PATH or ${CLAUDE_PLUGIN_DATA_DIR}/gtm/.
  • Rule 1 — ≤4 options per AskUserQuestion: every prompt in this file lists exactly ≤4. Paginate with [More options...] if a dynamic list grows past 4.
  • Rule 3 — never auto-skip: on launch handoff, every plan item gets an explicit [Launch, Skip, Edit first] prompt. No silent skipping.
  • Rule 4 — background by default during setup: all Bash calls in the setup flow use run_in_background: true.
  • Rule 5 — destructive actions need explicit confirmation: /gtm never spends money or sends messages directly — it delegates to /marketing, which owns per-action confirmation. Recommendations are just that.

Why this skill is thin

/gtm deliberately does NOT re-implement channel APIs. Credential resolution, curl calls, daemon data, and dashboards all live in /marketing. This skill is a strategy-and-handoff layer. If a capability belongs to a channel API, add it to /marketing; if it belongs to planning, it goes here.

Additional resources

Channel catalogue: references/catalog.md. CLI detail lives in the /marketing skill, which owns credential resolution and the channel API calls.

1---
2name: ops-gtm
3description: "OPS on-demand: This skill should be used when the user asks to \"go to market\", \"GTM plan\", or…"
4argument-hint: '[plan|paid|unpaid|sales|automation|launch|brief|setup]'
5allowed-tools:
6 - Bash
7 - Read
8 - Write
9 - Grep
10 - Glob
11 - Agent
12 - TeamCreate
13 - SendMessage
14 - AskUserQuestion
15 - WebFetch
16 - WebSearch
17 - Skill
18effort: medium
19maxTurns: 40
20context: fork
21---
22 
23# OPS ► GTM COMMAND CENTER
24 
25Load `ops-rules` before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If `AskUserQuestion` / `Workflow` are missing, follow Rule 10 in `ops-rules` (Hermes: numbered options / two-turn Telegram card; `delegate_task`).
26 
27Strategy layer that sits on top of `/marketing`. `/marketing` runs campaigns; `/gtm` decides what to run, across paid, unpaid, sales, and AI-automation channels, and then hands the executable pieces to `/marketing` via the Skill tool.
28 
29## Runtime Context
30 
31Before executing, load available context:
32 
331. **Preferences**: Read `${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json`
34 - `timezone` — timestamp all output correctly
35 - `gtm_default_project`, `gtm_default_audience`, `gtm_brand_voice` — project-level defaults when set
36 - `gtm_monthly_budget`, `gtm_stage` (`pre-launch|beta|ga|scale`) — used to tune channel recommendations
37 
382. **Cached plans**: List `${CLAUDE_PLUGIN_DATA_DIR}/gtm/*.md` to surface recent plans. Never overwrite a prior plan file — always append a new dated file.
39 
403. **Daemon health**: Read `${CLAUDE_PLUGIN_DATA_DIR}/daemon-health.json`. If `action_needed` is not null, surface it before running any long planning flow.
41 
424. **Repo auto-scan (background)**: For the current working directory, in parallel and with `run_in_background: true`:
43 - `git remote -v` → infer project slug and org
44 - `cat README.md` (or `README.*`) → product description, ICP hints
45 - Glob `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod` → tech stack
46 - Glob `.planning/**/*.md` and `docs/**/*.md` → prior briefs, positioning notes
47 - Resolve: project name, one-line pitch, primary tech, existing channels hinted in the repo
48 
495. **`/marketing` credential probe (read-only)**: Do NOT re-resolve API keys in this skill. Instead, when the user asks to launch something, delegate to `/marketing` via the Skill tool — `/marketing` owns the credential resolution chain (userConfig → env vars → Doppler → Dashlane → Keychain → gcloud ADC).
50 
51## Agent Teams support
52 
53If `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` is set, use **Agent Teams** for the `plan` sub-command so the four research agents share context and report progress in real-time:
54 
55```
56TeamCreate("gtm-research-team")
57Agent(team_name="gtm-research-team", name="paid-research", prompt="Research paid acquisition channels that fit ${PROJECT_TYPE} at ${STAGE} with $${MONTHLY_BUDGET}/mo. Return a ranked list with fit signals, expected CAC, and which /marketing sub-command (if any) executes each channel.")
58Agent(team_name="gtm-research-team", name="unpaid-research", prompt="Research organic channels (SEO, content, community, PR, partnerships, referrals, lifecycle email) for ${PROJECT_TYPE} at ${STAGE}. Return ranked list with effort estimate, time-to-signal, and /marketing sub-command mapping.")
59Agent(team_name="gtm-research-team", name="sales-research", prompt="Design a sales motion for ${PROJECT_TYPE}: outbound vs inbound vs PLG vs channel. Propose a 30/60/90 plan with concrete activities and target metrics.")
60Agent(team_name="gtm-research-team", name="automation-research", prompt="Propose AI-automation recipes: lead enrichment, personalized outreach, content ops, lifecycle copy, support deflection, lead scoring. For each, list trigger, model/tool stack, and where it plugs into /marketing.")
61```
62 
63If the flag is NOT set, use standard fire-and-forget subagents with the same four prompts.
64 
65---
66 
67## Sub-command Routing
68 
69Route `$ARGUMENTS` to the correct section below:
70 
71| Input | Action |
72| ------------- | ----------------------------------------------------------------------------------------- |
73| (empty), plan | Full GTM plan across all four avenues |
74| paid | Paid acquisition deep-dive (Meta, Google, LinkedIn, TikTok, affiliates, sponsorships) |
75| unpaid | Organic deep-dive (SEO, content, community, PR, partnerships, referrals, lifecycle email) |
76| sales | Sales motion (outbound, inbound, PLG, channel / partner) |
77| automation | AI-automation playbook for GTM |
78| launch | 30/60/90 launch calendar + pre-flight checklist |
79| brief | One-page positioning brief (ICP, value prop, messaging pillars) |
80| setup | Configure default project, audience, budget tier, brand voice |
81 
82Arguments are free-form — treat `/gtm plan for my-project $2k/mo pre-launch` as equivalent to `plan` with intake values pre-filled.
83 
84---
85 
86## Project Intake
87 
88Before producing any plan section, make sure the following are known. Source them in this order — only ask the user for what's still missing.
89 
901. **Auto-scan the repo** (step 4 of Runtime Context).
912. **Read prefs** for `gtm_default_*` keys.
923. **Parse free-text in `$ARGUMENTS`** for budget, stage, and project name.
934. **AskUserQuestion for gaps** — respect Rule 1 (max 4 options per call; batch if needed).
94 
95Use these four questions in order, skipping any already known:
96 
97- **Project type** — `[B2B SaaS, B2C product, Marketplace, Dev tool / API]`
98- **Stage** — `[Pre-launch, Beta / early access, GA (live), Scale (growth)]`
99- **Primary goal (next 90 days)** — `[Awareness, Signups / leads, Revenue, Retention / expansion]`
100- **Monthly budget tier** — `[<$1k, $1k–5k, $5k–25k, $25k+]`
101 
102If a Rule-1 batch overflows (e.g. more than 4 project types needed), paginate with `[More options...]` as the 4th slot.
103 
104Per Rule 3, never silently skip an intake question — if the user hits Escape, offer `[Paste manually]` / `[Use default]` / `[Skip this only]`.
105 
106---
107 
108## Channel / Avenue Catalog
109 
110See `references/catalog.md`.
111 
112## plan — full GTM plan (default)
113 
1141. **Intake** per Project Intake section.
1152. **Spawn the four research agents** (Agent Teams if flag set, else fire-and-forget).
1163. **Assemble the plan** in this order:
117 
118 ```
119 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
120 GTM PLAN — [project] ([stage], [goal], $[budget]/mo)
121 [timestamp]
122 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
123 POSITIONING
124 ICP: [one sentence]
125 Value prop: [one sentence]
126 Messaging: [3 pillars, comma-separated]
127 
128 PAID (next 30 days)
129 1. [Channel] $[X]/mo Expected CAC: $[X] Execute: /marketing ads
130 2. [Channel] $[X]/mo Expected CAC: $[X] Execute: manual
131 
132 UNPAID (next 90 days)
133 1. [Channel] Effort: [L/M/H] Signal in: [X wks] Execute: /marketing seo
134 2. [Channel] ...
135 
136 SALES
137 Motion: [Outbound / Inbound / PLG / Channel]
138 30/60/90: [one line summary]
139 
140 AUTOMATION (AI-powered)
141 1. [Recipe] Plugs into: /marketing email
142 2. [Recipe] Plugs into: outbound
143 
144 KPIs
145 North star: [metric + target]
146 Leading: [3 leading indicators]
147 
148 BUDGET ROLLUP
149 Paid: $[X]/mo
150 Tools/SaaS: $[X]/mo
151 Total: $[X]/mo
152 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
153 ```
154 
1554. **Persist the plan** to `${CLAUDE_PLUGIN_DATA_DIR}/gtm/<project-slug>-$(date +%Y-%m-%d).md` (create the directory if missing). Never overwrite — if the file exists, append `-v2`, `-v3`.
1565. **Handoff prompt** — end with an `AskUserQuestion` (≤4 options per Rule 1):
157 - `[Launch via /marketing]` — hand top executable items to `/marketing`
158 - `[Save only]` — keep the plan file, take no action
159 - `[Refine plan]` — re-run with adjusted intake
160 - `[Schedule follow-up]` — revisit in 7/30 days (delegate to `/ops cron` if available)
161 
162On `[Launch via /marketing]`, iterate through plan items whose execution path starts with `/marketing` and invoke them one at a time via the Skill tool:
163 
164```
165Skill("ops-marketing", args="campaigns")
166Skill("ops-marketing", args="ads")
167Skill("ops-marketing", args="email")
168```
169 
170Never silently skip an item (Rule 3) — for each, ask `[Launch, Skip, Edit first]`.
171 
172Per Rule 5, do NOT auto-launch anything that spends money or sends to real recipients without explicit per-item confirmation. The plan recommends; `/marketing` executes; the user approves each paid or outbound action.
173 
174---
175 
176## paid — paid acquisition deep-dive
177 
178Same intake, but only spawn the `paid-research` agent. Render just the PAID block, with up to 5 channel rows and for each:
179 
180- Expected CAC range (cite source or reasoning)
181- Creative angle suggestion
182- Starting budget
183- Attribution setup note (how `/marketing attribution` will measure it)
184- `Execute:` line pointing to the `/marketing` sub-command or `manual`
185 
186End with the same handoff prompt as `plan`, scoped to paid channels.
187 
188---
189 
190## unpaid — organic deep-dive
191 
192Spawn `unpaid-research` only. For each recommended channel output:
193 
194- Why it fits (fit signals from intake)
195- First-30-days concrete actions (3 bullets)
196- Time-to-signal
197- Measurement: which `/marketing` sub-command tracks it (`/marketing seo`, `/marketing email`, `/marketing instagram`) or `manual + tool`
198- Lifecycle email is first-class here — recommend specific Klaviyo flows and note that `/marketing email` can scaffold them
199 
200---
201 
202## sales — sales motion
203 
204Spawn `sales-research` only. Produce:
205 
2061. **Motion pick** with one-paragraph rationale (Outbound / Inbound / PLG / Channel — Rule 1: these are the exact 4 options if you need the user to choose).
2072. **ICP slice** — which segment to hit first, sized from intake.
2083. **30/60/90 plan** — week-by-week activities (e.g. week 1: build list of 500 accounts; week 2: 200 outbound opens; …).
2094. **Tooling** — CRM, enrichment, sequencer; note when AI automation from the automation section fits.
2105. **Handoff** — offer `[Automate outreach via /gtm automation, Skip, Edit motion]`.
211 
212---
213 
214## automation — AI automation playbook
215 
216Spawn `automation-research` only. Render each recipe with:
217 
218- Trigger condition (what event fires it)
219- Model / tool stack (default to Claude + the ops tool listed in the catalog)
220- Integration point — specifically, which `/marketing` sub-command or external system it reads from and writes to
221- Risk flags (PII, cost, brand-voice drift) and the guardrails that mitigate them
222- Starter prompt / pseudo-code snippet so the user can copy-paste
223 
224End with `AskUserQuestion` offering `[Scaffold recipe now, Save only, Pick different recipe]`.
225 
226---
227 
228## launch — 30/60/90 launch calendar
229 
230Used at stage = pre-launch or beta. Produces a week-by-week calendar of launch activities across all four avenues.
231 
232Required pre-flight checklist (render and check what's ready vs open):
233 
234```
235☐ Positioning brief → /gtm brief
236☐ Landing page live → manual
237☐ Analytics wired → /marketing setup (GA4 + GSC)
238☐ Email capture live → /marketing email (Klaviyo list)
239☐ Ad accounts ready → /marketing setup (Meta, Google)
240☐ Social handles claimed → manual
241☐ Product Hunt / HN plan → this skill, below
242☐ Press / creator list → manual
243```
244 
245Launch-day playbook: render hourly timeline for T-7d through T+14d, with concrete actions and the `/marketing` command (or manual step) for each.
246 
247---
248 
249## brief — one-page positioning brief
250 
251Fast path — does NOT spawn the four research agents. Just intake + a single call to write the brief. Fields: **ICP**, **Pain**, **Value prop**, **3 messaging pillars**, **Proof points**, **Anti-positioning (who it's NOT for)**. Save to `${CLAUDE_PLUGIN_DATA_DIR}/gtm/<project-slug>-brief-$(date +%Y-%m-%d).md`.
252 
253This is the cheapest entry point — recommend running `/gtm brief` before `/gtm plan` when the project's positioning isn't already written down.
254 
255---
256 
257## setup
258 
259Configure GTM defaults so subsequent runs skip the intake questions. Per Rule 4, run every Bash call with `run_in_background: true` unless the result is needed for the very next decision.
260 
261**Auto-scan (background) first:**
262 
263```bash
264# Existing prefs
265jq -r '{project: .gtm_default_project, audience: .gtm_default_audience, voice: .gtm_brand_voice, budget: .gtm_monthly_budget, stage: .gtm_stage}' "$PREFS_PATH" 2>/dev/null
266 
267# Repo signals
268git -C "$PWD" remote get-url origin 2>/dev/null
269head -50 README.md 2>/dev/null
270ls .planning/ 2>/dev/null
271```
272 
273Then prompt for what's missing (≤4 options per Rule 1), in this order:
274 
2751. **Default project name** — free-text, pre-filled from git remote slug
2762. **Project type** — `[B2B SaaS, B2C product, Marketplace, Dev tool / API]`
2773. **Stage** — `[Pre-launch, Beta, GA, Scale]`
2784. **Monthly budget tier** — `[<$1k, $1k–5k, $5k–25k, $25k+]`
2795. **Brand voice** — `[Playful, Professional, Technical, Bold]`
280 
281Save to `$PREFS_PATH` as `gtm_default_project`, `gtm_project_type`, `gtm_stage`, `gtm_monthly_budget`, `gtm_brand_voice`. Never write API keys here — GTM does not own any credentials (`/marketing` does).
282 
283Finish with a smoke test: run `/gtm brief` in background and report `✓ setup complete — try /gtm plan` or `✗ [error]`.
284 
285---
286 
287## Plugin Rules compliance (required reading)
288 
289All behavior above respects `claude-ops/CLAUDE.md`:
290 
291- **Rule 0 — public repo**: every example above uses `your-project`, `[email protected]`, `<YOUR_TOKEN>`. Never save user-specific data outside `$PREFS_PATH` or `${CLAUDE_PLUGIN_DATA_DIR}/gtm/`.
292- **Rule 1 — ≤4 options per AskUserQuestion**: every prompt in this file lists exactly ≤4. Paginate with `[More options...]` if a dynamic list grows past 4.
293- **Rule 3 — never auto-skip**: on launch handoff, every plan item gets an explicit `[Launch, Skip, Edit first]` prompt. No silent skipping.
294- **Rule 4 — background by default during setup**: all Bash calls in the `setup` flow use `run_in_background: true`.
295- **Rule 5 — destructive actions need explicit confirmation**: `/gtm` never spends money or sends messages directly — it delegates to `/marketing`, which owns per-action confirmation. Recommendations are just that.
296 
297---
298 
299## Why this skill is thin
300 
301`/gtm` deliberately does NOT re-implement channel APIs. Credential resolution, curl calls, daemon data, and dashboards all live in `/marketing`. This skill is a strategy-and-handoff layer. If a capability belongs to a channel API, add it to `/marketing`; if it belongs to planning, it goes here.
302 
303## Additional resources
304 
305Channel catalogue: `references/catalog.md`. CLI detail lives in the `/marketing` skill,
306which owns credential resolution and the channel API calls.
307 

Discussion