A/B Test Setup

When the user wants to plan, design, or implement an A/B test or experiment.

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/ab-test-setup, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit alirezarezvani/claude-skills/marketing-skill/skills/ab-test-setup#main ~/.claude/skills/ab-test-setup

For one project only, change the path to .claude/skills/ab-test-setup. This skill also uses sample_size_calculator.py — copying SKILL.md alone won't be enough. See the folder on GitHub.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of A/B Test Setup

Show the full text317 lines
namedescriptionlicensemetadata
ab-test-setupWhen the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "conversion experiment," "statistical significance," or "test this." For tracking implementation, see analytics-tracking.MIT version: 1.0.0 author: Alireza Rezvani category: marketing updated: 2026-03-06

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 .claude/product-marketing-context.md exists, 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

Calculate It (bundled tool)

Use this skill's own calculator — don't eyeball it:

python3 scripts/sample_size_calculator.py --baseline 0.05 --mde 0.20            # human-readable
python3 scripts/sample_size_calculator.py --baseline 0.05 --mde 0.20 --json    # for pipelines
python3 scripts/sample_size_calculator.py --baseline 0.05 --mde 0.20 --daily-traffic 2000  # adds test-duration estimate

Paste sample_size_per_variation and the duration estimate directly into the test plan's "Sample size + duration" row before any test is approved to run.

Quick Reference

Generated by sample_size_calculator.py (two-proportion z-test, α=0.05 two-tailed, 80% power; relative MDE):

Baseline 10% Lift 20% Lift 50% Lift
1% 163k/variant 43k/variant 7.7k/variant
3% 53k/variant 14k/variant 2.5k/variant
5% 31k/variant 8.2k/variant 1.5k/variant
10% 15k/variant 3.8k/variant 683/variant

Cross-check calculators (should agree with the script within rounding):

For detailed sample size tables and duration calculations: See 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

DON'T:

  • 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


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?

Proactive Triggers

Proactively offer A/B test design when:

  1. Conversion rate mentioned — User shares a conversion rate and asks how to improve it; suggest designing a test rather than guessing at solutions.
  2. Copy or design decision is unclear — When two variants of a headline, CTA, or layout are being debated, propose testing instead of opinionating.
  3. Campaign underperformance — User reports a landing page or email performing below expectations; offer a structured test plan.
  4. Pricing page discussion — Any mention of pricing page changes should trigger an offer to design a pricing test with guardrail metrics.
  5. Post-launch review — After a feature or campaign goes live, propose follow-up experiments to optimize the result.

Output Artifacts

Artifact Format Description
Experiment Brief Markdown doc Hypothesis, variants, metrics, sample size, duration, owner
Sample Size Calculator Input Table Baseline rate, MDE, confidence level, power
Pre-Launch QA Checklist Checklist Implementation, tracking, variant rendering verification
Results Analysis Report Markdown doc Statistical significance, effect size, segment breakdown, decision
Test Backlog Prioritized list Ranked experiments by expected impact and feasibility

Communication

All outputs should meet the quality standard: clear hypothesis, pre-registered metrics, and documented decisions. Avoid presenting inconclusive results as wins. Every test should produce a learning, even if the variant loses. Reference marketing-context for product and audience framing before designing experiments.


  • page-cro — USE when you need ideas for what to test; NOT when you already have a hypothesis and just need test design.
  • analytics-tracking — USE to set up measurement infrastructure before running tests; NOT as a substitute for defining primary metrics upfront.
  • campaign-analytics — USE after tests conclude to fold results into broader campaign attribution; NOT during the test itself.
  • pricing-strategy — USE when test results affect pricing decisions; NOT to replace a controlled test with pure strategic reasoning.
  • marketing-context — USE as foundation before any test design to ensure hypotheses align with ICP and positioning; always load first.
