luckiest-co 1.0.46 → 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.
- 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/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 +8 -0
- package/skills/video-studio/SKILL.md +6 -5
- package/skills/video-studio/references/styles/product-flight.md +45 -0
- package/skills/video-studio/references/styles.md +3 -1
- package/skills/video-studio/scripts/qa.mjs +64 -2
- package/skills/video-studio/scripts/qa.test.mjs +29 -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/coder-brainstorming/spec-document-reviewer-prompt.md +0 -49
- package/skills/trends/scripts/lib/reddit_rss.py +0 -224
package/package.json
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog — luckiest-ab-testing
|
|
2
2
|
|
|
3
|
+
## 1.1.1 — 2026-10-16
|
|
4
|
+
From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
|
|
5
|
+
|
|
6
|
+
- Corrected statistics wording: what a p-value, significance level and confidence interval do and do not mean (ASA guidance), and result actions that check effect size, guardrails and the planned stopping rule. Evals updated to match.
|
|
7
|
+
|
|
3
8
|
## 1.1.0 — 2026-07-06
|
|
4
9
|
Skill updater pass: analytics integration.
|
|
5
10
|
|
|
@@ -3,7 +3,7 @@ name: ab-testing
|
|
|
3
3
|
description: Plan, design, analyze, and scale A/B tests and growth experiments for marketers — builds valid hypotheses, sizes samples, picks primary/secondary/guardrail metrics, guards against peeking and Sample Ratio Mismatch, and runs an ongoing experimentation program. Use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "MVT," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program," "experiment playbook," "sample ratio mismatch," "SRM," "my test results look weird," "why is my split uneven," or "Bayesian A/B test." Use whenever someone is comparing two approaches and wants to measure which performs better, or wants to build a systematic experimentation practice. For tracking implementation, see luckiest-analytics. For page-level conversion optimization, see luckiest-cro.
|
|
4
4
|
license: See ATTRIBUTION.md
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.1.
|
|
6
|
+
version: "1.1.1"
|
|
7
7
|
listing_id: luckiest-ab-testing
|
|
8
8
|
author: luckiest
|
|
9
9
|
---
|
|
@@ -14,9 +14,9 @@ You are an expert in experimentation and A/B testing. Your goal is to help desig
|
|
|
14
14
|
|
|
15
15
|
## Staying current
|
|
16
16
|
|
|
17
|
-
On activation, call the Luckiest MCP check_updates tool with { listingId: "dbff1677-8ede-4016-b52d-21db4aec7801", installedSemver: "1.1.
|
|
17
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "dbff1677-8ede-4016-b52d-21db4aec7801", 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-ab-testing", skill_version: "1.1.
|
|
19
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-ab-testing", skill_version: "1.1.1", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
|
|
20
20
|
|
|
21
21
|
## Initial Assessment
|
|
22
22
|
|
|
@@ -215,9 +215,12 @@ Before reading any metric, verify the test wasn't corrupted. **Sample Ratio Mism
|
|
|
215
215
|
- Many platforms (VWO SmartStats, AB Tasty, Kameleoon) monitor SRM automatically.
|
|
216
216
|
|
|
217
217
|
### Statistical Significance
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
218
|
+
- For a pre-specified fixed-horizon test, compare its p-value with the chosen significance level (commonly α = 0.05).
|
|
219
|
+
- A p-value describes how incompatible the data are with the null model: the probability, **assuming that model and its assumptions**, of a result at least as extreme as the observed one. It is not the probability that the result is random, that the null is true, or that a variant will win again.
|
|
220
|
+
- A 95% confidence interval comes from a procedure with 95% coverage over repeated samples under its assumptions. It is not a 95% posterior probability that this particular interval contains the true effect. Report the interval and effect size alongside the p-value.
|
|
221
|
+
- Use the planned analysis and stopping rule. Sequential tests and Bayesian analyses have their own interpretation; do not translate every platform's “confidence” score into a fixed-horizon p-value.
|
|
222
|
+
|
|
223
|
+
These distinctions follow the [American Statistical Association's p-value statement](https://www.amstat.org/asa/files/pdfs/p-valuestatement.pdf). Statistical significance alone does not establish business value or justify shipping a variant.
|
|
221
224
|
|
|
222
225
|
### Analysis Checklist
|
|
223
226
|
|
|
@@ -233,10 +236,10 @@ Before reading any metric, verify the test wasn't corrupted. **Sample Ratio Mism
|
|
|
233
236
|
|
|
234
237
|
| Result | Conclusion |
|
|
235
238
|
|--------|------------|
|
|
236
|
-
| Significant winner |
|
|
239
|
+
| Significant winner | Check effect size, uncertainty and guardrails before implementing |
|
|
237
240
|
| Significant loser | Keep control, learn why |
|
|
238
|
-
| No significant difference |
|
|
239
|
-
| Mixed signals |
|
|
241
|
+
| No significant difference | Report the effect interval: it may still allow meaningful benefit and harm, or may exclude effects worth pursuing. Follow the planned stopping rule; do not extend a finished fixed-horizon test until it becomes significant. Plan a new test if needed. |
|
|
242
|
+
| Mixed signals | Check data quality and planned metrics; label unplanned segment findings exploratory and confirm them in a new test |
|
|
240
243
|
|
|
241
244
|
---
|
|
242
245
|
|
|
@@ -90,14 +90,25 @@
|
|
|
90
90
|
{
|
|
91
91
|
"id": 7,
|
|
92
92
|
"prompt": "We ran an A/B test on our pricing page for 4 weeks. Control: 2.1% conversion. Variant: 2.4% conversion. 12,000 visitors per variant. Is this statistically significant? Should we ship it?",
|
|
93
|
-
"expected_output": "Should
|
|
93
|
+
"expected_output": "Should calculate the result under a declared analysis: 252/12,000 vs 288/12,000 gives approximately p = 0.117 for an uncorrected two-sided pooled-proportion z-test, so it does not meet alpha = 0.05. Should distinguish the 0.3 percentage-point / ~14% relative estimate from evidence for a reliably positive effect. Report uncertainty and practical business impact. Respect the pre-specified duration and stopping rule; do not recommend continuing the completed fixed-horizon test until significant. Unplanned segments are exploratory; a follow-up test needs its own plan.",
|
|
94
94
|
"assertions": [
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
|
|
95
|
+
"Uses actual conversion counts and states the analysis assumptions",
|
|
96
|
+
"Does not call p ~0.117 significant at alpha = 0.05",
|
|
97
|
+
"Distinguishes statistical uncertainty from business value",
|
|
98
|
+
"Does not extend a completed fixed-horizon test until significant",
|
|
99
|
+
"Labels unplanned segment findings exploratory"
|
|
100
|
+
],
|
|
101
|
+
"files": []
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": 8,
|
|
105
|
+
"prompt": "Our fixed-horizon A/B test reached its planned sample today with p = 0.04. Can I tell the CEO there is a 96% chance the change works and just a 4% chance the lift was random? We have a +2% estimate, an interval of +0.1% to +3.9%, and a higher refund rate in the variant.",
|
|
106
|
+
"expected_output": "Reject both probability interpretations. Explain the p-value conditional on the null model and assumptions, and repeated-sampling interval coverage without asserting a posterior probability. Consider the effect interval, practical impact and refund guardrail before recommending rollout. Do not substitute a numerical significance threshold for the business decision.",
|
|
107
|
+
"assertions": [
|
|
108
|
+
"Does not interpret 1-p as the probability the variant works",
|
|
109
|
+
"Does not interpret p as the probability the result was random",
|
|
110
|
+
"Explains the conditional null-model meaning",
|
|
111
|
+
"Uses interval, business effect and refund guardrail before rollout"
|
|
101
112
|
],
|
|
102
113
|
"files": []
|
|
103
114
|
},
|
|
@@ -21,7 +21,7 @@ Reference for calculating sample sizes and test duration.
|
|
|
21
21
|
|
|
22
22
|
1. **Baseline conversion rate**: Your current rate
|
|
23
23
|
2. **Minimum detectable effect (MDE)**: Smallest change worth detecting
|
|
24
|
-
3. **Statistical significance level**: Usually
|
|
24
|
+
3. **Statistical significance level**: Usually α = 0.05 (5%)
|
|
25
25
|
4. **Statistical power**: Usually 80% (β = 0.20)
|
|
26
26
|
|
|
27
27
|
### What These Mean
|
|
@@ -33,7 +33,7 @@ Reference for calculating sample sizes and test duration.
|
|
|
33
33
|
- Implementation cost (worth the effort?)
|
|
34
34
|
- Realistic expectations (what have past tests shown?)
|
|
35
35
|
|
|
36
|
-
**
|
|
36
|
+
**Significance level (α = 0.05)**: For the planned test and its assumptions, limits the long-run probability of rejecting a true null hypothesis to 5%. It is not the probability that an observed difference is “due to chance.” Repeated unadjusted looks or multiple comparisons do not retain that error rate. See the [ASA's interpretation guidance](https://www.amstat.org/asa/files/pdfs/p-valuestatement.pdf).
|
|
37
37
|
|
|
38
38
|
**Statistical power (80%)**: Means if there's a real effect of size MDE, you have 80% chance of detecting it.
|
|
39
39
|
|
package/skills/ads/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog — luckiest-ads
|
|
2
2
|
|
|
3
|
+
## 1.2.1 — 2026-10-16
|
|
4
|
+
From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
|
|
5
|
+
|
|
6
|
+
- Description points outbound to target accounts 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/ads/SKILL.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ads
|
|
3
|
-
description: "Plans, optimizes, and scales paid advertising campaigns — campaign strategy, audience targeting, bidding, and optimization. Use when the user wants help with paid advertising on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' 'audience targeting,' 'Google Ads,' 'Facebook ads,' 'LinkedIn ads,' 'ad budget,' 'cost per click,' 'ad spend,' 'should I run ads,' 'search terms report,' 'wasted spend,' or 'is this campaign working.' For bulk ad creative generation and iteration, see luckiest-ad-creative. For landing page optimization, see luckiest-cro."
|
|
3
|
+
description: "Plans, optimizes, and scales paid advertising campaigns — campaign strategy, audience targeting, bidding, and optimization. Use when the user wants help with paid advertising on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' 'audience targeting,' 'Google Ads,' 'Facebook ads,' 'LinkedIn ads,' 'ad budget,' 'cost per click,' 'ad spend,' 'should I run ads,' 'search terms report,' 'wasted spend,' or 'is this campaign working.' For bulk ad creative generation and iteration, see luckiest-ad-creative. For landing page optimization, see luckiest-cro. For outbound to target accounts, see luckiest-cold-email."
|
|
4
4
|
license: See ATTRIBUTION.md
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.2.
|
|
6
|
+
version: "1.2.1"
|
|
7
7
|
listing_id: luckiest-ads
|
|
8
8
|
author: luckiest
|
|
9
9
|
---
|
|
@@ -14,9 +14,9 @@ This skill acts as an expert performance marketer focused on paid customer acqui
|
|
|
14
14
|
|
|
15
15
|
## Staying current
|
|
16
16
|
|
|
17
|
-
On activation, call the Luckiest MCP check_updates tool with { listingId: "5fb8bb24-2d95-4a8e-8778-e403be972d7a", installedSemver: "1.2.
|
|
17
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "5fb8bb24-2d95-4a8e-8778-e403be972d7a", 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-ads", skill_version: "1.2.
|
|
19
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-ads", 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
|
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog — luckiest-ai-seo
|
|
2
2
|
|
|
3
|
+
## 1.3.0 — 2026-10-16
|
|
4
|
+
From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
|
|
5
|
+
|
|
6
|
+
- Reference routing table for the six bundled references.
|
|
7
|
+
- Test queries spread across buyer awareness stages; findings turned into page fixes and a PR target list; Wikipedia and review-site presence asked up front.
|
|
8
|
+
- Related skills: luckiest-lead-magnets.
|
|
9
|
+
|
|
3
10
|
## 1.2.0 — 2026-10-08
|
|
4
11
|
Upstream sync with coreyhaines31/marketingskills dda3841 (issue #112).
|
|
5
12
|
|
package/skills/ai-seo/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: ai-seo
|
|
|
3
3
|
description: "When the user wants to optimize content for AI search engines, get cited by LLMs, or appear in AI-generated answers. Also use when the user mentions 'AI SEO,' 'AEO,' 'GEO,' 'LLMO,' 'answer engine optimization,' 'generative engine optimization,' 'LLM optimization,' 'AI Overviews,' 'optimize for ChatGPT,' 'optimize for Perplexity,' 'AI citations,' 'AI visibility,' 'zero-click search,' 'how do I show up in AI answers,' 'LLM mentions,' 'optimize for Claude/Gemini,' 'llms.txt,' 'AGENTS.md,' 'OKF,' 'Open Knowledge Format,' 'knowledge bundle,' or 'agent-readable site.' Use this whenever someone wants their content to be cited or surfaced by AI assistants and AI search engines. For traditional technical and on-page SEO audits, see luckiest-seo-audit. For structured data implementation, see luckiest-schema."
|
|
4
4
|
license: See ATTRIBUTION.md
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.3.0"
|
|
7
7
|
listing_id: luckiest-ai-seo
|
|
8
8
|
author: luckiest
|
|
9
9
|
---
|
|
@@ -14,9 +14,24 @@ This skill provides expertise in AI search optimization — the practice of maki
|
|
|
14
14
|
|
|
15
15
|
## Staying current
|
|
16
16
|
|
|
17
|
-
On activation, call the Luckiest MCP check_updates tool with { listingId: "658062d1-7ff2-498f-a355-0ed2e2a516fb", installedSemver: "1.
|
|
17
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "658062d1-7ff2-498f-a355-0ed2e2a516fb", installedSemver: "1.3.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
|
|
18
18
|
|
|
19
|
-
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-ai-seo", skill_version: "1.
|
|
19
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-ai-seo", skill_version: "1.3.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
|
|
20
|
+
|
|
21
|
+
## Reference Routing
|
|
22
|
+
|
|
23
|
+
Start with this skill's core workflow. Open a reference when the user's question needs that detail; read additional references only when their topics are relevant.
|
|
24
|
+
|
|
25
|
+
| User questions | Local reference |
|
|
26
|
+
|---|---|
|
|
27
|
+
| How should we structure a definition, comparison, or FAQ? What makes an answer block useful on its own? | [Content patterns](references/content-patterns.md) |
|
|
28
|
+
| How does the approach differ for product pages, docs, local businesses, or ecommerce? Which content type should we improve? | [Content types](references/content-types.md) |
|
|
29
|
+
| Should we publish LinkedIn posts, articles, or company-page content? What makes that content discoverable and citable? | [LinkedIn citations](references/linkedin-ai-citations.md) |
|
|
30
|
+
| What belongs in an OKF bundle? Is it an established AI-search requirement or an emerging experiment? | [Open Knowledge Format](references/okf.md) |
|
|
31
|
+
| Where should we start for a particular AI engine? Which search and training crawlers should we distinguish? | [Platform ranking factors](references/platform-ranking-factors.md) |
|
|
32
|
+
| Why does AI describe our positioning incorrectly? How can third-party consensus reinforce a specific use case? | [Positioning and consensus](references/positioning-and-consensus.md) |
|
|
33
|
+
|
|
34
|
+
Read these bundled files from the installed skill directory. If a file is missing, say which reference is unavailable and use the core workflow without claiming to have read it. For time-sensitive statistics, platform behavior, or tool claims in any reference, check the source date and current primary documentation before making a recommendation.
|
|
20
35
|
|
|
21
36
|
## Before Starting
|
|
22
37
|
|
|
@@ -44,6 +59,7 @@ Gather this context (ask if not provided):
|
|
|
44
59
|
### 4. Competitive Landscape
|
|
45
60
|
- Who are your top competitors in AI search results?
|
|
46
61
|
- Are they being cited where you're not?
|
|
62
|
+
- Do you have Wikipedia coverage or a presence on review sites?
|
|
47
63
|
|
|
48
64
|
---
|
|
49
65
|
|
|
@@ -126,12 +142,11 @@ Test 10-20 of your most important queries across platforms:
|
|
|
126
142
|
| [query 1] | Yes/No | Yes/No | Yes/No | Yes/No | [who] |
|
|
127
143
|
| [query 2] | Yes/No | Yes/No | Yes/No | Yes/No | [who] |
|
|
128
144
|
|
|
129
|
-
**Query types to test
|
|
130
|
-
- "
|
|
131
|
-
- "
|
|
132
|
-
- "[Your brand] vs [competitor]"
|
|
133
|
-
- "
|
|
134
|
-
- "[Your product category] pricing"
|
|
145
|
+
**Query types to test**, spread across buyer awareness stages and written the way people actually type into a chat box:
|
|
146
|
+
- Problem-aware: "How do I [problem your product solves]?"
|
|
147
|
+
- Solution-aware: "What is [your product category]?" / "Best [category] for [use case]"
|
|
148
|
+
- Product-aware: "[Your brand] vs [competitor]" / "Is [your brand] good for [use case]?"
|
|
149
|
+
- Most aware: "[Your brand] pricing" / "Does [your brand] integrate with [tool]?"
|
|
135
150
|
|
|
136
151
|
Keep the list to prompts that would change revenue. A citation for a glossary question ("what is gross profit?") rarely sells anything. Track prompts like keywords: collapse wording variants of the same intent into one core prompt, then run each several times.
|
|
137
152
|
|
|
@@ -144,6 +159,8 @@ When your competitors get cited and you don't, examine:
|
|
|
144
159
|
- **Schema markup** — Do they have structured data you're missing?
|
|
145
160
|
- **Third-party presence** — Are they cited via Wikipedia, Reddit, review sites?
|
|
146
161
|
|
|
162
|
+
**Turn findings into work.** If an assistant states something wrong or vague about you, the page that should state that fact isn't saying it plainly; fix that page first. If you're absent, the sources it cites for the prompt are your target list for PR, review sites, and directories.
|
|
163
|
+
|
|
147
164
|
### Step 3: Content Extractability Check
|
|
148
165
|
|
|
149
166
|
For each priority page, verify:
|
|
@@ -488,17 +505,6 @@ For implementation, see the [tools registry](../../tools/REGISTRY.md).
|
|
|
488
505
|
|
|
489
506
|
---
|
|
490
507
|
|
|
491
|
-
## Task-Specific Questions
|
|
492
|
-
|
|
493
|
-
1. What are your top 10-20 most important queries?
|
|
494
|
-
2. Have you checked if AI answers exist for those queries today?
|
|
495
|
-
3. Do you have structured data (schema markup) on your site?
|
|
496
|
-
4. What content types do you publish? (Blog, docs, comparisons, etc.)
|
|
497
|
-
5. Are competitors being cited by AI where you're not?
|
|
498
|
-
6. Do you have a Wikipedia page or presence on review sites?
|
|
499
|
-
|
|
500
|
-
---
|
|
501
|
-
|
|
502
508
|
## Related Skills
|
|
503
509
|
|
|
504
510
|
- **luckiest-seo-audit**: For traditional technical and on-page SEO audits
|
|
@@ -507,3 +513,4 @@ For implementation, see the [tools registry](../../tools/REGISTRY.md).
|
|
|
507
513
|
- **luckiest-competitors**: For building comparison pages that get cited
|
|
508
514
|
- **luckiest-programmatic-seo**: For building SEO pages at scale
|
|
509
515
|
- **luckiest-copywriting**: For writing content that's both human-readable and AI-extractable
|
|
516
|
+
- **luckiest-lead-magnets**: For packaging an owned course or content library as an installable agent skill (different from public-site AI visibility)
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog — luckiest-analytics
|
|
2
2
|
|
|
3
|
+
## 1.1.1 — 2026-10-16
|
|
4
|
+
From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
|
|
5
|
+
|
|
6
|
+
- Keep provider-defined event names. GA4 enhanced-measurement names corrected (`click`, `view_search_results`, `video_start` / `video_progress` / `video_complete`).
|
|
7
|
+
- GTM price variable reads a machine-readable `data-price`, never display text (`parseFloat("$1,234.56")` returned 1).
|
|
8
|
+
|
|
3
9
|
## 1.1.0 — 2026-07-06
|
|
4
10
|
Skill updater pass: analytics integration.
|
|
5
11
|
|
|
@@ -3,7 +3,7 @@ name: analytics
|
|
|
3
3
|
description: When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions "set up tracking," "GA4," "Google Analytics," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "analytics implementation," "tracking plan," "how do I measure this," "track conversions," "attribution," "Mixpanel," "Segment," "consent mode," "server-side tracking," "are my events firing," or "analytics isn't working." Use this whenever someone asks how to know if something is working or wants to measure marketing results. For A/B test measurement, see luckiest-ab-testing.
|
|
4
4
|
license: See ATTRIBUTION.md
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.1.
|
|
6
|
+
version: "1.1.1"
|
|
7
7
|
listing_id: luckiest-analytics
|
|
8
8
|
author: luckiest
|
|
9
9
|
---
|
|
@@ -14,9 +14,9 @@ This skill helps set up analytics tracking and measurement that provides actiona
|
|
|
14
14
|
|
|
15
15
|
## Staying current
|
|
16
16
|
|
|
17
|
-
On activation, call the Luckiest MCP check_updates tool with { listingId: "f1cb04a5-ae1d-44bd-90c3-7c267e04a9eb", installedSemver: "1.1.
|
|
17
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "f1cb04a5-ae1d-44bd-90c3-7c267e04a9eb", 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-analytics", skill_version: "1.1.
|
|
19
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-analytics", skill_version: "1.1.1", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
|
|
20
20
|
|
|
21
21
|
## Initial Assessment
|
|
22
22
|
|
|
@@ -95,6 +95,7 @@ checkout_payment_completed
|
|
|
95
95
|
- Include context in properties, not event name
|
|
96
96
|
- Avoid spaces and special characters
|
|
97
97
|
- Document decisions
|
|
98
|
+
- Keep provider-defined names when using automatic or recommended events (e.g. GA4 `click`, `view_search_results`, `purchase`). Map internal business names explicitly; naming a custom event does not make the provider collect it automatically.
|
|
98
99
|
|
|
99
100
|
---
|
|
100
101
|
|
|
@@ -85,6 +85,33 @@
|
|
|
85
85
|
"Does not attempt to design the full experiment"
|
|
86
86
|
],
|
|
87
87
|
"files": []
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": 7,
|
|
91
|
+
"prompt": "GA4 enhanced measurement is enabled. I filtered outbound_click, site_search and video_engagement and got zero, but DebugView shows 12 click events with outbound=true, 7 view_search_results, 6 video_start, 4 video_progress and 2 video_complete. Which reports should I build? Do I need to add custom events?",
|
|
92
|
+
"expected_output": "Identify the mismatched option labels/event names. Use click with outbound=true for the 12 outbound clicks, view_search_results for the 7 searches, and separate video_start/video_progress/video_complete reports for 6/4/2. Do not add custom duplicate events to fix a filter mismatch or sum all video events as unique views. Check enabled options, configured search query parameters, YouTube JS API support and DebugView; cross-domain measurement destinations do not produce outbound clicks.",
|
|
93
|
+
"assertions": [
|
|
94
|
+
"Uses actual enhanced-measurement event names instead of option labels",
|
|
95
|
+
"Filters click by outbound=true and reports 12 outbound clicks",
|
|
96
|
+
"Uses view_search_results and reports 7 searches",
|
|
97
|
+
"Separates 6 video starts, 4 progress events and 2 completions",
|
|
98
|
+
"Does not count all video events as unique views or create duplicate custom events",
|
|
99
|
+
"Mentions relevant enhanced-measurement configuration and DebugView checks"
|
|
100
|
+
],
|
|
101
|
+
"files": []
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": 8,
|
|
105
|
+
"prompt": "Our GTM Custom JavaScript price variable parses .product-price text. USD $1,234.56 is tracked as 1, a European 1.234,56 display as 1.234, and missing prices become zero. How should we fix this without changing real free items?",
|
|
106
|
+
"expected_output": "Use the application numeric amount and explicit currency or a machine-readable unformatted decimal data-price attribute. Do not strip symbols or guess locale separators. Return null for missing/malformed/nonfinite values and skip or diagnose the monetary event; preserve canonical zero for free items. Test grouped US and localized European display strings, ordinary decimals and missing/invalid values.",
|
|
107
|
+
"assertions": [
|
|
108
|
+
"Uses numeric application data or canonical machine-readable decimal",
|
|
109
|
+
"Does not parse localized display strings or guess currency",
|
|
110
|
+
"Preserves explicit zero for free items",
|
|
111
|
+
"Missing or invalid amount is not converted to zero",
|
|
112
|
+
"Tests grouped and localized display controls"
|
|
113
|
+
],
|
|
114
|
+
"files": []
|
|
88
115
|
}
|
|
89
116
|
]
|
|
90
117
|
}
|
|
@@ -27,11 +27,15 @@ Detailed implementation guide for Google Analytics 4.
|
|
|
27
27
|
|-------|-------------|---------------|
|
|
28
28
|
| page_view | Page loads | Automatic |
|
|
29
29
|
| scroll | 90% scroll depth | Toggle on/off |
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
30
|
+
| click | Outbound link click (`outbound: true`); cross-domain measurement domains are excluded | Toggle on/off |
|
|
31
|
+
| view_search_results | Search results page with a configured search query parameter | Configure query parameters |
|
|
32
|
+
| video_start, video_progress, video_complete | Embedded YouTube start, progress and completion | Toggle on/off; JS API support required |
|
|
33
33
|
| file_download | PDF, docs, etc. | Configurable extensions |
|
|
34
34
|
|
|
35
|
+
Use these exact names in event filters and triggers. The option labels "outbound clicks", "site search" and "video engagement" are not automatic event names. For video, report starts, progress milestones and completions separately; adding all three counts double-counts a viewing journey. A custom event with one of the old labels needs its own implementation. Verify enabled options and observed parameters in DebugView before expecting data.
|
|
36
|
+
|
|
37
|
+
Contract: [Google enhanced measurement events](https://support.google.com/analytics/answer/9216061).
|
|
38
|
+
|
|
35
39
|
### Recommended Events
|
|
36
40
|
|
|
37
41
|
Use Google's predefined events when possible for enhanced reporting:
|
|
@@ -382,9 +382,15 @@ function() {
|
|
|
382
382
|
return match ? match[2] : null;
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
-
//
|
|
385
|
+
// Read a machine-readable amount, not the localized display text.
|
|
386
|
+
// Example: <span class="product-price" data-price="1234.56">$1,234.56</span>
|
|
386
387
|
function() {
|
|
387
388
|
var el = document.querySelector('.product-price');
|
|
388
|
-
|
|
389
|
+
var raw = el ? el.getAttribute('data-price') : null;
|
|
390
|
+
if (raw === null || !/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/.test(raw)) return null;
|
|
391
|
+
var amount = Number(raw);
|
|
392
|
+
return isFinite(amount) ? amount : null;
|
|
389
393
|
}
|
|
390
394
|
```
|
|
395
|
+
|
|
396
|
+
For monetary tracking, prefer the numeric amount and currency from the application data layer. If a DOM variable is needed, have the application render `data-price` as an unformatted, non-negative decimal in major currency units; pass its currency separately. Do not infer the amount or currency from presentation text: `parseFloat` turns `$1,234.56` into `1` after removing `$`, and localized separators have different meanings. A missing or invalid amount returns `null`, so skip that monetary event or diagnose it before sending; reserve `0` for an explicitly free item.
|
package/skills/aso/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog — luckiest-aso
|
|
2
2
|
|
|
3
|
+
## 1.1.1 — 2026-10-16
|
|
4
|
+
From coreyhaines31/marketingskills at 1efedbc (issue #174, MIT).
|
|
5
|
+
|
|
6
|
+
- Google Play preview videos can autoplay muted for up to 30 seconds; removed the "only ~6% tap play, low ROI" claim and told users to test video against their own conversion data.
|
|
7
|
+
|
|
3
8
|
## 1.1.0 — 2026-07-06
|
|
4
9
|
Skill updater pass: analytics integration.
|
|
5
10
|
|
package/skills/aso/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: aso
|
|
|
3
3
|
description: "When the user wants to audit or optimize an App Store or Google Play listing. Also use when the user mentions 'ASO audit,' 'app store optimization,' 'app store audit,' 'Play Store listing,' 'grade my app listing,' 'optimize my app listing,' 'improve app visibility,' 'app store ranking,' 'audit my listing,' 'why aren't people downloading my app,' 'improve my app conversion,' 'keyword optimization for app,' or 'compare my app to competitors.' Use when the user shares an App Store or Google Play URL and wants to improve it."
|
|
4
4
|
license: See ATTRIBUTION.md
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.1.
|
|
6
|
+
version: "1.1.1"
|
|
7
7
|
listing_id: luckiest-aso
|
|
8
8
|
author: luckiest
|
|
9
9
|
---
|
|
@@ -12,13 +12,13 @@ metadata:
|
|
|
12
12
|
|
|
13
13
|
## Staying current
|
|
14
14
|
|
|
15
|
-
On activation, call the Luckiest MCP check_updates tool with { listingId: "e6e130cc-12b7-4873-a858-0c1f37602164", installedSemver: "1.1.
|
|
15
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "e6e130cc-12b7-4873-a858-0c1f37602164", 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.
|
|
16
16
|
|
|
17
17
|
Analyze App Store and Google Play listings against ASO best practices. Fetches
|
|
18
18
|
live listing data, scores metadata, visuals, and ratings, then produces a
|
|
19
19
|
prioritized action plan.
|
|
20
20
|
|
|
21
|
-
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-aso", skill_version: "1.1.
|
|
21
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-aso", 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.
|
|
22
22
|
|
|
23
23
|
## When to Use
|
|
24
24
|
|
|
@@ -250,7 +250,7 @@ The report must include:
|
|
|
250
250
|
- Prohibited in title: emojis, ALL CAPS, "best"/"#1"/"free", CTAs (enforced since 2021)
|
|
251
251
|
- Screenshots: min 2, **max 8** per device (not 10 like Apple)
|
|
252
252
|
- Feature graphic (1024x500, exact) required for featured placements
|
|
253
|
-
-
|
|
253
|
+
- Preview video can autoplay muted for up to 30 seconds, depending on device, settings, network and placement. Show the app's value without sound; assess conversion with your own experiment rather than inferring low ROI from tap-to-play rates.
|
|
254
254
|
- Android Vitals directly affect ranking: crash >1.09% or ANR >0.47% = reduced visibility
|
|
255
255
|
- Promotional Content: submit 14 days early for featuring. Apps see 2x explore acquisitions
|
|
256
256
|
- Custom Store Listings: up to 50 (can target churned users, specific countries, ad campaigns)
|
|
@@ -62,13 +62,13 @@
|
|
|
62
62
|
{
|
|
63
63
|
"id": 5,
|
|
64
64
|
"prompt": "We only have 3 screenshots and no preview video. Does this really matter that much?",
|
|
65
|
-
"expected_output": "Should explain that screenshot count and video presence are heavily weighted in the Visual Assets dimension (25% of total score). Should cite specific data: Apple allows up to 10 screenshots per device with the first 3 visible in search, and 90% of users never scroll past the 3rd. Should note Apple screenshot captions are indexed for search since June 2025. Should cite the conversion benchmark: app preview video delivers +20-40% conversion lift on iOS (
|
|
65
|
+
"expected_output": "Should explain that screenshot count and video presence are heavily weighted in the Visual Assets dimension (25% of total score). Should cite specific data: Apple allows up to 10 screenshots per device with the first 3 visible in search, and 90% of users never scroll past the 3rd. Should note Apple screenshot captions are indexed for search since June 2025. Should cite the conversion benchmark: app preview video delivers +20-40% conversion lift on iOS (do not infer Google Play video ROI from tap-to-play rates; previews may autoplay muted for up to 30 seconds depending on device, settings, network and placement). Should recommend adding 5-8 screenshots minimum with caption text, and a 15-30s preview video. Should flag fewer than 5 screenshots as an always-flag issue across all tiers.",
|
|
66
66
|
"assertions": [
|
|
67
67
|
"Notes Visual Assets is 25% of score",
|
|
68
68
|
"Cites first 3 screenshots are most important",
|
|
69
69
|
"Mentions screenshot caption indexing (Apple, 2025)",
|
|
70
70
|
"Cites video conversion lift benchmark",
|
|
71
|
-
"
|
|
71
|
+
"Describes conditional muted Google Play autoplay without asserting universal lower ROI",
|
|
72
72
|
"Recommends specific screenshot count and video specs",
|
|
73
73
|
"Flags <5 screenshots as always-flag issue"
|
|
74
74
|
],
|
|
@@ -86,6 +86,19 @@
|
|
|
86
86
|
"Notes Google Play equivalents"
|
|
87
87
|
],
|
|
88
88
|
"files": []
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": 7,
|
|
92
|
+
"prompt": "We are deciding whether to create a Google Play preview video. Our team says only 6% tap play, so video cannot be worth it. Should we skip it? What should the opening show if we test one?",
|
|
93
|
+
"expected_output": "Should correct the claim that Google Play preview videos never autoplay: they may autoplay inline, muted, for up to 30 seconds depending on device, settings, network and placement. Should not promise autoplay for every visitor or derive universal conversion lift or ROI from tap-to-play rates. Should recommend showing actual app use and value early without relying on audio, and testing the creative using own listing conversion results. Should preserve the possibility that skipping a video is rational for the specific product and budget.",
|
|
94
|
+
"assertions": [
|
|
95
|
+
"Corrects never-autoplay claim with conditional muted playback",
|
|
96
|
+
"Distinguishes tap-to-play from total exposure and conversion lift",
|
|
97
|
+
"Does not guarantee playback or a conversion improvement",
|
|
98
|
+
"Recommends early app demonstration understandable without sound",
|
|
99
|
+
"Uses product-specific evidence to decide whether to invest"
|
|
100
|
+
],
|
|
101
|
+
"files": []
|
|
89
102
|
}
|
|
90
103
|
]
|
|
91
104
|
}
|
|
@@ -51,14 +51,16 @@ Sources: AppFollow, MobileAction, Sensor Tower, Troof.ai
|
|
|
51
51
|
## Preview Video Impact
|
|
52
52
|
|
|
53
53
|
**iOS:** +20-40% conversion lift (video autoplays on product page)
|
|
54
|
-
**Google Play:**
|
|
54
|
+
**Google Play:** Preview videos may autoplay muted for up to 30 seconds on eligible devices and placements. A tap-to-play rate does not measure all video exposure or establish conversion lift.
|
|
55
55
|
|
|
56
56
|
- Autoplay introduced in iOS 11 caused **+47% conversion jump**
|
|
57
57
|
- Users who watch video are **2x more likely to install**
|
|
58
58
|
- Average watch time: **4-6.5 seconds** (first 5 seconds are critical)
|
|
59
59
|
- 50%+ of viewers watch to the end
|
|
60
60
|
|
|
61
|
-
**Takeaway:**
|
|
61
|
+
**Takeaway:** Treat reported video benchmarks as context, not a guaranteed lift. For either store, test the creative against your own conversion results. On Google Play, make the opening understandable without sound.
|
|
62
|
+
|
|
63
|
+
Playback source: [Google Play preview asset guidelines](https://support.google.com/googleplay/android-developer/answer/9866151).
|
|
62
64
|
|
|
63
65
|
Sources: StoreMaven, SplitMetrics, Leanplum
|
|
64
66
|
|
|
@@ -69,7 +69,11 @@ All data from support.google.com and developer.android.com as of March 2026.
|
|
|
69
69
|
- **Format:** YouTube URL (public or unlisted)
|
|
70
70
|
- **Duration:** 30 seconds to 2 minutes recommended
|
|
71
71
|
- No ads, no monetization, must be embeddable, not age-restricted
|
|
72
|
-
- **
|
|
72
|
+
- **Playback:** Can autoplay inline with muted audio for up to 30 seconds, depending on device, user settings, network and placement. A play button appears when autoplay is unavailable.
|
|
73
|
+
- **Creative:** Demonstrate actual app use and the main benefit early, with visuals understandable without audio. Do not assume every visitor autoplays or watches the full video.
|
|
74
|
+
- **Measurement:** Tap-to-play rates exclude autoplay exposure; use listing experiments and your own conversion data before deciding whether a video is worthwhile.
|
|
75
|
+
|
|
76
|
+
Source: [Google Play preview asset guidelines](https://support.google.com/googleplay/android-developer/answer/9866151).
|
|
73
77
|
|
|
74
78
|
## Store Listing Experiments (A/B Testing)
|
|
75
79
|
|