luckiest-co 1.0.47 → 1.0.48

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 (264) 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 +5 -0
  5. package/skills/ab-testing/SKILL.md +12 -9
  6. package/skills/ab-testing/evals/evals.json +18 -7
  7. package/skills/ab-testing/references/sample-size-guide.md +2 -2
  8. package/skills/ads/CHANGELOG.md +5 -0
  9. package/skills/ads/SKILL.md +4 -4
  10. package/skills/ai-seo/CHANGELOG.md +7 -0
  11. package/skills/ai-seo/SKILL.md +27 -20
  12. package/skills/analytics/CHANGELOG.md +6 -0
  13. package/skills/analytics/SKILL.md +4 -3
  14. package/skills/analytics/evals/evals.json +27 -0
  15. package/skills/analytics/references/ga4-implementation.md +7 -3
  16. package/skills/analytics/references/gtm-implementation.md +8 -2
  17. package/skills/aso/CHANGELOG.md +5 -0
  18. package/skills/aso/SKILL.md +4 -4
  19. package/skills/aso/evals/evals.json +15 -2
  20. package/skills/aso/references/benchmarks.md +4 -2
  21. package/skills/aso/references/google-play-specs.md +5 -1
  22. package/skills/brainstorm/SKILL.md +59 -16
  23. package/skills/brainstorm/builder-check-prompt.md +23 -0
  24. package/skills/churn-prevention/CHANGELOG.md +5 -0
  25. package/skills/churn-prevention/SKILL.md +3 -3
  26. package/skills/churn-prevention/evals/evals.json +14 -0
  27. package/skills/churn-prevention/references/dunning-playbook.md +6 -1
  28. package/skills/coder-brainstorming/CHANGELOG.md +10 -0
  29. package/skills/coder-brainstorming/SKILL.md +62 -20
  30. package/skills/coder-brainstorming/builder-check-prompt.md +23 -0
  31. package/skills/coder-brainstorming/scripts/server.cjs +1 -1
  32. package/skills/coder-debugging/CHANGELOG.md +4 -0
  33. package/skills/coder-debugging/SKILL.md +5 -5
  34. package/skills/coder-requesting-code-review/CHANGELOG.md +4 -0
  35. package/skills/coder-requesting-code-review/SKILL.md +4 -4
  36. package/skills/coder-subagent-driven-development/CHANGELOG.md +4 -0
  37. package/skills/coder-subagent-driven-development/SKILL.md +3 -3
  38. package/skills/coder-subagent-driven-development/scripts/sdd-workspace +3 -1
  39. package/skills/cold-email/CHANGELOG.md +7 -0
  40. package/skills/cold-email/SKILL.md +27 -7
  41. package/skills/cold-email/evals/evals.json +30 -0
  42. package/skills/cold-email/references/benchmarks.md +15 -11
  43. package/skills/cold-email/references/deliverability.md +110 -0
  44. package/skills/cold-email/references/linkedin-outreach.md +91 -0
  45. package/skills/cold-email/references/multichannel-cadence.md +79 -0
  46. package/skills/cold-email/references/outbound-plays.md +88 -0
  47. package/skills/cold-email/references/personalization.md +11 -0
  48. package/skills/cold-email/references/reply-handling.md +65 -0
  49. package/skills/competitor-profiling/CHANGELOG.md +5 -0
  50. package/skills/competitor-profiling/SKILL.md +4 -4
  51. package/skills/content-strategy/CHANGELOG.md +5 -0
  52. package/skills/content-strategy/SKILL.md +5 -3
  53. package/skills/copy-editing/CHANGELOG.md +5 -0
  54. package/skills/copy-editing/SKILL.md +5 -5
  55. package/skills/copy-editing/references/content-refresh.md +33 -0
  56. package/skills/cro/CHANGELOG.md +5 -0
  57. package/skills/cro/SKILL.md +14 -3
  58. package/skills/cro/references/form.md +1 -1
  59. package/skills/directory-submissions/CHANGELOG.md +5 -0
  60. package/skills/directory-submissions/SKILL.md +13 -4
  61. package/skills/directory-submissions/evals/evals.json +15 -1
  62. package/skills/directory-submissions/references/directory-list.md +2 -4
  63. package/skills/emails/CHANGELOG.md +5 -0
  64. package/skills/emails/SKILL.md +14 -4
  65. package/skills/launch/CHANGELOG.md +7 -0
  66. package/skills/launch/SKILL.md +8 -4
  67. package/skills/launch/evals/evals.json +29 -0
  68. package/skills/launch/references/shipped-changes.md +84 -0
  69. package/skills/launch/references/site-launch-qa.md +55 -0
  70. package/skills/lead-magnets/CHANGELOG.md +5 -0
  71. package/skills/lead-magnets/SKILL.md +6 -4
  72. package/skills/lead-magnets/evals/evals.json +18 -0
  73. package/skills/lead-magnets/references/content-to-skill-corpus-design.md +89 -0
  74. package/skills/lead-magnets/references/content-to-skill-release.md +71 -0
  75. package/skills/lead-magnets/references/content-to-skill.md +108 -0
  76. package/skills/marketing-plan/CHANGELOG.md +5 -0
  77. package/skills/marketing-plan/SKILL.md +3 -3
  78. package/skills/marketing-plan/evals/evals.json +13 -0
  79. package/skills/marketing-plan/references/budget-planning.md +26 -17
  80. package/skills/pricing/CHANGELOG.md +5 -0
  81. package/skills/pricing/SKILL.md +4 -4
  82. package/skills/pricing/evals/evals.json +12 -0
  83. package/skills/pricing/references/research-methods.md +8 -4
  84. package/skills/programmatic-seo/CHANGELOG.md +5 -0
  85. package/skills/programmatic-seo/SKILL.md +8 -4
  86. package/skills/programmatic-seo/evals/evals.json +13 -0
  87. package/skills/programmatic-seo/references/implementation-platforms.md +37 -0
  88. package/skills/prospecting/CHANGELOG.md +7 -0
  89. package/skills/prospecting/SKILL.md +27 -13
  90. package/skills/prospecting/evals/evals.json +41 -0
  91. package/skills/prospecting/references/account-research.md +59 -0
  92. package/skills/prospecting/references/b2b-prospecting.md +1 -1
  93. package/skills/prospecting/references/compliance.md +44 -6
  94. package/skills/prospecting/references/data-sources.md +13 -15
  95. package/skills/prospecting/references/enrichment-playbook.md +61 -0
  96. package/skills/prospecting/references/saas-prospecting.md +1 -1
  97. package/skills/prospecting/references/signal-plays.md +99 -0
  98. package/skills/prospecting/references/sourcing-and-enrichment.md +89 -0
  99. package/skills/referrals/CHANGELOG.md +5 -0
  100. package/skills/referrals/SKILL.md +10 -4
  101. package/skills/referrals/evals/evals.json +99 -0
  102. package/skills/referrals/references/affiliate-operations.md +64 -0
  103. package/skills/referrals/references/affiliate-programs.md +2 -2
  104. package/skills/referrals/references/program-examples.md +14 -6
  105. package/skills/referrals/references/review-platform-rules.md +36 -0
  106. package/skills/referrals/references/review-program-operations.md +62 -0
  107. package/skills/referrals/references/review-programs.md +96 -0
  108. package/skills/revops/CHANGELOG.md +5 -0
  109. package/skills/revops/SKILL.md +10 -6
  110. package/skills/revops/evals/evals.json +13 -0
  111. package/skills/revops/references/automation-playbooks.md +1 -1
  112. package/skills/revops/references/inbound-routing.md +43 -0
  113. package/skills/revops/references/lifecycle-definitions.md +31 -0
  114. package/skills/sales-enablement/CHANGELOG.md +5 -0
  115. package/skills/sales-enablement/SKILL.md +6 -4
  116. package/skills/sales-enablement/evals/evals.json +14 -0
  117. package/skills/sales-enablement/references/cold-call-scripts.md +68 -0
  118. package/skills/schema/CHANGELOG.md +5 -0
  119. package/skills/schema/SKILL.md +20 -8
  120. package/skills/schema/evals/evals.json +40 -0
  121. package/skills/schema/references/schema-examples.md +9 -15
  122. package/skills/seo-audit/CHANGELOG.md +5 -0
  123. package/skills/seo-audit/SKILL.md +10 -16
  124. package/skills/seo-audit/evals/evals.json +68 -0
  125. package/skills/seo-audit/references/international-seo.md +9 -11
  126. package/skills/seo-audit/references/local-seo-pages-and-measurement.md +39 -0
  127. package/skills/seo-audit/references/local-seo-profile-and-citations.md +41 -0
  128. package/skills/seo-audit/references/local-seo.md +86 -0
  129. package/skills/seo-audit/references/rankings-push.md +62 -0
  130. package/skills/seo-audit/references/title-tags.md +89 -0
  131. package/skills/signup/CHANGELOG.md +5 -0
  132. package/skills/signup/SKILL.md +7 -3
  133. package/skills/site-architecture/CHANGELOG.md +5 -0
  134. package/skills/site-architecture/SKILL.md +5 -4
  135. package/skills/site-architecture/evals/evals.json +25 -0
  136. package/skills/site-architecture/references/platforms-and-migration.md +84 -0
  137. package/skills/social/CHANGELOG.md +5 -0
  138. package/skills/social/SKILL.md +4 -4
  139. package/skills/trends/.skillignore +3 -0
  140. package/skills/trends/CHANGELOG.md +20 -0
  141. package/skills/trends/SKILL.md +12 -8
  142. package/skills/trends/references/agent-mode.md +36 -0
  143. package/skills/trends/references/category-peers.md +38 -0
  144. package/skills/trends/references/comparison.md +227 -0
  145. package/skills/trends/references/competitors.md +29 -0
  146. package/skills/trends/references/discovery.md +90 -0
  147. package/skills/trends/references/engine-contract.md +111 -1889
  148. package/skills/trends/references/followups.md +112 -0
  149. package/skills/trends/references/grok-bot-x.md +55 -0
  150. package/skills/trends/references/hiring-signals.md +19 -0
  151. package/skills/trends/references/library-queue.md +33 -0
  152. package/skills/trends/references/recommendations.md +86 -0
  153. package/skills/trends/references/research-runbook.md +781 -0
  154. package/skills/trends/references/runtime.md +165 -0
  155. package/skills/trends/references/save-html-brief.md +39 -20
  156. package/skills/trends/references/setup-wizard.md +253 -0
  157. package/skills/trends/references/synthesis.md +289 -0
  158. package/skills/trends/scripts/box_chrome_login.py +209 -0
  159. package/skills/trends/scripts/briefing.py +9 -17
  160. package/skills/trends/scripts/last30days.py +3247 -280
  161. package/skills/trends/scripts/lib/agentcookie.py +196 -0
  162. package/skills/trends/scripts/lib/amazon.py +877 -0
  163. package/skills/trends/scripts/lib/arxiv.py +42 -8
  164. package/skills/trends/scripts/lib/backends.py +769 -0
  165. package/skills/trends/scripts/lib/bird_x.py +340 -57
  166. package/skills/trends/scripts/lib/bluesky.py +84 -10
  167. package/skills/trends/scripts/lib/bounded_get.py +156 -0
  168. package/skills/trends/scripts/lib/brightdata.py +291 -0
  169. package/skills/trends/scripts/lib/categories.py +7 -1
  170. package/skills/trends/scripts/lib/chrome_cdp.py +455 -0
  171. package/skills/trends/scripts/lib/chrome_cookies.py +132 -39
  172. package/skills/trends/scripts/lib/cluster.py +31 -54
  173. package/skills/trends/scripts/lib/competitors.py +10 -1
  174. package/skills/trends/scripts/lib/cookie_extract.py +221 -44
  175. package/skills/trends/scripts/lib/cookie_paths.py +27 -0
  176. package/skills/trends/scripts/lib/corpus.py +439 -0
  177. package/skills/trends/scripts/lib/devto.py +313 -0
  178. package/skills/trends/scripts/lib/discovery_handoff.py +988 -0
  179. package/skills/trends/scripts/lib/doctor.py +2166 -0
  180. package/skills/trends/scripts/lib/dripstack.py +203 -0
  181. package/skills/trends/scripts/lib/entity_extract.py +37 -0
  182. package/skills/trends/scripts/lib/env.py +1092 -138
  183. package/skills/trends/scripts/lib/fanout.py +11 -1
  184. package/skills/trends/scripts/lib/feed.py +61 -0
  185. package/skills/trends/scripts/lib/fetch_memo.py +135 -0
  186. package/skills/trends/scripts/lib/freshness.py +566 -0
  187. package/skills/trends/scripts/lib/fusion.py +314 -28
  188. package/skills/trends/scripts/lib/github.py +438 -24
  189. package/skills/trends/scripts/lib/grok_x.py +1237 -0
  190. package/skills/trends/scripts/lib/grounding.py +129 -11
  191. package/skills/trends/scripts/lib/hackernews.py +61 -4
  192. package/skills/trends/scripts/lib/health.py +373 -0
  193. package/skills/trends/scripts/lib/hosted.py +333 -0
  194. package/skills/trends/scripts/lib/html_publish.py +34 -0
  195. package/skills/trends/scripts/lib/html_render.py +169 -3
  196. package/skills/trends/scripts/lib/http.py +1215 -70
  197. package/skills/trends/scripts/lib/instagram.py +132 -9
  198. package/skills/trends/scripts/lib/jobs.py +4 -2
  199. package/skills/trends/scripts/lib/library.py +308 -0
  200. package/skills/trends/scripts/lib/library_index.py +477 -0
  201. package/skills/trends/scripts/lib/linkedin.py +271 -24
  202. package/skills/trends/scripts/lib/log.py +5 -2
  203. package/skills/trends/scripts/lib/meta_ads.py +982 -0
  204. package/skills/trends/scripts/lib/normalize.py +382 -28
  205. package/skills/trends/scripts/lib/parallel_mcp.py +234 -0
  206. package/skills/trends/scripts/lib/permission_preflight.py +42 -3
  207. package/skills/trends/scripts/lib/perplexity.py +1080 -468
  208. package/skills/trends/scripts/lib/pipeline.py +5079 -211
  209. package/skills/trends/scripts/lib/planner.py +396 -53
  210. package/skills/trends/scripts/lib/polymarket.py +285 -23
  211. package/skills/trends/scripts/lib/prescriptions.py +432 -0
  212. package/skills/trends/scripts/lib/private_files.py +21 -0
  213. package/skills/trends/scripts/lib/providers.py +231 -10
  214. package/skills/trends/scripts/lib/quality_nudge.py +122 -37
  215. package/skills/trends/scripts/lib/reddit.py +177 -12
  216. package/skills/trends/scripts/lib/reddit_arctic.py +146 -5
  217. package/skills/trends/scripts/lib/reddit_keyless.py +121 -60
  218. package/skills/trends/scripts/lib/reddit_listing.py +215 -14
  219. package/skills/trends/scripts/lib/reddit_public.py +12 -13
  220. package/skills/trends/scripts/lib/reddit_search.py +304 -0
  221. package/skills/trends/scripts/lib/reddit_shreddit.py +51 -7
  222. package/skills/trends/scripts/lib/registers.py +134 -0
  223. package/skills/trends/scripts/lib/relevance.py +17 -0
  224. package/skills/trends/scripts/lib/render.py +2161 -271
  225. package/skills/trends/scripts/lib/rerank.py +623 -55
  226. package/skills/trends/scripts/lib/resolve.py +50 -1
  227. package/skills/trends/scripts/lib/safari_cookies.py +42 -15
  228. package/skills/trends/scripts/lib/schema.py +782 -1
  229. package/skills/trends/scripts/lib/setup_wizard.py +779 -120
  230. package/skills/trends/scripts/lib/signals.py +206 -7
  231. package/skills/trends/scripts/lib/stocktwits.py +374 -0
  232. package/skills/trends/scripts/lib/subproc.py +307 -53
  233. package/skills/trends/scripts/lib/techmeme.py +89 -64
  234. package/skills/trends/scripts/lib/telegram.py +317 -0
  235. package/skills/trends/scripts/lib/tiktok.py +13 -9
  236. package/skills/trends/scripts/lib/topic_shape.py +340 -0
  237. package/skills/trends/scripts/lib/transcribe.py +12 -3
  238. package/skills/trends/scripts/lib/trustpilot.py +256 -5
  239. package/skills/trends/scripts/lib/truthsocial.py +9 -1
  240. package/skills/trends/scripts/lib/ui.py +6 -0
  241. package/skills/trends/scripts/lib/usage.py +132 -0
  242. package/skills/trends/scripts/lib/web_search_keyless.py +63 -4
  243. package/skills/trends/scripts/lib/windows_job.py +138 -0
  244. package/skills/trends/scripts/lib/x_api.py +824 -0
  245. package/skills/trends/scripts/lib/x_envelope.py +733 -0
  246. package/skills/trends/scripts/lib/x_judge.py +292 -0
  247. package/skills/trends/scripts/lib/xai_x.py +26 -3
  248. package/skills/trends/scripts/lib/xquik.py +89 -15
  249. package/skills/trends/scripts/lib/xurl_x.py +284 -91
  250. package/skills/trends/scripts/lib/youtube_yt.py +570 -119
  251. package/skills/trends/scripts/setup-keychain.sh +12 -4
  252. package/skills/trends/scripts/setup-pass.sh +3 -0
  253. package/skills/trends/scripts/store.py +444 -50
  254. package/skills/trends/scripts/watchlist.py +38 -11
  255. package/skills/trends/scripts/x_lane_parity.py +107 -0
  256. package/skills/video-studio/CHANGELOG.md +4 -0
  257. package/skills/video-studio/SKILL.md +4 -4
  258. package/skills/video-studio/references/styles/product-flight.md +45 -0
  259. package/skills/video-studio/references/styles.md +3 -1
  260. package/skills/video-studio-motion/ATTRIBUTION.md +1 -1
  261. package/skills/video-studio-motion/CHANGELOG.md +4 -0
  262. package/skills/video-studio-motion/SKILL.md +8 -5
  263. package/skills/coder-brainstorming/spec-document-reviewer-prompt.md +0 -49
  264. package/skills/trends/scripts/lib/reddit_rss.py +0 -224
