luckiest-co 1.0.47 → 1.0.49
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/skills/ab-testing/CHANGELOG.md +5 -0
- package/skills/ab-testing/SKILL.md +12 -9
- package/skills/ab-testing/evals/evals.json +18 -7
- package/skills/ab-testing/references/sample-size-guide.md +2 -2
- package/skills/ads/CHANGELOG.md +5 -0
- package/skills/ads/SKILL.md +4 -4
- package/skills/ai-seo/CHANGELOG.md +7 -0
- package/skills/ai-seo/SKILL.md +27 -20
- package/skills/analytics/CHANGELOG.md +6 -0
- package/skills/analytics/SKILL.md +4 -3
- package/skills/analytics/evals/evals.json +27 -0
- package/skills/analytics/references/ga4-implementation.md +7 -3
- package/skills/analytics/references/gtm-implementation.md +8 -2
- package/skills/aso/CHANGELOG.md +5 -0
- package/skills/aso/SKILL.md +4 -4
- package/skills/aso/evals/evals.json +15 -2
- package/skills/aso/references/benchmarks.md +4 -2
- package/skills/aso/references/google-play-specs.md +5 -1
- package/skills/brainstorm/SKILL.md +59 -16
- package/skills/brainstorm/builder-check-prompt.md +23 -0
- package/skills/churn-prevention/CHANGELOG.md +5 -0
- package/skills/churn-prevention/SKILL.md +3 -3
- package/skills/churn-prevention/evals/evals.json +14 -0
- package/skills/churn-prevention/references/dunning-playbook.md +6 -1
- package/skills/coder-brainstorming/CHANGELOG.md +10 -0
- package/skills/coder-brainstorming/SKILL.md +62 -20
- package/skills/coder-brainstorming/builder-check-prompt.md +23 -0
- package/skills/coder-brainstorming/scripts/server.cjs +1 -1
- package/skills/coder-debugging/CHANGELOG.md +4 -0
- package/skills/coder-debugging/SKILL.md +5 -5
- package/skills/coder-requesting-code-review/CHANGELOG.md +4 -0
- package/skills/coder-requesting-code-review/SKILL.md +4 -4
- package/skills/coder-subagent-driven-development/CHANGELOG.md +4 -0
- package/skills/coder-subagent-driven-development/SKILL.md +3 -3
- package/skills/coder-subagent-driven-development/scripts/sdd-workspace +3 -1
- package/skills/cold-email/CHANGELOG.md +7 -0
- package/skills/cold-email/SKILL.md +27 -7
- package/skills/cold-email/evals/evals.json +30 -0
- package/skills/cold-email/references/benchmarks.md +15 -11
- package/skills/cold-email/references/deliverability.md +110 -0
- package/skills/cold-email/references/linkedin-outreach.md +91 -0
- package/skills/cold-email/references/multichannel-cadence.md +79 -0
- package/skills/cold-email/references/outbound-plays.md +88 -0
- package/skills/cold-email/references/personalization.md +11 -0
- package/skills/cold-email/references/reply-handling.md +65 -0
- package/skills/competitor-profiling/CHANGELOG.md +5 -0
- package/skills/competitor-profiling/SKILL.md +4 -4
- package/skills/content-strategy/CHANGELOG.md +5 -0
- package/skills/content-strategy/SKILL.md +5 -3
- package/skills/copy-editing/CHANGELOG.md +5 -0
- package/skills/copy-editing/SKILL.md +5 -5
- package/skills/copy-editing/references/content-refresh.md +33 -0
- package/skills/cro/CHANGELOG.md +5 -0
- package/skills/cro/SKILL.md +14 -3
- package/skills/cro/references/form.md +1 -1
- package/skills/directory-submissions/CHANGELOG.md +5 -0
- package/skills/directory-submissions/SKILL.md +13 -4
- package/skills/directory-submissions/evals/evals.json +15 -1
- package/skills/directory-submissions/references/directory-list.md +2 -4
- package/skills/emails/CHANGELOG.md +5 -0
- package/skills/emails/SKILL.md +14 -4
- package/skills/launch/CHANGELOG.md +7 -0
- package/skills/launch/SKILL.md +8 -4
- package/skills/launch/evals/evals.json +29 -0
- package/skills/launch/references/shipped-changes.md +84 -0
- package/skills/launch/references/site-launch-qa.md +55 -0
- package/skills/lead-magnets/CHANGELOG.md +5 -0
- package/skills/lead-magnets/SKILL.md +6 -4
- package/skills/lead-magnets/evals/evals.json +18 -0
- package/skills/lead-magnets/references/content-to-skill-corpus-design.md +89 -0
- package/skills/lead-magnets/references/content-to-skill-release.md +71 -0
- package/skills/lead-magnets/references/content-to-skill.md +108 -0
- package/skills/marketing-plan/CHANGELOG.md +5 -0
- package/skills/marketing-plan/SKILL.md +3 -3
- package/skills/marketing-plan/evals/evals.json +13 -0
- package/skills/marketing-plan/references/budget-planning.md +26 -17
- package/skills/model-router/CHANGELOG.md +6 -0
- package/skills/model-router/SKILL.md +3 -3
- package/skills/model-router/scripts/route.py +1 -1
- package/skills/model-router/scripts/test_route.py +5 -0
- package/skills/pricing/CHANGELOG.md +5 -0
- package/skills/pricing/SKILL.md +4 -4
- package/skills/pricing/evals/evals.json +12 -0
- package/skills/pricing/references/research-methods.md +8 -4
- package/skills/programmatic-seo/CHANGELOG.md +5 -0
- package/skills/programmatic-seo/SKILL.md +8 -4
- package/skills/programmatic-seo/evals/evals.json +13 -0
- package/skills/programmatic-seo/references/implementation-platforms.md +37 -0
- package/skills/prospecting/CHANGELOG.md +7 -0
- package/skills/prospecting/SKILL.md +27 -13
- package/skills/prospecting/evals/evals.json +41 -0
- package/skills/prospecting/references/account-research.md +59 -0
- package/skills/prospecting/references/b2b-prospecting.md +1 -1
- package/skills/prospecting/references/compliance.md +44 -6
- package/skills/prospecting/references/data-sources.md +13 -15
- package/skills/prospecting/references/enrichment-playbook.md +61 -0
- package/skills/prospecting/references/saas-prospecting.md +1 -1
- package/skills/prospecting/references/signal-plays.md +99 -0
- package/skills/prospecting/references/sourcing-and-enrichment.md +89 -0
- package/skills/referrals/CHANGELOG.md +5 -0
- package/skills/referrals/SKILL.md +10 -4
- package/skills/referrals/evals/evals.json +99 -0
- package/skills/referrals/references/affiliate-operations.md +64 -0
- package/skills/referrals/references/affiliate-programs.md +2 -2
- package/skills/referrals/references/program-examples.md +14 -6
- package/skills/referrals/references/review-platform-rules.md +36 -0
- package/skills/referrals/references/review-program-operations.md +62 -0
- package/skills/referrals/references/review-programs.md +96 -0
- package/skills/revops/CHANGELOG.md +5 -0
- package/skills/revops/SKILL.md +10 -6
- package/skills/revops/evals/evals.json +13 -0
- package/skills/revops/references/automation-playbooks.md +1 -1
- package/skills/revops/references/inbound-routing.md +43 -0
- package/skills/revops/references/lifecycle-definitions.md +31 -0
- package/skills/sales-enablement/CHANGELOG.md +5 -0
- package/skills/sales-enablement/SKILL.md +6 -4
- package/skills/sales-enablement/evals/evals.json +14 -0
- package/skills/sales-enablement/references/cold-call-scripts.md +68 -0
- package/skills/schema/CHANGELOG.md +5 -0
- package/skills/schema/SKILL.md +20 -8
- package/skills/schema/evals/evals.json +40 -0
- package/skills/schema/references/schema-examples.md +9 -15
- package/skills/seo-audit/CHANGELOG.md +5 -0
- package/skills/seo-audit/SKILL.md +10 -16
- package/skills/seo-audit/evals/evals.json +68 -0
- package/skills/seo-audit/references/international-seo.md +9 -11
- package/skills/seo-audit/references/local-seo-pages-and-measurement.md +39 -0
- package/skills/seo-audit/references/local-seo-profile-and-citations.md +41 -0
- package/skills/seo-audit/references/local-seo.md +86 -0
- package/skills/seo-audit/references/rankings-push.md +62 -0
- package/skills/seo-audit/references/title-tags.md +89 -0
- package/skills/signup/CHANGELOG.md +5 -0
- package/skills/signup/SKILL.md +7 -3
- package/skills/site-architecture/CHANGELOG.md +5 -0
- package/skills/site-architecture/SKILL.md +5 -4
- package/skills/site-architecture/evals/evals.json +25 -0
- package/skills/site-architecture/references/platforms-and-migration.md +84 -0
- package/skills/social/CHANGELOG.md +5 -0
- package/skills/social/SKILL.md +4 -4
- package/skills/trends/.skillignore +3 -0
- package/skills/trends/CHANGELOG.md +20 -0
- package/skills/trends/SKILL.md +12 -8
- package/skills/trends/references/agent-mode.md +36 -0
- package/skills/trends/references/category-peers.md +38 -0
- package/skills/trends/references/comparison.md +227 -0
- package/skills/trends/references/competitors.md +29 -0
- package/skills/trends/references/discovery.md +90 -0
- package/skills/trends/references/engine-contract.md +111 -1889
- package/skills/trends/references/followups.md +112 -0
- package/skills/trends/references/grok-bot-x.md +55 -0
- package/skills/trends/references/hiring-signals.md +19 -0
- package/skills/trends/references/library-queue.md +33 -0
- package/skills/trends/references/recommendations.md +86 -0
- package/skills/trends/references/research-runbook.md +781 -0
- package/skills/trends/references/runtime.md +165 -0
- package/skills/trends/references/save-html-brief.md +39 -20
- package/skills/trends/references/setup-wizard.md +253 -0
- package/skills/trends/references/synthesis.md +289 -0
- package/skills/trends/scripts/box_chrome_login.py +209 -0
- package/skills/trends/scripts/briefing.py +9 -17
- package/skills/trends/scripts/last30days.py +3247 -280
- package/skills/trends/scripts/lib/agentcookie.py +196 -0
- package/skills/trends/scripts/lib/amazon.py +877 -0
- package/skills/trends/scripts/lib/arxiv.py +42 -8
- package/skills/trends/scripts/lib/backends.py +769 -0
- package/skills/trends/scripts/lib/bird_x.py +340 -57
- package/skills/trends/scripts/lib/bluesky.py +84 -10
- package/skills/trends/scripts/lib/bounded_get.py +156 -0
- package/skills/trends/scripts/lib/brightdata.py +291 -0
- package/skills/trends/scripts/lib/categories.py +7 -1
- package/skills/trends/scripts/lib/chrome_cdp.py +455 -0
- package/skills/trends/scripts/lib/chrome_cookies.py +132 -39
- package/skills/trends/scripts/lib/cluster.py +31 -54
- package/skills/trends/scripts/lib/competitors.py +10 -1
- package/skills/trends/scripts/lib/cookie_extract.py +221 -44
- package/skills/trends/scripts/lib/cookie_paths.py +27 -0
- package/skills/trends/scripts/lib/corpus.py +439 -0
- package/skills/trends/scripts/lib/devto.py +313 -0
- package/skills/trends/scripts/lib/discovery_handoff.py +988 -0
- package/skills/trends/scripts/lib/doctor.py +2166 -0
- package/skills/trends/scripts/lib/dripstack.py +203 -0
- package/skills/trends/scripts/lib/entity_extract.py +37 -0
- package/skills/trends/scripts/lib/env.py +1092 -138
- package/skills/trends/scripts/lib/fanout.py +11 -1
- package/skills/trends/scripts/lib/feed.py +61 -0
- package/skills/trends/scripts/lib/fetch_memo.py +135 -0
- package/skills/trends/scripts/lib/freshness.py +566 -0
- package/skills/trends/scripts/lib/fusion.py +314 -28
- package/skills/trends/scripts/lib/github.py +438 -24
- package/skills/trends/scripts/lib/grok_x.py +1237 -0
- package/skills/trends/scripts/lib/grounding.py +129 -11
- package/skills/trends/scripts/lib/hackernews.py +61 -4
- package/skills/trends/scripts/lib/health.py +373 -0
- package/skills/trends/scripts/lib/hosted.py +333 -0
- package/skills/trends/scripts/lib/html_publish.py +34 -0
- package/skills/trends/scripts/lib/html_render.py +169 -3
- package/skills/trends/scripts/lib/http.py +1215 -70
- package/skills/trends/scripts/lib/instagram.py +132 -9
- package/skills/trends/scripts/lib/jobs.py +4 -2
- package/skills/trends/scripts/lib/library.py +308 -0
- package/skills/trends/scripts/lib/library_index.py +477 -0
- package/skills/trends/scripts/lib/linkedin.py +271 -24
- package/skills/trends/scripts/lib/log.py +5 -2
- package/skills/trends/scripts/lib/meta_ads.py +982 -0
- package/skills/trends/scripts/lib/normalize.py +382 -28
- package/skills/trends/scripts/lib/parallel_mcp.py +234 -0
- package/skills/trends/scripts/lib/permission_preflight.py +42 -3
- package/skills/trends/scripts/lib/perplexity.py +1080 -468
- package/skills/trends/scripts/lib/pipeline.py +5079 -211
- package/skills/trends/scripts/lib/planner.py +396 -53
- package/skills/trends/scripts/lib/polymarket.py +285 -23
- package/skills/trends/scripts/lib/prescriptions.py +432 -0
- package/skills/trends/scripts/lib/private_files.py +21 -0
- package/skills/trends/scripts/lib/providers.py +231 -10
- package/skills/trends/scripts/lib/quality_nudge.py +122 -37
- package/skills/trends/scripts/lib/reddit.py +177 -12
- package/skills/trends/scripts/lib/reddit_arctic.py +146 -5
- package/skills/trends/scripts/lib/reddit_keyless.py +121 -60
- package/skills/trends/scripts/lib/reddit_listing.py +215 -14
- package/skills/trends/scripts/lib/reddit_public.py +12 -13
- package/skills/trends/scripts/lib/reddit_search.py +304 -0
- package/skills/trends/scripts/lib/reddit_shreddit.py +51 -7
- package/skills/trends/scripts/lib/registers.py +134 -0
- package/skills/trends/scripts/lib/relevance.py +17 -0
- package/skills/trends/scripts/lib/render.py +2161 -271
- package/skills/trends/scripts/lib/rerank.py +623 -55
- package/skills/trends/scripts/lib/resolve.py +50 -1
- package/skills/trends/scripts/lib/safari_cookies.py +42 -15
- package/skills/trends/scripts/lib/schema.py +782 -1
- package/skills/trends/scripts/lib/setup_wizard.py +779 -120
- package/skills/trends/scripts/lib/signals.py +206 -7
- package/skills/trends/scripts/lib/stocktwits.py +374 -0
- package/skills/trends/scripts/lib/subproc.py +307 -53
- package/skills/trends/scripts/lib/techmeme.py +89 -64
- package/skills/trends/scripts/lib/telegram.py +317 -0
- package/skills/trends/scripts/lib/tiktok.py +13 -9
- package/skills/trends/scripts/lib/topic_shape.py +340 -0
- package/skills/trends/scripts/lib/transcribe.py +12 -3
- package/skills/trends/scripts/lib/trustpilot.py +256 -5
- package/skills/trends/scripts/lib/truthsocial.py +9 -1
- package/skills/trends/scripts/lib/ui.py +6 -0
- package/skills/trends/scripts/lib/usage.py +132 -0
- package/skills/trends/scripts/lib/web_search_keyless.py +63 -4
- package/skills/trends/scripts/lib/windows_job.py +138 -0
- package/skills/trends/scripts/lib/x_api.py +824 -0
- package/skills/trends/scripts/lib/x_envelope.py +733 -0
- package/skills/trends/scripts/lib/x_judge.py +292 -0
- package/skills/trends/scripts/lib/xai_x.py +26 -3
- package/skills/trends/scripts/lib/xquik.py +89 -15
- package/skills/trends/scripts/lib/xurl_x.py +284 -91
- package/skills/trends/scripts/lib/youtube_yt.py +570 -119
- package/skills/trends/scripts/setup-keychain.sh +12 -4
- package/skills/trends/scripts/setup-pass.sh +3 -0
- package/skills/trends/scripts/store.py +444 -50
- package/skills/trends/scripts/watchlist.py +38 -11
- package/skills/trends/scripts/x_lane_parity.py +107 -0
- package/skills/video-studio/CHANGELOG.md +4 -0
- package/skills/video-studio/SKILL.md +4 -4
- package/skills/video-studio/references/styles/product-flight.md +45 -0
- package/skills/video-studio/references/styles.md +3 -1
- package/skills/video-studio-motion/ATTRIBUTION.md +1 -1
- package/skills/video-studio-motion/CHANGELOG.md +4 -0
- package/skills/video-studio-motion/SKILL.md +8 -5
- package/skills/youtube-planner/ATTRIBUTION.md +25 -0
- package/skills/youtube-planner/CHANGELOG.md +12 -0
- package/skills/youtube-planner/SKILL.md +191 -0
- package/skills/youtube-planner/references/plan-template.md +57 -0
- package/skills/youtube-planner/references/stages.md +119 -0
- package/skills/youtube-planner/scripts/floor_ceiling.py +132 -0
- package/skills/coder-brainstorming/spec-document-reviewer-prompt.md +0 -49
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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):
|
|
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 |
|
package/skills/cro/CHANGELOG.md
CHANGED
|
@@ -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
|
|
package/skills/cro/SKILL.md
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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 (
|
|
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.
|
|
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.
|
|
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.
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
package/skills/emails/SKILL.md
CHANGED
|
@@ -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
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
package/skills/launch/SKILL.md
CHANGED
|
@@ -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,'
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|