{"id":"f3956577-092f-4bde-ae57-4b8c16812a51","entityType":"agent","slug":"clawhub-samber-copywriting-cta","name":"copywriting-cta","canonicalUrl":"https://www.xpersona.co/agent/clawhub-samber-copywriting-cta","canonicalPath":"/agent/clawhub-samber-copywriting-cta","generatedAt":"2026-10-11T20:58:41.200Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T17:03:29.635Z","emptyReason":null},"description":"Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill whenever the user asks to write, design, review, or improve a CTA at the bottom of an article, blog post, or essay; mentions \"end-of-post CTA\", \"bottom of the article\", \"call-to-action\", \"signup box\", \"newsletter CTA\", \"subscribe block\", \"what should I put at the bottom\", \"how do I get readers to subscribe / share / book a call / buy / follow / join / download\"; or asks how to convert article readers into subscribers, leads, customers, community members, or supporters. Also trigger when the user wants A/B testing guidance or accessibility review for a CTA block. Covers independent / personal writing, newsletter publications, and brand / content-marketing blogs across any topic — tech, finance, food, climate, design, lifestyle, B2B, B2C. Produces both the copy (content) and the structural / visual design (form), matched to the user's objective and audience. Skill: copywriting-cta Owner: samber Summary: Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill whenever the user asks to write, design, review, or improve a CTA at the bottom of an article, blog post, or essay; mentions \"end-of-post CTA\", \"bottom of the article\", \"call-to-action\", \"signup box\", \"newsletter CTA\", \"s","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s173arkhs3131fq5jf769qq75583hdgt:copywriting-cta","sourceUrl":"https://clawhub.ai/samber/copywriting-cta","homepage":"https://clawhub.ai/samber/skills/copywriting-cta","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/samber/copywriting-cta","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/samber/skills/copywriting-cta","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill wheneve"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T17:03:29.635Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T17:03:29.635Z","emptyReason":null},"stars":null,"forks":null,"downloads":1022,"packageName":null,"latestVersion":"1.1.0","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T17:03:29.569Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T17:03:29.635Z","lastCrawledAt":"2026-10-11T17:03:29.569Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T17:03:29.569Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.0","createdAt":"2026-08-20T15:25:05.671Z","changelog":"**Version 1.1.0 – Improved Question Flow & Cleanup** - Refined user interview instructions: always use the question tool, never ask in plain text unless unavailable. - Clarified the one-question-at-a-time rule and tappable option usage. - Removed the obsolete skill-card.md file for a cleaner repository. - Updated metadata to version 1.1.0.","fileCount":8,"zipByteSize":30267},{"version":"1.0.0","createdAt":"2026-05-20T20:25:38.328Z","changelog":"copywriting-cta 1.0.0 – Initial release - Introduces a structured workflow to design high-converting end-of-article CTAs based on objective, audience, and context. - Guides users through an interactive interview to gather the three key inputs for effective CTA design. - Recommends CTA archetypes mapped from inputs, including copy, layout, mechanism (like urgency or social proof), A/B test, and accessibility check. - Supports CTAs for personal writers, newsletters, and brand content marketing across any topic area. - Includes handling for constraints such as brand voice, length, and presentation style.","fileCount":8,"zipByteSize":30244}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173arkhs3131fq5jf769qq75583hdgt:copywriting-cta","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T20:58:41.197Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-samber-copywriting-cta/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T17:03:29.635Z","emptyReason":null},"readme":"Skill: copywriting-cta\n\nOwner: samber\n\nSummary: Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill whenever the user asks to write, design, review, or improve a CTA at the bottom of an article, blog post, or essay; mentions \"end-of-post CTA\", \"bottom of the article\", \"call-to-action\", \"signup box\", \"newsletter CTA\", \"subscribe block\", \"what should I put at the bottom\", \"how do I get readers to subscribe / share / book a call / buy / follow / join / download\"; or asks how to convert article readers into subscribers, leads, customers, community members, or supporters. Also trigger when the user wants A/B testing guidance or accessibility review for a CTA block. Covers independent / personal writing, newsletter publications, and brand / content-marketing blogs across any topic — tech, finance, food, climate, design, lifestyle, B2B, B2C. Produces both the copy (content) and the structural / visual design (form), matched to the user's objective and audience.\n\nTags: latest:1.1.0\n\nVersion history:\n\nv1.1.0 | 2026-08-20T15:25:05.671Z | auto\n\n**Version 1.1.0 – Improved Question Flow & Cleanup**\n\n- Refined user interview instructions: always use the question tool, never ask in plain text unless unavailable.\n- Clarified the one-question-at-a-time rule and tappable option usage.\n- Removed the obsolete skill-card.md file for a cleaner repository.\n- Updated metadata to version 1.1.0.\n\nv1.0.0 | 2026-05-20T20:25:38.328Z | auto\n\ncopywriting-cta 1.0.0 – Initial release\n\n- Introduces a structured workflow to design high-converting end-of-article CTAs based on objective, audience, and context.\n- Guides users through an interactive interview to gather the three key inputs for effective CTA design.\n- Recommends CTA archetypes mapped from inputs, including copy, layout, mechanism (like urgency or social proof), A/B test, and accessibility check.\n- Supports CTAs for personal writers, newsletters, and brand content marketing across any topic area.\n- Includes handling for constraints such as brand voice, length, and presentation style.\n\nArchive index:\n\nArchive v1.1.0: 8 files, 30267 bytes\n\nFiles: references/ab-testing.md (6938b), references/accessibility.md (8848b), references/anti-patterns.md (7867b), references/mechanisms.md (10760b), references/taxonomy.md (15035b), skill-card.md (2458b), SKILL.md (12998b), _meta.json (134b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: copywriting-cta\ndescription: Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill whenever the user asks to write, design, review, or improve a CTA at the bottom of an article, blog post, or essay; mentions \"end-of-post CTA\", \"bottom of the article\", \"call-to-action\", \"signup box\", \"newsletter CTA\", \"subscribe block\", \"what should I put at the bottom\", \"how do I get readers to subscribe / share / book a call / buy / follow / join / download\"; or asks how to convert article readers into subscribers, leads, customers, community members, or supporters. Also trigger when the user wants A/B testing guidance or accessibility review for a CTA block. Covers independent / personal writing, newsletter publications, and brand / content-marketing blogs across any topic — tech, finance, food, climate, design, lifestyle, B2B, B2C. Produces both the copy (content) and the structural / visual design (form), matched to the user's objective and audience.\nuser-invocable: true\nlicense: MIT\ncompatibility: Designed for Claude or similar AI agents.\nmetadata:\n  author: samber\n  version: \"1.1.0\"\n  openclaw:\n    emoji: \"🎯\"\n    homepage: https://github.com/samber/cc-skills\nallowed-tools: Read Edit Write Glob Grep Agent AskUserQuestion\n---\n\n**Questions:** Ask the user through the environment's question tool — never as plain-text prose. One question at a time, 2–4 tappable options, wait for the answer. If the environment has no question tool, ask in prose with the same options, one at a time.\n\n# End-of-Article CTA Designer\n\nDesigning an end-of-article CTA is a function of three inputs: the **objective** (what action), the **audience** (who reads it, in what relationship to the author), and the **context** (independent writing, newsletter, brand publication). Get those three right and the copy + form follow almost mechanically. Skip them and you get the universal failure mode: a generic \"Subscribe for more\" or \"Learn More\" that converts at the noise floor.\n\nThis skill runs a tight interview to capture those three inputs, then prescribes a CTA: copy (what it says), form (how it looks and sits on the page), mechanism (whether to use urgency, scarcity, curiosity, reciprocity, social proof, or none), an A/B test plan, and an accessibility check.\n\n---\n\n## Workflow\n\nRun the four steps below in order. Do not skip the interview. The user may have given partial context already; pull what's available from the conversation, then ask only for the missing pieces.\n\n### Step 1 — Interview\n\nAsk one question at a time. Do not stack questions in prose. Each question must have 2-4 tappable options. Fall back to free text only if the answer genuinely cannot be enumerated.\n\nAsk these in order, skipping any already answered:\n\n**Q1. Article context.** Options: `Personal / independent blog or essay` · `Newsletter / paid publication (Substack, beehiiv, Ghost, etc.)` · `Brand / company / content-marketing blog` · `Other (free text)`\n\n**Q2. Primary objective.** (Pick the one outcome you most want from a reader who finishes the article. If they say \"all of them,\" push back: multiple objectives is the #1 cause of CTA failure.)\n\nOptions:\n\n- `Newsletter / email subscription`\n- `Social follow / personal branding`\n- `Lead generation (download / gated asset)`\n- `Product or service signup / free trial`\n- `Demo or sales call booking`\n- `Direct purchase`\n- `Community join (Discord / Slack / forum)`\n- `Engagement (reply / comment / share / restack)`\n- `Reader support (paid subscription / tip / sponsorship)`\n- `Try-it / direct action (use the code, run the tool, fork the template, open the calculator)`\n- `Other (free text)`\n\nIf the user lists more than one, ask which is primary. You can offer 1-2 secondaries later, but the primary must be singular.\n\n**Q3. Audience and relationship.** Options: `First-time visitor (organic search / social)` · `Returning reader, not subscribed` · `Existing subscriber / customer` · `Mixed / unknown`\n\n**Q4. Funnel stage.** (Where is the reader mentally?) Options: `TOFU: discovery, learning, no buying intent yet` · `MOFU: evaluating options, comparing` · `BOFU: ready to act, just needs a nudge` · `Not applicable (no buying funnel — e.g., personal blog, journalism, hobby content)`\n\n**Q5. Mechanism preference.** (Only ask if a mechanism could legitimately help. See `references/mechanisms.md`. For sophisticated, skeptical, or repeat-reader audiences, default to \"None / value-only\" without asking.) Options: `None: value statement only` · `Curiosity gap (\"Want to know more?\")` · `Reciprocity (free asset first)` · `Discount / offer` · `Urgency (real deadline)` · `Scarcity / FOMO (limited spots)` · `Social proof (count / testimonial)`\n\nCapture any free-text constraints the user volunteers (length limit, brand voice, no popups, multi-language, etc.). Note them.\n\n### Step 2 — Diagnose\n\nMap the inputs to a CTA archetype. The decision logic:\n\n```\ncontext = INDEPENDENT / PERSONAL\n├── objective = newsletter / email      → Archetype A: Author-signature subscribe\n├── objective = try-it / direct action  → Archetype B: Inline action + source link\n├── objective = reader support / tip    → Archetype C: Reader-supported funding link\n├── objective = community               → Archetype D: Proof-counted community invite\n├── objective = social follow           → Archetype A (variant: lead with social links)\n├── objective = engagement              → Archetype E: Specific reply prompt\n└── objective = product / demo          → ⚠️ FLAG. Only valid on personal/professional\n                                          blog where the author IS the product\n                                          (consultants, coaches, solo founders, indie devs).\n                                          Frame as \"if you hit this, here's how I help\"\n                                          — never \"Book a Demo\" verbatim.\n\ncontext = NEWSLETTER PUBLICATION\n├── objective = growth / subs           → Archetype F: Share/restack + native widget\n├── objective = engagement              → Archetype E: Specific reply prompt\n├── objective = paid conversion         → Archetype G: Value-gap tease\n├── objective = monetization / sponsor  → Archetype H: Inline sponsor block (not bottom)\n├── objective = community               → Archetype D\n└── objective = direct purchase         → Archetype K (rare on newsletters; use BOFU only)\n\ncontext = BRAND / CONTENT MARKETING\n├── stage = TOFU                        → Archetype I: Transitional asset (lead magnet)\n├── stage = MOFU                        → Archetype J: Direct + Transitional pair\n├── stage = BOFU                        → Archetype K: Direct CTA + risk reversal\n├── objective = community               → Archetype D\n└── objective = engagement              → Archetype E (rarely the right call here)\n```\n\nRead `references/taxonomy.md` for the full archetype catalog with copy templates, form specs, when each works, and verbatim examples from named publications.\n\n### Step 3 — Compose the recommendation\n\nOutput the recommendation in this exact structure. Do not deviate. Do not add filler.\n\n```markdown\n## Recommended CTA\n\n**Archetype:** [letter + name from decision tree] **Why this fits:** [1-2 sentences naming the input combination]\n\n### Content (copy)\n\n**Headline / value line:**\n\n> [exact text]\n\n**Body / proof line (1-2 lines):**\n\n> [exact text]\n\n**Button copy:**\n\n> [exact text]\n\n**Risk reversal / subtext (if applicable):**\n\n> [exact text, or \"Omit: would feel forced for this audience\"]\n\n### Form (structure)\n\n- **Placement:** [end-only / end + sticky / end + mid-article repeat]\n- **Visual weight:** [low / medium / high, with justification]\n- **Layout:** [single button / button + text link / native widget cluster / one-line signature]\n- **Proof to co-locate:** [subscriber count / star count / testimonial / named recommenders / logo wall / none]\n\n### Mechanism\n\n[Named mechanism + 1 sentence on why it is appropriate, OR \"None: value statement carries it. Mechanisms would erode trust for this audience.\"]\n\n### A/B test plan\n\n- **First test:** [single variable, e.g., button copy A vs. B]\n- **Why this one first:** [1 sentence]\n- **Sample size needed:** [rough estimate based on baseline traffic, or \"skip A/B for now — traffic too low\" with the alternative recommendation]\n- **Next 2 tests to queue:** [in priority order]\n\n### Accessibility check\n\n- **Color contrast:** [target ratio + concrete pairing if colors known]\n- **Touch target:** [size requirement]\n- **Semantic markup:** [<button> vs. <a> vs. form]\n- **ARIA:** [only if non-obvious]\n- **Keyboard / focus:** [requirement]\n- **Color-independence:** [non-color affordance]\n```\n\nAfter printing the recommendation, list 2-3 anti-patterns the user is at risk of falling into given their inputs, directly, as a contrarian check. Pull these from `references/anti-patterns.md`.\n\nIf the user is writing in a non-English language, translate the content section into that language but keep the structure (headings, labels) in English. Honor formality cues (e.g., `tu` vs. `vous` in French, `du` vs. `Sie` in German) based on prior conversation context, and flag the choice explicitly.\n\n### Step 4 — Offer next moves\n\nSuggest 2-3 follow-up directions:\n\n1. **Steelman the opposite.** Offer to design the CTA you would recommend against — e.g., the hard-sell version on a TOFU post — so the user can see why it fails.\n2. **Variant for a different audience or platform.** If the article will be cross-posted (own site + Medium + LinkedIn + a syndication network), offer to rewrite per platform.\n3. **End-to-end review.** Offer to audit the rest of the article for CTA-supporting signals: author bio, related-post links, in-line proof.\n\n---\n\n## Style inheritance\n\nThe copy templates in `references/taxonomy.md` are starting points, not finished copy. Always adapt them to:\n\n- The user's stated brand voice or any `<userPreferences>` in scope (formality, language, em-dash avoidance, length limits).\n- The language of the article. Output copy in the article's language; never default to English.\n- The publication's existing voice. If the user has prior posts visible, mirror their cadence and vocabulary.\n- The reader's expected level of expertise. A CTA for a beginner-finance blog uses different vocabulary than one for a quant-trading newsletter.\n\nNever output a template verbatim if it conflicts with the user's stated style preferences.\n\n---\n\n## Reference files\n\nRead these as needed during diagnosis and composition. Read the relevant file in full before composing the recommendation; do not paraphrase from memory.\n\n- **`references/taxonomy.md`**: All 11 archetypes (A through K) with copy templates, form specs, verbatim examples from named publications, and conversion expectations.\n- **`references/mechanisms.md`**: When to use urgency, scarcity, FOMO, discount, curiosity, reciprocity, social proof, authority, unity. When NOT to use them.\n- **`references/ab-testing.md`**: Priority order of variables to test, sample-size rules of thumb, common pitfalls, when to skip A/B testing entirely.\n- **`references/accessibility.md`**: WCAG 2.2 specifics for CTA blocks: contrast ratios, touch targets, ARIA patterns, focus states, keyboard support, motion preferences.\n- **`references/anti-patterns.md`**: 12 failure modes to call out by name when they apply to the user's inputs.\n\n---\n\n## Operating principles\n\n- **One primary CTA per post.** Multiple competing CTAs is the dominant failure mode (single-CTA pages convert ~30%+ better than multi-CTA pages in repeated case studies).\n- **Match the voice of the publication.** A personal-essay footer that reads like a SaaS landing page collapses credibility. A SaaS footer that reads like a casual signature converts at noise.\n- **Specificity beats cleverness.** \"Get one essay a week on indie filmmaking\" beats \"Subscribe to our awesome newsletter.\" Joanna Wiebe's \"I want to \\_\\_\\_\" completion test is the cleanest filter for button copy.\n- **Proof co-located with the ask.** Subscriber count, testimonial, customer logos, star count, named recommenders — whichever signal is honest for the context, place it inside or adjacent to the CTA block.\n- **Mechanisms are tools, not garnish.** Most well-written value statements need no mechanism. Add urgency, scarcity, FOMO, or discount only when the context genuinely supports them; theatrical mechanisms erode trust faster than they lift conversion.\n- **Push back on bad asks.** If the user wants \"Book a Demo\" at the bottom of a beginner tutorial for first-time visitors, say so. Do not produce a polished version of a CTA that will fail. Propose the alternative, explain why, then if the user still wants the original, deliver it with the failure mode flagged.\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn72rhnkwjfeex9wr1n7y24qa983cjn3\",\n  \"slug\": \"copywriting-cta\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1787239505671\n}\n\nFile v1.1.0:references/ab-testing.md\n\n# A/B Testing CTAs — Priority, Method, Pitfalls\n\nA/B testing CTAs is high-leverage when you have enough traffic. It is theatre when you don't. This file covers what to test, in what order, with what sample size, and the failure modes that produce confidently wrong conclusions.\n\n---\n\n## When NOT to A/B test\n\nIf any of the following is true, skip A/B testing and just ship a single well-designed CTA:\n\n- Article gets fewer than ~1,000 unique readers per month. Below this threshold, runs take forever and confidence intervals are noise.\n- Baseline conversion rate is below 0.5%. The signal is too weak to detect any but the largest lifts.\n- You haven't written a strong baseline yet. Testing \"Subscribe\" vs. \"Sign up\" on a generic CTA is rearranging deck chairs; rewrite the value statement first.\n- You don't have event tracking wired up. Without per-CTA click and downstream conversion tracking, you can't measure outcomes.\n\nEffort is better spent improving the baseline CTA copy and content quality until traffic justifies testing.\n\n---\n\n## Priority order: what to test first\n\nTest variables in this order (Foundry CRO's \"priority stack\" plus operator experience):\n\n### Tier 1 — Highest leverage\n\n1. **Number of CTAs.** One primary vs. one primary + one secondary vs. multiple equal-weight CTAs. Single-CTA pages convert ~30%+ better than multi-CTA pages in repeated case studies.\n2. **Value statement.** \"Subscribe to our newsletter\" vs. \"Get one [specific thing] a week.\" This is the single highest-impact variable in most tests.\n3. **Specificity of the offer.** \"Download our guide\" vs. \"Download the 14-line shell script we used to cut infra costs 40%.\" Specific concrete artifacts can lift conversion 2-5x.\n\n### Tier 2 — Significant leverage\n\n1. **Button copy.** \"Submit\" vs. \"Send me the next one.\" Apply Wiebe's \"I want to \\_\\_\\_\" completion test.\n2. **Proof co-location.** No proof vs. subscriber count vs. testimonial vs. logo wall.\n3. **Mechanism applied.** Value-only vs. with social proof vs. with reciprocity. Test one mechanism at a time.\n\n### Tier 3 — Marginal leverage\n\n1. **Placement.** End-only vs. end + sticky vs. end + mid-article repeat.\n2. **Visual weight.** Button size, color, contrast. The Demio case showed +57.79% from larger and darker, with no color change.\n3. **Form length.** Single field (email only) vs. multi-field (name + email + role).\n\n### Tier 4 — Marginal-to-noise\n\n1. **Button color.** Red vs. green vs. orange vs. blue. The well-known ~21% lift cited in CXL is real but small and contextual. Contrast with surroundings matters more than the specific color.\n2. **Microcopy variations** (\"100% spam-free\" vs. \"We respect your inbox\"). Stop here unless top tiers are exhausted.\n\n---\n\n## Method: one variable per test\n\n**Always change one variable per test.** HubSpot's Carly Stec: \"Avoid testing multiple variables at the same time.\" Multi-variable tests produce results you can't attribute. The lift could be from any of the changes or from interactions between them.\n\nException: if you're testing two entirely different CTA concepts (e.g., transitional asset vs. direct demo CTA on a MOFU post), that's a multi-variable test by necessity. Frame it as \"concept A vs. concept B\", not as a granular optimization.\n\n---\n\n## Sample size: rule of thumb\n\nThe honest formula is full statistical power calculation; the rule of thumb for end-of-article CTAs is:\n\n- **Baseline conversion rate < 1%:** need ~20,000+ visitors per variant to detect a 20% relative lift at 95% confidence.\n- **Baseline 1-3%:** need ~7,000-15,000 per variant.\n- **Baseline 3-10%:** need ~2,000-5,000 per variant.\n- **Baseline > 10%:** need ~500-2,000 per variant.\n\nIf you're trying to detect smaller lifts (10% relative), roughly 4x these numbers. If you're trying to detect larger lifts (50% relative), roughly one-quarter.\n\nCalculator: any standard A/B test sample size calculator (Optimizely, VWO, Evan Miller's online calculator). Plug in baseline rate + minimum detectable effect + power (typically 80%) + significance (typically 95%).\n\n**Run time:** at least one full week, preferably two, regardless of when you hit the sample size. Weekday vs. weekend traffic differs. Newsletter readers behave differently right after publish vs. one week later.\n\n---\n\n## Pitfalls — confidently wrong conclusions\n\n1. **Stopping early.** \"We hit significance at day 3, declared winner.\" This is the #1 cause of false positives. Pre-commit to a sample size or duration and don't peek.\n2. **Multiple comparisons.** Testing five variants simultaneously and picking the winner inflates false-positive rate. If you test 20 things at p=0.05, one will \"win\" by chance. Use Bonferroni correction or test only two variants at a time.\n3. **Wrong success metric.** Optimizing CTR (clicks) when you actually want downstream conversions (paid subscribers, qualified leads). Always measure to the actual business outcome, not just the click.\n4. **Sample contamination.** Existing subscribers seeing the new-visitor CTA. Segment tests by cookie state (new vs. returning) where possible.\n5. **Seasonality.** Testing in mid-December when reader behavior is anomalous. Test in normal traffic periods.\n6. **Survivorship bias in self-reported case studies.** \"We lifted CTR 1,617%!\" usually means baseline was anomalously low and the test surfaced an obvious fix. Treat dramatic published case studies as directional, not predictive of your situation.\n\n---\n\n## What \"good enough\" looks like\n\nFor an independent author managing their own blog without a marketing team:\n\n- **Tier 1 tests:** Run these. Even one well-designed Tier-1 test can lift conversion 2-5x.\n- **Tier 2 tests:** Run if you have traffic and a Tier-1 winner already.\n- **Tier 3-4 tests:** Skip unless traffic is large (10k+ unique per month per article).\n\nThe honest summary: most authors should test exactly one thing — the value statement and offer specificity — and commit to the winner for 6+ months. The rest is decoration.\n\n---\n\n## Recommended tooling\n\n- **Plausible / Fathom + custom events:** simplest for self-hosted independent blogs. Tag CTAs with `data-cta=\"name\"` and fire events on click.\n- **PostHog:** richer event tracking + native A/B testing. Free tier sufficient for most personal blogs.\n- **HubSpot CTA module + multivariate testing:** native if already on HubSpot CMS.\n- **Optimizely / VWO:** enterprise-scale; overkill for personal blogs.\n- **Substack / beehiiv:** native A/B testing is limited (mostly subject lines). For end-of-article CTAs, instrument with link tracking and compare cohorts.\n\n---\n\n## The single rule\n\nPick the variable with the highest plausible impact, write two genuinely different variants (not \"Submit\" vs. \"Submit Now\"), run for at least one full week to a pre-committed sample size, measure the downstream business outcome, and commit to the winner. Repeat one variable at a time. Resist the urge to test six things at once.\n\nFile v1.1.0:references/accessibility.md\n\n# Accessibility Checklist for CTA Blocks\n\nA CTA that excludes readers with disabilities is a CTA that converts at a lower ceiling. This is also an EAA / WCAG compliance concern for any commercial European-facing content as of June 2025.\n\nThis file lists the WCAG 2.2 requirements that apply to end-of-article CTA blocks, with concrete pass/fail criteria. Apply all of these to every CTA you ship. There is no acceptable trade-off.\n\n---\n\n## 1. Color contrast (WCAG 2.2 SC 1.4.3 / 1.4.11)\n\n### Text contrast\n\n- **Normal text (< 18pt regular / < 14pt bold):** contrast ratio ≥ **4.5:1** against the background. AA requirement.\n- **Large text (≥ 18pt regular / ≥ 14pt bold):** contrast ratio ≥ **3:1**. AA requirement.\n- **AAA target (recommended for primary CTAs):** ≥ **7:1** for normal text, ≥ **4.5:1** for large text.\n\n### Non-text contrast (UI components, button outlines, icons)\n\n- **UI components (button boundaries, focus indicators, form fields):** contrast ratio ≥ **3:1** against the adjacent background. SC 1.4.11, AA requirement.\n\n### Common failure: light-gray \"Subscribe\" text on white\n\n\"Subtle\" gray-on-white CTAs (#999 on #FFF = 2.84:1) fail WCAG by a wide margin. The fix: use a darker text color (#595959 on #FFF = 7.02:1) or fill the button.\n\n### How to check\n\n- **Browser DevTools:** Chrome and Firefox both ship contrast checkers in the color picker of the inspector.\n- **CLI / programmatic:** axe-core, pa11y, Lighthouse.\n- **Quick web tools:** WebAIM Contrast Checker, Coolors Contrast Checker, Stark.\n\n---\n\n## 2. Touch target size (WCAG 2.2 SC 2.5.8)\n\n- **Minimum target size:** ≥ **24×24 CSS pixels**. AA requirement, introduced in WCAG 2.2.\n- **Recommended target size:** ≥ **44×44 CSS pixels**. AAA requirement, also the Apple HIG / Google Material guideline.\n\n### Practical thresholds\n\n- Button: minimum 44×44px tap target including padding. Even on desktop, this margin makes the button hittable on a touchpad without precision.\n- Inline text links: ensure ≥ 24×24px hit area (typically achieved with line-height + padding around the link).\n- Adjacent CTAs (e.g., \"Subscribe\" + \"RSS\" + \"Mastodon\"): require ≥ 8px spacing between targets so adjacent taps don't trigger the wrong link.\n\n---\n\n## 3. Semantic markup (WCAG 2.2 SC 4.1.2)\n\n### Use the right element\n\n- **Submitting a form (e.g., newsletter signup):** `<button type=\"submit\">`. Always inside a `<form>` with an explicit `action` and `method`.\n- **Navigating to another page:** `<a href=\"...\">`. Not a `<button>` styled as a link, not a `<div>` with an onClick.\n- **Toggling state in-place (e.g., expanding a section):** `<button type=\"button\">`.\n\n### Common failures\n\n- `<div onClick={...}>` styled as a button: invisible to screen readers, not keyboard-focusable by default. Always replace with `<button>` or `<a>`.\n- `<a>` with no `href` and an onClick: same problem. Use a `<button>`.\n- `<button>` that navigates: technically works, but loses right-click \"Open in new tab\" and middle-click behavior. Use `<a>` for navigation.\n\n---\n\n## 4. ARIA — use sparingly, only when semantics are insufficient\n\n### First rule of ARIA: don't use ARIA when native HTML works\n\nA `<button>Subscribe</button>` does not need `role=\"button\"`. A `<a>` does not need `aria-label=\"link\"`.\n\n### When ARIA IS needed for CTAs\n\n- **Icon-only button:** `<button aria-label=\"Subscribe to newsletter\">📩</button>`. Without the label, a screen reader announces \"button\" with no purpose.\n- **Button label that's ambiguous out of context:** \"Read more\" or \"Click here\" link should have an `aria-label` that names the destination (\"Read more about [article title]\"). Better: rewrite the visible text to be self-describing.\n- **Form field without a visible label:** `<input aria-label=\"Email address\">`. Better: include a visible `<label>` and link it with `for=`.\n\n### Common failures\n\n- `aria-label=\"Submit\"` on a button that already says \"Submit\": redundant, can produce double announcements.\n- `role=\"button\"` on a `<button>`: redundant, sometimes overrides native behavior in older AT.\n- `aria-hidden=\"true\"` on a focusable element: screen reader users see the focus, hear nothing. Use either `tabindex=\"-1\"` to remove from focus or remove `aria-hidden`.\n\n---\n\n## 5. Keyboard support (WCAG 2.2 SC 2.1.1 / 2.4.7)\n\n- **Every CTA must be reachable by Tab and activatable by Enter (and Space for `<button>`).** This is automatic with native `<button>` and `<a>`. Custom JS-driven CTAs require manual handling.\n- **Focus indicator must be visible.** `outline: none` without an explicit replacement is a WCAG 2.4.7 failure.\n- **Recommended focus style:** ≥ 2px solid outline with ≥ 3:1 contrast against both the button and the page background. WCAG 2.2 SC 2.4.11 (Focus Not Obscured) requires that the focused element be at least partly visible — no full overlay by sticky headers or footers.\n- **Tab order must be logical.** If the visual order is \"Primary CTA → Secondary text link\", the DOM order must match.\n\n---\n\n## 6. Color-independence (WCAG 2.2 SC 1.4.1)\n\n**Do not convey CTA state, importance, or affordance through color alone.**\n\n### Common failures\n\n- Only difference between primary and secondary CTA is color: colorblind users (~8% of male readers) cannot distinguish them. Add a visual difference (filled vs. outlined, larger vs. smaller, button vs. text link).\n- Error states shown only with red text: pair with an icon or explicit text (\"Error:\").\n- Required form fields shown only with red asterisk color: include the asterisk as a character and the word \"(required)\".\n\n### Apply to CTAs\n\n- Primary CTA: filled background + bold text + larger size. Not just \"the blue one.\"\n- Visited state: include underline or bold change, not just color shift.\n\n---\n\n## 7. Forms specifically (newsletter signup blocks)\n\n- **Visible label** for every input (not just placeholder text — placeholder disappears on focus and is low-contrast).\n- **`label for=` linking** to the input's `id`.\n- **Inline validation** announced to screen readers via `aria-live=\"polite\"` or `aria-describedby` on the input pointing to the error message.\n- **Error messages** placed near the field, not floated at the top of the form.\n- **Submit button** with descriptive text (\"Subscribe to the newsletter\", not \"Submit\").\n- **GDPR / consent checkbox** (where required): visible label, not pre-checked by default (EU law), with link to privacy policy.\n\n---\n\n## 8. Motion (WCAG 2.2 SC 2.3.3)\n\n- **Animated CTAs (pulsing, bouncing) must respect `prefers-reduced-motion`.** If a user has set that media query, freeze the animation.\n- **Auto-scrolling sticky CTAs:** disable on `prefers-reduced-motion`.\n- **Countdown timers** that animate: ensure the number itself is announced, not just visually counting. Use `aria-live=\"polite\"` updates at coarse intervals (every 10s or 1m, not every second).\n\n---\n\n## 9. Screen reader announcements\n\nTest with at least one screen reader:\n\n- **macOS / iOS:** VoiceOver (Cmd+F5 / triple-click Home).\n- **Windows:** NVDA (free) or JAWS.\n- **Linux:** Orca.\n- **Mobile Android:** TalkBack.\n\n**Quick test:** turn on VoiceOver, navigate to the CTA via Tab, listen to the announcement. It should clearly state: (1) the action, (2) the element type. Example: \"Subscribe to the newsletter, button\" or \"Get the template, link\".\n\nIf the announcement is \"button\" or \"link\" with no purpose, the CTA fails.\n\n---\n\n## 10. Language and readability\n\n- **Set `lang` attribute** on the page (`<html lang=\"fr\">`). Affects pronunciation by screen readers and hyphenation.\n- **For multilingual CTAs** (e.g., a French CTA in an English page), wrap in `<span lang=\"fr\">...</span>` so screen readers switch voices.\n- **Reading level:** aim for the lowest plausible Flesch reading-ease that doesn't insult the audience. Expert / niche audiences tolerate higher complexity; general / consumer audiences should target Flesch ~60+ (around grade 8-9).\n\n---\n\n## Compact pre-publication checklist\n\nFor every CTA, verify:\n\n- [ ] Text contrast ≥ 4.5:1 (or 3:1 for large text)\n- [ ] Button / non-text UI contrast ≥ 3:1\n- [ ] Touch target ≥ 44×44px (recommended) or ≥ 24×24px (minimum)\n- [ ] Native `<button>` or `<a>` (no `<div onClick>`)\n- [ ] Keyboard-reachable (Tab) and activatable (Enter/Space)\n- [ ] Focus indicator visible, ≥ 2px, ≥ 3:1 contrast\n- [ ] No information conveyed by color alone\n- [ ] Form has visible labels (not just placeholders) and `label for=`\n- [ ] Icon-only buttons have `aria-label`\n- [ ] `prefers-reduced-motion` honored for any animation\n- [ ] Screen reader announces purpose, not just element type\n- [ ] `lang` attribute set; multilingual content wrapped with `lang=`\n\nIf you can't tick every box, fix the failures before shipping. There is no \"we'll do accessibility later\" — readers excluded today are conversions lost forever.\n\nFile v1.1.0:references/anti-patterns.md\n\n# Anti-Patterns — Failure Modes to Call Out by Name\n\nTwelve failure modes that recur across end-of-article CTAs. When the user's inputs put them at risk of one of these, call it out explicitly. Do not soften.\n\n---\n\n## 1. \"Subscribe for more\"\n\n**Why it fails:** Says nothing about value, frequency, content, or who else is in. Conversion floor.\n\n**Fix:** State the value proposition, frequency, and a proof signal in one line. \"Get one debugging trick a week. Friday morning. 12,000+ engineers read it.\"\n\n---\n\n## 2. Generic verbs: \"Learn More\" / \"Read More\" / \"Click Here\" / \"Get Started\"\n\n**Why they fail:** Andy Crestodina is blunt: these are not calls to action. They name no value and no destination. NN/g's \"Get Started\" Stops Users documents how \"Get Started\" specifically funnels first-time visitors into signup flows they didn't ask for.\n\n**Fix:** Replace with the specific noun and verb. \"Read more\" → \"Read the deep-dive on Go runtime maps.\" \"Get Started\" → \"Start the 5-minute tutorial.\"\n\n---\n\n## 3. Three equally weighted buttons\n\n**Why it fails:** Hick's Law. Equal visual weight on multiple CTAs creates decision paralysis. Reader picks none.\n\n**Fix:** One primary CTA (button), demote others to subordinate text links or smaller secondaries. The StoryBrand \"direct + transitional\" dyad is the proven pattern.\n\n---\n\n## 4. Begging for comments\n\n**Why it fails:** \"Let me know what you think in the comments!\" gets ignored. The reader can't think of anything specific to say and bounces.\n\n**Fix:** Ask a specific question that requires recall of a personal experience or technical opinion. \"What's the worst bug you shipped on a Friday afternoon?\" gets answers; \"What do you think?\" does not.\n\n---\n\n## 5. Hard-sell CTA (\"Book a Demo\" / \"Talk to Sales\") on a TOFU post\n\n**Why it fails:** Top-of-funnel readers are discovering the topic, not ready to buy. A hard-sell ask at the bottom collapses credibility for the rest of the article retroactively. For sophisticated audiences (technical, professional, niche-expert), the effect is even stronger. Yacine Hmito (Head of Technology, Fabriq): \"If I see 'Book a demo' or 'Talk to Sales,' I am out.\" The same reflex applies to readers in professional services, healthcare, journalism, and any context where credibility is the readership currency.\n\n**Fix:** Use a transitional asset (PDF, template, calculator, checklist) if this is brand content. Use an author-signature subscribe if this is independent content. Save \"Book a Demo\" for BOFU content that explicitly precedes a buying decision — and even then, prefer \"Talk to a Human\" or \"Get a 20-min audit\" verbs (both produced documented 110%+ conversion lifts vs. \"Book a Demo\").\n\n---\n\n## 6. Buzzword stacking\n\n**Why it fails:** Generic adjectives stack without adding information. Every industry has its own catalog: tech (\"AI-infused,\" \"enterprise-grade,\" \"single pane of glass,\" \"synergy,\" \"leverage,\" \"seamless,\" \"scalable,\" \"at scale,\" \"digital transformation\" — Redis published an audit of buzzwords developers hate), finance (\"alpha,\" \"asymmetric upside,\" \"best-in-class\"), wellness (\"transformative,\" \"holistic,\" \"intentional,\" \"elevated\"), B2B SaaS (\"unlock,\" \"empower,\" \"supercharge\"). Each empty word cuts credibility. By word four, the reader has tuned out.\n\n**Fix:** Replace every adjective with a concrete number or example. \"Enterprise-grade reliability\" → \"99.99% uptime, measured over the last 24 months.\" \"Seamless integration\" → \"Three steps, works with [specific tools].\" \"Transformative coaching\" → \"12-week program, 1:1, every session recorded.\"\n\n---\n\n## 7. Theatrical urgency\n\n**Why it fails:** Countdown timers that reset on page refresh; \"Only 2 left!\" on infinite digital goods; \"Offer ends soon!\" recurring weekly. Sophisticated readers detect this in 0.5 seconds and bounce — permanently.\n\n**Fix:** Only use urgency when the deadline is real (cohort starts, conference tickets sell out, beta closes). State the actual date and what happens if the reader misses it. If you don't have real urgency, don't manufacture it.\n\n---\n\n## 8. Stale proof\n\n**Why it fails:** \"Trusted by leading companies\" with no logos. \"Join thousands of happy users.\" \"Award-winning newsletter\" with no award named. Vague proof performs worse than no proof — it signals \"we know we should have specifics, but we don't.\"\n\n**Fix:** Real number, named logos, named testimonial. \"Join 2,437 engineers\" beats \"thousands.\" Recognizable brand logos beat \"Fortune 500 customers.\" Named testimonial with role and company beats \"Happy Reader.\"\n\n---\n\n## 9. Subscribe form with seven fields\n\n**Why it fails:** Each additional form field reduces conversion. Email-only forms convert 2-5x better than multi-field forms in most published case studies.\n\n**Fix:** Capture email only. Ask for name, role, or preferences after the initial subscribe, via a welcome email or a profile completion prompt. Never block the first conversion on metadata you can collect later.\n\n---\n\n## 10. CTA contradicts the article\n\n**Why it fails:** Article argues vendor neutrality, then footer says \"Sign up for our SaaS.\" Article teaches readers to do X themselves, then footer says \"Let us do X for you.\" The CTA undermines the article's thesis.\n\n**Fix:** Align the CTA with the article's argument. A vendor-neutral piece earns a newsletter / RSS subscribe. A teach-yourself piece earns a deeper-content offer. Save the product pitch for posts where the product is the thesis.\n\n---\n\n## 11. Marketing voice on an independent / credibility-driven publication\n\n**Why it fails:** End-of-article CTAs in over-eager marketing tone immediately downgrade the perceived authority of the entire post. The pattern crosses every topic: a journalist's essay ending in \"Don't miss out on our amazing weekly insights!\"; a niche-expert newsletter closing with \"Subscribe now to join thousands of happy readers!\"; a personal blog footer that reads like a B2B SaaS hero. Each one tells the reader \"the human who wrote the article isn't the human who wrote this CTA.\"\n\n**Fix:** Adopt the voice of the author signing off. Restrained, specific, no exclamation marks, no royal-we. Compare:\n\n- ❌ \"Don't miss out on our amazing weekly insights! Subscribe now to join thousands of happy readers!\"\n- ✅ \"If this was useful, the weekly digest covers one thing in depth every Friday. Subscribe here. RSS over here.\"\n\nFor technical blogs specifically, Cecilia Stallsmith (Calyx) put it this way: \"Run content by your dev team. If they cringe, edit.\" The same test works for any audience: read the CTA aloud to one trusted reader from your target audience; if they wince, rewrite.\n\n---\n\n## 12. Same CTA for every post regardless of intent\n\n**Why it fails:** A \"Subscribe to the newsletter\" CTA glued to the bottom of every post — tutorial, opinion essay, release announcement, conference recap — treats every reader the same. Tutorial readers want depth; release-announcement readers want to try the code; conference-recap readers want next year's event.\n\n**Fix:** Three to five CTA templates, one per post type. Tutorial → newsletter or related deep-dive. Product / project release announcement → try-it action + source link. Opinion piece → reply prompt + newsletter. Conference / event recap → next event registration + photo album. Review post → comments + related reviews. The post tells you which template fits; never default to one.\n\n---\n\n## How to use this list\n\nWhen composing a CTA recommendation, scan this list against the user's inputs. If their context or stated goal would put them on one of these failure modes, surface it before writing the CTA. Format:\n\n> ⚠️ Anti-pattern risk: [name from this list]. [One sentence on why it applies to your case]. [The fix.]\n\nDo not soften the language. The user pays for direct, contrarian feedback; sycophancy is a disservice.\n\nFile v1.1.0:references/mechanisms.md\n\n# CTA Mechanisms — When Each Helps, When Each Backfires\n\nA \"mechanism\" is the persuasion lever layered on top of the value statement. Most end-of-article CTAs need zero mechanism — the value statement carries it. Mechanisms are tools, not garnish. Each one has a cost in trust if applied to the wrong audience.\n\nThe default for sophisticated, skeptical, or repeat-reader audiences is **None / value-only**. Add a mechanism only if the audience and context support it.\n\n---\n\n## 1. None / value-only (default)\n\n**Use when:** Audience is sophisticated, skeptical, or has high BS-detection (independent-publication readers, repeat subscribers, professionals, niche-expert audiences). Or when the offer is intrinsically valuable and the value statement does the work alone.\n\n**Example:** \"Get one well-researched essay a week. No spam, no upsells.\"\n\n**Why this is the default for independent content:** Any mechanism risks signaling \"marketing playbook\" and breaking the peer-to-peer voice that made the article credible in the first place. Sophisticated readers exit at the first whiff of theatrics — the technical-audience version of this is documented (Yacine Hmito, Head of Technology at Fabriq: \"If I see 'Book a demo' or 'Talk to Sales,' I am out\"), and the same pattern shows up in independent journalism, niche-expertise newsletters, and credibility-driven personal essays.\n\n---\n\n## 2. Curiosity gap (\"Want to know more?\")\n\n**Use when:** The article hints at deeper content in the paid / next / forthcoming piece. The reader's curiosity is already engaged by the post itself.\n\n**How to write it well:**\n\n- Be specific about what the gap is. \"Want to know more?\" alone is empty. \"The full breakdown — including the spreadsheet and three case studies I couldn't share publicly — is in the paid version\" is specific.\n- Name the missing thing. Don't tease abstractly.\n\n**How it fails:** Vague teases (\"Want the secret?\") read as clickbait. Curiosity gaps work in proportion to how _concretely_ the missing thing is named.\n\n**Where it works best:** Newsletter (Archetype G — free → paid conversion). Lenny Rachitsky's free posts use this surgically.\n\n**Where it fails:** Articles where the reader expects completeness. If the article promises to teach X, withholding the punchline for a paid upgrade breaks the implicit contract. This is especially acute on educational, technical, or how-to content.\n\n---\n\n## 3. Reciprocity (free asset first)\n\n**Use when:** The CTA is a lead-gen capture and you can offer something genuinely useful with zero pre-conditions. Reader gets the asset; you get the email.\n\n**Cialdini's principle:** People feel obligated to reciprocate gifts. If you give first, asking for something later (email, attention, a paid upgrade) gets a meaningfully higher yes-rate.\n\n**How to write it well:**\n\n- Lead with the gift. \"Get the [specific artifact] mentioned above.\" The ask is implicit (you'll need to enter your email to receive it).\n- The gift must be valuable on its own — not a watermarked thumbnail of the real thing.\n\n**How it fails:** Reciprocity collapses when the \"gift\" is obviously a wrapper for a sales sequence. A \"free ebook\" that's 80% product pitch is anti-reciprocity — the reader feels manipulated, not gifted.\n\n**Where it works best:** Marketing / SaaS TOFU (Archetype I). Lead-magnet pattern.\n\n**Where it fails:** Newsletters where the audience expects the content itself to be the gift; gating a small additional artifact behind an email feels needy.\n\n---\n\n## 4. Discount / offer\n\n**Use when:** Direct-to-purchase or subscription. Discount must be real, time-bounded, and explained (launch promo, end-of-year, audience-specific).\n\n**How to write it well:**\n\n- State the price before and after, or the percentage off and the deadline.\n- Explain why the discount exists. \"Launch discount: 20% off the first 100 subscribers\" tells a story. \"Save 20%!\" is noise.\n- Pair with an explicit, verifiable end condition (date or seat count).\n\n**How it fails:**\n\n- Permanent \"discounts\" are not discounts. If your homepage has shown 50% OFF every day for a year, the discount is now the regular price; you've just trained the reader to ignore it.\n- Discounting B2B SaaS at the blog level often cheapens the brand. Save discounts for landing pages reachable from BOFU posts, not for top-of-funnel content.\n\n**Where it works best:** Brand / SaaS BOFU posts that directly precede a purchase; paid newsletter relaunches; event tickets near deadline (conference, course, cohort).\n\n**Where it fails:** Independent blogs (almost always), newsletter free→paid (rarely — \"you can expense it\" is more durable than \"20% off\"), TOFU brand content (almost always).\n\n---\n\n## 5. Urgency (deadline)\n\n**Use when:** There is a real deadline — registration closes, course cohort starts, beta access ends, conference tickets sell out.\n\n**How to write it well:**\n\n- State the actual deadline with date and time. \"Registration closes Friday at midnight PT\" is honest.\n- Name what happens if the reader misses it. \"Next cohort opens in three months\" sets the stakes.\n\n**How it fails:** Fake urgency is the worst CTA failure mode after begging. A countdown timer that resets when the reader returns is reader-hostile. Sophisticated audiences detect this in 0.5 seconds and bounce permanently.\n\n**Where it works best:** Event-based offers (cohort courses, conference tickets, beta closes, launch windows). Marketing / SaaS BOFU when the deadline is real.\n\n**Where it fails:** Recurring newsletter offers; evergreen content generally; any context where \"ends soon\" cannot be substantiated.\n\n---\n\n## 6. Scarcity / FOMO (limited spots)\n\n**Use when:** There is real scarcity — N seats in a cohort, N consulting clients per quarter, beta access for first N signups.\n\n**How to write it well:**\n\n- Show the actual count. \"8 of 25 seats left\" beats \"Limited seats!\" by an order of magnitude.\n- Update the count in near-real-time (or refresh on page load). A static \"Limited!\" is just noise.\n\n**How it fails:** Fabricated scarcity (\"Only 3 left!\" on a digital product with infinite supply) detonates trust. The reader doesn't just bounce — they tell others.\n\n**Where it works best:** Consulting practices (\"I take 4 new clients per quarter\"), cohort programs, limited beta access.\n\n**Where it fails:** Mass-market SaaS, newsletters, any digital good with infinite supply.\n\n---\n\n## 7. Social proof (count / testimonial / named users)\n\n**Use when:** You have honest, verifiable proof: a subscriber count, a star count, a named testimonial, a logo wall of recognizable brands.\n\n**How to write it well:**\n\n- Round to actual numbers, not aspirational ranges. \"Join 2,437 engineers\" beats \"Join thousands of engineers\" because it's verifiable and specific.\n- Testimonials should name a person and (where appropriate) their company / role. Anonymous \"Best newsletter ever! — Happy Reader\" is anti-proof; sophisticated readers discount it to zero.\n- Logo walls only help when the logos are recognizable to the audience. Specific named logos relevant to the reader (\"Used by Stripe, Cloudflare, and Vercel\" for a developer audience; \"Featured in The Atlantic, The New Yorker, and Vox\" for a journalism audience; \"Trusted by Whole Foods, Erewhon, and Sprouts\" for a food-industry audience) outperform \"Used by 50+ Fortune 500 companies\" by a wide margin.\n\n**How it fails:**\n\n- Vague proof (\"Join thousands of happy users\") performs worse than no proof — it signals \"we know we should have proof, but we don't have specifics.\"\n- Old / stale proof (subscriber count from two years ago) signals \"this newsletter is dying.\"\n\n**Where it works best:** Any context, any goal. Social proof is the most universally applicable mechanism. Co-locate it with the ask wherever possible.\n\n**Where it fails:** Only when the proof is dishonest, vague, or stale.\n\n---\n\n## 8. Authority (named author, micro-credentials)\n\n**Use when:** The author has earned credibility in the space and the reader needs that signal to commit.\n\n**How to write it well:**\n\n- Named author bio with 1-2 specific credentials. \"Built X at Y, maintains Z (17k stars)\" beats \"Industry expert with decades of experience.\"\n- Link to evidence (GitHub, prior work, conference talks).\n\n**How it fails:** Authority claims without evidence read as self-promotion. \"Award-winning marketer\" without naming the award is anti-authority.\n\n**Where it works best:** Personal blogs, newsletters, consulting CTAs. Increasingly important in the AI-content era — the signal \"a specific named human writes this\" is durable.\n\n**Where it fails:** Company blogs where the byline is the brand, not a person.\n\n---\n\n## 9. Unity (shared identity)\n\n**Use when:** Your audience identifies with a tribe, movement, or shared identity (e.g., indie hackers, working parents, climate-tech founders, plant-based home cooks, French startup community, queer writers, value investors, ultra-runners).\n\n**How to write it well:**\n\n- Name the tribe explicitly. \"For working parents who run their own businesses\" is better than \"For business owners.\" \"For Go developers who care about runtime internals\" is better than \"For developers.\" The pattern: specific identity intersection beats broad category.\n\n**How it fails:** Pandering to a tribe you're not part of. If you don't actually identify with the audience, they will smell it.\n\n**Where it works best:** Niche newsletters; community CTAs; conference / event recap posts.\n\n---\n\n## Selector matrix: mechanism × context\n\n| Mechanism | Independent / personal | Newsletter publication | Brand / content marketing |\n| --- | --- | --- | --- |\n| None / value-only | ✅ Default | ✅ Often | ⚠️ Rarely enough |\n| Curiosity gap | ❌ Avoid | ✅ Free→paid teases | ⚠️ Only if specific |\n| Reciprocity | ⚠️ Only if asset is genuine code/tool | ⚠️ Rarely needed | ✅ TOFU default |\n| Discount | ❌ Avoid | ⚠️ Only at launch/relaunch | ✅ BOFU only |\n| Urgency | ❌ Avoid unless real deadline | ⚠️ Real deadlines only | ✅ Event/launch only |\n| Scarcity / FOMO | ❌ Avoid | ❌ Avoid | ⚠️ Real scarcity only |\n| Social proof | ✅ Stars, named users | ✅ Subscriber count | ✅ Logos, testimonials |\n| Authority | ✅ Named author + credentials | ✅ Author bio | ⚠️ Brand authority only |\n| Unity | ✅ Tribe naming | ✅ Niche audience | ⚠️ Rarely fits |\n\n✅ = fits naturally · ⚠️ = situational · ❌ = avoid by default\n\n---\n\n## The single rule\n\nIf you have to choose between adding a mechanism and improving the value statement, improve the value statement. Mechanisms amplify; they don't substitute. A weak value statement with three mechanisms layered on top still loses to a strong value statement with no mechanism at all.\n\nFile v1.1.0:references/taxonomy.md\n\n# CTA Archetypes (A through K)\n\nEleven archetypes covering the independent / newsletter / brand contexts × the full goal taxonomy. Each entry includes: when it fits, copy template, form spec, verbatim example from a named publication, and rough conversion expectation.\n\nThe archetypes are designed to work across topics: a personal essay on indie filmmaking, a finance newsletter, a SaaS engineering blog, a hobby cooking blog, a B2B HR tech site. Adapt the wording to the topic; the structural prescriptions are general.\n\n---\n\n## A. Author-signature subscribe (independent blog, newsletter growth or social follow)\n\n**When it fits:** Personal or independent blog of any topic. Goal is to grow an RSS / email / social audience without alienating the reader. Solo-author voice. First-time and returning visitors mixed.\n\n**Copy template:**\n\n> Posted [date]. If you liked this, you can subscribe to the [newsletter / weekly digest / monthly notes] — [frequency promise]. RSS [here]. [Optional: social handle(s) for follow].\n\n**Form:**\n\n- Single short paragraph or one-line signature, no boxed UI.\n- Visual weight: **low**. Reads as a byline, not an ad.\n- Layout: 1-3 inline text links, no button. Optional: native subscribe widget on its own line below.\n- Placement: end-only. No mid-article repetition. No sticky.\n\n**Verbatim example — Simon Willison (simonwillison.net), technical blog:**\n\n> Posted [date] at [time]. Follow me on Mastodon, Bluesky, Twitter or subscribe to my newsletter.\n\n**Verbatim example — Stripe blog, brand publication using author-signature style:**\n\n> Stay connected with Stripe and receive new blog posts in your inbox. Stripe builds financial tools and economic infrastructure for the internet. [email field]\n\n**Conversion expectation:** 0.3-2% of unique readers subscribe per post. Above 2% is top-decile.\n\n---\n\n## B. Inline action + source link (any context, try-it / direct action)\n\n**When it fits:** Article walks through a doable action: code, recipe, exercise routine, financial calculation, design template, workout, drill, prompt, configuration. Goal is for the reader to try the action immediately. Reader trusts artifacts over copy.\n\n**Copy template:**\n\n> Try it:\n>\n> ```\n> [code snippet / recipe steps / template link / prompt / calculation]\n> ```\n>\n> Source: [link to repo / template / spreadsheet / Figma file / GitHub gist]. Feedback welcome. If you build something with it, [reply / DM / open an issue] — I'd love to see it.\n\n**Form:**\n\n- Code block or embedded artifact (recipe card, downloadable template, interactive calculator) immediately above the link line.\n- Visual weight: **medium**. The artifact carries the weight, not a button.\n- Layout: artifact + 1-2 plain text links.\n- No \"Star the repo!\" or \"Save the recipe!\" button at the bottom. That sort of ask belongs on the artifact's own page, not the blog footer.\n\n**Verbatim example — Fly.io blog, technical publication using restrained share-only pattern:**\n\n> Share this post on Twitter | Share this post on Hacker News | Share this post on Reddit Next post ↑ / Previous post ↓\n\n(Fly.io's blog deliberately omits any subscribe or sign-up ask at the bottom; product CTAs live inline at the top of certain posts. The pattern generalizes: when the artifact in the post is the value, the bottom only needs share affordances.)\n\n**Common variants:**\n\n- **OSS / dev context:** `pip install x`, `npm install y`, `go get z`, plus repo link.\n- **Cooking / hobby blog:** \"Get the printable recipe card\" + link.\n- **Finance / spreadsheet context:** \"Open the calculator in a new tab\" + link to a Google Sheet template.\n- **Design / no-code:** \"Duplicate this Figma file\" + link.\n- **Productivity / templates:** \"Use the Notion template\" + link.\n\n**Conversion expectation:** Hard to attribute directly. Measure via referrer logs on the artifact, downstream artifact-engagement (installs, copies, forks), or query-string tagging (`?ref=post-name`).\n\n---\n\n## C. Reader-supported funding link (independent context, paid support / tip)\n\n**When it fits:** Independent creator with a sustainable readership: writer, journalist, podcaster, indie maintainer, indie analyst, illustrator, researcher. Goal is to convert reader-trust into financial support without begging.\n\n**Copy template:**\n\n> I write / make this on the side. If you find it useful, a [membership / sponsorship / tip] covers about [a day / a week / a month] of work. [Memberful / Patreon / GitHub Sponsors / Buy Me a Coffee / Stripe link] · [one-off tip link]\n\n**Form:**\n\n- Plain text link, no button. Optional: small recurring \"members get X\" subtext.\n- Visual weight: **low**.\n- Placement: at the _top_ of posts (Dan Luu's documented pattern) OR end-signature. Not both.\n- Layout: 1-2 inline text links.\n\n**Verbatim example — Dan Luu (danluu.com), independent technical writer:**\n\n> A couple weeks ago, I added a link to Patreon at the top of posts (instead of just having one hiding at the bottom).\n\n**Generalization to other creator types:**\n\n- **Indie journalist / Substack writer:** \"If this is useful, a paid subscription covers the time. [link]\"\n- **Podcaster:** \"Members get the extended cut and the back catalog. [link]\"\n- **Illustrator / artist:** \"Memberships fund the next series. [link]\"\n\n**Conversion expectation:** Reader support is a rare event. Don't optimize for conversion rate; optimize for the signal \"this is a serious operation worth funding.\" A small number of high-value supporters outweighs a long tail of $5 tips on operational sustainability.\n\n---\n\n## D. Proof-counted community invite (any context, community join)\n\n**When it fits:** You run a community (Discord / Slack / forum / Circle / Geneva / WhatsApp group) that the article topic touches. Reader could plausibly want ongoing discussion.\n\n**Copy template:**\n\n> Join [N] [readers / makers / writers / parents / investors / climbers / etc.] in [community name] [on platform]. We talk about [specific topic] every [day / week]. [Invite link]\n\n**Form:**\n\n- Boxed block with platform logo + member count + topic.\n- Visual weight: **medium**. Button: \"Join the [community name]\".\n- Layout: 1 button + 1 text link to a public area / archive (if any).\n\n**Critical:** The count must be honest. \"Join 24 readers\" is more compelling than \"Join a growing community\" because the former is verifiable. Round to actual number, never inflate.\n\n**Conversion expectation:** 1-3% of readers click; 30-60% of clickers actually join.\n\n---\n\n## E. Specific reply prompt (any context, engagement)\n\n**When it fits:** Article makes a claim or shares an experience where the reader plausibly has a counter-example, addition, or related story. Goal is comments / replies / DMs.\n\n**Copy template:**\n\n> [Specific question that requires recall of a personal experience or strong opinion]. Reply, hit comment, or DM me — [contact handle]. I read everything.\n\n**Form:**\n\n- 1-2 sentences. No button.\n- Visual weight: **low**.\n\n**The question must be specific.** Replace \"What do you think?\" with one of:\n\n- \"What's the worst hire you've ever made and what tipped you off in the first week?\"\n- \"Which of these three recipes did you try, and what would you change?\"\n- \"What's one investment thesis you've held for 5+ years that you'd defend in public?\"\n- \"Which conference talk changed how you work, and why?\"\n\n**Verbatim example — Patrick McKenzie / Bits about Money (paraphrased pattern):**\n\n> Counter-arguments and corrections are welcome. Reply to this email; I read everything, even if I don't always respond in time.\n\n**Conversion expectation:** Specific prompts can hit 1-3% reply rate on newsletters. Generic prompts (\"Let me know what you think!\") run near zero.\n\n---\n\n## F. Share / restack + native widget (newsletter publication, growth)\n\n**When it fits:** Newsletter on Substack, beehiiv, Ghost, or similar. Goal is subscriber growth. Reader is engaged (they finished a long essay).\n\n**Copy template:**\n\n> If this was useful: a [restack / share] helps more than you'd think — it tells [platform] to show it to people whose feeds look like yours. And if a specific person came to mind while reading, forward it to them.\n\n**Form:**\n\n- One short paragraph asking for restack / share.\n- Platform-native widgets (like, comment, restack, share) immediately below.\n- Visual weight: **medium**. The native widgets do the visual lifting.\n\n**Verbatim example — Lenny's Newsletter (free posts), B2B operator newsletter:**\n\n> If you're finding this newsletter valuable, share it with a friend, and consider subscribing if you haven't already. There are group discounts, gift options, and referral bonuses available.\n\n**Conversion expectation:** Restack rate 1-8% on Substack. Lenny Rachitsky reports ~78% of free subscribers and ~11% of paid come via Substack recommendations — restacks feed the recommendation algorithm directly.\n\n---\n\n## G. Value-gap tease (newsletter publication, free → paid conversion)\n\n**When it fits:** Free post that exists alongside paid content. Goal is to convert free readers to paying subscribers without bait-and-switch.\n\n**Copy template:**\n\n> This is a free post. Paid members got [specific deeper content] last [time period], including [concrete thing the paid version had]. If you find one in [N] of these useful, the math works out — and you can expense it.\n\n**Form:**\n\n- Italicized paragraph, ends with a \"Become a paid member\" button.\n- Visual weight: **medium**.\n- Subtext: \"Cancel anytime · Group discounts available · [Refund policy if any]\".\n\n**Critical:** Name what the paid version contained. \"Subscribe for more\" tells the reader nothing. \"Paid members got the spreadsheet and three case studies I couldn't share publicly\" lets them self-qualify.\n\n**Conversion expectation:** Lenny's documented range is 4-8% free → paid for high-quality newsletters with sustained free → paid teasing. Most newsletters convert 1-3%.\n\n---\n\n## H. Inline sponsor block (newsletter publication, monetization)\n\n**When it fits:** Newsletter with sponsor monetization. Goal is to deliver sponsor value without breaking reader trust.\n\n**Copy template:**\n\n> [Sponsor message in author's voice, 2-4 sentences, names the specific value to a specific reader segment. Signed-off with an explicit \"this is a sponsored block\" disclosure.]\n\n**Form:**\n\n- Boxed block, clearly demarcated from editorial.\n- Placement: **inline, not at bottom.** Packy McCormick (Not Boring) places sponsor blocks inline, mid-essay; the bottom is reserved for native widgets.\n- Visual weight: **medium**.\n- Disclosure: \"This is sponsored by [X]\" or \"Today's newsletter is presented by [X]\" at the top of the block. Required by FTC for US publications.\n\n**Verbatim example — Not Boring (Packy McCormick):**\n\n> Upgrade your team to Ramp: The Official Business Card of Not Boring [...]\n\n**Conversion expectation:** Sponsor CTR is the sponsor's problem to optimize. The publication's job is to maintain the integrity of the block so future sponsors keep paying.\n\n---\n\n## I. Transitional asset / lead magnet (brand publication, TOFU)\n\n**When it fits:** Top-of-funnel content-marketing post. Reader is discovering the topic, not ready to buy. Goal is to get them on the list with a transitional asset (PDF, template, checklist, calculator, swipe file, quiz result).\n\n**Copy template:**\n\n> Get the [specific artifact mentioned in the post] — [PDF / template / checklist / calculator]. [Frequency promise]. [Proof: \"12,000+ [persona] use it\"]. No upsell.\n\n**Form:**\n\n- Boxed block with the artifact image / thumbnail visible.\n- Button: \"Send me the [artifact]\" or \"Download the [artifact]\".\n- Visual weight: **high**.\n- Risk reversal: \"Unsubscribe anytime\" or \"We won't email you unless you ask us to.\"\n\n**Critical:** The artifact must be the artifact mentioned in the post, not a generic \"Ultimate Guide\". If the post is \"How we cut our customer-support response time by 60%\", the asset is \"The exact email templates we use\", not \"The Definitive Guide to Customer Support (47 pages)\".\n\n**Conversion expectation:** 1-5% of blog readers download a well-matched transitional asset. Generic \"Ultimate Guide\" downloads run 0.1-0.5%.\n\n---\n\n## J. Direct + Transitional pair (brand publication, MOFU)\n\n**When it fits:** Middle-of-funnel content-marketing post. Reader is evaluating, comparing. Goal is to capture both buyers (direct) and not-yet-buyers (transitional).\n\n**Copy template:**\n\n> Direct (primary):\n>\n> > Start a [N-day] free trial — no credit card. Set up in under [X] minutes.\n>\n> Transitional (secondary, text link):\n>\n> > Or download [specific buyer's asset] (PDF, [N] pages).\n\n**Form:**\n\n- Two visually unequal CTAs. Direct gets the button; transitional gets a text link below or beside.\n- Visual weight: **high** for direct, **low** for transitional.\n- Layout: Button + text link. NOT two equal buttons.\n\n**Critical:** The visual hierarchy must be unambiguous. Two same-size buttons trigger decision paralysis (Hick's Law). One button + one text link is the high-converting layout. StoryBrand's Donald Miller calls this the \"direct + transitional\" dyad and treats it as the default for B2B content.\n\n**Conversion expectation:** Combined click-through 3-8% on a well-targeted MOFU post.\n\n---\n\n## K. Direct CTA + risk reversal (brand publication, BOFU)\n\n**When it fits:** Bottom-of-funnel content-marketing post. Reader is ready to act, just needs the friction removed. Goal is signup / demo / purchase.\n\n**Copy template:**\n\n> See [Product / Service] applied to your [workflow / situation]. [N]-minute call. We'll audit your current [process] and show what changes — even if you don't buy. [Book a [N]-min audit] Risk reversal: No sales pitch. We'll send the recording afterwards.\n\n**Form:**\n\n- Single prominent button.\n- Visual weight: **high**.\n- Layout: button + 1-2 lines of risk-reversal subtext directly below.\n- Proof co-located: small testimonial or logo wall above or below the block.\n\n**Critical:** The button verb must match the offer. PartnerStack's documented test moved \"Book a Demo\" → \"Get Started\" and lifted conversion 111.55%. Mailmodo's documented test moved \"Book a Demo\" → \"Talk to a Human\" and lifted conversion 110.35%. \"Book a Demo\" is the lowest-converting BOFU verb in the published record.\n\n**Conversion expectation:** 1-3% of blog readers → MQL on a well-targeted BOFU post. 6-11% on a dedicated landing page reached from the post.\n\n---\n\n## Quick selector\n\nIf the user gave context + objective, this table picks the archetype:\n\n| Context \\ Objective | Newsletter sub | Try-it / action | Community | Reader support | Trial/Demo | Lead gen | Engagement | Paid upgrade |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| Independent / personal | **A** | **B** | **D** | **C** | ⚠️ K (only if BOFU + author IS the product) | I (rare) | **E** | — |\n| Newsletter publication | **F** | — | **D** | **H** | — | I (rare) | **E** | **G** |\n| Brand / content marketing | I (TOFU) / J (MOFU) | — | **D** | — | **K** (BOFU) | **I** | **E** (rare) | — |\n\nFile v1.1.0:skill-card.md\n\n## Description:\n\nDesign end-of-article CTAs for blog posts, newsletters, essays, articles, and other long-form content, including copy, structure, mechanism choice, A/B testing guidance, and accessibility review.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[samber](https://clawhub.ai/user/samber)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal writers, marketers, newsletter operators, and content teams use this skill to design, review, and improve end-of-article calls to action that fit the article context, reader relationship, funnel stage, and primary conversion goal.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requests editing and agent tools even though the observed content is advisory.\n\nMitigation: Review proposed file changes and limit execution to drafting, critique, and recommendation tasks unless broader editing is intentionally needed.\n\nRisk: Generated CTA recommendations may overstate conversion impact or select a mechanism that does not fit the reader relationship.\n\nMitigation: Validate the CTA against the article context, audience, and primary objective before publication, and use the included A/B testing and accessibility checks as review gates.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/samber/skills/copywriting-cta)\n- [Project homepage](https://github.com/samber/cc-skills)\n- [A/B Testing CTAs](references/ab-testing.md)\n- [Accessibility Checklist for CTA Blocks](references/accessibility.md)\n- [Anti-Patterns](references/anti-patterns.md)\n- [CTA Mechanisms](references/mechanisms.md)\n- [CTA Archetypes](references/taxonomy.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown recommendation with structured CTA copy, form guidance, A/B testing plan, accessibility checklist, anti-pattern notes, and follow-up options]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include specific CTA text, button copy, visual structure recommendations, testing priorities, and accessibility checks.]\n\n## Skill Version(s):\n\n1.1.0 (source: server release metadata and artifact frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.0: 8 files, 30244 bytes\n\nFiles: references/ab-testing.md (6938b), references/accessibility.md (8848b), references/anti-patterns.md (7867b), references/mechanisms.md (10760b), references/taxonomy.md (15035b), skill-card.md (2559b), SKILL.md (12771b), _meta.json (134b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: copywriting-cta\ndescription: Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill whenever the user asks to write, design, review, or improve a CTA at the bottom of an article, blog post, or essay; mentions \"end-of-post CTA\", \"bottom of the article\", \"call-to-action\", \"signup box\", \"newsletter CTA\", \"subscribe block\", \"what should I put at the bottom\", \"how do I get readers to subscribe / share / book a call / buy / follow / join / download\"; or asks how to convert article readers into subscribers, leads, customers, community members, or supporters. Also trigger when the user wants A/B testing guidance or accessibility review for a CTA block. Covers independent / personal writing, newsletter publications, and brand / content-marketing blogs across any topic — tech, finance, food, climate, design, lifestyle, B2B, B2C. Produces both the copy (content) and the structural / visual design (form), matched to the user's objective and audience.\nuser-invocable: true\nlicense: MIT\ncompatibility: Designed for Claude or similar AI agents.\nmetadata:\n  author: samber\n  version: \"1.0.0\"\n  openclaw:\n    emoji: \"🎯\"\n    homepage: https://github.com/samber/cc-skills\nallowed-tools: Read Edit Write Glob Grep Agent AskUserQuestion\n---\n\n# End-of-Article CTA Designer\n\nDesigning an end-of-article CTA is a function of three inputs: the **objective** (what action), the **audience** (who reads it, in what relationship to the author), and the **context** (independent writing, newsletter, brand publication). Get those three right and the copy + form follow almost mechanically. Skip them and you get the universal failure mode: a generic \"Subscribe for more\" or \"Learn More\" that converts at the noise floor.\n\nThis skill runs a tight interview to capture those three inputs, then prescribes a CTA: copy (what it says), form (how it looks and sits on the page), mechanism (whether to use urgency, scarcity, curiosity, reciprocity, social proof, or none), an A/B test plan, and an accessibility check.\n\n---\n\n## Workflow\n\nRun the four steps below in order. Do not skip the interview. The user may have given partial context already; pull what's available from the conversation, then ask only for the missing pieces.\n\n### Step 1 — Interview\n\nUse the `ask_user_input_v0` tool. Ask one question at a time. Do not stack questions in prose. Each question must have 2-4 tappable options. Fall back to free text only if the answer genuinely cannot be enumerated.\n\nAsk these in order, skipping any already answered:\n\n**Q1. Article context.** Options: `Personal / independent blog or essay` · `Newsletter / paid publication (Substack, beehiiv, Ghost, etc.)` · `Brand / company / content-marketing blog` · `Other (free text)`\n\n**Q2. Primary objective.** (Pick the one outcome you most want from a reader who finishes the article. If they say \"all of them,\" push back: multiple objectives is the #1 cause of CTA failure.)\n\nOptions:\n\n- `Newsletter / email subscription`\n- `Social follow / personal branding`\n- `Lead generation (download / gated asset)`\n- `Product or service signup / free trial`\n- `Demo or sales call booking`\n- `Direct purchase`\n- `Community join (Discord / Slack / forum)`\n- `Engagement (reply / comment / share / restack)`\n- `Reader support (paid subscription / tip / sponsorship)`\n- `Try-it / direct action (use the code, run the tool, fork the template, open the calculator)`\n- `Other (free text)`\n\nIf the user lists more than one, ask which is primary. You can offer 1-2 secondaries later, but the primary must be singular.\n\n**Q3. Audience and relationship.** Options: `First-time visitor (organic search / social)` · `Returning reader, not subscribed` · `Existing subscriber / customer` · `Mixed / unknown`\n\n**Q4. Funnel stage.** (Where is the reader mentally?) Options: `TOFU: discovery, learning, no buying intent yet` · `MOFU: evaluating options, comparing` · `BOFU: ready to act, just needs a nudge` · `Not applicable (no buying funnel — e.g., personal blog, journalism, hobby content)`\n\n**Q5. Mechanism preference.** (Only ask if a mechanism could legitimately help. See `references/mechanisms.md`. For sophisticated, skeptical, or repeat-reader audiences, default to \"None / value-only\" without asking.) Options: `None: value statement only` · `Curiosity gap (\"Want to know more?\")` · `Reciprocity (free asset first)` · `Discount / offer` · `Urgency (real deadline)` · `Scarcity / FOMO (limited spots)` · `Social proof (count / testimonial)`\n\nCapture any free-text constraints the user volunteers (length limit, brand voice, no popups, multi-language, etc.). Note them.\n\n### Step 2 — Diagnose\n\nMap the inputs to a CTA archetype. The decision logic:\n\n```\ncontext = INDEPENDENT / PERSONAL\n├── objective = newsletter / email      → Archetype A: Author-signature subscribe\n├── objective = try-it / direct action  → Archetype B: Inline action + source link\n├── objective = reader support / tip    → Archetype C: Reader-supported funding link\n├── objective = community               → Archetype D: Proof-counted community invite\n├── objective = social follow           → Archetype A (variant: lead with social links)\n├── objective = engagement              → Archetype E: Specific reply prompt\n└── objective = product / demo          → ⚠️ FLAG. Only valid on personal/professional\n                                          blog where the author IS the product\n                                          (consultants, coaches, solo founders, indie devs).\n                                          Frame as \"if you hit this, here's how I help\"\n                                          — never \"Book a Demo\" verbatim.\n\ncontext = NEWSLETTER PUBLICATION\n├── objective = growth / subs           → Archetype F: Share/restack + native widget\n├── objective = engagement              → Archetype E: Specific reply prompt\n├── objective = paid conversion         → Archetype G: Value-gap tease\n├── objective = monetization / sponsor  → Archetype H: Inline sponsor block (not bottom)\n├── objective = community               → Archetype D\n└── objective = direct purchase         → Archetype K (rare on newsletters; use BOFU only)\n\ncontext = BRAND / CONTENT MARKETING\n├── stage = TOFU                        → Archetype I: Transitional asset (lead magnet)\n├── stage = MOFU                        → Archetype J: Direct + Transitional pair\n├── stage = BOFU                        → Archetype K: Direct CTA + risk reversal\n├── objective = community               → Archetype D\n└── objective = engagement              → Archetype E (rarely the right call here)\n```\n\nRead `references/taxonomy.md` for the full archetype catalog with copy templates, form specs, when each works, and verbatim examples from named publications.\n\n### Step 3 — Compose the recommendation\n\nOutput the recommendation in this exact structure. Do not deviate. Do not add filler.\n\n```markdown\n## Recommended CTA\n\n**Archetype:** [letter + name from decision tree] **Why this fits:** [1-2 sentences naming the input combination]\n\n### Content (copy)\n\n**Headline / value line:**\n\n> [exact text]\n\n**Body / proof line (1-2 lines):**\n\n> [exact text]\n\n**Button copy:**\n\n> [exact text]\n\n**Risk reversal / subtext (if applicable):**\n\n> [exact text, or \"Omit: would feel forced for this audience\"]\n\n### Form (structure)\n\n- **Placement:** [end-only / end + sticky / end + mid-article repeat]\n- **Visual weight:** [low / medium / high, with justification]\n- **Layout:** [single button / button + text link / native widget cluster / one-line signature]\n- **Proof to co-locate:** [subscriber count / star count / testimonial / named recommenders / logo wall / none]\n\n### Mechanism\n\n[Named mechanism + 1 sentence on why it is appropriate, OR \"None: value statement carries it. Mechanisms would erode trust for this audience.\"]\n\n### A/B test plan\n\n- **First test:** [single variable, e.g., button copy A vs. B]\n- **Why this one first:** [1 sentence]\n- **Sample size needed:** [rough estimate based on baseline traffic, or \"skip A/B for now — traffic too low\" with the alternative recommendation]\n- **Next 2 tests to queue:** [in priority order]\n\n### Accessibility check\n\n- **Color contrast:** [target ratio + concrete pairing if colors known]\n- **Touch target:** [size requirement]\n- **Semantic markup:** [<button> vs. <a> vs. form]\n- **ARIA:** [only if non-obvious]\n- **Keyboard / focus:** [requirement]\n- **Color-independence:** [non-color affordance]\n```\n\nAfter printing the recommendation, list 2-3 anti-patterns the user is at risk of falling into given their inputs, directly, as a contrarian check. Pull these from `references/anti-patterns.md`.\n\nIf the user is writing in a non-English language, translate the content section into that language but keep the structure (headings, labels) in English. Honor formality cues (e.g., `tu` vs. `vous` in French, `du` vs. `Sie` in German) based on prior conversation context, and flag the choice explicitly.\n\n### Step 4 — Offer next moves\n\nSuggest 2-3 follow-up directions:\n\n1. **Steelman the opposite.** Offer to design the CTA you would recommend against — e.g., the hard-sell version on a TOFU post — so the user can see why it fails.\n2. **Variant for a different audience or platform.** If the article will be cross-posted (own site + Medium + LinkedIn + a syndication network), offer to rewrite per platform.\n3. **End-to-end review.** Offer to audit the rest of the article for CTA-supporting signals: author bio, related-post links, in-line proof.\n\n---\n\n## Style inheritance\n\nThe copy templates in `references/taxonomy.md` are starting points, not finished copy. Always adapt them to:\n\n- The user's stated brand voice or any `<userPreferences>` in scope (formality, language, em-dash avoidance, length limits).\n- The language of the article. Output copy in the article's language; never default to English.\n- The publication's existing voice. If the user has prior posts visible, mirror their cadence and vocabulary.\n- The reader's expected level of expertise. A CTA for a beginner-finance blog uses different vocabulary than one for a quant-trading newsletter.\n\nNever output a template verbatim if it conflicts with the user's stated style preferences.\n\n---\n\n## Reference files\n\nRead these as needed during diagnosis and composition. Read the relevant file in full before composing the recommendation; do not paraphrase from memory.\n\n- **`references/taxonomy.md`**: All 11 archetypes (A through K) with copy templates, form specs, verbatim examples from named publications, and conversion expectations.\n- **`references/mechanisms.md`**: When to use urgency, scarcity, FOMO, discount, curiosity, reciprocity, social proof, authority, unity. When NOT to use them.\n- **`references/ab-testing.md`**: Priority order of variables to test, sample-size rules of thumb, common pitfalls, when to skip A/B testing entirely.\n- **`references/accessibility.md`**: WCAG 2.2 specifics for CTA blocks: contrast ratios, touch targets, ARIA patterns, focus states, keyboard support, motion preferences.\n- **`references/anti-patterns.md`**: 12 failure modes to call out by name when they apply to the user's inputs.\n\n---\n\n## Operating principles\n\n- **One primary CTA per post.** Multiple competing CTAs is the dominant failure mode (single-CTA pages convert ~30%+ better than multi-CTA pages in repeated case studies).\n- **Match the voice of the publication.** A personal-essay footer that reads like a SaaS landing page collapses credibility. A SaaS footer that reads like a casual signature converts at noise.\n- **Specificity beats cleverness.** \"Get one essay a week on indie filmmaking\" beats \"Subscribe to our awesome newsletter.\" Joanna Wiebe's \"I want to \\_\\_\\_\" completion test is the cleanest filter for button copy.\n- **Proof co-located with the ask.** Subscriber count, testimonial, customer logos, star count, named recommenders — whichever signal is honest for the context, place it inside or adjacent to the CTA block.\n- **Mechanisms are tools, not garnish.** Most well-written value statements need no mechanism. Add urgency, scarcity, FOMO, or discount only when the context genuinely supports them; theatrical mechanisms erode trust faster than they lift conversion.\n- **Push back on bad asks.** If the user wants \"Book a Demo\" at the bottom of a beginner tutorial for first-time visitors, say so. Do not produce a polished version of a CTA that will fail. Propose the alternative, explain why, then if the user still wants the original, deliver it with the failure mode flagged.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn72rhnkwjfeex9wr1n7y24qa983cjn3\",\n  \"slug\": \"copywriting-cta\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779308738328\n}\n\nFile v1.0.0:references/ab-testing.md\n\n# A/B Testing CTAs — Priority, Method, Pitfalls\n\nA/B testing CTAs is high-leverage when you have enough traffic. It is theatre when you don't. This file covers what to test, in what order, with what sample size, and the failure modes that produce confidently wrong conclusions.\n\n---\n\n## When NOT to A/B test\n\nIf any of the following is true, skip A/B testing and just ship a single well-designed CTA:\n\n- Article gets fewer than ~1,000 unique readers per month. Below this threshold, runs take forever and confidence intervals are noise.\n- Baseline conversion rate is below 0.5%. The signal is too weak to detect any but the largest lifts.\n- You haven't written a strong baseline yet. Testing \"Subscribe\" vs. \"Sign up\" on a generic CTA is rearranging deck chairs; rewrite the value statement first.\n- You don't have event tracking wired up. Without per-CTA click and downstream conversion tracking, you can't measure outcomes.\n\nEffort is better spent improving the baseline CTA copy and content quality until traffic justifies testing.\n\n---\n\n## Priority order: what to test first\n\nTest variables in this order (Foundry CRO's \"priority stack\" plus operator experience):\n\n### Tier 1 — Highest leverage\n\n1. **Number of CTAs.** One primary vs. one primary + one secondary vs. multiple equal-weight CTAs. Single-CTA pages convert ~30%+ better than multi-CTA pages in repeated case studies.\n2. **Value statement.** \"Subscribe to our newsletter\" vs. \"Get one [specific thing] a week.\" This is the single highest-impact variable in most tests.\n3. **Specificity of the offer.** \"Download our guide\" vs. \"Download the 14-line shell script we used to cut infra costs 40%.\" Specific concrete artifacts can lift conversion 2-5x.\n\n### Tier 2 — Significant leverage\n\n1. **Button copy.** \"Submit\" vs. \"Send me the next one.\" Apply Wiebe's \"I want to \\_\\_\\_\" completion test.\n2. **Proof co-location.** No proof vs. subscriber count vs. testimonial vs. logo wall.\n3. **Mechanism applied.** Value-only vs. with social proof vs. with reciprocity. Test one mechanism at a time.\n\n### Tier 3 — Marginal leverage\n\n1. **Placement.** End-only vs. end + sticky vs. end + mid-article repeat.\n2. **Visual weight.** Button size, color, contrast. The Demio case showed +57.79% from larger and darker, with no color change.\n3. **Form length.** Single field (email only) vs. multi-field (name + email + role).\n\n### Tier 4 — Marginal-to-noise\n\n1. **Button color.** Red vs. green vs. orange vs. blue. The well-known ~21% lift cited in CXL is real but small and contextual. Contrast with surroundings matters more than the specific color.\n2. **Microcopy variations** (\"100% spam-free\" vs. \"We respect your inbox\"). Stop here unless top tiers are exhausted.\n\n---\n\n## Method: one variable per test\n\n**Always change one variable per test.** HubSpot's Carly Stec: \"Avoid testing multiple variables at the same time.\" Multi-variable tests produce results you can't attribute. The lift could be from any of the changes or from interactions between them.\n\nException: if you're testing two entirely different CTA concepts (e.g., transitional asset vs. direct demo CTA on a MOFU post), that's a multi-variable test by necessity. Frame it as \"concept A vs. concept B\", not as a granular optimization.\n\n---\n\n## Sample size: rule of thumb\n\nThe honest formula is full statistical power calculation; the rule of thumb for end-of-article CTAs is:\n\n- **Baseline conversion rate < 1%:** need ~20,000+ visitors per variant to detect a 20% relative lift at 95% confidence.\n- **Baseline 1-3%:** need ~7,000-15,000 per variant.\n- **Baseline 3-10%:** need ~2,000-5,000 per variant.\n- **Baseline > 10%:** need ~500-2,000 per variant.\n\nIf you're trying to detect smaller lifts (10% relative), roughly 4x these numbers. If you're trying to detect larger lifts (50% relative), roughly one-quarter.\n\nCalculator: any standard A/B test sample size calculator (Optimizely, VWO, Evan Miller's online calculator). Plug in baseline rate + minimum detectable effect + power (typically 80%) + significance (typically 95%).\n\n**Run time:** at least one full week, preferably two, regardless of when you hit the sample size. Weekday vs. weekend traffic differs. Newsletter readers behave differently right after publish vs. one week later.\n\n---\n\n## Pitfalls — confidently wrong conclusions\n\n1. **Stopping early.** \"We hit significance at day 3, declared winner.\" This is the #1 cause of false positives. Pre-commit to a sample size or duration and don't peek.\n2. **Multiple comparisons.** Testing five variants simultaneously and picking the winner inflates false-positive rate. If you test 20 things at p=0.05, one will \"win\" by chance. Use Bonferroni correction or test only two variants at a time.\n3. **Wrong success metric.** Optimizing CTR (clicks) when you actually want downstream conversions (paid subscribers, qualified leads). Always measure to the actual business outcome, not just the click.\n4. **Sample contamination.** Existing subscribers seeing the new-visitor CTA. Segment tests by cookie state (new vs. returning) where possible.\n5. **Seasonality.** Testing in mid-December when reader behavior is anomalous. Test in normal traffic periods.\n6. **Survivorship bias in self-reported case studies.** \"We lifted CTR 1,617%!\" usually means baseline was anomalously low and the test surfaced an obvious fix. Treat dramatic published case studies as directional, not predictive of your situation.\n\n---\n\n## What \"good enough\" looks like\n\nFor an independent author managing their own blog without a marketing team:\n\n- **Tier 1 tests:** Run these. Even one well-designed Tier-1 test can lift conversion 2-5x.\n- **Tier 2 tests:** Run if you have traffic and a Tier-1 winner already.\n- **Tier 3-4 tests:** Skip unless traffic is large (10k+ unique per month per article).\n\nThe honest summary: most authors should test exactly one thing — the value statement and offer specificity — and commit to the winner for 6+ months. The rest is decoration.\n\n---\n\n## Recommended tooling\n\n- **Plausible / Fathom + custom events:** simplest for self-hosted independent blogs. Tag CTAs with `data-cta=\"name\"` and fire events on click.\n- **PostHog:** richer event tracking + native A/B testing. Free tier sufficient for most personal blogs.\n- **HubSpot CTA module + multivariate testing:** native if already on HubSpot CMS.\n- **Optimizely / VWO:** enterprise-scale; overkill for personal blogs.\n- **Substack / beehiiv:** native A/B testing is limited (mostly subject lines). For end-of-article CTAs, instrument with link tracking and compare cohorts.\n\n---\n\n## The single rule\n\nPick the variable with the highest plausible impact, write two genuinely different variants (not \"Submit\" vs. \"Submit Now\"), run for at least one full week to a pre-committed sample size, measure the downstream business outcome, and commit to the winner. Repeat one variable at a time. Resist the urge to test six things at once.\n\nFile v1.0.0:references/accessibility.md\n\n# Accessibility Checklist for CTA Blocks\n\nA CTA that excludes readers with disabilities is a CTA that converts at a lower ceiling. This is also an EAA / WCAG compliance concern for any commercial European-facing content as of June 2025.\n\nThis file lists the WCAG 2.2 requirements that apply to end-of-article CTA blocks, with concrete pass/fail criteria. Apply all of these to every CTA you ship. There is no acceptable trade-off.\n\n---\n\n## 1. Color contrast (WCAG 2.2 SC 1.4.3 / 1.4.11)\n\n### Text contrast\n\n- **Normal text (< 18pt regular / < 14pt bold):** contrast ratio ≥ **4.5:1** against the background. AA requirement.\n- **Large text (≥ 18pt regular / ≥ 14pt bold):** contrast ratio ≥ **3:1**. AA requirement.\n- **AAA target (recommended for primary CTAs):** ≥ **7:1** for normal text, ≥ **4.5:1** for large text.\n\n### Non-text contrast (UI components, button outlines, icons)\n\n- **UI components (button boundaries, focus indicators, form fields):** contrast ratio ≥ **3:1** against the adjacent background. SC 1.4.11, AA requirement.\n\n### Common failure: light-gray \"Subscribe\" text on white\n\n\"Subtle\" gray-on-white CTAs (#999 on #FFF = 2.84:1) fail WCAG by a wide margin. The fix: use a darker text color (#595959 on #FFF = 7.02:1) or fill the button.\n\n### How to check\n\n- **Browser DevTools:** Chrome and Firefox both ship contrast checkers in the color picker of the inspector.\n- **CLI / programmatic:** axe-core, pa11y, Lighthouse.\n- **Quick web tools:** WebAIM Contrast Checker, Coolors Contrast Checker, Stark.\n\n---\n\n## 2. Touch target size (WCAG 2.2 SC 2.5.8)\n\n- **Minimum target size:** ≥ **24×24 CSS pixels**. AA requirement, introduced in WCAG 2.2.\n- **Recommended target size:** ≥ **44×44 CSS pixels**. AAA requirement, also the Apple HIG / Google Material guideline.\n\n### Practical thresholds\n\n- Button: minimum 44×44px tap target including padding. Even on desktop, this margin makes the button hittable on a touchpad without precision.\n- Inline text links: ensure ≥ 24×24px hit area (typically achieved with line-height + padding around the link).\n- Adjacent CTAs (e.g., \"Subscribe\" + \"RSS\" + \"Mastodon\"): require ≥ 8px spacing between targets so adjacent taps don't trigger the wrong link.\n\n---\n\n## 3. Semantic markup (WCAG 2.2 SC 4.1.2)\n\n### Use the right element\n\n- **Submitting a form (e.g., newsletter signup):** `<button type=\"submit\">`. Always inside a `<form>` with an explicit `action` and `method`.\n- **Navigating to another page:** `<a href=\"...\">`. Not a `<button>` styled as a link, not a `<div>` with an onClick.\n- **Toggling state in-place (e.g., expanding a section):** `<button type=\"button\">`.\n\n### Common failures\n\n- `<div onClick={...}>` styled as a button: invisible to screen readers, not keyboard-focusable by default. Always replace with `<button>` or `<a>`.\n- `<a>` with no `href` and an onClick: same problem. Use a `<button>`.\n- `<button>` that navigates: technically works, but loses right-click \"Open in new tab\" and middle-click behavior. Use `<a>` for navigation.\n\n---\n\n## 4. ARIA — use sparingly, only when semantics are insufficient\n\n### First rule of ARIA: don't use ARIA when native HTML works\n\nA `<button>Subscribe</button>` does not need `role=\"button\"`. A `<a>` does not need `aria-label=\"link\"`.\n\n### When ARIA IS needed for CTAs\n\n- **Icon-only button:** `<button aria-label=\"Subscribe to newsletter\">📩</button>`. Without the label, a screen reader announces \"button\" with no purpose.\n- **Button label that's ambiguous out of context:** \"Read more\" or \"Click here\" link should have an `aria-label` that names the destination (\"Read more about [article title]\"). Better: rewrite the visible text to be self-describing.\n- **Form field without a visible label:** `<input aria-label=\"Email address\">`. Better: include a visible `<label>` and link it with `for=`.\n\n### Common failures\n\n- `aria-label=\"Submit\"` on a button that already says \"Submit\": redundant, can produce double announcements.\n- `role=\"button\"` on a `<button>`: redundant, sometimes overrides native behavior in older AT.\n- `aria-hidden=\"true\"` on a focusable element: screen reader users see the focus, hear nothing. Use either `tabindex=\"-1\"` to remove from focus or remove `aria-hidden`.\n\n---\n\n## 5. Keyboard support (WCAG 2.2 SC 2.1.1 / 2.4.7)\n\n- **Every CTA must be reachable by Tab and activatable by Enter (and Space for `<button>`).** This is automatic with native `<button>` and `<a>`. Custom JS-driven CTAs require manual handling.\n- **Focus indicator must be visible.** `outline: none` without an explicit replacement is a WCAG 2.4.7 failure.\n- **Recommended focus style:** ≥ 2px solid outline with ≥ 3:1 contrast against both the button and the page background. WCAG 2.2 SC 2.4.11 (Focus Not Obscured) requires that the focused element be at least partly visible — no full overlay by sticky headers or footers.\n- **Tab order must be logical.** If the visual order is \"Primary CTA → Secondary text link\", the DOM order must match.\n\n---\n\n## 6. Color-independence (WCAG 2.2 SC 1.4.1)\n\n**Do not convey CTA state, importance, or affordance through color alone.**\n\n### Common failures\n\n- Only difference between primary and secondary CTA is color: colorblind users (~8% of male readers) cannot distinguish them. Add a visual difference (filled vs. outlined, larger vs. smaller, button vs. text link).\n- Error states shown only with red text: pair with an icon or explicit text (\"Error:\").\n- Required form fields shown only with red asterisk color: include the asterisk as a character and the word \"(required)\".\n\n### Apply to CTAs\n\n- Primary CTA: filled background + bold text + larger size. Not just \"the blue one.\"\n- Visited state: include underline or bold change, not just color shift.\n\n---\n\n## 7. Forms specifically (newsletter signup blocks)\n\n- **Visible label** for every input (not just placeholder text — placeholder disappears on focus and is low-contrast).\n- **`label for=` linking** to the input's `id`.\n- **Inline validation** announced to screen readers via `aria-live=\"polite\"` or `aria-describedby` on the input pointing to the error message.\n- **Error messages** placed near the field, not floated at the top of the form.\n- **Submit button** with descriptive text (\"Subscribe to the newsletter\", not \"Submit\").\n- **GDPR / consent checkbox** (where required): visible label, not pre-checked by default (EU law), with link to privacy policy.\n\n---\n\n## 8. Motion (WCAG 2.2 SC 2.3.3)\n\n- **Animated CTAs (pulsing, bouncing) must respect `prefers-reduced-motion`.** If a user has set that media query, freeze the animation.\n- **Auto-scrolling sticky CTAs:** disable on `prefers-reduced-motion`.\n- **Countdown timers** that animate: ensure the number itself is announced, not just visually counting. Use `aria-live=\"polite\"` updates at coarse intervals (every 10s or 1m, not every second).\n\n---\n\n## 9. Screen reader announcements\n\nTest with at least one screen reader:\n\n- **macOS / iOS:** VoiceOver (Cmd+F5 / triple-click Home).\n- **Windows:** NVDA (free) or JAWS.\n- **Linux:** Orca.\n- **Mobile Android:** TalkBack.\n\n**Quick test:** turn on VoiceOver, navigate to the CTA via Tab, listen to the announcement. It should clearly state: (1) the action, (2) the element type. Example: \"Subscribe to the newsletter, button\" or \"Get the template, link\".\n\nIf the announcement is \"button\" or \"link\" with no purpose, the CTA fails.\n\n---\n\n## 10. Language and readability\n\n- **Set `lang` attribute** on the page (`<html lang=\"fr\">`). Affects pronunciation by screen readers and hyphenation.\n- **For multilingual CTAs** (e.g., a French CTA in an English page), wrap in `<span lang=\"fr\">...</span>` so screen readers switch voices.\n- **Reading level:** aim for the lowest plausible Flesch reading-ease that doesn't insult the audience. Expert / niche audiences tolerate higher complexity; general / consumer audiences should target Flesch ~60+ (around grade 8-9).\n\n---\n\n## Compact pre-publication checklist\n\nFor every CTA, verify:\n\n- [ ] Text contrast ≥ 4.5:1 (or 3:1 for large text)\n- [ ] Button / non-text UI contrast ≥ 3:1\n- [ ] Touch target ≥ 44×44px (recommended) or ≥ 24×24px (minimum)\n- [ ] Native `<button>` or `<a>` (no `<div onClick>`)\n- [ ] Keyboard-reachable (Tab) and activatable (Enter/Space)\n- [ ] Focus indicator visible, ≥ 2px, ≥ 3:1 contrast\n- [ ] No information conveyed by color alone\n- [ ] Form has visible labels (not just placeholders) and `label for=`\n- [ ] Icon-only buttons have `aria-label`\n- [ ] `prefers-reduced-motion` honored for any animation\n- [ ] Screen reader announces purpose, not just element type\n- [ ] `lang` attribute set; multilingual content wrapped with `lang=`\n\nIf you can't tick every box, fix the failures before shipping. There is no \"we'll do accessibility later\" — readers excluded today are conversions lost forever.\n\nFile v1.0.0:references/anti-patterns.md\n\n# Anti-Patterns — Failure Modes to Call Out by Name\n\nTwelve failure modes that recur across end-of-article CTAs. When the user's inputs put them at risk of one of these, call it out explicitly. Do not soften.\n\n---\n\n## 1. \"Subscribe for more\"\n\n**Why it fails:** Says nothing about value, frequency, content, or who else is in. Conversion floor.\n\n**Fix:** State the value proposition, frequency, and a proof signal in one line. \"Get one debugging trick a week. Friday morning. 12,000+ engineers read it.\"\n\n---\n\n## 2. Generic verbs: \"Learn More\" / \"Read More\" / \"Click Here\" / \"Get Started\"\n\n**Why they fail:** Andy Crestodina is blunt: these are not calls to action. They name no value and no destination. NN/g's \"Get Started\" Stops Users documents how \"Get Started\" specifically funnels first-time visitors into signup flows they didn't ask for.\n\n**Fix:** Replace with the specific noun and verb. \"Read more\" → \"Read the deep-dive on Go runtime maps.\" \"Get Started\" → \"Start the 5-minute tutorial.\"\n\n---\n\n## 3. Three equally weighted buttons\n\n**Why it fails:** Hick's Law. Equal visual weight on multiple CTAs creates decision paralysis. Reader picks none.\n\n**Fix:** One primary CTA (button), demote others to subordinate text links or smaller secondaries. The StoryBrand \"direct + transitional\" dyad is the proven pattern.\n\n---\n\n## 4. Begging for comments\n\n**Why it fails:** \"Let me know what you think in the comments!\" gets ignored. The reader can't think of anything specific to say and bounces.\n\n**Fix:** Ask a specific question that requires recall of a personal experience or technical opinion. \"What's the worst bug you shipped on a Friday afternoon?\" gets answers; \"What do you think?\" does not.\n\n---\n\n## 5. Hard-sell CTA (\"Book a Demo\" / \"Talk to Sales\") on a TOFU post\n\n**Why it fails:** Top-of-funnel readers are discovering the topic, not ready to buy. A hard-sell ask at the bottom collapses credibility for the rest of the article retroactively. For sophisticated audiences (technical, professional, niche-expert), the effect is even stronger. Yacine Hmito (Head of Technology, Fabriq): \"If I see 'Book a demo' or 'Talk to Sales,' I am out.\" The same reflex applies to readers in professional services, healthcare, journalism, and any context where credibility is the readership currency.\n\n**Fix:** Use a transitional asset (PDF, template, calculator, checklist) if this is brand content. Use an author-signature subscribe if this is independent content. Save \"Book a Demo\" for BOFU content that explicitly precedes a buying decision — and even then, prefer \"Talk to a Human\" or \"Get a 20-min audit\" verbs (both produced documented 110%+ conversion lifts vs. \"Book a Demo\").\n\n---\n\n## 6. Buzzword stacking\n\n**Why it fails:** Generic adjectives stack without adding information. Every industry has its own catalog: tech (\"AI-infused,\" \"enterprise-grade,\" \"single pane of glass,\" \"synergy,\" \"leverage,\" \"seamless,\" \"scalable,\" \"at scale,\" \"digital transformation\" — Redis published an audit of buzzwords developers hate), finance (\"alpha,\" \"asymmetric upside,\" \"best-in-class\"), wellness (\"transformative,\" \"holistic,\" \"intentional,\" \"elevated\"), B2B SaaS (\"unlock,\" \"empower,\" \"supercharge\"). Each empty word cuts credibility. By word four, the reader has tuned out.\n\n**Fix:** Replace every adjective with a concrete number or example. \"Enterprise-grade reliability\" → \"99.99% uptime, measured over the last 24 months.\" \"Seamless integration\" → \"Three steps, works with [specific tools].\" \"Transformative coaching\" → \"12-week program, 1:1, every session recorded.\"\n\n---\n\n## 7. Theatrical urgency\n\n**Why it fails:** Countdown timers that reset on page refresh; \"Only 2 left!\" on infinite digital goods; \"Offer ends soon!\" recurring weekly. Sophisticated readers detect this in 0.5 seconds and bounce — permanently.\n\n**Fix:** Only use urgency when the deadline is real (cohort starts, conference tickets sell out, beta closes). State the actual date and what happens if the reader misses it. If you don't have real urgency, don't manufacture it.\n\n---\n\n## 8. Stale proof\n\n**Why it fails:** \"Trusted by leading companies\" with no logos. \"Join thousands of happy users.\" \"Award-winning newsletter\" with no award named. Vague proof performs worse than no proof — it signals \"we know we should have specifics, but we don't.\"\n\n**Fix:** Real number, named logos, named testimonial. \"Join 2,437 engineers\" beats \"thousands.\" Recognizable brand logos beat \"Fortune 500 customers.\" Named testimonial with role and company beats \"Happy Reader.\"\n\n---\n\n## 9. Subscribe form with seven fields\n\n**Why it fails:** Each additional form field reduces conversion. Email-only forms convert 2-5x better than multi-field forms in most published case studies.\n\n**Fix:** Capture email only. Ask for name, role, or preferences after the initial subscribe, via a welcome email or a profile completion prompt. Never block the first conversion on metadata you can collect later.\n\n---\n\n## 10. CTA contradicts the article\n\n**Why it fails:** Article argues vendor neutrality, then footer says \"Sign up for our SaaS.\" Article teaches readers to do X themselves, then footer says \"Let us do X for you.\" The CTA undermines the article's thesis.\n\n**Fix:** Align the CTA with the article's argument. A vendor-neutral piece earns a newsletter / RSS subscribe. A teach-yourself piece earns a deeper-content offer. Save the product pitch for posts where the product is the thesis.\n\n---\n\n## 11. Marketing voice on an independent / credibility-driven publication\n\n**Why it fails:** End-of-article CTAs in over-eager marketing tone immediately downgrade the perceived authority of the entire post. The pattern crosses every topic: a journalist's essay ending in \"Don't miss out on our amazing weekly insights!\"; a niche-expert newsletter closing with \"Subscribe now to join thousands of happy readers!\"; a personal blog footer that reads like a B2B SaaS hero. Each one tells the reader \"the human who wrote the article isn't the human who wrote this CTA.\"\n\n**Fix:** Adopt the voice of the author signing off. Restrained, specific, no exclamation marks, no royal-we. Compare:\n\n- ❌ \"Don't miss out on our amazing weekly insights! Subscribe now to join thousands of happy readers!\"\n- ✅ \"If this was useful, the weekly digest covers one thing in depth every Friday. Subscribe here. RSS over here.\"\n\nFor technical blogs specifically, Cecilia Stallsmith (Calyx) put it this way: \"Run content by your dev team. If they cringe, edit.\" The same test works for any audience: read the CTA aloud to one trusted reader from your target audience; if they wince, rewrite.\n\n---\n\n## 12. Same CTA for every post regardless of intent\n\n**Why it fails:** A \"Subscribe to the newsletter\" CTA glued to the bottom of every post — tutorial, opinion essay, release announcement, conference recap — treats every reader the same. Tutorial readers want depth; release-announcement readers want to try the code; conference-recap readers want next year's event.\n\n**Fix:** Three to five CTA templates, one per post type. Tutorial → newsletter or related deep-dive. Product / project release announcement → try-it action + source link. Opinion piece → reply prompt + newsletter. Conference / event recap → next event registration + photo album. Review post → comments + related reviews. The post tells you which template fits; never default to one.\n\n---\n\n## How to use this list\n\nWhen composing a CTA recommendation, scan this list against the user's inputs. If their context or stated goal would put them on one of these failure modes, surface it before writing the CTA. Format:\n\n> ⚠️ Anti-pattern risk: [name from this list]. [One sentence on why it applies to your case]. [The fix.]\n\nDo not soften the language. The user pays for direct, contrarian feedback; sycophancy is a disservice.\n\nFile v1.0.0:references/mechanisms.md\n\n# CTA Mechanisms — When Each Helps, When Each Backfires\n\nA \"mechanism\" is the persuasion lever layered on top of the value statement. Most end-of-article CTAs need zero mechanism — the value statement carries it. Mechanisms are tools, not garnish. Each one has a cost in trust if applied to the wrong audience.\n\nThe default for sophisticated, skeptical, or repeat-reader audiences is **None / value-only**. Add a mechanism only if the audience and context support it.\n\n---\n\n## 1. None / value-only (default)\n\n**Use when:** Audience is sophisticated, skeptical, or has high BS-detection (independent-publication readers, repeat subscribers, professionals, niche-expert audiences). Or when the offer is intrinsically valuable and the value statement does the work alone.\n\n**Example:** \"Get one well-researched essay a week. No spam, no upsells.\"\n\n**Why this is the default for independent content:** Any mechanism risks signaling \"marketing playbook\" and breaking the peer-to-peer voice that made the article credible in the first place. Sophisticated readers exit at the first whiff of theatrics — the technical-audience version of this is documented (Yacine Hmito, Head of Technology at Fabriq: \"If I see 'Book a demo' or 'Talk to Sales,' I am out\"), and the same pattern shows up in independent journalism, niche-expertise newsletters, and credibility-driven personal essays.\n\n---\n\n## 2. Curiosity gap (\"Want to know more?\")\n\n**Use when:** The article hints at deeper content in the paid / next / forthcoming piece. The reader's curiosity is already engaged by the post itself.\n\n**How to write it well:**\n\n- Be specific about what the gap is. \"Want to know more?\" alone is empty. \"The full breakdown — including the spreadsheet and three case studies I couldn't share publicly — is in the paid version\" is specific.\n- Name the missing thing. Don't tease abstractly.\n\n**How it fails:** Vague teases (\"Want the secret?\") read as clickbait. Curiosity gaps work in proportion to how _concretely_ the missing thing is named.\n\n**Where it works best:** Newsletter (Archetype G — free → paid conversion). Lenny Rachitsky's free posts use this surgically.\n\n**Where it fails:** Articles where the reader expects completeness. If the article promises to teach X, withholding the punchline for a paid upgrade breaks the implicit contract. This is especially acute on educational, technical, or how-to content.\n\n---\n\n## 3. Reciprocity (free asset first)\n\n**Use when:** The CTA is a lead-gen capture and you can offer something genuinely useful with zero pre-conditions. Reader gets the asset; you get the email.\n\n**Cialdini's principle:** People feel obligated to reciprocate gifts. If you give first, asking for something later (email, attention, a paid upgrade) gets a meaningfully higher yes-rate.\n\n**How to write it well:**\n\n- Lead with the gift. \"Get the [specific artifact] mentioned above.\" The ask is implicit (you'll need to enter your email to receive it).\n- The gift must be valuable on its own — not a watermarked thumbnail of the real thing.\n\n**How it fails:** Reciprocity collapses when the \"gift\" is obviously a wrapper for a sales sequence. A \"free ebook\" that's 80% product pitch is anti-reciprocity — the reader feels manipulated, not gifted.\n\n**Where it works best:** Marketing / SaaS TOFU (Archetype I). Lead-magnet pattern.\n\n**Where it fails:** Newsletters where the audience expects the content itself to be the gift; gating a small additional artifact behind an email feels needy.\n\n---\n\n## 4. Discount / offer\n\n**Use when:** Direct-to-purchase or subscription. Discount must be real, time-bounded, and explained (launch promo, end-of-year, audience-specific).\n\n**How to write it well:**\n\n- State the price before and after, or the percentage off and the deadline.\n- Explain why the discount exists. \"Launch discount: 20% off the first 100 subscribers\" tells a story. \"Save 20%!\" is noise.\n- Pair with an explicit, verifiable end condition (date or seat count).\n\n**How it fails:**\n\n- Permanent \"discounts\" are not discounts. If your homepage has shown 50% OFF every day for a year, the discount is now the regular price; you've just trained the reader to ignore it.\n- Discounting B2B SaaS at the blog level often cheapens the brand. Save discounts for landing pages reachable from BOFU posts, not for top-of-funnel content.\n\n**Where it works best:** Brand / SaaS BOFU posts that directly precede a purchase; paid newsletter relaunches; event tickets near deadline (conference, course, cohort).\n\n**Where it fails:** Independent blogs (almost always), newsletter free→paid (rarely — \"you can expense it\" is more durable than \"20% off\"), TOFU brand content (almost always).\n\n---\n\n## 5. Urgency (deadline)\n\n**Use when:** There is a real deadline — registration closes, course cohort starts, beta access ends, conference tickets sell out.\n\n**How to write it well:**\n\n- State the actual deadline with date and time. \"Registration closes Friday at midnight PT\" is honest.\n- Name what happens if the reader misses it. \"Next cohort opens in three months\" sets the stakes.\n\n**How it fails:** Fake urgency is the worst CTA failure mode after begging. A countdown timer that resets when the reader returns is reader-hostile. Sophisticated audiences detect this in 0.5 seconds and bounce permanently.\n\n**Where it works best:** Event-based offers (cohort courses, conference tickets, beta closes, launch windows). Marketing / SaaS BOFU when the deadline is real.\n\n**Where it fails:** Recurring newsletter offers; evergreen content generally; any context where \"ends soon\" cannot be substantiated.\n\n---\n\n## 6. Scarcity / FOMO (limited spots)\n\n**Use when:** There is real scarcity — N seats in a cohort, N consulting clients per quarter, beta access for first N signups.\n\n**How to write it well:**\n\n- Show the actual count. \"8 of 25 seats left\" beats \"Limited seats!\" by an order of magnitude.\n- Update the count in near-real-time (or refresh on page load). A static \"Limited!\" is just noise.\n\n**How it fails:** Fabricated scarcity (\"Only 3 left!\" on a digital product with infinite supply) detonates trust. The reader doesn't just bounce — they tell others.\n\n**Where it works best:** Consulting practices (\"I take 4 new clients per quarter\"), cohort programs, limited beta access.\n\n**Where it fails:** Mass-market SaaS, newsletters, any digital good with infinite supply.\n\n---\n\n## 7. Social proof (count / testimonial / named users)\n\n**Use when:** You have honest, verifiable proof: a subscriber count, a star count, a named testimonial, a logo wall of recognizable brands.\n\n**How to write it well:**\n\n- Round to actual numbers, not aspirational ranges. \"Join 2,437 engineers\" beats \"Join thousands of engineers\" because it's verifiable and specific.\n- Testimonials should name a person and (where appropriate) their company / role. Anonymous \"Best newsletter ever! — Happy Reader\" is anti-proof; sophisticated readers discount it to zero.\n- Logo walls only help when the logos are recognizable to the audience. Specific named logos relevant to the reader (\"Used by Stripe, Cloudflare, and Vercel\" for a developer audience; \"Featured in The Atlantic, The New Yorker, and Vox\" for a journalism audience; \"Trusted by Whole Foods, Erewhon, and Sprouts\" for a food-industry audience) outperform \"Used by 50+ Fortune 500 companies\" by a wide margin.\n\n**How it fails:**\n\n- Vague proof (\"Join thousands of happy users\") performs worse than no proof — it signals \"we know we should have proof, but we don't have specifics.\"\n- Old / stale proof (subscriber count from two years ago) signals \"this newsletter is dying.\"\n\n**Where it works best:** Any context, any goal. Social proof is the most universally applicable mechanism. Co-locate it with the ask wherever possible.\n\n**Where it fails:** Only when the proof is dishonest, vague, or stale.\n\n---\n\n## 8. Authority (named author, micro-credentials)\n\n**Use when:** The author has earned credibility in the space and the reader needs that signal to commit.\n\n**How to write it well:**\n\n- Named author bio with 1-2 specific credentials. \"Built X at Y, maintains Z (17k stars)\" beats \"Industry expert with decades of experience.\"\n- Link to evidence (GitHub, prior work, conference talks).\n\n**How it fails:** Authority claims without evidence read as self-promotion. \"Award-winning marketer\" without naming the award is anti-authority.\n\n**Where it works best:** Personal blogs, newsletters, consulting CTAs. Increasingly important in the AI-content era — the signal \"a specific named human writes this\" is durable.\n\n**Where it fails:** Company blogs where the byline is the brand, not a person.\n\n---\n\n## 9. Unity (shared identity)\n\n**Use when:** Your audience identifies with a tribe, movement, or shared identity (e.g., indie hackers, working parents, climate-tech founders, plant-based home cooks, French startup community, queer writers, value investors, ultra-runners).\n\n**How to write it well:**\n\n- Name the tribe explicitly. \"For working parents who run their own businesses\" is better than \"For business owners.\" \"For Go developers who care about runtime internals\" is better than \"For developers.\" The pattern: specific identity intersection beats broad category.\n\n**How it fails:** Pandering to a tribe you're not part of. If you don't actually identify with the audience, they will smell it.\n\n**Where it works best:** Niche newsletters; community CTAs; conference / event recap posts.\n\n---\n\n## Selector matrix: mechanism × context\n\n| Mechanism | Independent / personal | Newsletter publication | Brand / content marketing |\n| --- | --- | --- | --- |\n| None / value-only | ✅ Default | ✅ Often | ⚠️ Rarely enough |\n| Curiosity gap | ❌ Avoid | ✅ Free→paid teases | ⚠️ Only if specific |\n| Reciprocity | ⚠️ Only if asset is genuine code/tool | ⚠️ Rarely needed | ✅ TOFU default |\n| Discount | ❌ Avoid | ⚠️ Only at launch/relaunch | ✅ BOFU only |\n| Urgency | ❌ Avoid unless real deadline | ⚠️ Real deadlines only | ✅ Event/launch only |\n| Scarcity / FOMO | ❌ Avoid | ❌ Avoid | ⚠️ Real scarcity only |\n| Social proof | ✅ Stars, named users | ✅ Subscriber count | ✅ Logos, testimonials |\n| Authority | ✅ Named author + credentials | ✅ Author bio | ⚠️ Brand authority only |\n| Unity | ✅ Tribe naming | ✅ Niche audience | ⚠️ Rarely fits |\n\n✅ = fits naturally · ⚠️ = situational · ❌ = avoid by default\n\n---\n\n## The single rule\n\nIf you have to choose between adding a mechanism and improving the value statement, improve the value statement. Mechanisms amplify; they don't substitute. A weak value statement with three mechanisms layered on top still loses to a strong value statement with no mechanism at all.\n\nFile v1.0.0:references/taxonomy.md\n\n# CTA Archetypes (A through K)\n\nEleven archetypes covering the independent / newsletter / brand contexts × the full goal taxonomy. Each entry includes: when it fits, copy template, form spec, verbatim example from a named publication, and rough conversion expectation.\n\nThe archetypes are designed to work across topics: a personal essay on indie filmmaking, a finance newsletter, a SaaS engineering blog, a hobby cooking blog, a B2B HR tech site. Adapt the wording to the topic; the structural prescriptions are general.\n\n---\n\n## A. Author-signature subscribe (independent blog, newsletter growth or social follow)\n\n**When it fits:** Personal or independent blog of any topic. Goal is to grow an RSS / email / social audience without alienating the reader. Solo-author voice. First-time and returning visitors mixed.\n\n**Copy template:**\n\n> Posted [date]. If you liked this, you can subscribe to the [newsletter / weekly digest / monthly notes] — [frequency promise]. RSS [here]. [Optional: social handle(s) for follow].\n\n**Form:**\n\n- Single short paragraph or one-line signature, no boxed UI.\n- Visual weight: **low**. Reads as a byline, not an ad.\n- Layout: 1-3 inline text links, no button. Optional: native subscribe widget on its own line below.\n- Placement: end-only. No mid-article repetition. No sticky.\n\n**Verbatim example — Simon Willison (simonwillison.net), technical blog:**\n\n> Posted [date] at [time]. Follow me on Mastodon, Bluesky, Twitter or subscribe to my newsletter.\n\n**Verbatim example — Stripe blog, brand publication using author-signature style:**\n\n> Stay connected with Stripe and receive new blog posts in your inbox. Stripe builds financial tools and economic infrastructure for the internet. [email field]\n\n**Conversion expectation:** 0.3-2% of unique readers subscribe per post. Above 2% is top-decile.\n\n---\n\n## B. Inline action + source link (any context, try-it / direct action)\n\n**When it fits:** Article walks through a doable action: code, recipe, exercise routine, financial calculation, design template, workout, drill, prompt, configuration. Goal is for the reader to try the action immediately. Reader trusts artifacts over copy.\n\n**Copy template:**\n\n> Try it:\n>\n> ```\n> [code snippet / recipe steps / template link / prompt / calculation]\n> ```\n>\n> Source: [link to repo / template / spreadsheet / Figma file / GitHub gist]. Feedback welcome. If you build something with it, [reply / DM / open an issue] — I'd love to see it.\n\n**Form:**\n\n- Code block or embedded artifact (recipe card, downloadable template, interactive calculator) immediately above the link line.\n- Visual weight: **medium**. The artifact carries the weight, not a button.\n- Layout: artifact + 1-2 plain text links.\n- No \"Star the repo!\" or \"Save the recipe!\" button at the bottom. That sort of ask belongs on the artifact's own page, not the blog footer.\n\n**Verbatim example — Fly.io blog, technical publication using restrained share-only pattern:**\n\n> Share this post on Twitter | Share this post on Hacker News | Share this post on Reddit Next post ↑ / Previous post ↓\n\n(Fly.io's blog deliberately omits any subscribe or sign-up ask at the bottom; product CTAs live inline at the top of certain posts. The pattern generalizes: when the artifact in the post is the value, the bottom only needs share affordances.)\n\n**Common variants:**\n\n- **OSS / dev context:** `pip install x`, `npm install y`, `go get z`, plus repo link.\n- **Cooking / hobby blog:** \"Get the printable recipe card\" + link.\n- **Finance / spreadsheet context:** \"Open the calculator in a new tab\" + link to a Google Sheet template.\n- **Design / no-code:** \"Duplicate this Figma file\" + link.\n- **Productivity / templates:** \"Use the Notion template\" + link.\n\n**Conversion expectation:** Hard to attribute directly. Measure via referrer logs on the artifact, downstream artifact-engagement (installs, copies, forks), or query-string tagging (`?ref=post-name`).\n\n---\n\n## C. Reader-supported funding link (independent context, paid support / tip)\n\n**When it fits:** Independent creator with a sustainable readership: writer, journalist, podcaster, indie maintainer, indie analyst, illustrator, researcher. Goal is to convert reader-trust into financial support without begging.\n\n**Copy template:**\n\n> I write / make this on the side. If you find it useful, a [membership / sponsorship / tip] covers about [a day / a week / a month] of work. [Memberful / Patreon / GitHub Sponsors / Buy Me a Coffee / Stripe link] · [one-off tip link]\n\n**Form:**\n\n- Plain text link, no button. Optional: small recurring \"members get X\" subtext.\n- Visual weight: **low**.\n- Placement: at the _top_ of posts (Dan Luu's documented pattern) OR end-signature. Not both.\n- Layout: 1-2 inline text links.\n\n**Verbatim example — Dan Luu (danluu.com), independent technical writer:**\n\n> A couple weeks ago, I added a link to Patreon at the top of posts (instead of just having one hiding at the bottom).\n\n**Generalization to other creator types:**\n\n- **Indie journalist / Substack writer:** \"If this is useful, a paid subscription covers the time. [link]\"\n- **Podcaster:** \"Members get the extended cut and the back catalog. [link]\"\n- **Illustrator / artist:** \"Memberships fund the next series. [link]\"\n\n**Conversion expectation:** Reader support is a rare event. Don't optimize for conversion rate; optimize for the signal \"this is a serious operation worth funding.\" A small number of high-value supporters outweighs a long tail of $5 tips on operational sustainability.\n\n---\n\n## D. Proof-counted community invite (any context, community join)\n\n**When it fits:** You run a community (Discord / Slack / forum / Circle / Geneva / WhatsApp group) that the article topic touches. Reader could plausibly want ongoing discussion.\n\n**Copy template:**\n\n> Join [N] [readers / makers / writers / parents / investors / climbers / etc.] in [community name] [on platform]. We talk about [specific topic] every [day / week]. [Invite link]\n\n**Form:**\n\n- Boxed block with platform logo + member count + topic.\n- Visual weight: **medium**. Button: \"Join the [community name]\".\n- Layout: 1 button + 1 text link to a public area / archive (if any).\n\n**Critical:** The count must be honest. \"Join 24 readers\" is more compelling than \"Join a growing community\" because the former is verifiable. Round to actual number, never inflate.\n\n**Conversion expectation:** 1-3% of readers click; 30-60% of clickers actually join.\n\n---\n\n## E. Specific reply prompt (any context, engagement)\n\n**When it fits:** Article makes a claim or shares an experience where the reader plausibly has a counter-example, addition, or related story. Goal is comments / replies / DMs.\n\n**Copy template:**\n\n> [Specific question that requires recall of a personal experience or strong opinion]. Reply, hit comment, or DM me — [contact handle]. I read everything.\n\n**Form:**\n\n- 1-2 sentences. No button.\n- Visual weight: **low**.\n\n**The question must be specific.** Replace \"What do you think?\" with one of:\n\n- \"What's the worst hire you've ever made and what tipped you off in the first week?\"\n- \"Which of these three recipes did you try, and what would you change?\"\n- \"What's one investment thesis you've held for 5+ years that you'd defend in public?\"\n- \"Which conference talk changed how you work, and why?\"\n\n**Verbatim example — Patrick McKenzie / Bits about Money (paraphrased pattern):**\n\n> Counter-arguments and corrections are welcome. Reply to this email; I read everything, even if I don't always respond in time.\n\n**Conversion expectation:** Specific prompts can hit 1-3% reply rate on newsletters. Generic prompts (\"Let me know what you think!\") run near zero.\n\n---\n\n## F. Share / restack + native widget (newsletter publication, growth)\n\n**When it fits:** Newsletter on Substack, beehiiv, Ghost, or similar. Goal is subscriber growth. Reader is engaged (they finished a long essay).\n\n**Copy template:**\n\n> If this was useful: a [restack / share] helps more than you'd think — it tells [platform] to show it to people whose feeds look like yours. And if a specific person came to mind while reading, forward it to them.\n\n**Form:**\n\n- One short paragraph asking for restack / share.\n- Platform-native widgets (like, comment, restack, share) immediately below.\n- Visual weight: **medium**. The native widgets do the visual lifting.\n\n**Verbatim example — Lenny's Newsletter (free posts), B2B operator newsletter:**\n\n> If you're finding this newsletter valuable, share it with a friend, and consider subscribing if you haven't already. There are group discounts, gift options, and referral bonuses available.\n\n**Conversion expectation:** Restack rate 1-8% on Substack. Lenny Rachitsky reports ~78% of free subscribers and ~11% of paid come via Substack recommendations — restacks feed the recommendation algorithm directly.\n\n---\n\n## G. Value-gap tease (newsletter publication, free → paid conversion)\n\n**When it fits:** Free post that exists alongside paid content. Goal is to convert free readers to paying subscribers without bait-and-switch.\n\n**Copy template:**\n\n> This is a free post. Paid members got [specific deeper content] last [time period], including [concrete thing the paid version had]. If you find one in [N] of these useful, the math works out — and you can expense it.\n\n**Form:**\n\n- Italicized paragraph, ends with a \"Become a paid member\" button.\n- Visual weight: **medium**.\n- Subtext: \"Cancel anytime · Group discounts available · [Refund policy if any]\".\n\n**Critical:** Name what the paid version contained. \"Subscribe for more\" tells the reader nothing. \"Paid members got the spreadsheet and three case studies I couldn't share publicly\" lets them self-qualify.\n\n**Conversion expectation:** Lenny's documented range is 4-8% free → paid for high-quality newsletters with sustained free → paid teasing. Most newsletters convert 1-3%.\n\n---\n\n## H. Inline sponsor block (newsletter publication, monetization)\n\n**When it fits:** Newsletter with sponsor monetization. Goal is to deliver sponsor value without breaking reader trust.\n\n**Copy template:**\n\n> [Sponsor message in author's voice, 2-4 sentences, names the specific value to a specific reader segment. Signed-off with an explicit \"this is a sponsored block\" disclosure.]\n\n**Form:**\n\n- Boxed block, clearly demarcated from editorial.\n- Placement: **inline, not at bottom.** Packy McCormick (Not Boring) places sponsor blocks inline, mid-essay; the bottom is reserved for native widgets.\n- Visual weight: **medium**.\n- Disclosure: \"This is sponsored by [X]\" or \"Today's newsletter is presented by [X]\" at the top of the block. Required by FTC for US publications.\n\n**Verbatim example — Not Boring (Packy McCormick):**\n\n> Upgrade your team to Ramp: The Official Business Card of Not Boring [...]\n\n**Conversion expectation:** Sponsor CTR is the sponsor's problem to optimize. The publication's job is to maintain the integrity of the block so future sponsors keep paying.\n\n---\n\n## I. Transitional asset / lead magnet (brand publication, TOFU)\n\n**When it fits:** Top-of-funnel content-marketing post. Reader is discovering the topic, not ready to buy. Goal is to get them on the list with a transitional asset (PDF, template, checklist, calculator, swipe file, quiz result).\n\n**Copy template:**\n\n> Get the [specific artifact mentioned in the post] — [PDF / template / checklist / calculator]. [Frequency promise]. [Proof: \"12,000+ [persona] use it\"]. No upsell.\n\n**Form:**\n\n- Boxed block with the artifact image / thumbnail visible.\n- Button: \"Send me the [artifact]\" or \"Download the [artifact]\".\n- Visual weight: **high**.\n- Risk reversal: \"Unsubscribe anytime\" or \"We won't email you unless you ask us to.\"\n\n**Critical:** The artifact must be the artifact mentioned in the post, not a generic \"Ultimate Guide\". If the post is \"How we cut our customer-support response time by 60%\", the asset is \"The exact email templates we use\", not \"The Definitive Guide to Customer Support (47 pages)\".\n\n**Conversion expectation:** 1-5% of blog readers download a well-matched transitional asset. Generic \"Ultimate Guide\" downloads run 0.1-0.5%.\n\n---\n\n## J. Direct + Transitional pair (brand publication, MOFU)\n\n**When it fits:** Middle-of-funnel content-marketing post. Reader is evaluating, comparing. Goal is to capture both buyers (direct) and not-yet-buyers (transitional).\n\n**Copy template:**\n\n> Direct (primary):\n>\n> > Start a [N-day] free trial — no credit card. Set up in under [X] minutes.\n>\n> Transitional (secondary, text link):\n>\n> > Or download [specific buyer's asset] (PDF, [N] pages).\n\n**Form:**\n\n- Two visually unequal CTAs. Direct gets the button; transitional gets a text link below or beside.\n- Visual weight: **high** for direct, **low** for transitional.\n- Layout: Button + text link. NOT two equal buttons.\n\n**Critical:** The visual hierarchy must be unambiguous. Two same-size buttons trigger decision paralysis (Hick's Law). One button + one text link is the high-converting layout. StoryBrand's Donald Miller calls this the \"direct + transitional\" dyad and treats it as the default for B2B content.\n\n**Conversion expectation:** Combined click-through 3-8% on a well-targeted MOFU post.\n\n---\n\n## K. Direct CTA + risk reversal (brand publication, BOFU)\n\n**When it fits:** Bottom-of-funnel content-marketing post. Reader is ready to act, just needs the friction removed. Goal is signup / demo / purchase.\n\n**Copy template:**\n\n> See [Product / Service] applied to your [workflow / situation]. [N]-minute call. We'll audit your current [process] and show what changes — even if you don't buy. [Book a [N]-min audit] Risk reversal: No sales pitch. We'll send the recording afterwards.\n\n**Form:**\n\n- Single prominent button.\n- Visual weight: **high**.\n- Layout: button + 1-2 lines of risk-reversal subtext directly below.\n- Proof co-located: small testimonial or logo wall above or below the block.\n\n**Critical:** The button verb must match the offer. PartnerStack's documented test moved \"Book a Demo\" → \"Get Started\" and lifted conversion 111.55%. Mailmodo's documented test moved \"Book a Demo\" → \"Talk to a Human\" and lifted conversion 110.35%. \"Book a Demo\" is the lowest-converting BOFU verb in the published record.\n\n**Conversion expectation:** 1-3% of blog readers → MQL on a well-targeted BOFU post. 6-11% on a dedicated landing page reached from the post.\n\n---\n\n## Quick selector\n\nIf the user gave context + objective, this table picks the archetype:\n\n| Context \\ Objective | Newsletter sub | Try-it / action | Community | Reader support | Trial/Demo | Lead gen | Engagement | Paid upgrade |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| Independent / personal | **A** | **B** | **D** | **C** | ⚠️ K (only if BOFU + author IS the product) | I (rare) | **E** | — |\n| Newsletter publication | **F** | — | **D** | **H** | — | I (rare) | **E** | **G** |\n| Brand / content marketing | I (TOFU) / J (MOFU) | — | **D** | — | **K** (BOFU) | **I** | **E** (rare) | — |\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nDesigns end-of-article calls to action for blog posts, newsletters, essays, and long-form content, including copy, structure, persuasive mechanisms, A/B test guidance, and accessibility checks. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[samber](https://clawhub.ai/user/samber) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nWriters, newsletter operators, and content marketing teams use this skill to turn article context, target audience, funnel stage, and conversion objective into a concrete CTA recommendation with copy, layout, mechanism, A/B test guidance, and accessibility checks. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The declared tool list is broader than a CTA writing aid usually needs, so accepted actions could include file reads or edits outside the intended writing workflow. <br>\nMitigation: Review any proposed file operation before accepting it and restrict runtime tools to the minimum needed for copywriting and review when possible. <br>\n\n\n## Reference(s): <br>\n- [A/B Testing CTAs - Priority, Method, Pitfalls](references/ab-testing.md) <br>\n- [Accessibility Checklist for CTA Blocks](references/accessibility.md) <br>\n- [Anti-Patterns - Failure Modes to Call Out by Name](references/anti-patterns.md) <br>\n- [CTA Mechanisms - When Each Helps, When Each Backfires](references/mechanisms.md) <br>\n- [CTA Archetypes (A through K)](references/taxonomy.md) <br>\n- [ClawHub release page](https://clawhub.ai/samber/copywriting-cta) <br>\n- [Project homepage](https://github.com/samber/cc-skills) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, guidance] <br>\n**Output Format:** [Markdown recommendation with structured CTA copy, layout guidance, mechanism rationale, A/B test plan, accessibility checklist, anti-patterns, and follow-up options] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Interactive interview inputs include article context, primary objective, audience relationship, funnel stage, mechanism preference, and optional brand or language constraints.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release metadata and skill frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: copywriting-cta Owner: samber Summary: Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill whenever the user asks to write, design, review, or improve a CTA at the bottom of an article, blog post, or essay; mentions \"end-of-post CTA\", \"bottom of the article\", \"call-to-action\", \"signup box\", \"newsletter CTA\", \"s","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"context = INDEPENDENT / PERSONAL\n├── objective = newsletter / email      → Archetype A: Author-signature subscribe\n├── objective = try-it / direct action  → Archetype B: Inline action + source link\n├── objective = reader support / tip    → Archetype C: Reader-supported funding link\n├── objective = community               → Archetype D: Proof-counted community invite\n├── objective = social follow           → Archetype A (variant: lead with social links)\n├── objective = engagement              → Archetype E: Specific reply prompt\n└── objective = product / demo          → ⚠️ FLAG. Only valid on personal/professional\n                                          blog where the author IS the product\n                                          (consultants, coaches, solo founders, indie devs).\n                                          Frame as \"if you hit this, here's how I help\"\n                                          — never \"Book a Demo\" verbatim.\n\ncontext = NEWSLETTER PUBLICATION\n├── objective = growth / subs           → Archetype F: Share/restack + native widget\n├── objective = engagement              → Archetype E: Specific reply prompt\n├── objective = paid conversion         → Archetype G: Value-gap tease\n├── objective = monetization / sponsor  → Archetype H: Inline sponsor block (not bottom)\n├── objective = community               → Archetype D\n└── objective = direct purchase         → Archetype K (rare on newsletters; use BOFU only)\n\ncontext = BRAND / CONTENT MARKETING\n├── stage = TOFU                        → Archetype I: Transitional asset (lead magnet)\n├── stage = MOFU                        → Archetype J: Direct + Transitional pair\n├── stage = BOFU                        → Archetype K: Direct CTA + risk reversal\n├── objective = community               → Archetype D\n└── objective = engagement              → Archetype E (rarely the right call here)"},{"language":"markdown","snippet":"## Recommended CTA\n\n**Archetype:** [letter + name from decision tree] **Why this fits:** [1-2 sentences naming the input combination]\n\n### Content (copy)\n\n**Headline / value line:**\n\n> [exact text]\n\n**Body / proof line (1-2 lines):**\n\n> [exact text]\n\n**Button copy:**\n\n> [exact text]\n\n**Risk reversal / subtext (if applicable):**\n\n> [exact text, or \"Omit: would feel forced for this audience\"]\n\n### Form (structure)\n\n- **Placement:** [end-only / end + sticky / end + mid-article repeat]\n- **Visual weight:** [low / medium / high, with justification]\n- **Layout:** [single button / button + text link / native widget cluster / one-line signature]\n- **Proof to co-locate:** [subscriber count / star count / testimonial / named recommenders / logo wall / none]\n\n### Mechanism\n\n[Named mechanism + 1 sentence on why it is appropriate, OR \"None: value statement carries it. Mechanisms would erode trust for this audience.\"]\n\n### A/B test plan\n\n- **First test:** [single variable, e.g., button copy A vs. B]\n- **Why this one first:** [1 sentence]\n- **Sample size needed:** [rough estimate based on baseline traffic, or \"skip A/B for now — traffic too low\" with the alternative recommendation]\n- **Next 2 tests to queue:** [in priority order]\n\n### Accessibility check\n\n- **Color contrast:** [target ratio + concrete pairing if colors known]\n- **Touch target:** [size requirement]\n- **Semantic markup:** [<button> vs. <a> vs. form]\n- **ARIA:** [only if non-obvious]\n- **Keyboard / focus:** [requirement]\n- **Color-independence:** [non-color affordance]"},{"language":"text","snippet":"> [code snippet / recipe steps / template link / prompt / calculation]\n>"},{"language":"text","snippet":"context = INDEPENDENT / PERSONAL\n├── objective = newsletter / email      → Archetype A: Author-signature subscribe\n├── objective = try-it / direct action  → Archetype B: Inline action + source link\n├── objective = reader support / tip    → Archetype C: Reader-supported funding link\n├── objective = community               → Archetype D: Proof-counted community invite\n├── objective = social follow           → Archetype A (variant: lead with social links)\n├── objective = engagement              → Archetype E: Specific reply prompt\n└── objective = product / demo          → ⚠️ FLAG. Only valid on personal/professional\n                                          blog where the author IS the product\n                                          (consultants, coaches, solo founders, indie devs).\n                                          Frame as \"if you hit this, here's how I help\"\n                                          — never \"Book a Demo\" verbatim.\n\ncontext = NEWSLETTER PUBLICATION\n├── objective = growth / subs           → Archetype F: Share/restack + native widget\n├── objective = engagement              → Archetype E: Specific reply prompt\n├── objective = paid conversion         → Archetype G: Value-gap tease\n├── objective = monetization / sponsor  → Archetype H: Inline sponsor block (not bottom)\n├── objective = community               → Archetype D\n└── objective = direct purchase         → Archetype K (rare on newsletters; use BOFU only)\n\ncontext = BRAND / CONTENT MARKETING\n├── stage = TOFU                        → Archetype I: Transitional asset (lead magnet)\n├── stage = MOFU                        → Archetype J: Direct + Transitional pair\n├── stage = BOFU                        → Archetype K: Direct CTA + risk reversal\n├── objective = community               → Archetype D\n└── objective = engagement              → Archetype E (rarely the right call here)"},{"language":"markdown","snippet":"## Recommended CTA\n\n**Archetype:** [letter + name from decision tree] **Why this fits:** [1-2 sentences naming the input combination]\n\n### Content (copy)\n\n**Headline / value line:**\n\n> [exact text]\n\n**Body / proof line (1-2 lines):**\n\n> [exact text]\n\n**Button copy:**\n\n> [exact text]\n\n**Risk reversal / subtext (if applicable):**\n\n> [exact text, or \"Omit: would feel forced for this audience\"]\n\n### Form (structure)\n\n- **Placement:** [end-only / end + sticky / end + mid-article repeat]\n- **Visual weight:** [low / medium / high, with justification]\n- **Layout:** [single button / button + text link / native widget cluster / one-line signature]\n- **Proof to co-locate:** [subscriber count / star count / testimonial / named recommenders / logo wall / none]\n\n### Mechanism\n\n[Named mechanism + 1 sentence on why it is appropriate, OR \"None: value statement carries it. Mechanisms would erode trust for this audience.\"]\n\n### A/B test plan\n\n- **First test:** [single variable, e.g., button copy A vs. B]\n- **Why this one first:** [1 sentence]\n- **Sample size needed:** [rough estimate based on baseline traffic, or \"skip A/B for now — traffic too low\" with the alternative recommendation]\n- **Next 2 tests to queue:** [in priority order]\n\n### Accessibility check\n\n- **Color contrast:** [target ratio + concrete pairing if colors known]\n- **Touch target:** [size requirement]\n- **Semantic markup:** [<button> vs. <a> vs. form]\n- **ARIA:** [only if non-obvious]\n- **Keyboard / focus:** [requirement]\n- **Color-independence:** [non-color affordance]"},{"language":"text","snippet":"> [code snippet / recipe steps / template link / prompt / calculation]\n>"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: copywriting-cta\ndescription: Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill whenever the user asks to write, design, review, or improve a CTA at the bottom of an article, blog post, or essay; mentions \"end-of-post CTA\", \"bottom of the article\", \"call-to-action\", \"signup box\", \"newsletter CTA\", \"subscribe block\", \"what should I put at the bottom\", \"how do I get readers to subscribe / share / book a call / buy / follow / join / download\"; or asks how to convert article readers into subscribers, leads, customers, community members, or supporters. Also trigger when the user wants A/B testing guidance or accessibility review for a CTA block. Covers independent / personal writing, newsletter publications, and brand / content-marketing blogs across any topic — tech, finance, food, climate, design, lifestyle, B2B, B2C. Produces both the copy (content) and the structural / visual design (form), matched to the user's objective and audience.\nuser-invocable: true\nlicense: MIT\ncompatibility: Designed for Claude or similar AI agents.\nmetadata:\n  author: samber\n  version: \"1.1.0\"\n  openclaw:\n    emoji: \"🎯\"\n    homepage: https://github.com/samber/cc-skills\nallowed-tools: Read Edit Write Glob Grep Agent AskUserQuestion\n---\n\n**Questions:** Ask the user through the environment's question tool — never as plain-text prose. One question at a time, 2–4 tappable options, wait for the answer. If the environment has no question tool, ask in prose with the same options, one at a time.\n\n# End-of-Article CTA Designer\n\nDesigning an end-of-article CTA is a function of three inputs: the **objective** (what action), the **audience** (who reads it, in what relationship to the author), and the **context** (independent writing, newsletter, brand publication). Get those three right and the copy + form follow almost mechanically. Skip them and you get the universal failure mode: a generic \"Subscribe for more\" or \"Learn More\" that converts at the noise floor.\n\nThis skill runs a tight interview to capture those three inputs, then prescribes a CTA: copy (what it says), form (how it looks and sits on the page), mechanism (whether to use urgency, scarcity, curiosity, reciprocity, social proof, or none), an A/B test plan, and an accessibility check.\n\n---\n\n## Workflow\n\nRun the four steps below in order. Do not skip the interview. The user may have given partial context already; pull what's available from the conversation, then ask only for the missing pieces.\n\n### Step 1 — Interview\n\nAsk one question at a time. Do not stack questions in prose. Each question must have 2-4 tappable options. Fall back to free text only if the answer genuinely cannot be enumerated.\n\nAsk these in order, skipping any already answered:\n\n**Q1. Article context.** Options: `Personal / independent blog or essay` · `Newsletter / paid publication (Substack, beehiiv, Ghost, etc.)` · `Brand / company / cont"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn72rhnkwjfeex9wr1n7y24qa983cjn3\",\n  \"slug\": \"copywriting-cta\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1787239505671\n}"},{"path":"references/ab-testing.md","content":"# A/B Testing CTAs — Priority, Method, Pitfalls\n\nA/B testing CTAs is high-leverage when you have enough traffic. It is theatre when you don't. This file covers what to test, in what order, with what sample size, and the failure modes that produce confidently wrong conclusions.\n\n---\n\n## When NOT to A/B test\n\nIf any of the following is true, skip A/B testing and just ship a single well-designed CTA:\n\n- Article gets fewer than ~1,000 unique readers per month. Below this threshold, runs take forever and confidence intervals are noise.\n- Baseline conversion rate is below 0.5%. The signal is too weak to detect any but the largest lifts.\n- You haven't written a strong baseline yet. Testing \"Subscribe\" vs. \"Sign up\" on a generic CTA is rearranging deck chairs; rewrite the value statement first.\n- You don't have event tracking wired up. Without per-CTA click and downstream conversion tracking, you can't measure outcomes.\n\nEffort is better spent improving the baseline CTA copy and content quality until traffic justifies testing.\n\n---\n\n## Priority order: what to test first\n\nTest variables in this order (Foundry CRO's \"priority stack\" plus operator experience):\n\n### Tier 1 — Highest leverage\n\n1. **Number of CTAs.** One primary vs. one primary + one secondary vs. multiple equal-weight CTAs. Single-CTA pages convert ~30%+ better than multi-CTA pages in repeated case studies.\n2. **Value statement.** \"Subscribe to our newsletter\" vs. \"Get one [specific thing] a week.\" This is the single highest-impact variable in most tests.\n3. **Specificity of the offer.** \"Download our guide\" vs. \"Download the 14-line shell script we used to cut infra costs 40%.\" Specific concrete artifacts can lift conversion 2-5x.\n\n### Tier 2 — Significant leverage\n\n1. **Button copy.** \"Submit\" vs. \"Send me the next one.\" Apply Wiebe's \"I want to \\_\\_\\_\" completion test.\n2. **Proof co-location.** No proof vs. subscriber count vs. testimonial vs. logo wall.\n3. **Mechanism applied.** Value-only vs. with social proof vs. with reciprocity. Test one mechanism at a time.\n\n### Tier 3 — Marginal leverage\n\n1. **Placement.** End-only vs. end + sticky vs. end + mid-article repeat.\n2. **Visual weight.** Button size, color, contrast. The Demio case showed +57.79% from larger and darker, with no color change.\n3. **Form length.** Single field (email only) vs. multi-field (name + email + role).\n\n### Tier 4 — Marginal-to-noise\n\n1. **Button color.** Red vs. green vs. orange vs. blue. The well-known ~21% lift cited in CXL is real but small and contextual. Contrast with surroundings matters more than the specific color.\n2. **Microcopy variations** (\"100% spam-free\" vs. \"We respect your inbox\"). Stop here unless top tiers are exhausted.\n\n---\n\n## Method: one variable per test\n\n**Always change one variable per test.** HubSpot's Carly Stec: \"Avoid testing multiple variables at the same time.\" Multi-variable tests produce results you can't attribute. The lift could be from any of the changes or from interactions bet"},{"path":"references/accessibility.md","content":"# Accessibility Checklist for CTA Blocks\n\nA CTA that excludes readers with disabilities is a CTA that converts at a lower ceiling. This is also an EAA / WCAG compliance concern for any commercial European-facing content as of June 2025.\n\nThis file lists the WCAG 2.2 requirements that apply to end-of-article CTA blocks, with concrete pass/fail criteria. Apply all of these to every CTA you ship. There is no acceptable trade-off.\n\n---\n\n## 1. Color contrast (WCAG 2.2 SC 1.4.3 / 1.4.11)\n\n### Text contrast\n\n- **Normal text (< 18pt regular / < 14pt bold):** contrast ratio ≥ **4.5:1** against the background. AA requirement.\n- **Large text (≥ 18pt regular / ≥ 14pt bold):** contrast ratio ≥ **3:1**. AA requirement.\n- **AAA target (recommended for primary CTAs):** ≥ **7:1** for normal text, ≥ **4.5:1** for large text.\n\n### Non-text contrast (UI components, button outlines, icons)\n\n- **UI components (button boundaries, focus indicators, form fields):** contrast ratio ≥ **3:1** against the adjacent background. SC 1.4.11, AA requirement.\n\n### Common failure: light-gray \"Subscribe\" text on white\n\n\"Subtle\" gray-on-white CTAs (#999 on #FFF = 2.84:1) fail WCAG by a wide margin. The fix: use a darker text color (#595959 on #FFF = 7.02:1) or fill the button.\n\n### How to check\n\n- **Browser DevTools:** Chrome and Firefox both ship contrast checkers in the color picker of the inspector.\n- **CLI / programmatic:** axe-core, pa11y, Lighthouse.\n- **Quick web tools:** WebAIM Contrast Checker, Coolors Contrast Checker, Stark.\n\n---\n\n## 2. Touch target size (WCAG 2.2 SC 2.5.8)\n\n- **Minimum target size:** ≥ **24×24 CSS pixels**. AA requirement, introduced in WCAG 2.2.\n- **Recommended target size:** ≥ **44×44 CSS pixels**. AAA requirement, also the Apple HIG / Google Material guideline.\n\n### Practical thresholds\n\n- Button: minimum 44×44px tap target including padding. Even on desktop, this margin makes the button hittable on a touchpad without precision.\n- Inline text links: ensure ≥ 24×24px hit area (typically achieved with line-height + padding around the link).\n- Adjacent CTAs (e.g., \"Subscribe\" + \"RSS\" + \"Mastodon\"): require ≥ 8px spacing between targets so adjacent taps don't trigger the wrong link.\n\n---\n\n## 3. Semantic markup (WCAG 2.2 SC 4.1.2)\n\n### Use the right element\n\n- **Submitting a form (e.g., newsletter signup):** `<button type=\"submit\">`. Always inside a `<form>` with an explicit `action` and `method`.\n- **Navigating to another page:** `<a href=\"...\">`. Not a `<button>` styled as a link, not a `<div>` with an onClick.\n- **Toggling state in-place (e.g., expanding a section):** `<button type=\"button\">`.\n\n### Common failures\n\n- `<div onClick={...}>` styled as a button: invisible to screen readers, not keyboard-focusable by default. Always replace with `<button>` or `<a>`.\n- `<a>` with no `href` and an onClick: same problem. Use a `<button>`.\n- `<button>` that navigates: technically works, but loses right-click \"Open in new tab\" and middle-click behavior. Use `<a>` f"},{"path":"references/anti-patterns.md","content":"# Anti-Patterns — Failure Modes to Call Out by Name\n\nTwelve failure modes that recur across end-of-article CTAs. When the user's inputs put them at risk of one of these, call it out explicitly. Do not soften.\n\n---\n\n## 1. \"Subscribe for more\"\n\n**Why it fails:** Says nothing about value, frequency, content, or who else is in. Conversion floor.\n\n**Fix:** State the value proposition, frequency, and a proof signal in one line. \"Get one debugging trick a week. Friday morning. 12,000+ engineers read it.\"\n\n---\n\n## 2. Generic verbs: \"Learn More\" / \"Read More\" / \"Click Here\" / \"Get Started\"\n\n**Why they fail:** Andy Crestodina is blunt: these are not calls to action. They name no value and no destination. NN/g's \"Get Started\" Stops Users documents how \"Get Started\" specifically funnels first-time visitors into signup flows they didn't ask for.\n\n**Fix:** Replace with the specific noun and verb. \"Read more\" → \"Read the deep-dive on Go runtime maps.\" \"Get Started\" → \"Start the 5-minute tutorial.\"\n\n---\n\n## 3. Three equally weighted buttons\n\n**Why it fails:** Hick's Law. Equal visual weight on multiple CTAs creates decision paralysis. Reader picks none.\n\n**Fix:** One primary CTA (button), demote others to subordinate text links or smaller secondaries. The StoryBrand \"direct + transitional\" dyad is the proven pattern.\n\n---\n\n## 4. Begging for comments\n\n**Why it fails:** \"Let me know what you think in the comments!\" gets ignored. The reader can't think of anything specific to say and bounces.\n\n**Fix:** Ask a specific question that requires recall of a personal experience or technical opinion. \"What's the worst bug you shipped on a Friday afternoon?\" gets answers; \"What do you think?\" does not.\n\n---\n\n## 5. Hard-sell CTA (\"Book a Demo\" / \"Talk to Sales\") on a TOFU post\n\n**Why it fails:** Top-of-funnel readers are discovering the topic, not ready to buy. A hard-sell ask at the bottom collapses credibility for the rest of the article retroactively. For sophisticated audiences (technical, professional, niche-expert), the effect is even stronger. Yacine Hmito (Head of Technology, Fabriq): \"If I see 'Book a demo' or 'Talk to Sales,' I am out.\" The same reflex applies to readers in professional services, healthcare, journalism, and any context where credibility is the readership currency.\n\n**Fix:** Use a transitional asset (PDF, template, calculator, checklist) if this is brand content. Use an author-signature subscribe if this is independent content. Save \"Book a Demo\" for BOFU content that explicitly precedes a buying decision — and even then, prefer \"Talk to a Human\" or \"Get a 20-min audit\" verbs (both produced documented 110%+ conversion lifts vs. \"Book a Demo\").\n\n---\n\n## 6. Buzzword stacking\n\n**Why it fails:** Generic adjectives stack without adding information. Every industry has its own catalog: tech (\"AI-infused,\" \"enterprise-grade,\" \"single pane of glass,\" \"synergy,\" \"leverage,\" \"seamless,\" \"scalable,\" \"at scale,\" \"digital transformation\" — Redis published an audi"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill whenever the user asks to write, design, review, or improve a CTA at the bottom of an article, blog post, or essay; mentions \"end-of-post CTA\", \"bottom of the article\", \"call-to-action\", \"signup box\", \"newsletter CTA\", \"subscribe block\", \"what should I put at the bottom\", \"how do I get readers to subscribe / share / book a call / buy / follow / join / download\"; or asks how to convert article readers into subscribers, leads, customers, community members, or supporters. Also trigger when the user wants A/B testing guidance or accessibility review for a CTA block. Covers independent / personal writing, newsletter publications, and brand / content-marketing blogs across any topic — tech, finance, food, climate, design, lifestyle, B2B, B2C. Produces both the copy (content) and the structural / visual design (form), matched to the user's objective and audience. Skill: copywriting-cta Owner: samber Summary: Design end-of-article CTAs (calls-to-action placed at the bottom of blog posts, newsletters, essays, articles, or any long-form content). Use this skill whenever the user asks to write, design, review, or improve a CTA at the bottom of an article, blog post, or essay; mentions \"end-of-post CTA\", \"bottom of the article\", \"call-to-action\", \"signup box\", \"newsletter CTA\", \"s","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":2390,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T17:03:29.635Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T17:03:29.635Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T20:58:41.200Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}