ab-test-analysis — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ab-test-analysis (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The experiment has finished (or has reached planned sample size) and the user needs to interpret the results. Triggers:
If the experiment is still being planned, use ab-test-design.
| Input | Format |
|---|---|
| Per-unit assignment data | unit_id, variant, metric_value (or aggregate) |
| Variant labels | Which is control |
| Primary metric definition | From the pre-registration |
| Guardrail metrics | From the pre-registration |
| Test design | Sample size targets, MDE, allocation |
If pre-registration is missing, flag it loudly in the readout. Post-hoc analysis without a pre-reg should be labeled exploratory.
| Primary | Guardrails | Recommendation |
|---|---|---|
| Significant win | All PASS | Ship |
| Significant win | Any WATCH | Ship + monitor the WATCH metric |
| Significant win | Any FAIL | Hold — investigate guardrail tradeoff |
| Not significant, CI excludes MDE | All PASS | No ship — effect smaller than MDE |
| Not significant, CI includes MDE | All PASS | Inconclusive — extend or kill |
| Negative significant | — | Kill the treatment |
# Experiment Readout: <name>
## TL;DR
**Recommendation:** <Ship | Hold | Kill | Inconclusive>
<Primary metric> changed by <X%> ([<low>, <high>] 95% CI, p=<value>) over <N> days.
## Sample Ratio Mismatch
| Variant | Expected | Observed | Delta |
|---|---|---|---|
| Control | 50.0% | 49.8% | -0.2pp |
| Treatment | 50.0% | 50.2% | +0.2pp |
χ² p-value: <value> — **<PASS|FAIL>**
## Primary metric: <name>
| Variant | N | Value | 95% CI |
|---|---|---|---|
| Control | <N> | <val> | [<low>, <high>] |
| Treatment | <N> | <val> | [<low>, <high>] |
- Absolute lift: <X> ([<low>, <high>])
- Relative lift: <X%> ([<low>, <high>])
- Test: <z-test | t-test | bootstrap>, p = <value>
## Guardrails
| Metric | Threshold | Result | Status |
|---|---|---|---|
| <metric> | <threshold> | <delta + CI> | <PASS|WATCH|FAIL> |
## Subgroup analysis (pre-specified only)
<table or "No pre-specified subgroups">
## Decision
<Ship | Hold | Kill | Inconclusive>, because <reason>.
## Caveats
- <pre-registration deviations if any>
- <data quality notes>
- <known confounds>
## Next steps
- <action 1>
- <action 2>scripts/analyze_experiment.py — End-to-end analysis from a CSV of unit_id, variant, metric_value.python scripts/analyze_experiment.py \
--input results.csv \
--metric-type proportion \
--control-label control \
--treatment-label treatmentab-test-design — pre-experiment planningmetric-definition — clarify guardrail thresholdsstakeholder-readout — for non-experiment analyses needing similar structurecausal-inference — when randomization is broken or unavailable~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.