@@ -1,5 +1,10 @@
1
1
  # Changelog — luckiest-competitor-profiling
2
2
 
3
+ ## 1.2.1 — 2026-10-16
4
+ From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
+
6
+ - Description points account research at luckiest-prospecting.
7
+
3
8
  ## 1.2.0 — 2026-10-08
4
9
  Upstream sync with coreyhaines31/marketingskills dda3841 (issue #112).
5
10
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: competitor-profiling
3
- description: Researches, profiles, and analyzes competitors from their URLs, producing structured competitor-profile markdown built from live site scraping plus SEO and market data. Use when the user wants to research or profile competitors, or mentions "competitor profile," "competitor research," "competitor analysis," "profile this competitor," "analyze competitor," "competitive intelligence," "competitor deep dive," "who are my competitors," "competitor landscape," "competitor dossier," "competitive audit," or "research these competitors." Input is a list of competitor URLs; output is structured competitor-profile markdown files. For creating comparison/alternative pages from profiles, see luckiest-competitors. For sales-specific battle cards, see luckiest-sales-enablement.
3
+ description: Researches, profiles, and analyzes competitors from their URLs, producing structured competitor-profile markdown built from live site scraping plus SEO and market data. Use when the user wants to research or profile competitors, or mentions "competitor profile," "competitor research," "competitor analysis," "profile this competitor," "analyze competitor," "competitive intelligence," "competitor deep dive," "who are my competitors," "competitor landscape," "competitor dossier," "competitive audit," or "research these competitors." Input is a list of competitor URLs; output is structured competitor-profile markdown files. For creating comparison/alternative pages from profiles, see luckiest-competitors. For sales-specific battle cards, see luckiest-sales-enablement. For researching accounts you are selling to, see luckiest-prospecting.
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.2.0"
6
+ version: "1.2.1"
7
7
  listing_id: luckiest-competitor-profiling
8
8
  author: luckiest
9
9
  ---
@@ -14,9 +14,9 @@ The assistant acts as an expert competitive intelligence analyst. The goal is to
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "ba5cb7e6-afc1-4035-a3d4-ce5b4229535f", 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: "ba5cb7e6-afc1-4035-a3d4-ce5b4229535f", 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.
18
18
 
19
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-competitor-profiling", 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-competitor-profiling", 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.
20
20
 
21
21
  ## Initial Assessment
22
22
 
@@ -1,5 +1,10 @@
1
1
  # Changelog — luckiest-content-strategy
2
2
 
3
+ ## 1.1.1 — 2026-10-16
4
+ From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
+
6
+ - Information-gain gate: write one sentence on what a searchable piece adds that the current top results lack, or don't write it.
7
+
3
8
  ## 1.1.0 — 2026-07-06
4
9
  Skill updater pass: analytics integration.
5
10
 
@@ -3,7 +3,7 @@ name: content-strategy
3
3
  description: Plans what content to create — content pillars, topic clusters, buyer-stage keyword mapping, and prioritization — so a brand builds traffic, authority, and leads through searchable and shareable content. Use when the user wants to plan a content strategy, decide what to create, audit and refresh an existing library, or figure out what topics to cover. Also use when the user mentions "content strategy," "what should I write about," "content ideas," "blog strategy," "topic clusters," "content planning," "editorial calendar," "content marketing," "content roadmap," "what content should I create," "blog topics," "content pillars," "content audit," "our content feels random," or "I don't know what to write." Use this whenever someone needs help deciding what content to produce, not just writing it. For writing individual pieces, see luckiest-copywriting. For SEO-specific audits, see luckiest-seo-audit.
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.1.0"
6
+ version: "1.1.1"
7
7
  listing_id: luckiest-content-strategy
8
8
  author: luckiest
9
9
  ---
@@ -14,9 +14,9 @@ The agent acts as a content strategist. The goal is to plan content that drives
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "72a19125-282a-4954-b958-4d71934ce77f", 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: "72a19125-282a-4954-b958-4d71934ce77f", 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-content-strategy", 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-content-strategy", 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 Planning
22
22
 
@@ -73,6 +73,8 @@ Every piece of content must be searchable, shareable, or both. Prioritize in tha
73
73
 
74
74
  ### When Writing Searchable Content
75
75
 
76
+ **The information-gain gate:** before committing to a searchable piece, read the current top results for its query and write one sentence on what yours will add that none of them have: original data, a real product example, a working tool or template, a clearer answer, a stronger opinion. If you can't write that sentence, don't write the piece. It will be the eleventh copy of the same article, and neither Google nor AI assistants have a reason to prefer it.
77
+
76
78
  - Target a specific keyword or question
77
79
  - Match search intent exactly — answer what the searcher wants
78
80
  - Use clear titles that match search queries
@@ -1,5 +1,10 @@
1
1
  # Changelog — luckiest-copy-editing
2
2
 
3
+ ## 1.2.1 — 2026-10-16
4
+ From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
+
6
+ - Content refresh starts with a SERP gap grid (expected, common, distinctive, uncovered) and keeps the URL, anchors and voice.
7
+
3
8
  ## 1.2.0 — 2026-10-08
4
9
  Upstream sync with coreyhaines31/marketingskills dda3841 (issue #112).
5
10
 
@@ -3,7 +3,7 @@ name: copy-editing
3
3
  description: "When the user wants to edit, review, or improve existing marketing copy, or refresh outdated content. Also use when the user mentions 'edit this copy,' 'review my copy,' 'copy feedback,' 'proofread,' 'polish this,' 'make this better,' 'copy sweep,' 'tighten this up,' 'this reads awkwardly,' 'clean up this text,' 'too wordy,' 'sharpen the messaging,' 'refresh this content,' 'update this page,' 'this content is outdated,' or 'content audit,' 'this sounds like AI,' 'AI slop,' 'de-slop this,' or 'make it sound human.' Use this when the user already has copy and wants it improved or refreshed rather than rewritten from scratch. For writing new copy, see luckiest-copywriting."
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.2.0"
6
+ version: "1.2.1"
7
7
  listing_id: luckiest-copy-editing
8
8
  author: luckiest
9
9
  ---
@@ -14,9 +14,9 @@ This skill acts as an expert copy editor specializing in marketing and conversio
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "8f895dc3-9d85-4b40-9c80-2b1d396bc579", 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: "8f895dc3-9d85-4b40-9c80-2b1d396bc579", 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.
18
18
 
19
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-copy-editing", 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-copy-editing", 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.
20
20
 
21
21
  ## Core Philosophy
22
22
 
@@ -475,7 +475,7 @@ This iterative process ensures each edit doesn't create new problems while respe
475
475
  ## References
476
476
 
477
477
  - [Plain English Alternatives](references/plain-english-alternatives.md): Replace complex words with simpler alternatives
478
- - [Content Refresh](references/content-refresh.md): Full checklist, refresh vs. rewrite matrix, and cadence guide
478
+ - [Content Refresh](references/content-refresh.md): SERP gap analysis, full checklist, refresh vs. rewrite matrix, and cadence guide
479
479
  - [Copy Editing Checklist](references/checklist.md): Full QA checklist across all seven sweeps plus the AI-tell check
480
480
 
481
481
  ---
@@ -484,7 +484,7 @@ This iterative process ensures each edit doesn't create new problems while respe
484
484
 
485
485
  Copy editing isn't just for new content. Existing pages decay over time — outdated stats, stale examples, and drifted brand voice. Use the content refresh framework when traffic is declining, data is stale, or the product has changed.
486
486
 
487
- **For the full refresh checklist, refresh vs. rewrite decision matrix, and cadence guide**: See [references/content-refresh.md](references/content-refresh.md)
487
+ **For the SERP gap analysis, full refresh checklist, refresh vs. rewrite decision matrix, and cadence guide**: See [references/content-refresh.md](references/content-refresh.md)
488
488
 
489
489
  ---
490
490
 
@@ -19,6 +19,39 @@ Copy editing isn't just for new content. Existing pages and posts decay over tim
19
19
  5. **Proof pass** — Can you add newer testimonials, case studies, or data points that didn't exist when this was first published?
20
20
  6. **Structure pass** — Add comparison tables, FAQ sections, or other scannable formats that make the content easier to consume.
21
21
 
22
+ ## Before You Edit: Find the Gap
23
+
24
+ A refresh aimed at a ranking page should start from the results page. The first question to answer is why the pages above yours are winning.
25
+
26
+ 1. **Read the results page for the post's main query.** Note the dominant format (list, guide, tool, comparison), the featured snippet and how it's formatted, People Also Ask questions, and related searches.
27
+ 2. **Pick five competitors**: the top three results, plus any direct competitor or recently updated page ranking near you.
28
+ 3. **Map coverage.** List the subtopics each page covers in a simple grid, with your post as the first column:
29
+
30
+ | Subtopic / element | Your post | Comp 1 | Comp 2 | Comp 3 | Comp 4 | Comp 5 |
31
+ |--------------------|:---------:|:------:|:------:|:------:|:------:|:------:|
32
+ | [Subtopic A] | ✗ | ✓ | ✓ | ✓ | ✓ | — |
33
+ | Comparison table | ✗ | ✓ | — | ✓ | — | — |
34
+ | Current-year data | ✗ | ✓ | ✓ | — | ✓ | ✓ |
35
+
36
+ 4. **Rank what's missing** by how many competitors cover it:
37
+ - **Expected** (4–5 of 5): searchers assume it's there. Add it.
38
+ - **Common** (2–3): add it if it serves your reader.
39
+ - **Distinctive** (1): add it only if it's genuinely useful, not to copy one page.
40
+ - **Uncovered** (0): the angle nobody has. Your best chance to be the result worth citing.
41
+ 5. **Match coverage.** Ignore competitors' word counts. Close the gaps that matter, and stop when the reader's question is answered.
42
+
43
+ Present the gap grid and a proposed outline before rewriting. Mark each section **Keep**, **Revise**, or **New**, propose 2–3 title options (see the `luckiest-seo-audit` skill), and wait for approval. Don't promise a ranking or traffic outcome.
44
+
45
+ ## Keep What Already Works
46
+
47
+ A page that ranks has signals worth protecting:
48
+ - **Keep the URL.** If it must change, 301 the old one.
49
+ - **Keep heading anchors** other pages link to, and the sections that rank for their own queries (check Search Console's query list for the page).
50
+ - **Keep the voice.** A refresh shouldn't read like a different author wrote it.
51
+ - **Show the update**: a visible "Last updated" date, with the year next to every statistic.
52
+
53
+ When handing the refresh to whoever publishes it, include the new meta description, schema types to add, internal links to add to and from the post, images or screenshots needed, and the URL plan.
54
+
22
55
  ## Refresh vs. Rewrite
23
56
 
24
57
  | Signal | Action |
@@ -1,5 +1,10 @@
1
1
  # Changelog — luckiest-cro
2
2
 
3
+ ## 1.1.1 — 2026-10-16
4
+ From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
+
6
+ - Reference routing table (form, experiments); enrichment after a lead form points at luckiest-revops; enrichment tool list updated.
7
+
3
8
  ## 1.1.0 — 2026-07-06
4
9
  Skill updater pass: analytics integration.
5
10
 
@@ -3,7 +3,7 @@ name: cro
3
3
  description: "When the user wants to optimize, improve, or increase conversions on any marketing page or form — including homepage, landing pages, pricing pages, feature pages, lead capture forms, or contact forms. Also use when the user says 'CRO,' 'conversion rate optimization,' 'this page isn't converting,' 'improve conversions,' 'why isn't this page working,' 'my landing page sucks,' 'form abandonment,' 'nobody's converting,' 'low conversion rate,' or 'this page needs work.' Use this even if the user just shares a URL and asks for feedback. For signup/registration flows, see luckiest-signup. For post-signup activation, see luckiest-onboarding. For popups/modals, see luckiest-popups."
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.1.0"
6
+ version: "1.1.1"
7
7
  listing_id: luckiest-cro
8
8
  author: luckiest
9
9
  ---
@@ -14,9 +14,18 @@ This skill analyzes marketing pages and produces actionable recommendations to i
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "5273389c-5f29-4e4e-9068-03e7c3fe5f4c", 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: "5273389c-5f29-4e4e-9068-03e7c3fe5f4c", 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-cro", 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-cro", 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
+
21
+ ## Reference Routing
22
+
23
+ Load the matching reference before recommending changes in these areas. Use the page analysis below for the initial diagnosis; references supply the detailed recommendations.
24
+
25
+ | User intent | Load | Covers |
26
+ |---|---|---|
27
+ | Lead, contact, demo, or quote form abandonment; fields, validation, mobile forms | [form.md](references/form.md) | Field decisions, form layouts, errors, trust, measurement, and form-specific experiments |
28
+ | Experiment ideas for a homepage, pricing, demo, landing, feature, or resource page | [experiments.md](references/experiments.md) | Hypotheses organized by page type and cross-page tests; use **luckiest-ab-testing** for test design and measurement |
20
29
 
21
30
  ## Initial Assessment
22
31
 
@@ -206,6 +215,8 @@ When recommending experiments, consider tests for:
206
215
 
207
216
  ## Form Optimization
208
217
 
218
+ When enrichment controls the next step after a lead form, use the **luckiest-revops** skill for inbound routing: preserve valid submissions, bound the lookup wait, and provide a useful fallback when qualification is unknown.
219
+
209
220
  For detailed form CRO guidance — including field optimization, multi-step forms, error handling, and form-specific experiments — see [references/form.md](references/form.md).
210
221
 
211
222
  ---
@@ -78,7 +78,7 @@ For each field, ask:
78
78
 
79
79
  ### Company/Organization
80
80
  - Auto-suggest for faster entry
81
- - Enrichment after submission (Clearbit, etc.)
81
+ - Enrichment after submission (HubSpot Breeze, Clay, Apollo, etc.)
82
82
  - Consider inferring from email domain
83
83
 
84
84
  ### Job Title/Role
@@ -1,5 +1,10 @@
1
1
  # Changelog — luckiest-directory-submissions
2
2
 
3
+ ## 1.2.1 — 2026-10-16
4
+ From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
+
6
+ - Backlink check inspects the actual anchor's `href` and `rel` in HTML (not `curl -I` headers); records unqualified, missing or unverified. One updated eval.
7
+
3
8
  ## 1.2.0 — 2026-10-08
4
9
  Upstream sync with coreyhaines31/marketingskills dda3841 (issue #112).
5
10
 
@@ -3,7 +3,7 @@ name: directory-submissions
3
3
  description: When the user wants to submit their product to startup, SaaS, AI, agent, MCP, no-code, or review directories for backlinks, domain rating, and discovery. Also use when the user mentions "directory submissions," "submit to directories," "backlinks from directories," "list my product," "submit to Product Hunt," "BetaList," "TAAFT," "Futurepedia," "G2 listing," "Capterra listing," "AlternativeTo," "SaaSHub," "AI directories," "MCP registry," "publish my MCP server," "awesome list," "llms.txt directory," "Claude plugin directory," "agent directory," "dofollow backlinks," "launch directories," "directory tracker," "my listing got rejected," or "audit my backlink profile." Use this whenever someone is planning the directory layer of a product launch or an ongoing backlink campaign. For the broader launch moment, see luckiest-launch. For programmatic SEO pages that should live behind these backlinks, see luckiest-programmatic-seo. For AI citation optimization, see luckiest-ai-seo.
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.2.0"
6
+ version: "1.2.1"
7
7
  listing_id: luckiest-directory-submissions
8
8
  author: luckiest
9
9
  ---
@@ -14,9 +14,9 @@ This skill makes the agent an expert in directory-driven distribution for softwa
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "f3e67fc6-3ebe-4f90-b7dc-785a29f83d12", 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: "f3e67fc6-3ebe-4f90-b7dc-785a29f83d12", 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.
18
18
 
19
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-directory-submissions", 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-directory-submissions", 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.
20
20
 
21
21
  ## Before Starting
22
22
 
@@ -146,7 +146,16 @@ Per submission:
146
146
  3. Upload assets.
147
147
  4. Submit.
148
148
  5. Log: date, URL, status, moderator notes.
149
- 6. Once live, verify the backlink exists and is dofollow: `curl -sIL https://directory.com/your-listing | grep -i rel=`. If absent, the link is dofollow.
149
+ 6. Once live, inspect the actual link to your product using the procedure below; an empty HTTP-header search does not verify a backlink.
150
+
151
+ ### Verify the Actual Backlink
152
+
153
+ Fetch the listing's HTML with `curl -fsSL https://directory.com/your-listing`, or inspect its rendered DOM in a browser. `curl -I` requests headers; it cannot inspect an anchor's `href` or `rel` attributes.
154
+
155
+ 1. Locate the specific `<a>` that links to your product. Check the destination, including redirects; don't classify an unrelated navigation link or a canonical tag.
156
+ 2. Record its actual `rel` tokens, such as `nofollow`, `sponsored`, or `ugc`. For an inspected anchor without those qualifiers, record **unqualified link observed**. There is no `dofollow` attribute to look for, and this is not a guarantee of indexing, ranking credit, or referral traffic. See [Google's link-qualification guidance](https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links).
157
+ 3. If the destination anchor is absent from downloaded HTML, check whether the page renders it with JavaScript. If the page is blocked, requires login, or cannot be inspected, record **unverified**; if inspection confirms no destination link, record **missing**. Neither outcome proves an unqualified backlink.
158
+ 4. Save the listing URL, checked destination, observed attributes, timestamp, and any access limitation in the tracker notes. Recheck after a directory changes its template or submission tier.
150
159
 
151
160
  ### Step 4b: Dedup against the existing backlink profile first
152
161
 
@@ -78,7 +78,7 @@
78
78
  {
79
79
  "id": 6,
80
80
  "prompt": "We submitted to 50 directories last week. Now what?",
81
- "expected_output": "Should warn against treating submissions as the strategy. Should reference 'What NOT to Do' rule 11: don't over-index on launch spike. Flywheel is templates + alternatives + reviews + ongoing content. Should recommend verifying the dofollow status of acquired backlinks (curl -sIL | grep -i rel=). Should pivot to ongoing distribution: destination pages strategy (alternative pages converting 5-15%, use-case/ICP pages, template gallery if applicable, 'best of' listicles you write yourself, integration pages), GEO tactics for AI citation (single H1, FAQ schema, comparison tables, get cited on Reddit/HN, claim Crunchbase/LinkedIn/Wikidata), community presence (Reddit 90/10 rule, LinkedIn 3-5 posts/week, Twitter build-in-public, Indie Hackers, Dev.to/Hashnode). Should remind to track weekly KPIs (DR, referring domains, indexed pages, organic clicks, signups from directory referrals) and investigate if numbers aren't moving rather than submitting more.",
81
+ "expected_output": "Should warn against treating submissions as the strategy. Should reference 'What NOT to Do' rule 11: don't over-index on launch spike. Flywheel is templates + alternatives + reviews + ongoing content. Should recommend checking the actual destination anchor in fetched HTML or the rendered DOM, recording its href and rel tokens; HEAD headers alone cannot verify a backlink. Should pivot to ongoing distribution: destination pages strategy (alternative pages converting 5-15%, use-case/ICP pages, template gallery if applicable, 'best of' listicles you write yourself, integration pages), GEO tactics for AI citation (single H1, FAQ schema, comparison tables, get cited on Reddit/HN, claim Crunchbase/LinkedIn/Wikidata), community presence (Reddit 90/10 rule, LinkedIn 3-5 posts/week, Twitter build-in-public, Indie Hackers, Dev.to/Hashnode). Should remind to track weekly KPIs (DR, referring domains, indexed pages, organic clicks, signups from directory referrals) and investigate if numbers aren't moving rather than submitting more.",
82
82
  "assertions": [
83
83
  "Warns against over-indexing on launch spike",
84
84
  "Recommends verifying dofollow status of backlinks",
@@ -89,6 +89,20 @@
89
89
  "Says investigate before submitting more"
90
90
  ],
91
91
  "files": []
92
+ },
93
+ {
94
+ "id": 8,
95
+ "prompt": "Our directory submission is live. curl -sIL on the listing returns 200 but grep rel= is empty. Can I mark the backlink dofollow? Another listing has only a canonical tag pointing at itself, and a third requires login.",
96
+ "expected_output": "Should explain that HEAD returns headers and cannot establish destination anchor attributes or even link existence. Inspect HTML or the rendered DOM for the actual product anchor and destination; distinguish canonical tags and unrelated links. Record nofollow/sponsored/ugc tokens when observed. Mark an inspected anchor without those qualifiers unqualified, without promising ranking credit. Missing anchor is missing only after inspection; blocked/login/JS content that cannot be inspected is unverified. Log evidence and timestamp.",
97
+ "assertions": [
98
+ "Does not classify an empty header grep as dofollow",
99
+ "Inspects the actual destination anchor href and rel",
100
+ "Distinguishes missing and unverified links from observed unqualified links",
101
+ "Does not confuse canonical tags with backlinks",
102
+ "Does not guarantee search-engine credit from an unqualified link",
103
+ "Records evidence and access limitations"
104
+ ],
105
+ "files": []
92
106
  }
93
107
  ]
94
108
  }
@@ -468,10 +468,8 @@ Industry-specific directories. Only submit if your product genuinely fits the ve
468
468
 
469
469
  ## Verification
470
470
 
471
- After any submission goes live, verify the backlink exists and is dofollow. You can:
471
+ After a submission goes live, follow [Verify the Actual Backlink](../SKILL.md#verify-the-actual-backlink). Inspect the product's destination anchor in fetched HTML or the rendered DOM and record its `href` and `rel` tokens, including `nofollow`, `sponsored`, and `ugc`. HTTP headers or a canonical tag do not establish a backlink. Record missing or inaccessible links separately from observed unqualified links; none guarantees ranking credit.
472
472
 
473
- 1. **Manual:** Open the listing, right-click your product link, "Inspect" → check for `rel="nofollow"` or `rel="ugc"`. If absent, the link is dofollow.
474
- 2. **curl:** `curl -sIL https://directory.com/your-listing | grep -i link`
475
- 3. **SEO tools:** Ahrefs Site Explorer → Backlinks → filter by this directory's domain.
473
+ Catalog descriptions and tracker defaults are planning assumptions, not evidence for your particular listing. An SEO tool's backlink report can help find a listing, but verify the current anchor and timestamp the observation before reporting its link type.
476
474
 
477
475
  **Re-verify quarterly.** Directories sometimes change all outbound links to nofollow without warning — if DR stops moving, check whether your biggest inbound links have silently flipped.
@@ -1,5 +1,10 @@
1
1
  # Changelog — luckiest-emails
2
2
 
3
+ ## 1.2.1 — 2026-10-16
4
+ From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
+
6
+ - Reference routing table (sequence templates, email types, copy guidelines); description points outbound sequences at luckiest-cold-email.
7
+
3
8
  ## 1.2.0 — 2026-10-08
4
9
  Upstream sync with coreyhaines31/marketingskills dda3841 (issue #112).
5
10
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: emails
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 emails, see luckiest-cold-email. For in-app onboarding, see luckiest-onboarding.
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.0"
6
+ version: "1.2.1"
7
7
  listing_id: luckiest-emails
8
8
  author: luckiest
9
9
  ---
@@ -16,9 +16,19 @@ 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.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: "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.
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.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-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.
22
+
23
+ ## Reference Routing
24
+
25
+ Load the matching reference before drafting or auditing the relevant part of a sequence. Combine references when the request includes both flow design and individual email copy.
26
+
27
+ | User intent | Load | Covers |
28
+ |---|---|---|
29
+ | Build a welcome, lead nurture, re-engagement, or product onboarding flow | [sequence-templates.md](references/sequence-templates.md) | Sequence goals, timing, email order, and conversion actions |
30
+ | Identify missing lifecycle emails or audit onboarding, retention, billing, usage, win-back, or campaigns | [email-types.md](references/email-types.md) | Email purposes, triggers, audiences, and the lifecycle audit checklist |
31
+ | Write or edit individual emails within a sequence; improve CTA, personalization, or segmentation | [copy-guidelines.md](references/copy-guidelines.md) | Structure, tone, length, merge fields, dynamic content, and copy testing |
22
32
 
23
33
  ## Initial Assessment
24
34
 
@@ -1,5 +1,12 @@
1
1
  # Changelog — luckiest-launch
2
2
 
3
+ ## 1.2.0 — 2026-10-16
4
+ From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
5
+
6
+ - New references: shipped-changes (turn merged work into changelog and announcement copy) and site-launch-qa (pre-launch QA for new sites, redesigns, migrations), linked from the checklist.
7
+ - New triggers: site launch, go live, pre-launch QA, changelog, release notes.
8
+ - Fixed the update check reporting 1.1.0.
9
+
3
10
  ## 1.1.1 — 2026-10-03
4
11
  - Points at `luckiest-video-studio-composition` (when installed) for focal point, grid, white space, and safe areas.
5
12
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: launch
3
- description: "When the user wants to plan a product launch, feature announcement, or release strategy. Also use when the user mentions 'launch,' 'Product Hunt,' 'feature release,' 'announcement,' 'go-to-market,' 'beta launch,' 'early access,' 'waitlist,' 'product update,' 'how do I launch this,' 'launch checklist,' 'GTM plan,' or 'we're about to ship.' Use this whenever someone is preparing to release something publicly. For ongoing marketing after launch, see luckiest-marketing-ideas. For the offer being launched (bonuses, guarantees, scarcity, naming), see luckiest-offers."
3
+ description: "When the user wants to plan a product launch, feature announcement, or release strategy. Also use when the user mentions 'launch,' 'Product Hunt,' 'feature release,' 'announcement,' 'go-to-market,' 'beta launch,' 'early access,' 'waitlist,' 'product update,' 'how do I launch this,' 'site launch,' 'go live,' 'pre-launch QA,' 'launch checklist,' 'GTM plan,' 'we're about to ship,' 'changelog,' 'release notes,' or 'what did we ship this week.' Use this whenever someone is preparing to release something publicly. For ongoing marketing after launch, see luckiest-marketing-ideas. For the offer being launched (bonuses, guarantees, scarcity, naming), see luckiest-offers."
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.1.1"
6
+ version: "1.2.0"
7
7
  listing_id: luckiest-launch
8
8
  author: luckiest
9
9
  ---
@@ -14,9 +14,9 @@ This skill helps the user plan SaaS product launches and feature announcements t
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "b65cba33-d644-4eda-b14b-aea9b19f203e", 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: "b65cba33-d644-4eda-b14b-aea9b19f203e", 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.
18
18
 
19
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-launch", 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-launch", 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.
20
20
 
21
21
  ## Before Starting
22
22
 
@@ -320,6 +320,9 @@ Continue using email, social, and in-app messaging to highlight improvements.
320
320
  **Signal active development:**
321
321
  Even small changelog updates remind customers the product is evolving. This builds retention and word-of-mouth—customers feel confident the company will be around.
322
322
 
323
+ **Turn shipped code into announcements:**
324
+ If you can read the product repo, generate the week's changelog, announcement drafts, and pages-to-update list straight from merged PRs. See [references/shipped-changes.md](references/shipped-changes.md).
325
+
323
326
  ---
324
327
 
325
328
  ## Launch Checklist
@@ -335,6 +338,7 @@ Even small changelog updates remind customers the product is evolving. This buil
335
338
  - [ ] Launch assets created (screenshots, demo video, GIFs). For framing, if `luckiest-video-studio-composition` is installed, read it to place the focal point, pick the grid, and keep white space and platform safe areas
336
339
  - [ ] Onboarding flow ready
337
340
  - [ ] Analytics/tracking in place
341
+ - [ ] Site QA done if the launch includes a new site, redesign, or migration (see [references/site-launch-qa.md](references/site-launch-qa.md))
338
342
  - [ ] Pre-mortem run: top failure modes identified and mitigated
339
343
 
340
344
  ### Launch Day
@@ -86,6 +86,35 @@
86
86
  "May provide some launch-related tactical ideas"
87
87
  ],
88
88
  "files": []
89
+ },
90
+ {
91
+ "id": 8,
92
+ "prompt": "Our redesigned marketing site goes live Thursday on a new platform. What should we check before and after we flip the switch?",
93
+ "expected_output": "Should load the site launch QA reference and give a before/at/after checklist: forms reach their destinations and conversion tracking fires on confirmed submission; unique titles, canonicals to production, staging noindex not shipped to production, robots and sitemap; redirect map loaded for changed URLs; mobile, Safari and in-app browser checks; Core Web Vitals; a known, practiced rollback for their platform; at switch, HTTPS on all hostnames, top pages return 200, real form test, sitemap submitted; after, daily Search Console 404 checks and page-level traffic comparison.",
94
+ "assertions": [
95
+ "Checks forms and conversion tracking on confirmed submission",
96
+ "Warns about shipping the staging noindex",
97
+ "Includes the redirect map for changed URLs",
98
+ "Includes a practiced rollback plan",
99
+ "Includes post-launch Search Console monitoring"
100
+ ],
101
+ "files": []
102
+ },
103
+ {
104
+ "id": 9,
105
+ "prompt": "You have access to our product repo. Can you look at what we merged this week and turn it into a changelog entry and some announcement drafts?",
106
+ "expected_output": "Should load the shipped-changes reference. Should read merged PRs (and the commit log for anything without a PR) for the week, exclude anything behind a feature flag or not deployed, and drop invisible changes like refactors, dependency bumps and CI. Should translate each visible change into a 'You can now...' line, tier it as major, medium or minor using the skill's announcement matrix, and produce a changelog entry using Keep a Changelog headings plus drafts matched to tier. Every claim should come from the change itself with no invented metrics or customer results. Should also list marketing pages the changes made wrong and new content opportunities, and stage all drafts for human review rather than publishing.",
107
+ "assertions": [
108
+ "Reads merged PRs and commits for the window",
109
+ "Excludes flagged, undeployed and invisible changes",
110
+ "Translates changes into customer-facing 'You can now' statements",
111
+ "Tiers changes and matches output to the tier",
112
+ "Uses Keep a Changelog headings",
113
+ "Does not invent metrics or customer outcomes",
114
+ "Flags existing pages the changes made inaccurate",
115
+ "Stages drafts for review instead of publishing"
116
+ ],
117
+ "files": []
89
118
  }
90
119
  ]
91
120
  }
@@ -0,0 +1,84 @@
1
+ # From Shipped Code to Marketing
2
+
3
+ Most product updates never get marketed because nobody translates them. The engineers wrote the PR description for each other, and by the time marketing hears about it, the moment has passed. An agent with access to the repo can close that gap every week: read what shipped, decide what's worth telling, and draft it in customer language.
4
+
5
+ ## Inputs
6
+
7
+ For the chosen window (usually the last week, or since the last release tag):
8
+ - **Merged PRs** with titles, descriptions, and linked issues. These explain *why* better than commits do.
9
+ - **Commit log** for anything merged without a PR: `git log --since="1 week ago" --no-merges --pretty=format:"%h %s (%an, %ar)"`
10
+ - **Changed files**, read wherever a title doesn't make the user-facing effect clear.
11
+ - **Release notes or tags**, if the team already writes them.
12
+ - **Feature flags**: what's actually live for customers versus merged behind a flag.
13
+
14
+ Only market what customers can use today. Anything behind a flag, in internal beta, or not yet deployed waits.
15
+
16
+ ## Translate before you write
17
+
18
+ Engineering changes are described by what changed in the code. Customers care about what changed for them. For each change, write one line: **"You can now ___"** or **"___ no longer ___."** If you can't fill that in, the change is invisible to customers. Refactors, dependency bumps, CI, and test changes go in no marketing output at all.
19
+
20
+ Then group the visible changes with the tiers in the Ongoing Launch Strategy section of `SKILL.md`:
21
+
22
+ | Tier | Typical changes | Output |
23
+ |------|-----------------|--------|
24
+ | **Major** | New capability, new plan, big workflow change | Changelog + blog post + email + social + in-app |
25
+ | **Medium** | New integration, notable UX improvement, performance gain customers can feel | Changelog + targeted email or in-app + one social post |
26
+ | **Minor** | Fixes, polish, small additions | Changelog only, batched |
27
+
28
+ Several medium changes that share a theme ("five improvements to reporting") can be bundled into one major-tier story.
29
+
30
+ ## Ground every claim in the change
31
+
32
+ - State what the change does, not what it might do for someone. "Exports now include custom fields," not "unlock deeper insights."
33
+ - Use numbers only if they come from the change itself (a benchmark in the PR, a measured speedup). Never invent customer results, adoption, or impact.
34
+ - If a PR says the change is partial ("phase 1," "first step toward"), the announcement says so too.
35
+ - Credit the user who asked for it, where the team does that and the user agreed.
36
+
37
+ ## Watch for marketing that just became wrong
38
+
39
+ Every shipped change can also make an existing claim false: a new limit, a renamed plan, a removed integration, a price change. Check the site, docs, comparison pages, and ads for statements the change contradicts. On a schedule, this is the claim-drift loop in `marketing-loops`.
40
+
41
+ New capabilities also open new search demand. A new integration can deserve its own page ("[Product] + [Tool] integration"), and a new feature can answer queries or comparisons the product couldn't win before. Add those to the content backlog (see `content-strategy` and `competitors`).
42
+
43
+ ## Weekly digest format
44
+
45
+ ```markdown
46
+ ## Shipped: [date range]
47
+
48
+ ### For customers
49
+ - **[Major]** [You can now ...] (PR #123)
50
+ - **[Medium]** [You can now ...] (PR #130)
51
+ - **[Minor]** [Fixed ...] (PR #131, #134)
52
+
53
+ ### Changelog entry
54
+ ## [version or date]
55
+ ### Added
56
+ - [Customer-facing description]
57
+ ### Changed
58
+ - [...]
59
+ ### Fixed
60
+ - [...]
61
+
62
+ ### Drafts
63
+ - Blog post: [working title], [angle], [who it's for]
64
+ - Email: [subject line options] → [segment]
65
+ - Social: [one post per major or medium change, built on its single most useful detail]
66
+ - In-app: [message + where it appears]
67
+
68
+ ### Pages to update
69
+ - [Page]: [statement that's now wrong or incomplete]
70
+
71
+ ### New content opportunities
72
+ - [Query or comparison the change makes winnable]
73
+ ```
74
+
75
+ Use Keep a Changelog headings (Added, Changed, Deprecated, Removed, Fixed, Security) so the changelog stays scannable over time.
76
+
77
+ ## Writing the drafts
78
+
79
+ - **Changelog:** one line per change, written for a customer and in past or present tense. Link docs for anything non-obvious.
80
+ - **Blog post (major only):** the problem the customer had, what changed, how to use it (with screenshots), and who it's for. The `luckiest-copywriting` skill covers structure; its AI-tell rules apply.
81
+ - **Email:** lead with the change for that segment; one call to action that takes them to the feature. See `emails`.
82
+ - **Social:** one concrete detail per post, with a screenshot or 10-second clip of the feature doing it. See `luckiest-social`.
83
+
84
+ Drafts are staged for a human to review and send. Nothing in this workflow publishes on its own.