Skip to content
Marketing
Skill

/campaign-challenger

Challenge an outbound campaign copy by benchmarking it against the user's existing campaigns — what worked, what didn't, what the winners do differently — and return a concrete verdict plus prioritized fixes. Use whenever the user wants to know if a campaign or sequence is good,

From plugin
gtm-system
3813 skills
Install
$ npx -y skills add LaGrowthMachine/gtm-system --skill campaign-challenger --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/campaign-challenger

Context preview

The summary Claude sees to decide when to auto-load this skill.

Challenge an outbound campaign copy by benchmarking it against the user's existing campaigns — what worked, what didn't, what the winners do differently — and return a concrete verdict plus prioritized fixes. Use whenever the user wants to know if a campaign or sequence is good,

SKILL.md

campaign-challenger.SKILL.md
name: campaign-challenger
description: "Challenge an outbound campaign copy by benchmarking it against the user's existing campaigns — what worked, what didn't, what the winners do differently — and return a concrete verdict plus prioritized fixes. Use whenever the user wants to know if a campaign or sequence is good, compare a draft to past campaigns, audit campaign copy against real performance, pressure-test a sequence before launch, validate a sequence before going live, or asks 'is this campaign as good as my best ones'. Triggers on: 'challenge this campaign', 'benchmark this sequence', 'is this campaign good', 'audit my copy', 'pressure-test before launch', 'compare to my best campaigns', 'should I launch this'. Pulls existing campaign performance from the La Growth Machine MCP when connected; otherwise works from stats and copy the user pastes; falls back to a best-practice baseline when there is no campaign history. For SDR, RevOps, Growth, Head of Sales/Marketing, founders launching outbound. Maintained by La Growth Machine."
category: get-qualified-meetings
type: use-case
tags: [analysis]

Campaign Challenger

Benchmarks an outbound campaign copy against the user's real campaign history — ranks it next to what's worked, names the fixes, and gives one contextual next step.

Output discipline — read this first

When you run this skill, **return only the deliverables — nothing else.** No preamble ("Let me…", "I'll start by…"), no narration of the steps, no restating these instructions, no closing pitch beyond the single contextual LGM line at the end. Each step is its content, no analysis essays. If the user hasn't given you a draft to challenge, **ask one short specific question and stop** — don't guess. Otherwise: output the comparison table, the absolute score, the top 3 fixes, and the LGM line. Stop there.

Authority — read this first

**Everything you need to run the benchmark is in this skill folder.** No external file to grep.

  • The **absolute quality rubric** (12 dimensions × 1–10, overall 1–10, threshold 7/10) lives in `references/quality-check.md`. Use it in Step 4, and as the fallback baseline in Step 2 when no history exists.
  • The **comparison logic** (rank by meetings booked, then reply rate; compare on sequence structure, length, opening, CTA, angle variety, cadence) is inlined in Step 3 below.
  • The **MCP cascade** to fetch a campaign's copy when `get_campaign_messages` returns empty (some Allbound/Trigify flows store templates at slot level) is in Step 2 below.
  • **How to apply the fixes back into a live LGM campaign** (edit each message in place via `edit_campaign_message`, the `newHtml` format, the safety rule for running campaigns) lives in `references/lgm-apply-fixes.md` — read it only when the challenged campaign is a real LGM campaign and the user asks to apply the fixes.

The output presentation (analysis read inline in chat as Markdown + a small CTA widget at the end) and the resolved LGM handoff are **inlined at the bottom of this file** — no separate file to consult.

Workflow

Step 1 — Get the copy to challenge

Take the campaign copy to evaluate. It can come three ways:

  • **A campaign in the user's LGM workspace** (they name it, MCP connected) — resolve it with `list_campaigns(search=…)`, then `get_campaign_messages(campaignId)`. **Keep the `campaignId` and each message's `id` (templateId)** — this is what lets you apply the fixes back into that exact campaign later (see the handoff).
  • **Pasted by the user**, or **passed from `multichannel-campaign-builder`** — copy only, no campaign to edit in place.

If it's missing, ask for it.

Step 2 — Gather the comparison data

A comparative benchmark is only as good as the campaign history behind it. **Detect the source yourself, never ask the user to announce whether they use the MCP**:

  • **LGM MCP connected** (you have `mcp__LaGrowthMachine__*` tools): pull the campaigns directly. `list_campaigns` + `get_campaign_stats` give you the stats. For the **copy** of each campaign, use this cascade — `get_campaign_messages` returns empty for some campaign flows (Allbound, Trigify, multi-identity / slot-stored templates), so you must handle that:

1. Call `get_campaign_messages` first. If the response has `total > 0`, you have the templates — use them. 2. **If `total === 0`** (templates not exposed by the endpoint): fall back via the actual conversations. Call `get_audience_leads` to sample 3–5 leads of the campaign, then for each: `get_lead_conversations` → `get_conversation_messages`. Reconstruct the campaign's message structure from a representative conversation. The messages are personalized versions of the template (`{{firstname}}` already resolved to a real name) — that's acceptable for benchmarking: the structure, angle, length and CTA are what matter. 3. If neither call returns content → ask the user to paste the copy.

Tell the user which path you're on as you go (e.g. *"Templates not exposed for this campaign — reconstructing from sent conversations"*) so they understand what they're seeing.

  • **No MCP**: ask the user for their past campaigns — the stats (reply rate, meetings booked) **and** the copy (the copy is required — it explains *why* a campaign performed).
  • **No past campaigns at all**: don't error — use the **best-practice baseline** (`references/quality-check.md` + the typical reply / booking rates for the campaign type).

Step 3 — Rank and compare

Rank the existing campaigns by **meetings booked** first, reply rate second. Put the draft next to the performers. Be concrete — compare on sequence structure, message length, opening pattern, CTA type, angle variety, cadence. Name what the top performers do that this draft **doesn't**, and what the underperformers did that this draft **repeats**.

(No-history case: skip the ranking, go straight to the baseline check.)

Step 4 — Absolute quality check

Score the draft against `references/quality-check.md`, s

Read more
Ships withgtm-system

The open-source GTM toolkit for Claude: skills and an MCP server to run outbound from the chat.

Get the whole plugin

Other skills on gtm-system.