luckiest-co 1.0.52 → 1.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/package.json +1 -1
  4. package/skills/ab-testing/CHANGELOG.md +4 -0
  5. package/skills/ab-testing/SKILL.md +3 -3
  6. package/skills/ab-testing/references/sample-size-guide.md +15 -2
  7. package/skills/ad-creative/CHANGELOG.md +8 -0
  8. package/skills/ad-creative/SKILL.md +23 -13
  9. package/skills/ads/CHANGELOG.md +6 -0
  10. package/skills/ads/SKILL.md +14 -10
  11. package/skills/ads/evals/evals.json +13 -0
  12. package/skills/ads/references/operating-check.md +75 -0
  13. package/skills/ai-seo/CHANGELOG.md +11 -0
  14. package/skills/ai-seo/SKILL.md +28 -27
  15. package/skills/ai-seo/references/agent-defaults.md +79 -0
  16. package/skills/ai-seo/references/ai-attribution.md +54 -0
  17. package/skills/ai-seo/references/answer-accuracy.md +84 -0
  18. package/skills/ai-seo/references/content-patterns.md +24 -0
  19. package/skills/ai-seo/references/multilingual-and-commerce.md +55 -0
  20. package/skills/ai-seo/references/platform-ranking-factors.md +29 -11
  21. package/skills/ai-seo/references/prompt-portfolio.md +83 -0
  22. package/skills/analytics/CHANGELOG.md +8 -0
  23. package/skills/analytics/SKILL.md +74 -18
  24. package/skills/analytics/references/event-library.md +2 -2
  25. package/skills/churn-prevention/CHANGELOG.md +7 -0
  26. package/skills/churn-prevention/SKILL.md +16 -8
  27. package/skills/churn-prevention/references/dunning-playbook.md +10 -7
  28. package/skills/co-marketing/CHANGELOG.md +3 -0
  29. package/skills/co-marketing/SKILL.md +9 -9
  30. package/skills/coder/CHANGELOG.md +19 -0
  31. package/skills/coder/SKILL.md +4 -3
  32. package/skills/coder-writing-plans/CHANGELOG.md +5 -0
  33. package/skills/coder-writing-plans/SKILL.md +4 -3
  34. package/skills/content-strategy/CHANGELOG.md +3 -0
  35. package/skills/content-strategy/SKILL.md +3 -3
  36. package/skills/content-strategy/references/headless-cms.md +4 -4
  37. package/skills/copy-editing/CHANGELOG.md +4 -0
  38. package/skills/copy-editing/SKILL.md +5 -3
  39. package/skills/copy-editing/evals/evals.json +13 -0
  40. package/skills/copy-editing/references/checklist.md +24 -0
  41. package/skills/copywriting/CHANGELOG.md +6 -0
  42. package/skills/copywriting/SKILL.md +57 -4
  43. package/skills/copywriting/evals/evals.json +14 -0
  44. package/skills/emails/CHANGELOG.md +4 -0
  45. package/skills/emails/SKILL.md +5 -3
  46. package/skills/marketing-plan/CHANGELOG.md +4 -0
  47. package/skills/marketing-plan/SKILL.md +8 -3
  48. package/skills/offers/CHANGELOG.md +4 -0
  49. package/skills/offers/SKILL.md +4 -4
  50. package/skills/onboarding/CHANGELOG.md +4 -0
  51. package/skills/onboarding/SKILL.md +13 -7
  52. package/skills/pricing/CHANGELOG.md +4 -0
  53. package/skills/pricing/SKILL.md +3 -3
  54. package/skills/pricing/references/research-methods.md +12 -2
  55. package/skills/product-marketing/CHANGELOG.md +5 -0
  56. package/skills/product-marketing/SKILL.md +76 -11
  57. package/skills/product-marketing/references/brand-voice.md +103 -0
  58. package/skills/prospecting/CHANGELOG.md +3 -0
  59. package/skills/prospecting/SKILL.md +22 -22
  60. package/skills/prospecting/references/data-sources.md +0 -18
  61. package/skills/prospecting/references/saas-prospecting.md +2 -2
  62. package/skills/referrals/CHANGELOG.md +4 -0
  63. package/skills/referrals/SKILL.md +3 -3
  64. package/skills/referrals/references/program-examples.md +9 -2
  65. package/skills/research/CHANGELOG.md +5 -0
  66. package/skills/research/SKILL.md +5 -5
  67. package/skills/research/references/visual-read.md +10 -4
  68. package/skills/revops/CHANGELOG.md +4 -0
  69. package/skills/revops/SKILL.md +6 -6
  70. package/skills/revops/references/scoring-models.md +14 -13
  71. package/skills/seo-audit/CHANGELOG.md +4 -0
  72. package/skills/seo-audit/SKILL.md +7 -7
  73. package/skills/seo-audit/references/international-seo.md +3 -1
  74. package/skills/social/CHANGELOG.md +4 -0
  75. package/skills/social/SKILL.md +4 -4
  76. package/skills/social/references/listening.md +13 -0
  77. package/skills/social/references/platforms.md +35 -0
  78. package/skills/social/references/short-form-video.md +10 -0
  79. package/skills/trends/CHANGELOG.md +7 -0
  80. package/skills/trends/SKILL.md +5 -5
  81. package/skills/trends/agents/openai.yaml +8 -0
  82. package/skills/trends/references/comparison.md +5 -2
  83. package/skills/trends/references/engine-contract.md +2 -2
  84. package/skills/trends/references/synthesis.md +2 -2
  85. package/skills/trends/scripts/build-skill.sh +39 -0
  86. package/skills/trends/scripts/compare.sh +61 -0
  87. package/skills/trends/scripts/evaluate_search_quality.py +584 -0
  88. package/skills/trends/scripts/lib/arxiv.py +10 -1
  89. package/skills/trends/scripts/lib/bluesky.py +22 -2
  90. package/skills/trends/scripts/lib/devto.py +108 -18
  91. package/skills/trends/scripts/lib/digg.py +79 -17
  92. package/skills/trends/scripts/lib/github.py +9 -4
  93. package/skills/trends/scripts/lib/hackernews.py +74 -2
  94. package/skills/trends/scripts/lib/html_render.py +15 -1
  95. package/skills/trends/scripts/lib/pipeline.py +1 -1
  96. package/skills/trends/scripts/lib/planner.py +5 -0
  97. package/skills/trends/scripts/lib/providers.py +1 -1
  98. package/skills/trends/scripts/lib/reddit_shreddit.py +4 -1
  99. package/skills/trends/scripts/lib/render.py +49 -45
  100. package/skills/trends/scripts/lib/youtube_yt.py +10 -7
  101. package/skills/trends/scripts/test-v1-vs-v2.sh +220 -0
  102. package/skills/trends/scripts/test_device_auth.py +128 -0
  103. package/skills/trends/scripts/verify_v3.py +200 -0
  104. package/skills/video/CHANGELOG.md +1 -1
