auto-research-public
Autonomous cold email campaign launcher. Takes one target company domain, scrapes their…
Framework for running single-variable cold email experiments. Defines experiment types (list-only, copy-only, combined), confidence weighting, minimum sample sizes, and success criteria. Use when the user wants to improve a campaign, test a new list vs old one, or compare copy
$ npx -y skills add growthenginenowoslawski/coldoutboundskills --skill experiment-design --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/experiment-designContext preview
The summary Claude sees to decide when to auto-load this skill.
Framework for running single-variable cold email experiments. Defines experiment types (list-only, copy-only, combined), confidence weighting, minimum sample sizes, and success criteria. Use when the user wants to improve a campaign, test a new list vs old one, or compare copy
name: experiment-design description: Framework for running single-variable cold email experiments. Defines experiment types (list-only, copy-only, combined), confidence weighting, minimum sample sizes, and success criteria. Use when the user wants to improve a campaign, test a new list vs old one, or compare copy variants. Prevents the #1 learning-loop mistake — changing list + copy + offer at once and losing all signal.
If you change your list, your copy, and your offer at the same time, you learn nothing. This skill forces you to isolate one variable per experiment so you actually learn what's working.
Most cold email operators run "throw-everything" experiments. Campaign 1 gets a new list, new copy, and a new offer. It works better. They declare victory. But they can't tell you WHY — was it the list? The copy? The offer?
Then campaign 2 changes all three again. Regression. Nobody knows why.
This skill is the antidote: plan each experiment around ONE variable, keep everything else constant, and confidence-weight the results.
Every experiment starts with a one-sentence hypothesis:
> "Targeting Heads of Marketing at 50-200 person B2B SaaS companies will get a higher positive reply rate than our current VP Sales baseline, because [reason]."
Or:
> "Leading with a question about their recent product launch will get a higher reply rate than our current benefit-focused opener, because [reason]."
If you can't write the hypothesis in one sentence, you don't understand the experiment yet. Go back.
Write down exactly what changes and what stays the same.
Variable: Target job title Change: "VP Sales" → "Head of Marketing" Constants: - Industry filter: unchanged - Headcount: unchanged - Geography: unchanged - Copy: unchanged (same 4-step sequence) - Offer: unchanged (same lead magnet) - Sending infrastructure: unchanged (same 20 domains, 40 inboxes) - Send schedule: unchanged
If ANY constant is actually changing, stop. Either lock it down, or reclassify as a combined experiment.
Before running any experiment, confirm your baseline is healthy: **overall reply rate ≥1% after 200+ sends.** If your baseline is below 1% after 200 sends, the problem isn't your experiment — your infrastructure or copy is already broken. Run `/email-deliverability-audit` first.
Running an experiment on a broken baseline is wasted effort: you'll learn that "both arms are bad," not "which arm wins."
The smaller your effect, the more leads you need. Use these rough rules for cold email:
| Current baseline | Expected lift | Minimum sends per arm | |---|---|---| | 1% positive reply rate | 2x (1% → 2%) | ~500 | | 1% positive reply rate | 1.5x (1% → 1.5%) | ~2,000 | | 1% positive reply rate | 1.2x (1% → 1.2%) | ~10,000 | | 2% positive reply rate | 2x (2% → 4%) | ~250 | | 2% positive reply rate | 1.5x (2% → 3%) | ~1,000 |
Rule of thumb: **if your test has fewer than 500 sends per arm, you can't tell signal from noise.**
For most beginners, 2,000 sends per arm is the right default.
Before launching, write:
Success = positive reply rate > X% (our current baseline is Y%) Failure = positive reply rate < Z% Inconclusive = between X and Z Required sample: at least N sends per arm, reported after day 21 of sequence
Decide now — not after seeing the data. This prevents "oh we learned something else instead" rationalization.
Same day, same sending infrastructure split, same sequence. If your control arm sends Monday and your variant arm sends Thursday, day-of-week effects will confound the test.
Best practice in Smartlead/Instantly: create two campaigns, assign each half of your inboxes, launch at the exact same time, same schedule.
Wait until the full sequence (typically Day 0, 3, 7, 11 + reply grace period) has finished for ALL leads. Measuring earlier biases toward the first email's reply rate.
Pull metrics via `/positive-reply-scoring` skill:
Secondary metrics (report but don't optimize for):
Use this framework when reporting:
Experiment: <name> Type: List-only | Copy-only | Combined Variable: <what changed> Result: <winner name> at <positive reply rate>% vs <baseline>% Confidence: HIGH | MEDIUM | LOW (based on experiment type + sample size) Learnings (by confidence): HIGH confid
Open-source Claude Code skills for cold email infrastructure, lead sourcing, copywriting, and operations. Built by GrowthEngineX from patterns across 1,000+ real B2B campaigns. 31 skills that work together.
Repo: growthenginenowoslawski/coldoutboundskills
Autonomous cold email campaign launcher. Takes one target company domain, scrapes their…
Use the Blitz API to find decision-makers at specific companies when you already have a list…
Creates cold email copy through a stepwise confirmation process. Use when writing email…
Generates 15-25+ cold outbound campaign ideas with targeting strategies, AI personalization…
Single "start here" orchestrator for new cold email operators. Asks infrastructure-status…
Complete beginner-friendly cold email toolkit. Walks from zero to launched campaign — domain…