Pre-flight strategy advisor for a new campaign. An agent skill from Othmane-Khadri/YALC-the-GTM-operating-system.

MITAuto-check passed

Install Campaign Strategy

skills CLI
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill campaign-strategy -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Othmane-Khadri/YALC-the-GTM-operating-system campaign-strategy --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/campaign-strategy .claude/skills/campaign-strategy && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
campaign-strategy
GitHub stars
318
Token cost
~2.7k tokens
SKILL.md length
1,057 words
Files
1
Skills in repo
57
Repo updated
First seen
Licence
MIT

At a glance

Pre-flight strategy advisor for a new campaign. An agent skill from Othmane-Khadri/YALC-the-GTM-operating-system.

  • Works in 8 steps: Guard → Auto-sync HeyReach (proactive — do not… → Pull the strategy data block → …
  • Someone says I want to launch a campaign for X
  • SKILL.md covers When this skill applies, Inputs, Procedure and Hard rules, plus 1 more section
  • Calls npx

What it does

Campaign Strategy is an agent skill from Othmane-Khadri/YALC-the-GTM-operating-system. Pre-flight strategy advisor for a new campaign. Analyses every past campaign in the local YALC DB (HeyReach campaigns auto-sync on each run), their real outbound copy, where in the sequence each conversation first replied, every prior retro brief, and the validated/proven intelligence file. Then it proposes angle, audience, batch size, channel choice, and concrete testable hypotheses for the campaign you are about to launch. Does NOT draft outbound copy — that is refine-outbound-copy's job. Use when someone says…

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: YALC 1.0, the open-source Clay alternative. MIT, CLI-first, self-hosted, runs in Claude Code. Yalc today is an intelligent orchestration layer that runs pre configured GTM agents…. The licence is MIT.

When your agent uses it

  • Someone says I want to launch a campaign for X
  • How should we approach this campaign
  • What should we test next
  • Strategy for the next campaign

Example prompts

  • “s job. Use when someone says”
  • “how should we approach this campaign”
  • “what should we test next”
  • “/campaign-strategy”

Requirements

  • Node.js

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Guard
  2. Auto-sync HeyReach (proactive — do not ask)
  3. Pull the strategy data block
  4. Reason in chat (this is the work)
  5. Save the brief
  6. Render the result in chat
  7. Follow-up offer
  8. Surface CLI failures verbatim

What it can do on your machine

Read from SKILL.md and the folder at commit 5686d1f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Campaign Strategy loads about 2.7k tokens when it runs. Until then it costs about 185 tokens; SKILL.md has 1,057 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~185
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Othmane-Khadri/YALC-the-GTM-operating-system at commit 5686d1f, republished under its MIT licence (© Othmane-Khadri). 1,057 words, ~2,690 tokens.

Download SKILL.mdSave it as .claude/skills/campaign-strategy/SKILL.md (or your agent's skills folder).
name
campaign-strategy
description
Pre-flight strategy advisor for a new campaign. Analyses every past campaign in the local YALC DB (HeyReach campaigns auto-sync on each run), their real outbound copy, where in the sequence each conversation first replied, every prior retro brief, and the validated/proven intelligence file. Then it proposes angle, audience, batch size, channel choice, and concrete testable hypotheses for the campaign you are about to launch. Does NOT draft outbound copy — that is refine-outbound-copy's job. Use when someone says 'I want to launch a campaign for X', 'how should we approach this campaign', 'what should we test next', 'strategy for the next campaign', or 'campaign manager' in the context of building a new campaign.

Campaign Strategy (pre-flight)

The forward-looking sibling of improve-campaign. Where improve-campaign asks "what should we change after this campaign?", strategy asks "what should we do for the next campaign, given everything we know?"

Goal (per David's standing direction): "Improve our campaigns constantly. The goal is not execution and completion — it's performance and results." The skill exists at the moment a new campaign is being built, because that is when analysis is most useful.

Key idea: the reasoning happens in chat — not via a duplicate API call. The CLI helpers load the raw data and persist the output; the strategic thinking happens between them.

When this skill applies

  • "I want to launch a campaign for X" / "how should we approach this campaign"
  • "What should the next campaign test?"
  • "Campaign manager" — when invoked while building (not after) a campaign
  • "What did we learn from previous campaigns that's worth testing next?"

Not this skill:

  • "Retro on the last campaign" / "what didn't work" → improve-campaign
  • "Draft / rewrite the outbound copy" → refine-outbound-copy
  • "Create the campaign now in the DB" → campaign:create-sequence

Inputs

Just one: concept — a short description of the campaign the user wants to launch. e.g. "Reddit GEO Specialists hire", "datascalehr CHRO Tier-1 follow-up". Don't ask anything else up front.

Procedure

Step 0 — Guard
bash
test ! -e ~/.gtm-os/.in-flight-setup

If the file exists, stop and tell the user setup is in progress.

Step 1 — Auto-sync HeyReach (proactive — do not ask)

Per David's standing rule: if the user doesn't need to do something because you have access, do it. Before pulling data, refresh the local DB so the strategy reasons against the latest funnel + copy + reply attribution:

bash
npx tsx src/cli/index.ts campaign:import-heyreach

This is idempotent and cached (5-min TTL on stats, 1-hour TTL on chatrooms), so it's cheap on re-runs. It auto-extracts the real DM copy and reply-step attribution from chatrooms via the HeyReach MCP. If the user has other senders besides David, repeat with --sender-account-id <id>.

Surface a one-line note ("Synced N HeyReach campaigns") so the user sees the refresh happened — don't dump the full output.

Step 2 — Pull the strategy data block
bash
npx tsx src/cli/index.ts campaign:strategy --data-only --concept "<one-line concept>"

Emits JSON with three top-level arrays plus the concept:

json
{
  "concept": "...",
  "tenantId": "default",
  "intelligenceDir": ".../data/intelligence",
  "outputDir": ".../data/intelligence",
  "pastCampaigns": [
    {
      "id": "heyreach:412427",
      "title": "GEO/SEO Talents Batch #1",
      "hypothesis": "...",
      "funnel": { "leads": 43, "connectsSent": 42, "connectsAccepted": 24, "dmsSent": 18, "replies": 15, "acceptRate": 0.57, "replyRate": 0.83 },
      "replyAttribution": [ { "after_step": 1, "replies": 11 }, { "after_step": 2, "replies": 10 } ],
      "conversationsSampled": 18,
      "variants": [ { "name": "...", "connectNote": "...", "dm1Template": "<the real DM1 text>", "dm2Template": "<the real DM2 text>", "sends": 42, "accepts": 24, "acceptRate": 0.57, "dmsSent": 18, "replies": 15, "replyRate": 0.83 } ]
    }
  ],
  "retroBriefs": [ /* every campaign_improvement_*.json */ ],
  "intelligence": [ /* every validated/proven entry in data/intelligence/ */ ]
}

dm1Template / dm2Template are the real outbound messages David sent, extracted from chatrooms. replyAttribution shows where in the sequence each conversation first replied (after_step: 1 = after DM1, after_step: 2 = after DM2, etc.). The connect-request note is NOT recoverable via LinkedIn's API — if the user wants it factored in, ask them to paste it via campaign:annotate --connect-note "..." before continuing. Otherwise, proceed using DM1+ data only.

Step 3 — Reason in chat (this is the work)

Read the data block and write a strategy brief that matches this shape:

json
{
  "proposed_campaign_concept": "<echo back the concept>",
  "summary": "one-line strategic take",
  "closest_past_campaigns": [
    { "id": "heyreach:412427", "name": "...", "why_similar": "...", "headline_metric": "57% accept / 83% reply on 43 leads" }
  ],
  "what_worked_before": [
    { "observation": "...", "evidence": "...", "confidence": "hypothesis|validated|proven" }
  ],
  "what_to_carry_forward": [
    { "decision": "...", "rationale": "...", "confidence": "..." }
  ],
  "copy_devices_to_test": [
    { "device": "...", "seen_in": "<campaign id or '(new)'>", "why_might_work": "...", "confidence": "..." }
  ],
  "what_to_test": [
    { "hypothesis": "...", "test_design": "...", "rationale": "..." }
  ],
  "open_strategic_questions": [
    "one-line question the user must answer before launch"
  ]
}

Reasoning rules:

  • 2–4 items in closest_past_campaigns. Each row needs a one-second headline metric (e.g. 57% accept / 83% reply on 43 leads).
  • 3–5 items in what_worked_before, anchored in funnel numbers, variants[*] metrics, and replyAttribution. Quote actual phrases from the extracted copy when they support the observation.
  • 2–5 items in what_to_carry_forward. Concrete decisions only — "Use the GEO/SEO Talents DM1 device stack" not "keep the messaging similar."
  • 2–5 items in copy_devices_to_test. This is the highest-value output. Identify specific phrases or structural moves in past copy whose performance is suspected (e.g. authority signal, exclusivity language, specific compensation anchor, permission-to-decline). Anchor each device to the campaign you saw it in, or mark (new) if proposing fresh.
  • 2–4 items in what_to_test. Each must include a real test_design — "A/B variant A=all 4 devices vs B=2 devices, 50/50 split, >20pt reply-rate gap = stacking confirmed" beats "test the copy."
  • 1–3 open_strategic_questions. Things the user must decide before launch (e.g. "hire or warm pool?"). One should always be the channel question if no cross-channel data exists.
  • Reply-step attribution is first-class. When step-1 catches most replies (e.g. GTM Engineers at 22/28), DM1 is the workhorse — the next campaign's DM1 should preserve that load. When step-2 catches near-step-1 volume (e.g. GEO/SEO at 11/10), DM2 has its own devices doing work — call those out separately.
  • Confidence tagging is mandatory. hypothesis is the default. validated/proven only when anchored in retro entries, multiple cross-campaign signal, or a validated/proven intelligence entry.
  • Do not draft outbound copy. Identify devices, not lines.
  • No invented metrics. If a number isn't in the data block, don't cite it.
Show full SKILL.md (369 more words)Show less
Step 4 — Save the brief
bash
echo "$STRATEGY_JSON" > /tmp/campaign_strategy_<slug>.json
npx tsx src/cli/index.ts campaign:strategy --from-file /tmp/campaign_strategy_<slug>.json

The CLI validates the schema and writes data/intelligence/campaign_strategy_<slug>_<YYYYMMDD>.json.

Step 5 — Render the result in chat

Show the user six sections:

  • Concept — the one-line concept being advised on
  • Summary — strategic take in one line
  • Closest past campaigns — table with id, name, headline metric, why similar
  • What to carry forward — bullets tagged [confidence]
  • Copy devices worth testing — bullets: device — seen in <campaign id> — why might work
  • Hypotheses to test in this campaign — hypothesis → test design
  • Open questions before launch — bullets

When relevant, include a small reply-attribution table showing which step caught replies for each closest-past campaign — it's load-bearing data the user will want to see.

Then tell the user where the file landed.

Step 6 — Follow-up offer

After rendering, offer:

Want me to draft outbound copy for this strategy now? For a YALC tenant (client) campaign I'd route to refine-outbound-copy. For an Earleads-internal campaign I'll draft in chat directly against this brief and your voice rules.

If yes: chain forward. If they want to refine the strategy first, iterate in chat and re-write the file.

Step 7 — Surface CLI failures verbatim

Print stderr unchanged. Common failure modes:

  • Strategy brief is missing field: ... — step-3 JSON didn't match the schema.
  • --concept is required with --data-only. — pass a concept.

Hard rules

  • Auto-sync HeyReach before reasoning. Proactivity is the baseline — don't ask the user to run import first.
  • Strategy never drafts the outbound copy. That's refine-outbound-copy (for tenant campaigns) or in-chat drafting against voice rules (for Earleads-internal campaigns).
  • Copy-device hypotheses are first-class output. Per the user's standing rule: surface what's worth testing next, with confidence tags, anchored to specific phrases observed in past copy.
  • Reply-step attribution is first-class. Each closest past campaign's replyAttribution informs whether DM1 or DM2 is the workhorse — propagate that into the next campaign's architecture.
  • Confidence tagging is mandatory on every observation, decision, and copy-device.
  • One brief per concept per day. Same-day re-runs overwrite the prior file.

Reference

  • Strategy library: src/lib/campaign/strategy.ts (runStrategyData, runStrategyWrite)
  • HeyReach importer: src/lib/campaign/import-heyreach.ts + src/lib/services/heyreach.ts (REST + MCP wrapper, auto-extracts copy + reply attribution)
  • Backfill / annotate: src/lib/campaign/annotate.ts + campaign:annotate CLI (for connect-note backfill or hypothesis override)
  • Past retros: data/intelligence/campaign_improvement_*.json
  • Past strategy briefs: data/intelligence/campaign_strategy_*.json
  • Validated intelligence: data/intelligence/*.json (excluding campaign_* prefixes)
  • Sibling skills: improve-campaign (retro), refine-outbound-copy (copy rewrite), campaign-dashboard (visual)

© Othmane-Khadri, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/campaign-strategy of Othmane-Khadri/YALC-the-GTM-operating-system.

Open the folder on GitHubat commit 5686d1f

Compare with similar skills

Campaign Strategy next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Campaign Strategy compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Campaign Strategy this skillOthmane-Khadri/YALC-the-GTM-operating-system318—~2.7kAutomated safety check: PassMIT
Flightsasgeirtj/system_prompts_leaks69k—~2.1kAutomated safety check: PassCC0-1.0
Flightscodewhale-hq/Codewhale41k—~258Automated safety check: PassMIT
Marketing Campaignaffaan-m/ECC276k1 repos~1.3kAutomated safety check: PassMIT
Advisor Modecursor/plugins11k—~2.6kAutomated safety check: NotesNone
Campaign Analyticsalirezarezvani/claude-skills28k1 repos~2.1kAutomated safety check: PassMIT

Similar skills

  • Flights

    asgeirtj/system_prompts_leaks

    Research, book, or manage flights, including check-in. An agent skill from asgeirtj/system_prompts_leaks.

    69k GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Flights

    codewhale-hq/Codewhale

    Track flights and look up status and schedules. An agent skill from codewhale-hq/Codewhale.

    41k GitHub stars~258 tokensUpdated today
    Auto-check passed
  • Marketing Campaign

    affaan-m/ECC

    End-to-end marketing campaign planning and execution. An agent skill from affaan-m/ECC.

    276k GitHub starsUsed in 1 repo~1.3k tokens
    Marketing & SEOAuto-check passed
  • Advisor Mode

    cursor/plugins

    Official

    Adds a second, stronger model that the main agent consults before major decisions, when stuck and before finishing, controlled by /advisor commands.

    11k GitHub stars~2.6k tokensUpdated today
    Agent WorkflowsAuto-check: notes
  • Campaign Analytics

    alirezarezvani/claude-skills

    Calculates attribution, funnel and ROI figures for marketing campaigns with three Python scripts that need only the standard library.

    28k GitHub starsUsed in 1 repo~2.1k tokens
    Marketing & SEOAuto-check passed
  • Campaign Cleaner Automation

    ComposioHQ/awesome-claude-skills

    Automate Campaign Cleaner tasks via Rube MCP (Composio). An agent skill from ComposioHQ/awesome-claude-skills.

    77k GitHub starsUsed in 3 repos~764 tokens
    Productivity & AutomationAuto-check passed

More from Othmane-Khadri/YALC-the-GTM-operating-system

All 57 skills in this repo
  • Claap Weekly Recap

    Othmane-Khadri/YALC-the-GTM-operating-system

    Turns a week of Claap-recorded sales calls into action items and focus blocks on a Notion Kanban, delivered with a Slack summary.

    318 GitHub stars~5.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Fullenrich Plg Reverse Lookup

    Othmane-Khadri/YALC-the-GTM-operating-system

    A skill your agent uses when the user says "set up FullEnrich reverse lookup for trial signups", "PLG enrichment webhook", "identify free trial signups via FullEnrich", "reverse email lookup for…

    318 GitHub stars~1.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Fullenrich Content Engagers

    Othmane-Khadri/YALC-the-GTM-operating-system

    A skill your agent uses when the user says "enrich people who engaged with this post", "qualify post engagers with FullEnrich", "scrape and enrich LinkedIn post {URL}", "engagers from this post into…

    318 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check: warnings
  • Fullenrich Event Attendees

    Othmane-Khadri/YALC-the-GTM-operating-system

    A skill your agent uses when the user says "enrich this LinkedIn event", "enrich attendees of this event", "enrich this attendees CSV", "scrape and enrich LinkedIn event {URL}", "FullEnrich event…

    318 GitHub stars~1.4k tokensUpdated 1 mo ago
    Auto-check: warnings
  • Answer Linkedin Comments

    Othmane-Khadri/YALC-the-GTM-operating-system

    Reply to comments on a LinkedIn post via Unipile — drafts thread-aware replies grounded in the user's voice and the conversation context, then sends on approval.

    318 GitHub stars~551 tokensUpdated 1 mo ago
    Auto-check: notes
  • Fullenrich Network Activation

    Othmane-Khadri/YALC-the-GTM-operating-system

    A skill your agent uses when the user says "activate co-founder network with FullEnrich", "enrich LinkedIn connections export", "qualify my LinkedIn connections CSV", "turn Connections.csv into a…

    318 GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check: warnings

Questions about Campaign Strategy

What does Campaign Strategy do?

Pre-flight strategy advisor for a new campaign. An agent skill from Othmane-Khadri/YALC-the-GTM-operating-system. Campaign Strategy is an agent skill from Othmane-Khadri/YALC-the-GTM-operating-system. Pre-flight strategy advisor for a new campaign.

When should I use Campaign Strategy?

Campaign Strategy fits situations like: someone says I want to launch a campaign for X; how should we approach this campaign; what should we test next; strategy for the next campaign.

How do I install Campaign Strategy in Claude Code?

Run `npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill campaign-strategy -a claude-code`. Or copy the skill folder (.claude/skills/campaign-strategy in Othmane-Khadri/YALC-the-GTM-operating-system) into .claude/skills/campaign-strategy in your project. Claude Code loads it when a task matches its description.

How do I install Campaign Strategy in Codex?

Run `npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill campaign-strategy -a codex`. Or copy the skill folder (.claude/skills/campaign-strategy in Othmane-Khadri/YALC-the-GTM-operating-system) into .agents/skills/campaign-strategy in your project. Codex loads it when a task matches its description.

Can I use Campaign Strategy in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill campaign-strategy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/campaign-strategy, .gemini/skills/campaign-strategy, .github/skills/campaign-strategy and .opencode/skills/campaign-strategy in your project.

What does Campaign Strategy need to run?

Going by SKILL.md and its folder, Campaign Strategy needs the command-line tools its instructions call (npx). Our summary lists: Node.js.

Does Campaign Strategy access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Campaign Strategy safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Campaign Strategy use?

Campaign Strategy is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Campaign Strategy use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Campaign Strategy?

Skills that share tags, products or a category with Campaign Strategy: Flights (asgeirtj/system_prompts_leaks, 69k stars), Flights (codewhale-hq/Codewhale, 41k stars), Marketing Campaign (affaan-m/ECC, 276k stars) and Advisor Mode (cursor/plugins, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Campaign Strategy?

Othmane-Khadri (a GitHub user) maintains it in Othmane-Khadri/YALC-the-GTM-operating-system, which has 318 GitHub stars. The repository holds 57 skills in this directory. The repository was last updated on August 20, 2026.

Source: Othmane-Khadri/YALC-the-GTM-operating-system on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.