@@ -3,7 +3,7 @@ name: copywriting
3
3
  description: "Writes, rewrites, and improves conversion marketing copy for any page — homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Use when the user says 'write copy for,' 'improve this copy,' 'rewrite this page,' 'marketing copy,' 'headline help,' 'CTA copy,' 'value proposition,' 'tagline,' 'subheadline,' 'hero section copy,' 'above the fold,' 'this copy is weak,' 'make this more compelling,' or 'help me describe my product.' Use whenever someone is working on website text that needs to persuade or convert. For email copy, see luckiest-emails. For popup copy, see luckiest-popups. For editing existing copy, see luckiest-copy-editing. For the offer underneath the copy (bonuses, guarantees, value framing), see luckiest-offers."
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.2.0"
6
+ version: "1.3.0"
7
7
  listing_id: luckiest-copywriting
8
8
  author: luckiest
9
9
  ---
@@ -14,14 +14,15 @@ This skill drives an expert conversion copywriter. The goal is to write marketin
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "56b1b8dd-a19e-4056-89c1-c476aefcf08b", installedSemver: "1.2.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "56b1b8dd-a19e-4056-89c1-c476aefcf08b", installedSemver: "1.3.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-copywriting", skill_version: "1.2.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
19
+ When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-copywriting", skill_version: "1.3.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
21
21
  ## Before Writing
22
22
 
23
23
  **Check for product marketing context first:**
24
24
  If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
25
+ Check its **Learnings** section before drafting: angles and claims already tested there shouldn't be re-proposed as new ideas, and active lessons apply unless the user says otherwise.
25
26
 
26
27
  Gather this context (ask if not provided):
27
28
 
@@ -64,6 +65,45 @@ Cold ad traffic usually lands at unaware/problem-aware. Branded search and prici
64
65
 
65
66
  ---
66
67
 
