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
4613 skills

Claude Code

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

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
@lagrowthmachine
Ships withgtm-system

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

Stars on GitHub

Momentum

stars in total
46
Star history of LaGrowthMachine/gtm-system on GitHub, a chart by star-history.com

Other skills on gtm-system.

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",…

brag3w21k
@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 campaign-challenger.

Which coding agents can use campaign-challenger?
campaign-challenger 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.