brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
ab-copy-writerGenerate A/B copy variants grounded in Eugene Schwartz's awareness and market-sophistication stages and John Caples' tested-headline discipline. Every variant declares its angle, the awareness stage it targets, and a falsifiable hypothesis, and the skill recommends which pair to test first and what delta counts as signal. Use when the user says "A/B test th…
Independent GitHub snapshot · Automated classification · Original documentation governs
Produces testable copy variants and argues for a specific test. Most variant generators produce five versions of the same idea and leave the choice to taste. This one selects angles from the reader's awareness stage, prioritises the element with the most leverage, and states what result would prove it wrong.
Schwartz's argument is that copy does not have a quality score in the abstract. It has a fit with where the reader already is. Two axes:
Awareness: how much the reader already knows.
| Stage | The reader | Copy must |
|---|---|---|
| Unaware | Does not know they have the problem | Name the problem before selling anything |
| Problem-aware | Feels the pain, does not know solutions exist | Articulate the pain better than they can |
| Solution-aware | Knows solutions exist, not that yours does | Show the mechanism and why it is faster or surer |
| Product-aware | Knows your product, not convinced | Prove it, with specifics and social proof |
| Most aware | Ready, needs a reason to act now | State the offer and the deadline |
The common failure is writing product-aware copy for problem-aware traffic. It reads as a good ad that nobody responds to.
Sophistication: how tired the market is of this claim.
| Stage | Market state | What still works |
|---|---|---|
| 1 | First to market | State the claim plainly. Nothing else needed |
| 2 | Competitors making the same claim | Make the claim bigger or more specific |
| 3 | Claims no longer believed | Lead with the mechanism, how it works |
| 4 | Mechanisms competing | Make your mechanism easier, faster, or surer |
| 5 | Everything sounds the same | Stop claiming. Identify with the reader's experience |
Sophistication is why a contrarian angle is mandatory in a crowded category and wasteful in a new one. Ask for it, or infer it from knowledge/markets/competitors.md.
Caples ran split-run tests at BBDO to measure actual response rather than opinion, and the book is the origin of the discipline this skill supports. Three findings that change how we test:
Test in this order. Do not test element 3 while element 1 is unresolved.
| Priority | Element | Why |
|---|---|---|
| 1 | Headline, subject line, LinkedIn hook, ad headline | Highest leverage by a wide margin |
| 2 | Offer and CTA wording | Changes what is being asked, not just how |
| 3 | Opening line, sub-headline | Decides whether the headline's promise is kept |
| 4 | Body copy, length, formatting | Real but small. Test last |
If the user asks for body-copy variants while the headline has never been tested, say so and offer to test the headline first.
Each angle is mapped to the awareness stage where it can work, the sophistication level it suits, and its Caples type. Never use the same angle twice in one set, and never pick an angle whose stage does not match the traffic.
| Angle | Works at awareness | Suits sophistication | Caples type |
|---|---|---|---|
| Pain-led | Problem-aware | 1-2 | Self-interest |
| Outcome-led | Solution / product-aware | 1-2 | Self-interest |
| Specificity | Solution / product-aware | 2-3 | Self-interest + news |
| Mechanism-led | Solution-aware | 3-4 | News |
| Speed-led | Solution-aware | 2-4 | Self-interest |
| Social proof | Product-aware | 3-4 | News |
| Contrarian | Unaware / problem-aware | 4-5 | Curiosity + self-interest |
| Curiosity gap | Unaware / problem-aware | 4-5 | Curiosity (never alone) |
| How-to | Problem / solution-aware | 2-3 | Self-interest |
| Identification | Any, strongest at 5 | 5 | Self-interest |
| FOMO / deadline | Most aware | any | News |
| Founder voice | Any | 4-5 | Identification |
Hard rule from Caples: a curiosity or contrarian variant must also carry a benefit. Curiosity that pays off in nothing is the most reliable loser in the set, and it is usually the variant that reads cleverest in the document.
Load context. Read knowledge/brand/voice.md for tone and banned words, knowledge/icp/personas.md for the language this audience uses, and knowledge/markets/positioning.md for the claim the copy must carry. If voice is missing, continue and mark the output generic rather than stopping.
Check knowledge/learnings.md for past test results. If a prior test settled an angle for this ICP, say so and weight accordingly rather than re-running a decided question.
Establish the two stages before writing anything. Ask, or infer and state the inference:
knowledge/markets/competitors.md.Both go in the output header. A variant set without a declared stage is a set of guesses, and every hypothesis below it is unfalsifiable.
Confirm the element and its priority. If the requested element is priority 3 or 4 and priority 1 is untested, flag it once.
Select angles. Filter the table to the declared awareness stage, then prefer angles matching the sophistication level. Default 3 variants, maximum 5. If the user supplied existing copy, include one variant that keeps their angle and sharpens the execution, so there is a baseline.
Write each variant:
## Variant [A-E]: [angle]
**Copy:**
[complete, ready to paste]
**Angle:** [from the table]
**Awareness stage:** [stage this is written for]
**Caples type:** [news | self-interest | curiosity + benefit]
**Hypothesis:** [why this should outperform for THIS ICP, referencing the stage]
**Would be proven wrong if:** [the observation that would kill it]
**Watch:** [the one metric that reads it]
## Recommended test
**Test:** Variant [X] vs Variant [Y]
**Why this pair:** [the one assumption they isolate]
**Element:** [name] (priority [N] of 4)
**Declared stages:** awareness [stage], sophistication [level]
**Primary metric:** [one]
**Signal threshold:** [what delta is worth acting on for this volume]
**Before launching:** run `/growth-experiment` to set sample size and the stopping rule.
Save to output/ab-copy/<DD-MM-YYYY>-<element-slug>.md with frontmatter carrying element, channel, awareness-stage, sophistication-level, angles, variants, created.
Offer follow-ups: run /retro after the test so the winning angle lands in knowledge/learnings.md, or /content-writer to build the winner out.
Testing the two most different variants is a weak default, because a loss tells you nothing about which of the several differences caused it.
| Channel | Element | Length |
|---|---|---|
| Hook (first 2 lines) | 15-25 words | |
| Full post | 80-220 words | |
| Subject line | 6-10 words | |
| Preview text | 8-12 words | |
| Landing page | H1 | 5-10 words |
| Landing page | Sub-headline | 15-25 words |
| Google ad | Headline | 30 characters |
| Google ad | Description | 90 characters |
| LinkedIn ad | Intro text | 150 characters |
| Webinar | Title | 8-12 words |
| CTA button | Text | 2-5 words |
Verify current platform limits before shipping paid copy. These change.
knowledge/brand/voice.md are respected, or their absence is declared[NEEDS INPUT: real figure]. A fabricated number in a winning variant ships to the whole audience.knowledge/learnings.md shows an angle already lost for this ICP, do not silently include it. Flag it or leave it out./positioning-doc. Testing headlines on a weak offer optimises the wrong thing./ad-campaign-writer applies the same Schwartz stages to full paid ad sets by platform/growth-experiment sets sample size and stopping rules before the test runs/copy-review improves a single piece rather than generating alternatives/page-cro when the page underperforms for reasons beyond its words/retro records which angle won, so knowledge/learnings.md improves the next set/brand-context creates the voice, persona and competitor files this reads/growth-experiment before launching