CRO SKILL
ab-testing
Design an A/B test that can be trusted, then run testing as a programme: hypothesis framework, sample-size table, metrics selection, allocation, the peeking problem, ICE prioritisation and a winners’ playbook.
by Corey Hainescoreyhaines31/marketingskillsMIT licencev2.0.0upstream 2026-09-05read by us 11 September 2026
The first half is one test done properly: a hypothesis with a because-clause, one variable, a pre-determined sample size from a quick-reference table (a 3% baseline needs about 47,000 per variant to detect a 10% lift), primary plus secondary plus guardrail metrics, and no peeking.
The second half is the programme: hypothesis sources, ICE scoring, velocity targets (four to eight experiments a month, 20 to 30% win rate), a playbook entry format for winners, and a weekly-biweekly-monthly-quarterly cadence.
It is the general-purpose testing skill. For the harder cases (ratio metrics, interaction effects, sequential testing, what not to test) the experiment-design skill beside it goes deeper.
When to use it
The phrases that trigger it
From the skill’s own description: say any of these and an agent that has it installed will load it.
- A/B test
- split test
- experiment
- statistical significance
- how long should I run this test
- experiment velocity
- ICE score
- experimentation program
What’s inside
The playbook, section by section
The hypothesis structure
Because [observation], we believe [change] will cause [outcome] for [audience]; we will know when [metric].
Sample-size quick reference
Baselines of 1, 3, 5 and 10% against lifts of 10, 20 and 50%, with links to Evan Miller’s and Optimizely’s calculators.
Three metric tiers
One primary that calls the test, secondaries that explain it, guardrails that stop it.
The peeking problem
Stopping early on an interim look inflates false positives; pre-commit to the sample size and trust the process.
The experiment loop and ICE
Generate, prioritise (impact, confidence, ease, averaged), run, analyse, promote winners to a playbook, repeat.
A playbook entry
Date, hypothesis, sample, result with confidence interval and p-value, guardrails, segment deltas, why it worked, the reusable pattern, where else to apply it.
Reference files: sample-size-guide.md test-templates.md
See it in action
One real run, cropped
We installed the skill folder, gave it the request below, and kept what it returned. Nothing was edited; the excerpt is the first 1,605 of 8,784 characters. The full output is in our repository as research/skills/runs/ab-testing.md.
We want to A/B test the hero headline on https://addition-labs.com/services/seo. Honest situation: we do not have traffic numbers yet (analytics goes live this month) and enquiries are a handful a month. Design the test if it can be designed, or tell us what it would take and what to do instead.
A/B Test Assessment: Hero headline, addition-labs.com/services/seo
Initial assessment
No product marketing context file was found (.agents/product-marketing.md, .claude/product-marketing.md, or product-marketing-context.md), so this works only from your request and the live page.
Test context. Change under consideration: the hero headline. The page today (fetched 2026-09-11) renders the H1 as a small label plus a statement:
> Search Engine Optimization > Pages people want to read, that search engines can read too.
Subhead: "We build pages a buyer enjoys using, structured so Google and AI systems read them the same way. Every page with one clear job." Primary hero CTA: "Send me AI & SEO Audit" (a free search and AI check form). You have not yet said *why* you want to change the headline or what the alternative would be, so there is no hypothesis to test yet (see Open questions).
Current state. Baseline conversion rate: unknown. Traffic to this page: unknown (analytics goes live this month). Enquiries: "a handful a month". Whether that handful is site-wide or from this page alone is not stated; if it is site-wide, the number for this page is smaller.
Constraints. Testing tool: not stated. Timeline: not stated.
Verdict: this test cannot be designed yet
A valid A/B test needs a pre-committed sample size, and the sample size depends on two numbers you do not have: the baseline conversion rate and the page's traffic. But the enquiry count alone is enough to settle the question, because a conversion test is limited by conversions, not by visitors.
Cropped here. The rest continues in the same register.
What it could not do in this run
baseline conversion rate, page traffic, the proposed headline variant and the observation behind it, the MDE, the testing tool, and prior test history (skill questions 1 to 6). "A handful a month" was interpreted as a 3 to 8 range and labelled as an interpretation, not a fact. Per the brief the deliverable gives the verdict the user asked for and lists the open questions at the end rather than stopping at them.
Method behind it
Where we would differ, and why
Our A/B testing guide reproduces the sample-size arithmetic with worked store examples and shows why most ecommerce sites below a few thousand orders a month cannot detect the lifts they hope for. The skill designs the test; the guide tells you whether your traffic can carry it.
- Note 1
- The analysis section reads 95% significance as "less than 5% chance the result is random". That is the common misreading of a p-value; the correct statement is the probability of data at least this extreme if there were no effect. The experiment-design skill states it more carefully.
- Note 2
- The sample-size table in the skill body and the tables in its own reference file disagree by about 2.3x for the same inputs (1% baseline, 10% lift: 150k per variant in the body, 380k in the reference). The body matches the standard two-sided 95%/80% calculation; the reference does not say what inputs it used. Use the body, or a calculator.
- Note 3
- Velocity targets of four to eight experiments a month assume traffic most stores do not have. Our compounding rule is one well-researched change a week; the number that matters is the research behind each, not the count.
SKILL.md
The upstream file, as we read it
Copyright Corey Haines, MIT licence, commit 5b2c000 of coreyhaines31/marketingskills. Reproduced here under that licence so you can read what the agent will read; the folder’s reference files are in the repository.
Open SKILL.md (1,665 words)
---
name: ab-testing
description: When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program," or "experiment playbook." Use this whenever someone is comparing two approaches and wants to measure which performs better, or when they want to build a systematic experimentation practice. For tracking implementation, see analytics. For page-level conversion optimization, see cro.
metadata:
version: 2.0.0
---
# A/B Test Setup
You are an expert in experimentation and A/B testing. Your goal is to help design tests that produce statistically valid, actionable results.
## Initial Assessment
**Check for product marketing context first:**
If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
Before designing a test, understand:
1. **Test Context** - What are you trying to improve? What change are you considering?
2. **Current State** - Baseline conversion rate? Current traffic volume?
3. **Constraints** - Technical complexity? Timeline? Tools available?
---
## Core Principles
### 1. Start with a Hypothesis
- Not just "let's see what happens"
- Specific prediction of outcome
- Based on reasoning or data
### 2. Test One Thing
- Single variable per test
- Otherwise you don't know what worked
### 3. Statistical Rigor
- Pre-determine sample size
- Don't peek and stop early
- Commit to the methodology
### 4. Measure What Matters
- Primary metric tied to business value
- Secondary metrics for context
- Guardrail metrics to prevent harm
---
## Hypothesis Framework
### Structure
```
Because [observation/data],
we believe [change]
will cause [expected outcome]
for [audience].
We'll know this is true when [metrics].
```
### Example
**Weak**: "Changing the button color might increase clicks."
**Strong**: "Because users report difficulty finding the CTA (per heatmaps and feedback), we believe making the button larger and using contrasting color will increase CTA clicks by 15%+ for new visitors. We'll measure click-through rate from page view to signup start."
---
## Test Types
| Type | Description | Traffic Needed |
|------|-------------|----------------|
| A/B | Two versions, single change | Moderate |
| A/B/n | Multiple variants | Higher |
| MVT | Multiple changes in combinations | Very high |
| Split URL | Different URLs for variants | Moderate |
---
## Sample Size
### Quick Reference
| Baseline | 10% Lift | 20% Lift | 50% Lift |
|----------|----------|----------|----------|
| 1% | 150k/variant | 39k/variant | 6k/variant |
| 3% | 47k/variant | 12k/variant | 2k/variant |
| 5% | 27k/variant | 7k/variant | 1.2k/variant |
| 10% | 12k/variant | 3k/variant | 550/variant |
**Calculators:**
- [Evan Miller's](https://www.evanmiller.org/ab-testing/sample-size.html)
- [Optimizely's](https://www.optimizely.com/sample-size-calculator/)
**For detailed sample size tables and duration calculations**: See [references/sample-size-guide.md](references/sample-size-guide.md)
---
## Metrics Selection
### Primary Metric
- Single metric that matters most
- Directly tied to hypothesis
- What you'll use to call the test
### Secondary Metrics
- Support primary metric interpretation
- Explain why/how the change worked
### Guardrail Metrics
- Things that shouldn't get worse
- Stop test if significantly negative
### Example: Pricing Page Test
- **Primary**: Plan selection rate
- **Secondary**: Time on page, plan distribution
- **Guardrail**: Support tickets, refund rate
---
## Designing Variants
### What to Vary
| Category | Examples |
|----------|----------|
| Headlines/Copy | Message angle, value prop, specificity, tone |
| Visual Design | Layout, color, images, hierarchy |
| CTA | Button copy, size, placement, number |
| Content | Information included, order, amount, social proof |
### Best Practices
- Single, meaningful change
- Bold enough to make a difference
- True to the hypothesis
---
## Traffic Allocation
| Approach | Split | When to Use |
|----------|-------|-------------|
| Standard | 50/50 | Default for A/B |
| Conservative | 90/10, 80/20 | Limit risk of bad variant |
| Ramping | Start small, increase | Technical risk mitigation |
**Considerations:**
- Consistency: Users see same variant on return
- Balanced exposure across time of day/week
---
## Implementation
### Client-Side
- JavaScript modifies page after load
- Quick to implement, can cause flicker
- Tools: PostHog, Optimizely, VWO
### Server-Side
- Variant determined before render
- No flicker, requires dev work
- Tools: PostHog, LaunchDarkly, Split
---
## Running the Test
### Pre-Launch Checklist
- [ ] Hypothesis documented
- [ ] Primary metric defined
- [ ] Sample size calculated
- [ ] Variants implemented correctly
- [ ] Tracking verified
- [ ] QA completed on all variants
### During the Test
**DO:**
- Monitor for technical issues
- Check segment quality
- Document external factors
**Avoid:**
- Peek at results and stop early
- Make changes to variants
- Add traffic from new sources
### The Peeking Problem
Looking at results before reaching sample size and stopping early leads to false positives and wrong decisions. Pre-commit to sample size and trust the process.
---
## Analyzing Results
### Statistical Significance
- 95% confidence = p-value < 0.05
- Means <5% chance result is random
- Not a guarantee—just a threshold
### Analysis Checklist
1. **Reach sample size?** If not, result is preliminary
2. **Statistically significant?** Check confidence intervals
3. **Effect size meaningful?** Compare to MDE, project impact
4. **Secondary metrics consistent?** Support the primary?
5. **Guardrail concerns?** Anything get worse?
6. **Segment differences?** Mobile vs. desktop? New vs. returning?
### Interpreting Results
| Result | Conclusion |
|--------|------------|
| Significant winner | Implement variant |
| Significant loser | Keep control, learn why |
| No significant difference | Need more traffic or bolder test |
| Mixed signals | Dig deeper, maybe segment |
---
## Documentation
Document every test with:
- Hypothesis
- Variants (with screenshots)
- Results (sample, metrics, significance)
- Decision and learnings
**For templates**: See [references/test-templates.md](references/test-templates.md)
---
## Growth Experimentation Program
Individual tests are valuable. A continuous experimentation program is a compounding asset. This section covers how to run experiments as an ongoing growth engine, not just one-off tests.
### The Experiment Loop
```
1. Generate hypotheses (from data, research, competitors, customer feedback)
2. Prioritize with ICE scoring
3. Design and run the test
4. Analyze results with statistical rigor
5. Promote winners to a playbook
6. Generate new hypotheses from learnings
→ Repeat
```
### Hypothesis Generation
Feed your experiment backlog from multiple sources:
| Source | What to Look For |
|--------|-----------------|
| Analytics | Drop-off points, low-converting pages, underperforming segments |
| Customer research | Pain points, confusion, unmet expectations |
| Competitor analysis | Features, messaging, or UX patterns they use that you don't |
| Support tickets | Recurring questions or complaints about conversion flows |
| Heatmaps/recordings | Where users hesitate, rage-click, or abandon |
| Past experiments | "Significant loser" tests often reveal new angles to try |
### ICE Prioritization
Score each hypothesis 1-10 on three dimensions:
| Dimension | Question |
|-----------|----------|
| **Impact** | If this works, how much will it move the primary metric? |
| **Confidence** | How sure are we this will work? (Based on data, not gut.) |
| **Ease** | How fast and cheap can we ship and measure this? |
**ICE Score** = (Impact + Confidence + Ease) / 3
Run highest-scoring experiments first. Re-score monthly as context changes.
### Experiment Velocity
Track your experimentation rate as a leading indicator of growth:
| Metric | Target |
|--------|--------|
| Experiments launched per month | 4-8 for most teams |
| Win rate | 20-30% is common for mature programs (sustained higher rates may indicate conservative hypotheses) |
| Average test duration | 2-4 weeks |
| Backlog depth | 20+ hypotheses queued |
| Cumulative lift | Compound gains from all winners |
### The Experiment Playbook
When a test wins, don't just implement it — document the pattern:
```
## [Experiment Name]
**Date**: [date]
**Hypothesis**: [the hypothesis]
**Sample size**: [n per variant]
**Result**: [winner/loser/inconclusive] — [primary metric] changed by [X%] (95% CI: [range], p=[value])
**Guardrails**: [any guardrail metrics and their outcomes]
**Segment deltas**: [notable differences by device, segment, or cohort]
**Why it worked/failed**: [analysis]
**Pattern**: [the reusable insight — e.g., "social proof near pricing CTAs increases plan selection"]
**Apply to**: [other pages/flows where this pattern might work]
**Status**: [implemented / parked / needs follow-up test]
```
Over time, your playbook becomes a library of proven growth patterns specific to your product and audience.
### Experiment Cadence
**Weekly (30 min)**: Review running experiments for technical issues and guardrail metrics. Don't call winners early — but do stop tests where guardrails are significantly negative.
**Bi-weekly**: Conclude completed experiments. Analyze results, update playbook, launch next experiment from backlog.
**Monthly (1 hour)**: Review experiment velocity, win rate, cumulative lift. Replenish hypothesis backlog. Re-prioritize with ICE.
**Quarterly**: Audit the playbook. Which patterns have been applied broadly? Which winning patterns haven't been scaled yet? What areas of the funnel are under-tested?
---
## Common Mistakes
### Test Design
- Testing too small a change (undetectable)
- Testing too many things (can't isolate)
- No clear hypothesis
### Execution
- Stopping early
- Changing things mid-test
- Not checking implementation
### Analysis
- Ignoring confidence intervals
- Cherry-picking segments
- Over-interpreting inconclusive results
---
## Task-Specific Questions
1. What's your current conversion rate?
2. How much traffic does this page get?
3. What change are you considering and why?
4. What's the smallest improvement worth detecting?
5. What tools do you have for testing?
6. Have you tested this area before?
---
## Related Skills
- **cro**: For generating test ideas based on CRO principles
- **analytics**: For setting up test measurement
- **copywriting**: For creating variant copy
Questions
Questions people ask before installing
What if I do not have enough traffic?
The skill’s table will show you: at a 1% baseline, a 10% lift needs 150,000 visitors per variant. Its advice for that case is a bolder change or more traffic; ours is to fix the obvious without a test and reserve testing for changes that could double the rate.
Client-side or server-side?
Client-side is fast and can flicker; server-side needs a developer and does not. The skill lists both with tools.
How is ICE different from PXL?
ICE averages impact, confidence and ease. PXL, which we use, weights page importance, ease and learning value. Either works if you re-score monthly.