68
+ ## Diagnose the Situation First
69
+
70
+ Before drafting, decide which of three situations you're in. Most bad AI copy comes from imposing the model's taste on a marketer who already made good choices, so the diagnosis sets how much you're allowed to change.
71
+
72
+ | Situation | What you were given | Your job |
73
+ |---|---|---|
74
+ | **A. Blank or slop** | A one-line ask, or generic company-speak with no point of view | Build the argument from the brief and the product context. You have latitude on angle, never on facts: no invented stats, customers, or results |
75
+ | **B. Real voice present** | A draft with an angle, opinion, or recognizable voice, even if the execution is rough | Restore it. Keep their argument and vocabulary; fix the buried lead, vague lines, AI tells, and structure |
76
+ | **C. Point edit** | "Fix this headline," "tighten this paragraph" | Change only what was asked, plus the minimum needed around it to make it fit. Return the rest untouched |
77
+
78
+ State the diagnosis in one line with the evidence ("B: the draft argues against agencies in the founder's voice, uses 'ship' and 'stuff'") before writing.
79
+
80
+ **Read taste out of the input (B and C).** What they gave you is evidence of their judgment:
81
+ - **Vocabulary is a voice choice.** If they write "stuff" and "ship," don't upgrade to "solutions" and "deploy."
82
+ - **Where they spent words is a priority choice.** Keep the emphasis.
83
+ - **What they left out is a scope choice.** Don't add sections they didn't ask for.
84
+ - **Their angle is the positioning.** Deepen it; don't replace it with one you like better.
85
+
86
+ If they include a writing sample, match its average sentence length, punctuation habits, paragraph openings, and a few words they use that you wouldn't. A sample beats the default voice when the two conflict.
87
+
88
+ ## Drafting Protocol
89
+
90
+ **Decompose and lock.** Don't write the page in one pass. Break it into named units (headline, subhead, CTA, each section heading and body, proof lines). For each unit, draft two or three candidates, keep the best, fix its worst flaw, and lock it. Assemble and read the whole page once for flow. In Situation B, lines that already work are locked from the start.
91
+
92
+ **The three-question gate.** Run every line you write or keep through three questions:
93
+ 1. **Can the reader picture it?** A specific image, scene, or object beats an abstraction.
94
+ 2. **Can it be proven true or false?** A falsifiable claim is a claim; "best-in-class" is decoration.
95
+ 3. **Could a competitor write this exact sentence?** If yes, it fails (the swap test).
96
+
97
+ Three passes, keep it. Two, sharpen the weak one. One or none, rewrite it from the facts or flag what's missing with `[NEED: ...]`.
98
+
99
+ **Ration the punch.** Most lines should be plain, specific, and declarative. A page gets one or two punchy moments, usually the headline and one section. When every line is trying to land, none do, and the stacked devices read as AI.
100
+
101
+ **The leave-it-alone test.** Before delivering, check each change: is it measurably better, or just different? Revert changes you can't give a reason for. This matters most in Situations B and C.
102
+
103
+ *Diagnosis, the three-question gate, and decompose-and-lock adapted from Profound's `improved-copywriting` skill ([skills-marketing-library](https://github.com/retieedra-profound/skills-marketing-library), MIT), re-expressed for this skill.*
104
+
105
+ ---
106
+
67
107
  ## Copywriting Principles
68
108
 
69
109
  ### Clarity Over Cleverness
@@ -82,6 +122,15 @@ Use words your customers use. Mirror voice-of-customer from reviews, interviews,
82
122
  ### One Idea Per Section
83
123
  Each section should advance one argument. Build a logical flow down the page.
84
124
 
125
+ ### Claims Must Be Supportable — and Declines Must Name Their Unlock
126
+ Write only claims the source material supports. When a requested claim
127
+ isn't supported, don't write it and don't silently drop it: name the claim,
128
+ say why it falls short, offer the closest supportable alternative, and state
129
+ exactly what evidence would unlock the original — a customer-review export,
130
+ a written guarantee policy, a certification, a citable study or dataset.
131
+ A declined claim with an unlock path is an action item for the client;
132
+ without one it's a dead end.
133
+
85
134
  ---
86
135
 
87
136
  ## Writing Style Rules
@@ -118,6 +167,8 @@ Specific numbers, testimonials, customer names, and case-study results are the h
118
167
 
119
168
  Persuasive-but-false copy is worse than honest copy with gaps.
120
169
 
170
+ Removing tells leaves copy clean but flat. For a full rewrite, build a writer first (who's writing, what they know cold, what they'd cut, what they think) and check for second-generation tells such as wisdom-shaped sentences and tidy closers.
171
+
121
172
  ---
122
173
 
123
174
  ## No AI Tells
@@ -285,7 +336,9 @@ Maintain consistency, but adjust intensity:
285
336
 
286
337
  ## Output Format
287
338
 
288
- When writing copy, provide:
339
+ For a point edit (Situation C), return only the changed lines with a one-line reason each. Skip the annotations and alternatives below unless asked.
340
+
341
+ When writing page copy, provide:
289
342
 
290
343
  ### Page Copy
291
344
  Organized by section:
@@ -106,6 +106,20 @@
106
106
  "Result is specific, clear, and jargon-free"
107
107
  ],
108
108
  "files": []
109
+ },
110
+ {
111
+ "id": 8,
112
+ "prompt": "Can you make this homepage hero better? I wrote it myself and it feels rough.\n\nHeadline: Your agency doesn't need another dashboard. It needs to get paid.\nSubhead: We got sick of chasing clients for money, so we built the thing that does it for us. Invoices go out when the work ships. Late payers get nagged. You get your evenings back.\nCTA: Try it free",
113
+ "expected_output": "Should diagnose this as Situation B (a real voice: founder first person, blunt anti-dashboard angle, casual words like 'nagged') and restore it. Should keep the anti-dashboard angle and the founder voice, keep the author's vocabulary, and fix only what's weak: the 'doesn't need X. It needs Y.' contrast reveal in the headline, the vague 'you get your evenings back,' and the generic CTA. Should not replace the angle with a new positioning, upgrade the vocabulary to corporate terms, or invent stats or customers; missing proof is flagged with [NEED: ...].",
114
+ "assertions": [
115
+ "Identifies the input as having a real voice to preserve, before rewriting",
116
+ "Keeps the anti-dashboard/getting-paid angle",
117
+ "Keeps casual first-person founder voice (does not switch to corporate vocabulary)",
118
+ "Removes the 'doesn't need X. It needs Y.' contrast reveal",
119
+ "Rewrites the CTA to say what the reader gets",
120
+ "Invents no statistics or customers"
121
+ ],
122
+ "files": []
109
123
  }
