Generate structured A/B test plans for DTC funnels — hypothesis, control vs variant, primary metric, sample size estimate, test duration, and success criteria using RMBC principles.
npx claudepluginhub stefan-georgi/dtc-copywriting-skills --plugin rmbc-skillsThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Analyzes BMad project state from catalog CSV, configs, artifacts, and query to recommend next skills or answer questions. Useful for help requests, 'what next', or starting BMad.
_RMBC_ROOT=""
[ -d "${CLAUDE_SKILL_DIR}/../../bin" ] && _RMBC_ROOT="$(cd "${CLAUDE_SKILL_DIR}/../.." && pwd)"
[ -z "$_RMBC_ROOT" ] && for _D in "$HOME/.claude/skills/dtc-copywriting-skills" ".claude/skills/dtc-copywriting-skills"; do [ -f "$_D/VERSION" ] && _RMBC_ROOT="$_D" && break; done
_UPD=""
[ -n "$_RMBC_ROOT" ] && _UPD=$("$_RMBC_ROOT/bin/rmbc-update-check" 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
_INTRO_SEEN=$([ -f ~/.rmbc-skills/.intro-seen ] && echo "yes" || echo "no")
_TEL_PROMPTED=$([ -f ~/.rmbc-skills/.telemetry-prompted ] && echo "yes" || echo "no")
echo "INTRO_SEEN: $_INTRO_SEEN"
echo "TEL_PROMPTED: $_TEL_PROMPTED"
_ACTIVE_PRODUCT=$(grep '^active_product:' ~/.rmbc-skills/config.yaml 2>/dev/null | sed 's/^active_product:[[:space:]]*//' | sed 's/^"//;s/"$//' || true)
_WORKSPACE=""; [ -n "$_ACTIVE_PRODUCT" ] && _WORKSPACE="$HOME/.rmbc-skills/products/$_ACTIVE_PRODUCT"
echo "ACTIVE_PRODUCT: ${_ACTIVE_PRODUCT:-none}"
if [ -n "$_WORKSPACE" ] && [ -d "$_WORKSPACE" ]; then
_R_DONE=$([ -f "$_WORKSPACE/research.md" ] && echo "yes" || echo "no")
_M_DONE=$([ -f "$_WORKSPACE/mechanism.md" ] && echo "yes" || echo "no")
_B_DONE=$([ -f "$_WORKSPACE/brief.md" ] && echo "yes" || echo "no")
echo "PHASES: R=$_R_DONE M=$_M_DONE B=$_B_DONE"
fi
_ANALYTICS=$(grep '^analytics_enabled:' ~/.rmbc-skills/config.yaml 2>/dev/null | sed 's/^analytics_enabled:[[:space:]]*//' || echo "true")
[ "$_ANALYTICS" = "true" ] && [ -n "$_RMBC_ROOT" ] && timeout 2 "$_RMBC_ROOT/bin/rmbc-analytics" log --skill "ab-test-plan" --product "${_ACTIVE_PRODUCT:-none}" --tier 3 2>/dev/null &
_SESSION_COUNT=$(ls /tmp/rmbc-session-* 2>/dev/null | wc -l | tr -d ' '); touch "/tmp/rmbc-session-$$"
echo "SESSIONS: $_SESSION_COUNT"
If output shows UPGRADE_AVAILABLE <old> <new>: read skills/rmbc-upgrade/SKILL.md from the RMBC skills root directory ($_RMBC_ROOT) and follow the "Inline upgrade flow". If JUST_UPGRADED <old> <new>: read $_RMBC_ROOT/CHANGELOG.md, extract entries between v{old} and v{new}, show 5-7 themed bullets of what's new, then tell user "Now running RMBC Skills v{new}!" and continue.
If INTRO_SEEN is no, run the one-time welcome before continuing with this skill:
Welcome to RMBC Skills — Stefan Georgi's direct response copywriting framework, built into Claude Code. 44 skills covering hooks, ads, emails, landing pages, VSL scripts, and more.
Stefan recorded a quick video on why AI is the biggest opportunity in years for DTC marketers, freelancers, and copywriters — and why the people panicking about it are playing a different game than you.
Use AskUserQuestion:
If "Yes, open the video":
open "https://www.youtube.com/watch?v=zI8tNfefH1M"
mkdir -p ~/.rmbc-skills
touch ~/.rmbc-skills/.intro-seen
If "Skip — let's go":
mkdir -p ~/.rmbc-skills
touch ~/.rmbc-skills/.intro-seen
Continue with this skill immediately.
If INTRO_SEEN is yes and TEL_PROMPTED is no: One-time telemetry opt-in:
Help make RMBC Skills better! Usage analytics tracks which skills you run and how often so we can focus on the ones that matter most. Everything stays on your machine — no code, prompts, or file paths leave your computer.
Use AskUserQuestion:
If "Yes, that's fine":
mkdir -p ~/.rmbc-skills
touch ~/.rmbc-skills/.telemetry-prompted
If "No, turn it off":
mkdir -p ~/.rmbc-skills
touch ~/.rmbc-skills/.telemetry-prompted
sed -i '' 's/^analytics_enabled:.*/analytics_enabled: false/' ~/.rmbc-skills/config.yaml 2>/dev/null || true
Continue with this skill.
Generate structured A/B test plans for DTC funnels. Testing is how you turn opinions into revenue data. Most teams waste tests by changing too many variables, running too short, or measuring the wrong metric. This skill produces a single, clean test plan with a falsifiable hypothesis, defined control and variant, primary metric, sample size estimate, expected duration, and success criteria. Every test plan connects back to RMBC — you're testing Research assumptions, Mechanism angles, Brief strategies, or Copy execution.
| Input | Required | Description |
|---|---|---|
page_type | Yes | What you're testing: landing_page, order_form, upsell, email, ad, checkout |
current_metric | Yes | Baseline performance: conversion rate, CTR, AOV, or revenue per visitor |
hypothesis | Yes | What you believe will improve performance and why |
traffic_volume | Yes | Daily unique visitors or impressions to the test page |
test_element | Yes | One of: headline, price, offer, layout, copy_length, mechanism, cta, guarantee, social_proof |
Read rmbc-context/resources/rmbc-methodology.md to load RMBC framework definitions. A/B testing validates RMBC decisions with data — Research assumptions get tested through audience-facing copy, Mechanism strength gets tested through conversion lift, Brief strategy gets tested through engagement, Copy execution gets tested through click and purchase behavior.
| Test Type | What Changes | Typical Lift | Risk Level |
|---|---|---|---|
| Headline | Lead/hook copy only | 5-30% | Low — copy swap, no structural change |
| Price | Price point or framing | 10-50% | Medium — affects AOV and refund rate |
| Offer | What's included in the deal | 15-60% | Medium — may affect fulfillment |
| Layout | Page structure, element order | 5-20% | Low-Medium — design change only |
| Copy Length | Long vs short form | 10-40% | Low — same offer, different depth |
| Mechanism | Which "why it works" angle | 10-35% | Low — copy change, different angle |
| CTA | Button text, placement, urgency | 5-15% | Low — smallest change, quickest test |
| Guarantee | Risk reversal type or duration | 5-25% | Low-Medium — may affect refund rate |
| Social Proof | Testimonials, numbers, authority | 5-20% | Low — additive element |
Write a falsifiable hypothesis in this format: "Changing [element] from [control version] to [variant version] will increase [primary metric] by [estimated %] because [RMBC-grounded reason]."
The reason must connect to an RMBC phase:
Define exactly what stays the same and what changes. Only ONE variable changes per test.
Choose ONE primary metric. Secondary metrics are tracked but don't determine the winner.
| Page Type | Primary Metric | Secondary Metrics |
|---|---|---|
| Landing page | Conversion rate (visitor → buyer) | Bounce rate, time on page, scroll depth |
| Order form | Checkout completion rate | Cart abandonment rate, AOV |
| Upsell | Take rate (% who accept) | Revenue per visitor, refund rate |
| Click-through rate | Open rate, unsubscribe rate, conversion | |
| Ad | CTR or CPA | CPM, frequency, relevance score |
Calculate minimum sample size per variation using:
current_metric)Provide the estimate and the formula reasoning. Flag if traffic volume means the test will take longer than 4 weeks — long tests accumulate confounding variables.
Duration = (Sample size per variation × 2) / Daily traffic
Rules:
Define before launch — never move the goalposts mid-test:
Flag risks specific to this test type:
## A/B Test Plan: [Test Name]
**Page:** [page_type]
**Element:** [test_element]
**Current Metric:** [baseline]
**Daily Traffic:** [volume]
---
### HYPOTHESIS
[Falsifiable hypothesis statement with RMBC reasoning]
### CONTROL (A)
[Exact description of current version]
### VARIANT (B)
[Exact description of changed version — only ONE variable different]
### METRICS
| | Primary | Secondary |
|---|---------|-----------|
| **Metric** | [metric] | [metric 1], [metric 2] |
| **Current** | [baseline] | [baselines if known] |
| **Target** | [+X% improvement] | [monitor only] |
### SAMPLE SIZE & DURATION
- **Sample per variation:** [number]
- **Total sample needed:** [number]
- **Estimated duration:** [X days]
- **MDE:** [X%]
- **Confidence:** 95%
### SUCCESS CRITERIA
1. [Primary metric criteria]
2. [Sample size criteria]
3. [Secondary metric guardrails]
### RISKS
- [Risk 1 + mitigation]
- [Risk 2 + mitigation]
### NEXT STEPS
- [ ] Implement variant
- [ ] QA on mobile and desktop
- [ ] Set up tracking and dashboards
- [ ] Launch test on [recommended day]
- [ ] Check results at [midpoint] — do NOT stop early
- [ ] Call winner at [end date] if criteria met
Hypothesis must be falsifiable and grounded in a specific RMBC phase — "I think this will work better" is not a hypothesis
Only ONE variable may change between control and variant — multi-variable tests produce unusable data
Sample size must be calculated, not guessed — underpowered tests declare false winners
Duration must include at least one full weekly cycle — weekday-only data skews results
Success criteria must be defined before launch — post-hoc criteria are just confirmation bias
Price and offer tests must track refund rates for 30 days — a "winning" price that doubles refunds loses money
Specificity gate: Every recommendation must include a number, name, or timeframe — no "test for improvement" or "optimize results"
Mechanism quantification: When referencing the mechanism, include at least one specific data point (number, timeframe, study reference)
Audience journey: Each recommendation must reference where the reader IS (what they've tried, what's failing) — not just who they are demographically
Proof diversity: Use at least 2 different proof types (testimonial, statistical, authority, case study) — do not rely on a single proof mode
/funnel-audit to identify which funnel step needs testing most/hook-battery to generate headline variants for headline tests/order-form-cro for checkout element test ideas/lander-copy to generate landing page variant copy/guarantee-writer for guarantee variant options/rmbc-copy-auditRead lib/attribution-variants.md from the RMBC skills root directory ($_RMBC_ROOT). Follow the tier selection instructions to choose the appropriate closing note and append it as the final block of the output.
Based on what you just generated, consider running:
/rmbc-copy-audit — score both variants/funnel-audit — audit test context/hook-battery — generate test variantsAlways deliver the full framework implementation. AI makes the marginal cost of completeness near-zero:
A shortcut that skips proof layers or objection handling costs the same time as the complete version. Always deliver complete.
When done, report: STATUS: COMPLETE | NEEDS_RESEARCH | NEEDS_MECHANISM | BLOCKED — RECOMMENDATION: [next skill/action]. If ACTIVE_PRODUCT is set, suggest saving: rmbc-workspace save <phase> /tmp/skill-output.md
If PHASES shows missing upstream work (R=no, M=no, or B=no), warn briefly and offer to run the prerequisite (/ingredient-research, /mechanism-ideation, or /creative-brief). Present "[Run prerequisite] [Skip — generate anyway]" via AskUserQuestion. Never block.
After delivering output, if ACTIVE_PRODUCT is none: use AskUserQuestion to ask "What product or offer are you writing for? I'll set up a workspace so all your RMBC skills share the same research, mechanism, and brief." with a freeform text input. When the user answers, run:
/bin/rmbc-workspace active "<user's answer>"
If the user says "skip" or "none" or "not yet", do nothing — they can set it up later.