1---
2name: "ab-test-setup"
3description: When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "conversion experiment," "statistical significance," or "test this." For tracking implementation, see analytics-tracking.
4license: MIT
5metadata:
6 version: 1.0.0
7 author: Alireza Rezvani
8 category: marketing
9 updated: 2026-03-06
10---
11 
12# A/B Test Setup
13 
14You are an expert in experimentation and A/B testing. Your goal is to help design tests that produce statistically valid, actionable results.
15 
16## Initial Assessment
17 
18**Check for product marketing context first:**
19If `.claude/product-marketing-context.md` exists, read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
20 
21Before designing a test, understand:
22 
231. **Test Context** - What are you trying to improve? What change are you considering?
242. **Current State** - Baseline conversion rate? Current traffic volume?
253. **Constraints** - Technical complexity? Timeline? Tools available?
26 
27---
28 
29## Core Principles
30 
31### 1. Start with a Hypothesis
32- Not just "let's see what happens"
33- Specific prediction of outcome
34- Based on reasoning or data
35 
36### 2. Test One Thing
37- Single variable per test
38- Otherwise you don't know what worked
39 
40### 3. Statistical Rigor
41- Pre-determine sample size
42- Don't peek and stop early
43- Commit to the methodology
44 
45### 4. Measure What Matters
46- Primary metric tied to business value
47- Secondary metrics for context
48- Guardrail metrics to prevent harm
49 
50---
51 
52## Hypothesis Framework
53 
54### Structure
55 
56```
57Because [observation/data],
58we believe [change]
59will cause [expected outcome]
60for [audience].
61We'll know this is true when [metrics].
62```
63 
64### Example
65 
66**Weak**: "Changing the button color might increase clicks."
67 
68**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."
69 
70---
71 
72## Test Types
73 
74| Type | Description | Traffic Needed |
75|------|-------------|----------------|
76| A/B | Two versions, single change | Moderate |
77| A/B/n | Multiple variants | Higher |
78| MVT | Multiple changes in combinations | Very high |
79| Split URL | Different URLs for variants | Moderate |
80 
81---
82 
83## Sample Size
84 
85### Calculate It (bundled tool)
86 
87Use this skill's own calculator — don't eyeball it:
88 
89```bash
90python3 scripts/sample_size_calculator.py --baseline 0.05 --mde 0.20 # human-readable
91python3 scripts/sample_size_calculator.py --baseline 0.05 --mde 0.20 --json # for pipelines
92python3 scripts/sample_size_calculator.py --baseline 0.05 --mde 0.20 --daily-traffic 2000 # adds test-duration estimate
93```
94 
95Paste `sample_size_per_variation` and the duration estimate directly into the test plan's "Sample size + duration" row before any test is approved to run.
96 
97### Quick Reference
98 
99Generated by `sample_size_calculator.py` (two-proportion z-test, α=0.05 two-tailed, 80% power; relative MDE):
100 
101| Baseline | 10% Lift | 20% Lift | 50% Lift |
102|----------|----------|----------|----------|
103| 1% | 163k/variant | 43k/variant | 7.7k/variant |
104| 3% | 53k/variant | 14k/variant | 2.5k/variant |
105| 5% | 31k/variant | 8.2k/variant | 1.5k/variant |
106| 10% | 15k/variant | 3.8k/variant | 683/variant |
107 
108**Cross-check calculators** (should agree with the script within rounding):
109- [Evan Miller's](https://www.evanmiller.org/ab-testing/sample-size.html)
110- [Optimizely's](https://www.optimizely.com/sample-size-calculator/)
111 
112**For detailed sample size tables and duration calculations**: See [references/sample-size-guide.md](references/sample-size-guide.md)
113 
114---
115 
116## Metrics Selection
117 
118### Primary Metric
119- Single metric that matters most
120- Directly tied to hypothesis
121- What you'll use to call the test
122 
123### Secondary Metrics
124- Support primary metric interpretation
125- Explain why/how the change worked
126 
127### Guardrail Metrics
128- Things that shouldn't get worse
129- Stop test if significantly negative
130 
131### Example: Pricing Page Test
132- **Primary**: Plan selection rate
133- **Secondary**: Time on page, plan distribution
134- **Guardrail**: Support tickets, refund rate
135 
136---
137 
138## Designing Variants
139 
140### What to Vary
141 
142| Category | Examples |
143|----------|----------|
144| Headlines/Copy | Message angle, value prop, specificity, tone |
145| Visual Design | Layout, color, images, hierarchy |
146| CTA | Button copy, size, placement, number |
147| Content | Information included, order, amount, social proof |
148 
149### Best Practices
150- Single, meaningful change
151- Bold enough to make a difference
152- True to the hypothesis
153 
154---
155 
156## Traffic Allocation
157 
158| Approach | Split | When to Use |
159|----------|-------|-------------|
160| Standard | 50/50 | Default for A/B |
161| Conservative | 90/10, 80/20 | Limit risk of bad variant |
162| Ramping | Start small, increase | Technical risk mitigation |
163 
164**Considerations:**
165- Consistency: Users see same variant on return
166- Balanced exposure across time of day/week
167 
168---
169 
170## Implementation
171 
172### Client-Side
173- JavaScript modifies page after load
174- Quick to implement, can cause flicker
175- Tools: PostHog, Optimizely, VWO
176 
177### Server-Side
178- Variant determined before render
179- No flicker, requires dev work
180- Tools: PostHog, LaunchDarkly, Split
181 
182---
183 
184## Running the Test
185 
186### Pre-Launch Checklist
187- [ ] Hypothesis documented
188- [ ] Primary metric defined
189- [ ] Sample size calculated
190- [ ] Variants implemented correctly
191- [ ] Tracking verified
192- [ ] QA completed on all variants
193 
194### During the Test
195 
196**DO:**
197- Monitor for technical issues
198- Check segment quality
199- Document external factors
200 
201**DON'T:**
202- Peek at results and stop early
203- Make changes to variants
204- Add traffic from new sources
205 
206### The Peeking Problem
207Looking 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.
208 
209---
210 
211## Analyzing Results
212 
213### Statistical Significance
214- 95% confidence = p-value < 0.05
215- Means <5% chance result is random
216- Not a guarantee—just a threshold
217 
218### Analysis Checklist
219 
2201. **Reach sample size?** If not, result is preliminary
2212. **Statistically significant?** Check confidence intervals
2223. **Effect size meaningful?** Compare to MDE, project impact
2234. **Secondary metrics consistent?** Support the primary?
2245. **Guardrail concerns?** Anything get worse?
2256. **Segment differences?** Mobile vs. desktop? New vs. returning?
226 
227### Interpreting Results
228 
229| Result | Conclusion |
230|--------|------------|
231| Significant winner | Implement variant |
232| Significant loser | Keep control, learn why |
233| No significant difference | Need more traffic or bolder test |
234| Mixed signals | Dig deeper, maybe segment |
235 
236---
237 
238## Documentation
239 
240Document every test with:
241- Hypothesis
242- Variants (with screenshots)
243- Results (sample, metrics, significance)
244- Decision and learnings
245 
246**For templates**: See [references/test-templates.md](references/test-templates.md)
247 
248---
249 
250## Common Mistakes
251 
252### Test Design
253- Testing too small a change (undetectable)
254- Testing too many things (can't isolate)
255- No clear hypothesis
256 
257### Execution
258- Stopping early
259- Changing things mid-test
260- Not checking implementation
261 
262### Analysis
263- Ignoring confidence intervals
264- Cherry-picking segments
265- Over-interpreting inconclusive results
266 
267---
268 
269## Task-Specific Questions
270 
2711. What's your current conversion rate?
2722. How much traffic does this page get?
2733. What change are you considering and why?
2744. What's the smallest improvement worth detecting?
2755. What tools do you have for testing?
2766. Have you tested this area before?
277 
278---
279 
280## Proactive Triggers
281 
282Proactively offer A/B test design when:
283 
2841. **Conversion rate mentioned** — User shares a conversion rate and asks how to improve it; suggest designing a test rather than guessing at solutions.
2852. **Copy or design decision is unclear** — When two variants of a headline, CTA, or layout are being debated, propose testing instead of opinionating.
2863. **Campaign underperformance** — User reports a landing page or email performing below expectations; offer a structured test plan.
2874. **Pricing page discussion** — Any mention of pricing page changes should trigger an offer to design a pricing test with guardrail metrics.
2885. **Post-launch review** — After a feature or campaign goes live, propose follow-up experiments to optimize the result.
289 
290---
291 
292## Output Artifacts
293 
294| Artifact | Format | Description |
295|----------|--------|-------------|
296| Experiment Brief | Markdown doc | Hypothesis, variants, metrics, sample size, duration, owner |
297| Sample Size Calculator Input | Table | Baseline rate, MDE, confidence level, power |
298| Pre-Launch QA Checklist | Checklist | Implementation, tracking, variant rendering verification |
299| Results Analysis Report | Markdown doc | Statistical significance, effect size, segment breakdown, decision |
300| Test Backlog | Prioritized list | Ranked experiments by expected impact and feasibility |
301 
302---
303 
304## Communication
305 
306All outputs should meet the quality standard: clear hypothesis, pre-registered metrics, and documented decisions. Avoid presenting inconclusive results as wins. Every test should produce a learning, even if the variant loses. Reference `marketing-context` for product and audience framing before designing experiments.
307 
308---
309 
310## Related Skills
311 
312- **page-cro** — USE when you need ideas for *what* to test; NOT when you already have a hypothesis and just need test design.
313- **analytics-tracking** — USE to set up measurement infrastructure before running tests; NOT as a substitute for defining primary metrics upfront.
314- **campaign-analytics** — USE after tests conclude to fold results into broader campaign attribution; NOT during the test itself.
315- **pricing-strategy** — USE when test results affect pricing decisions; NOT to replace a controlled test with pure strategic reasoning.
316- **marketing-context** — USE as foundation before any test design to ensure hypotheses align with ICP and positioning; always load first.
317 

Discussion

Alternatives

Also in A/B testingSee all 364 in Marketing →
A/B Test SetupWhen 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.Marketing · MITAd Copy Generator + A/B TesterGenerate and A/B test Google Ads copy. Use when asked to write ad copy, headlines, descriptions, create ad variants, test ad messaging, improve CTR, or generate RSA (Responsive Search Ad) components. Trigger on "ad copy", "write ads", "headlines", "descriptions", "RSA", "responsive search ad", "ad text", "ad creative", "improve CTR", "ad A/B test", "ad variants", "write me an ad", "ad variation experiment", or when the user wants to improve click-through rate on existing ads.Marketing · MITA/B Test Planner SkillDesign statistically rigorous A/B tests for product features, UI changes, onboarding flows, and pricing experiments. Use when asked to set up an experiment, design an A/B test, calculate sample size, or interpret test results. Produces a complete test plan with hypothesis, variant definitions, sample size, duration estimate, guardrail metrics, and a results interpretation guide.Marketing · MITConversion Rate Optimization (CRO)When the user wants to optimize, improve, or increase conversions on any marketing page or form — including homepage, landing pages, pricing pages, feature pages, lead capture forms, or contact forms. Also use when the user says 'CRO,' 'conversion rate optimization,' 'this page isn't converting,' 'improve conversions,' 'why isn't this page working,' 'my landing page sucks,' 'form abandonment,' 'nobody's converting,' 'low conversion rate,' or 'this page needs work.' Use this even if the user just shares a URL and asks for feedback. For signup/registration flows, see signup. For post-signup activation, see onboarding. For popups/modals, see popups.Marketing · MIT