Skip to content
Back to skills

Ops Gtm

ASecurity

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

  • 538 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
data-aigobashrailsgitapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 21, 2026

npx -y skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-gtm --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ops Gtm?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ops Gtm
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lifecycle-innovations-limited-ops-gtm/badge)](https://www.skillsdirectory.com/skills/lifecycle-innovations-limited-ops-gtm)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ops-gtm
description: "OPS on-demand: This skill should be used when the user asks to \"go to market\", \"GTM plan\", or…"
argument-hint: '[plan|paid|unpaid|sales|automation|launch|brief|setup]'
allowed-tools:
  - Bash
  - Read
  - Write
  - Grep
  - Glob
  - Agent
  - TeamCreate
  - SendMessage
  - AskUserQuestion
  - WebFetch
  - WebSearch
  - Skill
effort: medium
maxTurns: 40
context: fork
---

# 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:**

```bash
# 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`, `you@example.com`, `<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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.