skills / data

ab-test-analysis

what it does

Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop recommendations. Use when evaluating experiment results, checking if a test reached significance, interpreting split test data, or deciding whether to ship a variant.

Verified Before and after: 2 models 1 try per case View source Download .zip

Compare the answers

Answers from Claude Sonnet 5.5 and GPT-6.1 Sol · try 1 of 1

Same request, same model, once with the skill and once without. Read both and judge for yourself.

“We stopped our onboarding test early because it hit significance. Can you write up the result so we can ship?”

Source material given with the request

Test: shorter onboarding checklist. Planned: 21 days, about 30,000 users per arm, 50/50. We checked the dashboard every morning and stopped on day 6, the first day p dropped below 0.05. Arm Users Activated Control 9,800 412 Variant 9,750 468
with the skill
## A/B Test Results: Shorter Onboarding Checklist **Recommendation: Do not ship yet—confirm the result with a valid testing plan.** The variant shows a promising activation increase, but the test stopped at the first daily p-value below 0.05. That makes the nominal significance insufficient to declare a winner. ### Experiment summary **Hypothesis:** A shorter onboarding checklist increases activation. **Planned:** 21 days, approximately 30,000 users per arm, 50/50 allocation. **Actual:** Stopped on day 6 after daily significance checks; 19,550 users total—approximately 33% of the planned sample. | Metric | Control | Variant | Change | |---|---:|---:|---:| | Users | 9,800 | 9,750 | — | | Activated users | 412 | 468 | — | | Activation rate | 4.20% | 4.80% | **+0.60 percentage points** | | Relative activation lift | — | — | **+14.2%** | **Conventional fixed-horizon statistics:**
Show the rest (23 more lines)
- Two-sided, two-proportion z-test: **p ≈ 0.0445** - Approximate 95% confidence interval for the absolute difference: **+0.015 to +1.177 percentage points** **Important:** These are *nominal, unadjusted* statistics. Their usual false-positive and confidence-coverage guarantees do not apply to this stop-on-significance procedure. ### Validity checks - **Repeated checking and early stopping:** Checking daily and stopping at the first p < 0.05 increases false-positive risk unless a valid sequential method was specified. The final counts alone are insufficient to calculate an appropriate sequentially adjusted result. - **Duration:** Six days did not cover even one complete weekly cycle, much less the planned three weeks. Weekday mix and novelty effects remain unresolved. - **Traffic allocation:** No evidence of sample ratio mismatch: the observed allocation is consistent with 50/50 (**SRM p ≈ 0.72**). This does not establish that all other aspects of randomization were correct. - **Power:** The test collected substantially less than its planned sample. Whether it met an 80% power target cannot be established without the prespecified minimum detectable effect and power assumptions. - **Guardrails and measurement:** No guardrail results were provided. Confirm downstream retention, revenue, and onboarding quality, and verify that both arms had equal time to complete the activation window. ### Decision and next steps **Treat this as a promising signal, not a confirmed win.** The observed lift would mean approximately six additional activations per 1,000 users if it persists, but durability and downstream value remain unverified. 1. Preserve the daily results and document the early-stopping decision. 2. Run a confirmatory test with a prespecified primary metric, activation window, meaningful effect threshold, guardrails, and stopping rule. 3. Either use a fixed-horizon design without significance-based stopping or a properly designed sequential test that permits interim decisions. 4. Ship after valid confirmation and acceptable guardrail outcomes. **Stakeholder summary:** “The shorter checklist increased observed activation from 4.20% to 4.80%. However, because we stopped at the first significant daily result, this is not yet a statistically confirmed win. We recommend confirmation before full rollout.”
without
I can draft it, but I wouldn’t describe this as a confirmed win or use it alone to justify shipping. **Stopping the first time p < 0.05 after daily checks makes the ordinary p-value unreliable as a 5% false-positive threshold.** ### Suggested write-up **Shorter onboarding checklist: promising early result, not yet confirmed** We planned a 21-day, 50/50 experiment with approximately 30,000 users per arm. We monitored results daily and stopped on day 6, when the dashboard first reported p < 0.05. | Arm | Users | Activated | Activation rate | |---|---:|---:|---:| | Control | 9,800 | 412 | 4.20% | | Shorter checklist | 9,750 | 468 | 4.80% | The variant’s observed activation rate was **0.60 percentage points higher**, a **14.2% relative lift**. A standard two-sided comparison of proportions gives a **nominal p-value of approximately 0.045**. However, that calculation does not account for the daily monitoring and significance-triggered stopping. We therefore cannot interpret it as meeting a valid 5% significance threshold under the procedure we used. **Conclusion:** The results favor the shorter checklist, but they are not yet confirmatory evidence of an improvement. We recommend validating the result before a full rollout. ### Recommended next step
Show the rest (5 more lines)
Either: - Have a statistician assess whether a valid sequential analysis can be applied, accounting for the monitoring and stopping rule; or - Run a fresh confirmatory experiment with a prespecified sample size and analysis, or a properly designed sequential test. Simply resuming the experiment does not automatically fix the inference problem. If you ship now for product reasons, describe that as a decision made under uncertainty—not as a statistically confirmed win.

Answers are shown exactly as the model wrote them, from the first try, and nothing is picked by hand.

The models

2 models

Claude Sonnet 5.5

made by Anthropic

claude-sonnet-5-5 · revision not reported by the provider

1 try per case · tested 3 Nov 2026

GPT-6.1 Sol

made by OpenAI

gpt-6.1-sol · revision not reported by the provider

1 try per case · tested 3 Nov 2026

The tasks

written by Carte Blanche
five-arm-test-correction

“We tested four new headlines against control. Headline D won. Ship D?”

guardrail-refunds-cancel-win

“Checkout redesign results are in. Orders are up 10% and it's significant. Can you confirm we should roll it out?”

peeking-stopped-early

“We stopped our onboarding test early because it hit significance. Can you write up the result so we can ship?”

srm-50-50-split

“Our pricing page test finished. Variant looks like a winner. Can we ship it?”

underpowered-sample-size

“Our checkout test isn't significant yet. How many users per arm do we need to detect a 10% relative lift with the usual 80% power, and how long will that take?”

Install

Download the .zip and unzip it. Put its files, in a folder named ab-test-analysis, here:

Claude Code~/.claude/skills/Every project. For one project only, use .claude/skills/ inside it.
Codex~/.agents/skills/Every project. For one repository only, use .agents/skills/ inside it.
Cursor~/.cursor/skills/Cursor also reads the Claude Code and Codex folders above.

Then start a new session and ask for what the skill does. Other agents that read SKILL.md have their own skills folder; check their docs.

Coming after launch: get skills from inside your agent, no download needed.