110
124
  ]
111
125
  }
@@ -1,5 +1,9 @@
1
1
  # Changelog — luckiest-emails
2
2
 
3
+ ## 1.2.2 — 2026-10-21
4
+ From coreyhaines31/marketingskills at 06d647e (issue #213, MIT).
5
+ - Reads the Learnings section of the product marketing context before drafting.
6
+
3
7
  ## 1.2.1 — 2026-10-16
4
8
  From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
9
 
@@ -3,7 +3,7 @@ name: emails
3
3
  description: Designs and optimizes email sequences, drip campaigns, automated flows, and lifecycle email programs. Use when the user wants to build or improve a multi-email automated flow, or mentions "email sequence," "drip campaign," "nurture sequence," "onboarding emails," "welcome sequence," "re-engagement emails," "email automation," "lifecycle emails," "trigger-based emails," "email funnel," "email workflow," "what emails should I send," "welcome series," or "email cadence." For cold outreach and outbound sequences, see luckiest-cold-email. For in-app onboarding, see luckiest-onboarding.
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.2.1"
6
+ version: "1.2.2"
7
7
  listing_id: luckiest-emails
8
8
  author: luckiest
9
9
  ---
@@ -16,9 +16,9 @@ practice to any multi-email automated flow.
16
16
 
17
17
  ## Staying current
18
18
 
19
- On activation, call the Luckiest MCP check_updates tool with { listingId: "aac8d2c2-25c1-435f-a2da-34f6f0e5b5f1", installedSemver: "1.2.1" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
19
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "aac8d2c2-25c1-435f-a2da-34f6f0e5b5f1", installedSemver: "1.2.2" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
20
20
 
21
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-emails", skill_version: "1.2.1", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
21
+ When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-emails", skill_version: "1.2.2", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
22
22
 
23
23
  ## Reference Routing
24
24
 
@@ -38,6 +38,8 @@ the legacy `product-marketing-context.md` filename in older setups), read it
38
38
  before asking questions. Use that context and only ask for information not
39
39
  already covered or specific to this task.
40
40
 
41
+ Check its **Learnings** section before drafting: angles, offers, and formats already tested there shouldn't be re-proposed as new ideas, and active lessons apply unless the user says otherwise.
42
+
41
43
  Before creating a sequence, understand:
42
44
 
43
45
  1. **Sequence Type** — welcome/onboarding, lead nurture, re-engagement,
@@ -1,5 +1,9 @@
1
1
  # Changelog — luckiest-marketing-plan
2
2
 
3
+ ## 1.2.2 — 2026-10-21
4
+ From coreyhaines31/marketingskills at 06d647e (issue #213, MIT).
5
+ - Stage rates divide matching closed windows; trials still in their window are pending, not failed.
6
+
3
7
  ## 1.2.1 — 2026-10-16
4
8
  From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
9
 
@@ -3,7 +3,7 @@ name: marketing-plan
3
3
  description: When the user needs a comprehensive marketing plan for a client, a company they advise, or their own product. Also use when the user mentions "marketing plan," "growth plan," "GTM plan," "go-to-market plan," "AARRR plan," "90-day marketing plan," "12-month marketing roadmap," "fractional CMO plan," "fCMO plan," "market sizing," "TAM SAM SOM," "how big is this market," or "market research." Generates an exhaustive 13-section plan structured by AARRR (Acquisition, Activation, Retention, Referral, Revenue), customized to the client's current budget, team, and stage, mapped to future funding milestones, cross-referenced with the 139-idea marketing-ideas library and an embedded 17-section current-state audit rubric, with a full marketing operations stack showing which skills and MCP/API integrations execute each part. Outputs a Notion-paste-ready markdown document. For positioning and ICP context before planning, see product-marketing. For stage-specific deep work, see onboarding, signup, emails, referrals, pricing.
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.2.1"
6
+ version: "1.2.2"
7
7
  listing_id: luckiest-marketing-plan
8
8
  author: luckiest
9
9
  ---
@@ -12,13 +12,13 @@ metadata:
12
12
 
13
13
  ## Staying current
14
14
 
15
- On activation, call the Luckiest MCP check_updates tool with { listingId: "ec6f5811-1e2b-4f71-9345-3f21a0328e5e", installedSemver: "1.2.1" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
15
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "ec6f5811-1e2b-4f71-9345-3f21a0328e5e", installedSemver: "1.2.2" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
16
16
 
17
17
  You are an expert marketing strategist operating at fCMO (fractional CMO) level. Your job is to produce a comprehensive, executable 12-month marketing plan for a specific client or company, structured by AARRR (Acquisition, Activation, Retention, Referral, Revenue), customized to their actual budget, team, stage, and capabilities, and cross-referenced with the full marketing-ideas library and the embedded 17-section current-state audit rubric.
18
18
 
19
19
  The deliverable is a single Notion-paste-ready markdown document — the kind of strategy artifact a fractional CMO would present to founders. It must be specific to the client (not generic), exhaustive (covers every tactical surface area, not just what's prescribed), and operationally honest (reflects what their team can actually execute with their current stack and headcount).
20
20
 
21
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-marketing-plan", skill_version: "1.2.1", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
21
+ When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-marketing-plan", skill_version: "1.2.2", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
22
22
 
23
23
  ## When to use
24
24
 
@@ -109,6 +109,11 @@ Full primer in `references/aarrr-framework.md`. Quick rule:
109
109
 
110
110
  Brand and content are **cross-cutting**, not their own AARRR stage — they serve every stage.
111
111
 
112
+ When the plan defines stage metrics, every rate divides matching closed
113
+ windows: an activation rate counts only cohorts whose observation window has
114
+ ended (a trial still inside its window is pending, not failed — keep it out of
115
+ the denominator and label it pending).
116
+
112
117
  ## The current-state rubric
113
118
 
114
119
  The plan's "Current State" section scores the client against the embedded 17-section rubric. Full rubric in `references/current-state-rubric.md` — it's the source of truth, not a derivative of any external skill.
@@ -1,5 +1,9 @@
1
1
  # Changelog — luckiest-offers
2
2
 
3
+ ## 1.1.1 — 2026-10-21
4
+ From coreyhaines31/marketingskills at 06d647e (issue #213, MIT).
5
+ - Lift projection multiplies stacked lifts and asks for a test of the combined offer.
6
+
3
7
  ## 1.1.0 — 2026-07-06
4
8
  Skill updater pass: analytics integration.
5
9
 
@@ -3,20 +3,20 @@ name: offers
3
3
  description: "When the user wants to design, construct, or improve an offer — the thing they actually sell — including value framing, bonus stacking, guarantee design, scarcity/urgency, naming, and payment structure. Also use when the user mentions 'offer,' 'offer design,' 'build an offer,' 'grand slam offer,' 'irresistible offer,' 'value stack,' 'bonus stack,' 'guarantee,' 'risk reversal,' 'money-back guarantee,' 'scarcity,' 'urgency,' 'high-ticket offer,' 'productize a service,' 'naming an offer,' 'payment plan,' 'down-sell,' 'upsell offer,' or 'why isn't my offer converting.' Best for services, agencies, courses, coaching, info products, high-ticket B2B, and direct-response. If you run pure self-serve SaaS, read luckiest-pricing first — tiers and packaging do more work there. For price level itself (tiers, freemium, value metric), see luckiest-pricing. For the page that presents the offer, see luckiest-copywriting. For the launch moment, see luckiest-launch. For sales collateral, see luckiest-sales-enablement."
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.1.0"
6
+ version: "1.1.1"
7
7
  listing_id: luckiest-offers
8
8
  author: luckiest
9
9
  ---
10
10
 
11
11
  ## Staying current
12
12
 
13
- On activation, call the Luckiest MCP check_updates tool with { listingId: "5852e761-32e7-436a-a3c3-4ce477dcf5ea", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
13
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "5852e761-32e7-436a-a3c3-4ce477dcf5ea", installedSemver: "1.1.1" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
14
14
 
15
15
  # Offer Design
16
16
 
17
17
  You are an expert in offer construction. Your goal is to help the user build offers that move — not by writing better copy on a worse offer, but by improving the offer itself.
18
18
 
19
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-offers", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
19
+ When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-offers", skill_version: "1.1.1", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
21
21
  ## Before Starting
22
22
 
@@ -120,7 +120,7 @@ When the user says "my offer isn't converting" or "I want to improve my offer":
120
120
  5. **Audit the anatomy** — which of the six components is missing or weak?
121
121
  6. **Pick one lever to fix this iteration** — don't rebuild everything. The biggest lever is usually the one currently scoring lowest.
122
122
  7. **Draft the changed component** — new bonus, new guarantee, new scarcity, new name, new payment plan. If the change is a guarantee, sanity-check its generosity against gross margin and expected refund rate before shipping: a guarantee that pays out at a rate your margin can't absorb is a liability, not a lever.
123
- 8. **Project the lift, honestly** — most single-component changes deliver 10–40% conversion lift. Anyone promising 5x is selling something. Two consecutive iterations on different levers can stack to 2–3x.
123
+ 8. **Project the lift, honestly** — plan on 10–40% relative lift from one component change. Multiply the lifts, don't add them: +20% then +30% = `1.20 × 1.30 = 1.56` (2% → 3.12%, +1.12 percentage points). Two iterations rarely reach 2–3x; anyone promising 5x is selling something. Confirm the combined offer with a test (see **luckiest-ab-testing**).
124
124
 
125
125
  ---
126
126
 
@@ -1,5 +1,9 @@
1
1
  # Changelog — luckiest-onboarding
2
2
 
3
+ ## 1.1.1 — 2026-10-21
4
+ From coreyhaines31/marketingskills at 06d647e (issue #213, MIT).
5
+ - Aha-moment analysis uses a defined cohort, an early window, and a separate retention outcome; correlation is a hypothesis to test.
6
+
3
7
  ## 1.1.0 — 2026-07-06
4
8
  Skill updater pass: analytics integration.
5
9
 
@@ -3,7 +3,7 @@ name: onboarding
3
3
  description: Optimizes post-signup onboarding, user activation, first-run experience, and time-to-value so signups turn into retained users. Use when the user mentions "onboarding flow," "activation rate," "user activation," "first-run experience," "empty states," "onboarding checklist," "aha moment," "new user experience," "users aren't activating," "nobody completes setup," "low activation rate," "users sign up but don't use the product," "time to value," "first session experience," "trial-to-paid conversion," "free trial activation," "reverse trial," "app onboarding screens," or "permission priming." Use whenever users are signing up but not sticking around. For signup/registration optimization, see luckiest-signup. For ongoing email sequences, see luckiest-emails.
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.1.0"
6
+ version: "1.1.1"
7
7
  listing_id: luckiest-onboarding
8
8
  author: luckiest
9
9
  ---
@@ -14,9 +14,9 @@ This skill helps users reach their "aha moment" as fast as possible and build ha
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "a3341473-15c3-47d4-ba95-f5954e76e294", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "a3341473-15c3-47d4-ba95-f5954e76e294", installedSemver: "1.1.1" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-onboarding", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
19
+ When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-onboarding", skill_version: "1.1.1", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
21
21
  ## Initial Assessment
22
22
 
@@ -51,9 +51,15 @@ Show advancement. Celebrate completions. Make the path visible.
51
51
 
52
52
  ### Find Your Aha Moment
53
53
 
54
- The action that correlates most strongly with retention:
55
- - What do retained users do that churned users don't?
56
- - What's the earliest indicator of future engagement?
54
+ Find early value actions associated with later retention, using a defined cohort and timeline:
55
+
56
+ 1. Define signup as time zero, an early activation window, and a separate retention outcome after the activation window. For example, first-seven-day actions and return activity in week four; choose windows that fit the product cadence.
57
+ 2. Include all eligible signups with full follow-up through the retention window. Show recent, immature cohorts separately; do not count them as churned or restrict the denominator to users who already activated.
58
+ 3. Compare actions recorded within the early window. Exclude behavior during the retention outcome window: a week-four return cannot also be the early activation predictor of week-four retention.
59
+ 4. Treat high-correlation events and frequency thresholds as candidate hypotheses. Report counts, uncertainty, and acquisition/product segments; confirm the definition on a later mature cohort before adopting it.
60
+ 5. Test whether an onboarding intervention improves later retention or customer conversion. Correlation alone does not prove that forcing the action causes retention.
61
+
62
+ [Amplitude's Compass setup](https://amplitude.com/docs/analytics/charts/compass/compass-aha-moment) separates early actions from later retention and requires time for every cohort member to retain; its [interpretation guide](https://amplitude.com/docs/analytics/charts/compass/compass-interpret-1) distinguishes correlation from causation.
57
63
 
58
64
  **Examples by product type:**
59
65
  - Project management: Create first project + add team member
@@ -221,7 +227,7 @@ When recommending experiments, consider tests for:
221
227
 
222
228
  ## Task-Specific Questions
223
229
 
224
- 1. What action most correlates with retention?
230
+ 1. Which early action predicts later retention, using what activation window and fully observed signup cohort?
225
231
  2. What happens immediately after signup?
226
232
  3. Where do users currently drop off?
227
233
  4. What's your activation rate target?
@@ -1,5 +1,9 @@
1
1
  # Changelog — luckiest-pricing
2
2
 
3
+ ## 1.1.2 — 2026-10-21
4
+ From coreyhaines31/marketingskills at 06d647e (issue #213, MIT).
5
+ - Van Westendorp: validate responses and plot the cheap curves as decreasing shares.
6
+
3
7
  ## 1.1.1 — 2026-10-16
4
8
  From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
9
 
@@ -3,7 +3,7 @@ name: pricing
3
3
  description: "When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' 'monetization,' 'how much should I charge,' 'my pricing is wrong,' 'pricing page,' 'annual vs monthly,' 'per seat pricing,' or 'should I offer a free plan.' Use this whenever someone is figuring out what to charge or how to structure their plans. For in-app upgrade screens, see luckiest-paywalls. For offer construction (bonuses, guarantees, value framing, naming) on services/courses/coaching/high-ticket B2B, see luckiest-offers."
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.1.1"
6
+ version: "1.1.2"
7
7
  listing_id: luckiest-pricing
8
8
  author: luckiest
9
9
  ---
@@ -14,9 +14,9 @@ This skill helps design SaaS pricing and monetization that captures value, drive
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "78c5f684-9c91-409d-ac7b-9e00118097ef", installedSemver: "1.1.1" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "78c5f684-9c91-409d-ac7b-9e00118097ef", installedSemver: "1.1.2" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-pricing", skill_version: "1.1.1", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
19
+ When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-pricing", skill_version: "1.1.2", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
21
21
  ## Before Starting
22
22
 
@@ -20,8 +20,18 @@ Ask each respondent:
20
20
 
21
21
  ### How to Analyze
22
22
 
23
- 1. Plot cumulative distributions for each question
24
- 2. Find the intersections:
23
+ 1. Validate responses in one currency, billing period, and product description. Flag missing, nonnumeric, or inconsistent threshold ordering (`too cheap ≤ cheap ≤ expensive ≤ too expensive`); document any exclusions instead of silently changing answers.
24
+ 2. Plot candidate price on the x-axis and the share of respondents on the y-axis. The two cheap curves decrease as price rises; the two expensive curves increase. At each candidate price `p`, use:
25
+
26
+ | Curve | Share to plot | Direction |
27
+ |-------|---------------|-----------|
28
+ | Too cheap | Respondents whose too-cheap threshold is at or above `p` | Decreasing |
29
+ | Cheap / good value | Respondents whose cheap threshold is at or above `p` | Decreasing |
30
+ | Expensive | Respondents whose expensive threshold is at or below `p` | Increasing |
31
+ | Too expensive | Respondents whose too-expensive threshold is at or below `p` | Increasing |
32
+
33
+ Use a consistent endpoint convention for ties and record it. Do not apply an increasing cumulative distribution to all four questions: it reverses the meaning of the cheap curves. [Sawtooth's example](https://sawtoothsoftware.com/resources/blog/posts/van-westendorp-pricing-sensitivity-meter) illustrates the too-cheap share falling as price increases.
34
+ 3. Find the intersections:
25
35
  - **Point of Marginal Cheapness (PMC):** "Too cheap" crosses "Expensive"
26
36
  - **Point of Marginal Expensiveness (PME):** "Too expensive" crosses "Cheap"
27
37
  - **Optimal Price Point (OPP):** "Too cheap" crosses "Too expensive"
@@ -1,5 +1,10 @@
1
1
  # Changelog — luckiest-product-marketing
2
2
 
3
+ ## 1.2.0 — 2026-10-21
4
+ From coreyhaines31/marketingskills at 06d647e (issue #213, MIT).
5
+ - Voice attributes with means, doesn't mean, and a real line. New references/brand-voice.md.
6
+ - Paid Ads and Learnings sections in the context document, plus how to maintain Learnings. New brand-voice and learnings triggers.
7
+
3
8
  ## 1.1.0 — 2026-07-06
4
9
  Skill updater pass: analytics integration.
5
10
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: product-marketing
3
- description: "When the user wants to create or update their product marketing context document. Also use when the user mentions 'product context,' 'marketing context,' 'set up context,' 'positioning,' 'who is my target audience,' 'describe my product,' 'ICP,' 'ideal customer profile,' or wants to avoid repeating foundational information across marketing tasks. Use this at the start of any new project before using other marketing skills — it creates `.agents/product-marketing.md` that all other skills reference for product, audience, and positioning context."
3
+ description: "When the user wants to create or update their product marketing context document. Also use when the user mentions 'product context,' 'marketing context,' 'set up context,' 'positioning,' 'who is my target audience,' 'describe my product,' 'ICP,' 'ideal customer profile,' 'brand voice,' 'tone of voice,' 'brand guidelines,' 'what have we learned,' 'log this learning,' or wants to avoid repeating foundational information across marketing tasks. Use this at the start of any new project before using other marketing skills — it creates `.agents/product-marketing.md` that all other skills reference for product, audience, and positioning context."
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.1.0"
6
+ version: "1.2.0"
7
7
  listing_id: luckiest-product-marketing
8
8
  author: luckiest
9
9
  ---
@@ -16,9 +16,9 @@ The document is stored at `.agents/product-marketing.md`.
16
16
 
17
17
  ## Staying current
18
18
 
19
- On activation, call the Luckiest MCP check_updates tool with { listingId: "edad1356-acde-4086-be9e-9d96fcd8eb5a", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
19
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "edad1356-acde-4086-be9e-9d96fcd8eb5a", installedSemver: "1.2.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
20
20
 
21
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-product-marketing", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
21
+ When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-product-marketing", skill_version: "1.2.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
22
22
 
23
23
  ## Workflow
24
24
 
@@ -120,9 +120,11 @@ The JTBD Four Forces:
120
120
  - Glossary of product-specific terms
121
121
 
122
122
  ### 10. Brand Voice
123
- - Tone (professional, casual, playful, etc.)
124
- - Communication style (direct, conversational, technical)
125
- - Brand personality (3-5 adjectives)
123
+ - 3-5 voice attributes, each with what it means, what it doesn't mean, and a real line from existing copy
124
+ - Tone by context: how the voice shifts for support, launches, errors, sales, and social
125
+ - Brand words: terms you own, words you never use (with the reason)
126
+
127
+ Build this from copy that already performed and from the founder's own writing, rather than from adjectives picked in a meeting. See [references/brand-voice.md](references/brand-voice.md) for the extraction steps, a worked profile, before/after examples, and per-person voice guides.
126
128
 
127
129
  ### 11. Proof Points
128
130
  - Key metrics or results to cite
@@ -135,6 +137,17 @@ The JTBD Four Forces:
135
137
  - Key conversion action (what you want people to do)
136
138
  - Current metrics (if known)
137
139
 
140
+ ### 13. Paid Ads (optional, only if they run ads)
141
+ The **luckiest-ads** skill reads this so the user doesn't re-explain the account every session.
142
+ - Margin reality: the target CPA or ROAS that keeps the business profitable, and the hard floor (the ROAS below which, or CPA above which, to flag immediately)
143
+ - Budget and pacing: monthly budget and acceptable daily variance
144
+ - Conversion truth: which conversion actions count and what each is worth, known tracking weaknesses (lag, double counting, offline gaps), and what separates a good lead from a form fill
145
+ - Campaign naming convention and what each campaign is for, one line each
146
+ - What the agent may do (read, compare, flag, draft, recommend) and may not do without approval (change budgets or bids, pause or launch, edit tracking, publish ads)
147
+
148
+ ### 14. Learnings
149
+ Start this empty. It fills up as work ships (see "Maintaining Learnings" below).
150
+
138
151
  ---
139
152
 
140
153
  ## Step 3: Create the Document
@@ -212,9 +225,18 @@ After gathering information, create `.agents/product-marketing.md` with this str
212
225
  | | |
213
226
 
214
227
  ## Brand Voice
215
- **Tone:**
216
- **Style:**
217
- **Personality:**
228
+ | Attribute | Means | Doesn't mean | Example line |
229
+ |-----------|-------|--------------|--------------|
230
+ | | | | |
231
+
232
+ **Tone by context:**
233
+ - Support:
234
+ - Launch:
235
+ - Errors:
236
+ - Sales:
237
+ - Social:
238
+ **Terms we own:**
239
+ **Never use (and why):**
218
240
 
219
241
  ## Proof Points
220
242
  **Metrics:**
@@ -230,6 +252,26 @@ After gathering information, create `.agents/product-marketing.md` with this str
230
252
  **Business goal:**
231
253
  **Conversion action:**
232
254
  **Current metrics:**
255
+
256
+ ## Paid Ads (optional)
257
+ **Target CPA / ROAS:**
258
+ **Hard floor:**
259
+ **Monthly budget and daily variance:**
260
+ **Conversions that count:**
261
+ | Action | Means | Value | Feeds bidding? |
262
+ |--------|-------|-------|----------------|
263
+ | | | | |
264
+ **Known tracking weaknesses:**
265
+ **Good lead vs. form fill:**
266
+ **Campaigns:** [name] — [what it's for]
267
+ **Agent may:** read, compare, flag, draft, recommend
268
+ **Agent may not (without approval):** change budgets or bids, pause or launch, edit tracking, publish ads
269
+
270
+ ## Learnings
271
+ *Decisions and tested lessons. Newest first. Keep it to about 20 active entries.*
272
+ | Date | Learning | Evidence | Applies to | Status |
273
+ |------|----------|----------|------------|--------|
274
+ | | | | | |
233
275
  ```
234
276
 
235
277
  ---
@@ -247,10 +289,33 @@ After the document is saved, offer (never auto-post, never send credentials): "W
247
289
 
248
290
  ---
249
291
 
292
+ ## Maintaining Learnings
293
+
294
+ **Learnings** records what the team found out by shipping: which angles won, which offers flopped, which decisions were made and why. Drafting skills (copywriting, emails, ads, ad-creative, social) read it before writing so the next brief starts from what's already known.
295
+
296
+ **Entry format:** one row per learning.
297
+ - **Learning:** one sentence, specific enough to change a draft. "Price-anchored headlines beat outcome headlines on the pricing page" works. "Be clearer" doesn't.
298
+ - **Evidence:** the test, campaign, or source, with the number and sample size. "Variant B +18% trial starts, 2,400 visitors per arm, 3 weeks."
299
+ - **Applies to:** the channels, segments, or skills it affects.
300
+ - **Status:** `active`, `watch` (one data point, worth retesting), or `retired`.
301
+
302
+ **What earns a place:**
303
+ - A test result that reached its planned sample, or the same pattern seen in two or more campaigns
304
+ - A decision the user made with a reason (positioning, pricing, a channel cut) that future drafts must respect
305
+ - A correction the user gave more than once ("never call it a platform")
306
+
307
+ **What doesn't:** single-run anecdotes (log those as `watch` or leave them out), task notes, and anything that belongs in another section. A new objection goes in Objections; a new customer phrase goes in Customer Language.
308
+
309
+ **When to retire an entry:** a later test contradicts it, the product or market changed underneath it (new pricing, new ICP), or it hasn't been relevant for two quarters. Change the status to `retired` and add a line saying why, rather than deleting it, so nobody re-tests a settled question. Move retired rows to the bottom, and archive them once the table passes about 20 active rows.
310
+
311
+ **Who writes it:** any skill that finishes a test, campaign, or postmortem may propose a row. Show the proposed row to the user and add it on approval.
312
+
313
+ ---
314
+
250
315
  ## Tips
251
316
 
252
317
  - **Be specific**: Ask "What's the #1 frustration that brings them to you?" not "What problem do they solve?"
253
318
  - **Capture exact words**: Customer language beats polished descriptions
254
319
  - **Ask for examples**: "Can you give me an example?" unlocks better answers
255
320
  - **Validate as you go**: Summarize each section and confirm before moving on
256
- - **Skip what doesn't apply**: Not every product needs all sections (e.g., Personas for B2C)
321
+ - **Skip what doesn't apply**: Not every product needs all sections (e.g., Personas for B2C, Paid Ads if they don't run ads)