Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Run Karpathy-style autoresearch optimization on any content. Generates 50+ variants, scores with a 5-expert simulated panel, evolves winners through multiple rounds, outputs optimized version + full experiment log. Use when optimizing landing pages, email sequences, ad copy, headlines, form pages, CTA text, or any conversion-focused content. Triggers on "optimize this page", "run autoresearch", "score these variants", "A/B test this copy".
.claude/skills/evolution-foundation-mkt-autoresearch/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 103% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 81% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 52% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 64% | 0% |
Karpathy-style optimization loops for any conversion-focused content. No traffic needed. Simulated expert panel. Minutes, not weeks.
When to use this: Pre-launch content optimization. Generate 50+ variants, score with 5 simulated experts, evolve winners, output the best version + full experiment log.
When NOT to use this: Post-launch real-traffic A/B testing — that requires real analytics, not simulated scoring.
> The sequence: Run autoresearch FIRST to hit 85+ simulated score. Then deploy. Then validate with real traffic.
Every run outputs 3 files:
| File | Purpose | |------|---------| | {name}-optimized.{ext} | The winning optimized content | | data/{name}-experiments.json | Full experiment log — all variants + all scores | | data/{name}-optimization-report.md | Human-readable summary with winner rationale |
Score every variant against all 5. Batch all variants into a single API call per round.
| # | Persona | Scoring Lens | |---|---------|-------------| | 1 | CMO at a mid-market B2B company (50M+ revenue) | "Would this make me stop and engage?" | | 2 | Skeptical founder | "Do I believe this? Would I trust this company?" | | 3 | Conversion rate optimizer | "Is this clear, specific, and action-driving?" | | 4 | Senior copywriter | "Is this compelling, differentiated, and well-crafted?" | | 5 | Your CEO/founder | "Direct, ROI-obsessed, no BS. Would I put this on my site?" |
> Customization: Replace persona #5 with your own CEO/founder voice. Define their priorities and communication style in a references/founder-voice.md file.
Each judge scores 0–100. Final score = average across all 5 judges.
Round 1:
→ Generate 10 variants of the element
→ Batch-score all 10 with the 5-expert panel (1 API call)
→ Rank by average score
→ Keep top 3
Round 2 (Evolution):
→ Analyze what the top 3 did right
→ Generate 10 new variants that push those winning patterns further
→ Batch-score all 10 (1 API call)
→ Keep top 3
Round 3 (If score < threshold):
→ Identify weakest scoring dimension
→ Generate 10 variants optimized for that dimension
→ Batch-score → keep top 1
Multi-element cross-breeding:
→ Take top 1 winner from each element
→ Generate 5 combinations that mix winning elements
→ Score holistically as complete units
→ Output the single best combinationStop condition: Top variant hits minimum score threshold (default: 80) OR 3 rounds complete.
Elements to optimize: Hero headline, subheadline, CTA text, problem section, social proof
Score dimensions:
first_impression — Does it grab immediately?clarity — Is the offer instantly understood?trust — Does it feel credible?urgency — Is there a reason to act now?would_convert — Would the judge actually click?Elements to optimize: Subject line, opening line, body copy, CTA, PS line
Score dimensions:
would_open — Subject line pass ratewould_read — Does the opening hook?would_click — Is the CTA compelling?would_reply — Does it feel personal enough to respond to?spam_risk — Does it feel spammy? (lower = better; invert for final score)Elements to optimize: Headline, description, CTA
Score dimensions:
scroll_stopping — Does it interrupt the scroll?clarity — Is the value prop clear in 3 seconds?click_worthiness — Does the judge want to click?relevance — Does it match likely audience intent?differentiation — Does it stand out from competitors?Elements to optimize: Headline, subtext, value prop bullets, button text, field order, thank-you copy
Score dimensions:
first_impression — Does it feel worth filling out?trust — Do they believe their info is safe and the offer is real?completion_likelihood — Would the judge start filling it out?lead_quality — Would this attract serious prospects (not tire-kickers)?would_fill_out — Final gut check: would they submit?Read the source content. Identify content type automatically or confirm with user:
Extract all optimizable elements. List them back to user:
Found 5 elements to optimize:
1. Hero headline: "We help B2B companies grow"
2. Subheadline: "Full-service digital marketing..."
3. CTA: "Get Started"
4. Problem statement: [excerpt]
5. Social proof: [excerpt]
Optimizing: all | Variants per round: 10 | Min score: 80Check for Anthropic API key: $ANTHROPIC_API_KEY environment variable.
bashexport ANTHROPIC_API_KEY="your-api-key-here"
For each element, run the round structure above.
Critical API efficiency rule: ALWAYS batch all variants into a single prompt. Never call the API once per variant. A round with 10 variants = 1 API call.
Model preference (in order):
claude-sonnet-4-5 (preferred — fast + smart)claude-opus-4 (if highest quality needed)After all elements have winners:
bash# Create output directory mkdir -p data # Write optimized content # Write experiments JSON # Write optimization report
Experiments JSON structure:
json{ "run_id": "autoresearch-{name}-{timestamp}", "content_type": "landing_page", "source_file": "path/to/original", "min_score_threshold": 80, "rounds": [ { "round": 1, "element": "hero_headline", "variants": [ { "id": 1, "text": "...", "scores": { "cmo": 72, "skeptical_founder": 68, "cro": 75, "copywriter": 70, "founder": 65 }, "avg_score": 70 } ], "top_3": [1, 4, 7], "winner_score": 82 } ], "final_winner": { "hero_headline": "...", "subheadline": "...", "cta": "...", "holistic_score": 87 } }
Summarize results to user:
| Option | Default | Description | |--------|---------|-------------| | elements | all | Which elements to optimize | | variants_per_round | 10 | How many variants to generate per round | | min_score | 80 | Stop when this score is hit | | rounds | 3 | Max rounds before stopping | | auto_apply | false | Whether to overwrite the source file with winners | | content_type | auto-detect | Force a content type if auto-detect is wrong |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | pass→pass | 26,895 | 26,302 | -2% | 1 | 1 | 0% | 6,188 | 8,476 | +37% | 0 | 0 | — |
case-01 | fail→fail | 3,996 | 4,709 | +18% | 1 | 1 | 0% | 228 | 2,540 | +1014% | 0 | 0 | — |
case-02 | fail→fail | 3,666 | 3,630 | -1% | 1 | 1 | 0% | 192 | 2,484 | +1194% | 0 | 0 | — |
case-03 | fail→fail | 4,404 | 4,192 | -5% | 1 | 1 | 0% | 344 | 2,484 | +622% | 0 | 0 | — |
case-04 | fail→fail | 7,108 | 10,060 | +42% | 1 | 1 | 0% | 1,292 | 4,084 | +216% | 0 | 0 | — |
case-05 | pass→pass | 14,433 | 17,153 | +19% | 1 | 1 | 0% | 2,526 | 5,478 | +117% | 0 | 0 | — |
case-07 | pass→pass | 16,420 | 10,535 | -36% | 1 | 1 | 0% | 2,657 | 4,144 | +56% | 0 | 0 | — |
case-08 | pass→fail | 11,992 | 6,601 | -45% | 1 | 1 | 0% | 2,089 | 3,454 | +65% | 0 | 0 | — |
case-09 | fail→pass | 14,358 | 13,321 | -7% | 1 | 1 | 0% | 2,188 | 4,449 | +103% | 0 | 0 | — |
case-10 | fail→pass | 11,478 | 7,154 | -38% | 1 | 1 | 0% | 1,897 | 3,438 | +81% | 0 | 0 | — |
case-11 | fail→pass | 13,846 | 5,732 | -59% | 1 | 1 | 0% | 2,368 | 3,259 | +38% | 0 | 0 | — |
case-12 | pass→pass | 3,133 | 3,780 | +21% | 1 | 1 | 0% | 571 | 2,906 | +409% | 0 | 0 | — |
case-13 | pass→pass | 12,459 | 7,344 | -41% | 1 | 1 | 0% | 2,152 | 3,478 | +62% | 0 | 0 | — |
case-14 | pass→pass | 5,193 | 3,044 | -41% | 1 | 1 | 0% | 817 | 2,823 | +246% | 0 | 0 | — |
case-15 | pass→pass | 7,280 | 3,560 | -51% | 1 | 1 | 0% | 1,175 | 2,928 | +149% | 0 | 0 | — |
case-16 | fail→fail | 10,795 | 7,029 | -35% | 1 | 1 | 0% | 1,724 | 3,524 | +104% | 0 | 0 | — |
case-17 | fail→fail | 10,172 | 2,910 | -71% | 1 | 1 | 0% | 1,996 | 2,825 | +42% | 0 | 0 | — |
case-18 | fail→pass | 10,311 | 2,370 | -77% | 1 | 1 | 0% | 1,743 | 2,647 | +52% | 0 | 0 | — |
case-19 | pass→pass | 11,528 | 3,408 | -70% | 1 | 1 | 0% | 1,919 | 2,840 | +48% | 0 | 0 | — |
case-20 | pass→pass | 13,096 | 7,566 | -42% | 1 | 1 | 0% | 2,353 | 3,613 | +54% | 0 | 0 | — |
case-21 | fail→pass | 11,447 | 4,917 | -57% | 1 | 1 | 0% | 1,932 | 3,177 | +64% | 0 | 0 | — |
case-22 | pass→fail | 11,495 | 7,103 | -38% | 1 | 1 | 0% | 2,037 | 3,312 | +63% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 19 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.