luckiest-co 1.0.13 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/package.json +1 -1
  3. package/skills/luckiest-ab-testing/SKILL.md +1 -1
  4. package/skills/luckiest-ad-creative/SKILL.md +1 -1
  5. package/skills/luckiest-ads/SKILL.md +1 -1
  6. package/skills/luckiest-advisors/SKILL.md +1 -1
  7. package/skills/luckiest-aeo-grader/SKILL.md +1 -1
  8. package/skills/luckiest-ai-seo/SKILL.md +1 -1
  9. package/skills/luckiest-analytics/SKILL.md +1 -1
  10. package/skills/luckiest-aso/SKILL.md +1 -1
  11. package/skills/luckiest-churn-prevention/SKILL.md +1 -1
  12. package/skills/luckiest-co-marketing/SKILL.md +1 -1
  13. package/skills/luckiest-coder/SKILL.md +1 -1
  14. package/skills/luckiest-coder-brainstorming/SKILL.md +1 -1
  15. package/skills/luckiest-coder-consistency/SKILL.md +1 -1
  16. package/skills/luckiest-coder-constitution/SKILL.md +1 -1
  17. package/skills/luckiest-coder-debugging/SKILL.md +1 -1
  18. package/skills/luckiest-coder-dispatching-parallel-agents/SKILL.md +1 -1
  19. package/skills/luckiest-coder-executing-plans/SKILL.md +1 -1
  20. package/skills/luckiest-coder-finishing-a-branch/SKILL.md +1 -1
  21. package/skills/luckiest-coder-git-worktrees/SKILL.md +1 -1
  22. package/skills/luckiest-coder-guard/SKILL.md +1 -1
  23. package/skills/luckiest-coder-qa/SKILL.md +1 -1
  24. package/skills/luckiest-coder-receiving-code-review/SKILL.md +1 -1
  25. package/skills/luckiest-coder-requesting-code-review/SKILL.md +1 -1
  26. package/skills/luckiest-coder-shipping/SKILL.md +1 -1
  27. package/skills/luckiest-coder-subagent-driven-development/SKILL.md +1 -1
  28. package/skills/luckiest-coder-tdd/SKILL.md +1 -1
  29. package/skills/luckiest-coder-verification/SKILL.md +1 -1
  30. package/skills/luckiest-coder-writing-plans/SKILL.md +1 -1
  31. package/skills/luckiest-coder-writing-skills/SKILL.md +1 -1
  32. package/skills/luckiest-cold-email/SKILL.md +1 -1
  33. package/skills/luckiest-community-marketing/SKILL.md +1 -1
  34. package/skills/luckiest-competitor-profiling/SKILL.md +1 -1
  35. package/skills/luckiest-competitors/SKILL.md +1 -1
  36. package/skills/luckiest-content-strategy/SKILL.md +1 -1
  37. package/skills/luckiest-copy-editing/SKILL.md +1 -1
  38. package/skills/luckiest-copywriting/SKILL.md +1 -1
  39. package/skills/luckiest-cro/SKILL.md +1 -1
  40. package/skills/luckiest-customer-research/SKILL.md +1 -1
  41. package/skills/luckiest-directory-submissions/SKILL.md +1 -1
  42. package/skills/luckiest-emails/SKILL.md +1 -1
  43. package/skills/luckiest-extract-design-system/SKILL.md +1 -1
  44. package/skills/luckiest-free-tools/SKILL.md +1 -1
  45. package/skills/luckiest-image/SKILL.md +1 -1
  46. package/skills/luckiest-launch/SKILL.md +1 -1
  47. package/skills/luckiest-lead-magnets/SKILL.md +1 -1
  48. package/skills/luckiest-marketing-ideas/SKILL.md +1 -1
  49. package/skills/luckiest-marketing-plan/SKILL.md +1 -1
  50. package/skills/luckiest-marketing-psychology/SKILL.md +1 -1
  51. package/skills/luckiest-model-router/SKILL.md +1 -1
  52. package/skills/luckiest-offers/SKILL.md +1 -1
  53. package/skills/luckiest-onboarding/SKILL.md +1 -1
  54. package/skills/luckiest-paywalls/SKILL.md +1 -1
  55. package/skills/luckiest-popups/SKILL.md +1 -1
  56. package/skills/luckiest-pricing/SKILL.md +1 -1
  57. package/skills/luckiest-product-marketing/SKILL.md +1 -1
  58. package/skills/luckiest-programmatic-seo/SKILL.md +1 -1
  59. package/skills/luckiest-prompt-rewrite/SKILL.md +1 -1
  60. package/skills/luckiest-prospecting/SKILL.md +1 -1
  61. package/skills/luckiest-public-relations/SKILL.md +1 -1
  62. package/skills/luckiest-referrals/SKILL.md +1 -1
  63. package/skills/luckiest-revops/SKILL.md +1 -1
  64. package/skills/luckiest-sales-enablement/SKILL.md +1 -1
  65. package/skills/luckiest-schema/SKILL.md +1 -1
  66. package/skills/luckiest-seo-audit/SKILL.md +1 -1
  67. package/skills/luckiest-session-handoff/SKILL.md +1 -1
  68. package/skills/luckiest-signup/SKILL.md +1 -1
  69. package/skills/luckiest-site-architecture/SKILL.md +1 -1
  70. package/skills/luckiest-sms/SKILL.md +1 -1
  71. package/skills/luckiest-social/SKILL.md +1 -1
  72. package/skills/luckiest-thinker/SKILL.md +1 -1
  73. package/skills/luckiest-trends/SKILL.md +1 -1
  74. package/skills/luckiest-video/SKILL.md +1 -1
  75. package/skills/luckiest-website-cloner/ATTRIBUTION.md +29 -0
  76. package/skills/luckiest-website-cloner/CHANGELOG.md +8 -0
  77. package/skills/luckiest-website-cloner/LICENSE +21 -0
  78. package/skills/luckiest-website-cloner/SKILL.md +289 -0
  79. package/skills/luckiest-website-cloner/references/builtin-browser-recipes.md +74 -0
  80. package/skills/luckiest-website-cloner/references/compositing.md +65 -0
  81. package/skills/luckiest-website-cloner/references/fidelity-fast-path.md +92 -0
  82. package/skills/luckiest-website-cloner/references/playwright-cli-recipes.md +68 -0
  83. package/skills/luckiest-website-cloner/references/teardown.md +142 -0
  84. package/skills/luckiest-website-cloner/references/visual-qa.md +102 -0
  85. package/skills/luckiest-website-cloner/scripts/build-bundle.cjs +12 -0
  86. package/skills/luckiest-website-cloner/scripts/motion-probe.js +423 -0
  87. package/skills/luckiest-website-cloner/scripts/surface-map.js +392 -0
  88. package/skills/luckiest-website-cloner/scripts/tokens-probe.js +178 -0
  89. package/skills/luckiest-website-cloner-dom/ATTRIBUTION.md +4 -0
  90. package/skills/luckiest-website-cloner-dom/CHANGELOG.md +8 -0
  91. package/skills/luckiest-website-cloner-dom/LICENSE +21 -0
  92. package/skills/luckiest-website-cloner-dom/SKILL.md +170 -0
  93. package/skills/luckiest-website-cloner-dom/references/asset-resolution.md +93 -0
  94. package/skills/luckiest-website-cloner-dom/references/interaction-fingerprints.md +85 -0
  95. package/skills/luckiest-website-cloner-remix/ATTRIBUTION.md +4 -0
  96. package/skills/luckiest-website-cloner-remix/CHANGELOG.md +8 -0
  97. package/skills/luckiest-website-cloner-remix/LICENSE +21 -0
  98. package/skills/luckiest-website-cloner-remix/SKILL.md +202 -0
  99. package/skills/luckiest-website-cloner-remix/references/directions.md +82 -0
  100. package/skills/luckiest-website-cloner-remix/references/reskin.md +84 -0
  101. package/skills/luckiest-website-cloner-remix/references/tweak-panel.md +72 -0
  102. package/skills/luckiest-website-cloner-remix/scripts/apply-overrides.cjs +105 -0
  103. package/skills/luckiest-website-cloner-remix/scripts/gallery.cjs +71 -0
  104. package/skills/luckiest-website-cloner-remix/scripts/tokenize-css.cjs +127 -0
  105. package/skills/luckiest-website-cloner-remix/scripts/tweak-panel.js +169 -0
  106. package/skills/luckiest-website-cloner-shaders/ATTRIBUTION.md +11 -0
  107. package/skills/luckiest-website-cloner-shaders/CHANGELOG.md +8 -0
  108. package/skills/luckiest-website-cloner-shaders/LICENSE +21 -0
  109. package/skills/luckiest-website-cloner-shaders/SKILL.md +129 -0
  110. package/skills/luckiest-website-cloner-shaders/references/capture-backends.md +89 -0
  111. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/SKILL.md +123 -0
  112. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/capture-backends.md +201 -0
  113. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/evidence-policy.md +93 -0
  114. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/operating-contract.md +82 -0
  115. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/qa-failure-policy.md +100 -0
  116. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/recon-kernel.md +206 -0
  117. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/replay-policy.md +145 -0
  118. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/shaders-com.md +212 -0
  119. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/source-analysis.md +112 -0
  120. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/surface-discovery.md +113 -0
  121. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/target-lock.md +205 -0
  122. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/three-shader-reconstruction.md +155 -0
  123. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/tool-capability-matrix.md +57 -0
  124. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/unicorn-studio.md +387 -0
  125. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/scripts/fetch-rendered-dom.mjs +178 -0
  126. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/scripts/scan-bundle.sh +80 -0
  127. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/extraction-report.md +41 -0
  128. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/known-gaps.md +14 -0
  129. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/qa-report.md +74 -0
  130. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/replay-manifest.json +147 -0
  131. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/run-state.json +75 -0
  132. package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/scout-card.json +106 -0
@@ -14,7 +14,7 @@ This skill guides expert work on in-app paywalls and upgrade flows. The goal is
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-paywalls", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "79b3ef34-041b-421a-95c1-7cefd14e6111", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-paywalls", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -14,7 +14,7 @@ You are an expert in popup and modal optimization. Your goal is to create popups
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-popups", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "94b8e7f0-30f9-4d04-986b-63a6d34651b5", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-popups", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -14,7 +14,7 @@ This skill helps design SaaS pricing and monetization that captures value, drive
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-pricing", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "78c5f684-9c91-409d-ac7b-9e00118097ef", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-pricing", skill_version: "1.1.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
 
@@ -16,7 +16,7 @@ The document is stored at `.agents/product-marketing.md`.
16
16
 
17
17
  ## Staying current
18
18
 
19
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-product-marketing", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
19
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "edad1356-acde-4086-be9e-9d96fcd8eb5a", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
20
20
 
21
21
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-product-marketing", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
22
22
 
@@ -14,7 +14,7 @@ This skill guides building SEO-optimized pages at scale using templates and data
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-programmatic-seo", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "c2fe7b3b-a99e-467e-bf0e-145acbb76578", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-programmatic-seo", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -12,7 +12,7 @@ metadata:
12
12
  ## Staying current
13
13
 
14
14
  On activation, call the Luckiest MCP `check_updates` tool with
15
- `{ listingId: "luckiest-prompt-rewrite", installedSemver: "1.2.0" }`.
15
+ `{ listingId: "b4ca8226-8a02-414f-aec9-e2d48d83d8c5", installedSemver: "1.2.0" }`.
16
16
  If it returns `upToDate: false`, surface the `notice` to the user. Do nothing further if `upToDate: true`.
17
17
 
18
18
  ---
@@ -14,7 +14,7 @@ This skill builds qualified prospect lists across three motions: B2B SaaS, gener
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP `check_updates` tool with `{ listingId: "luckiest-prospecting", installedSemver: "1.1.0" }`. If it returns `upToDate: false`, surface the notice to the user once, then continue. Do nothing further if `upToDate: true`. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP `check_updates` tool with `{ listingId: "07f4a9f8-c0b7-45d2-8dad-eee5f23b9b37", installedSemver: "1.1.0" }`. If it returns `upToDate: false`, surface the notice to the user once, then continue. Do nothing further if `upToDate: true`. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-prospecting", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -14,7 +14,7 @@ This skill helps the user get covered by journalists, podcasts, and newsletters
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-public-relations", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "6097afb9-1a08-4241-9c42-d623e9c90532", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-public-relations", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -14,7 +14,7 @@ This skill provides expertise in viral growth and referral marketing. Its goal i
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-referrals", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "8e86f826-6a71-47f0-bfa9-fca924855a1d", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-referrals", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -14,7 +14,7 @@ This skill makes the agent an expert in revenue operations. The goal is to help
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-revops", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "4b8d1ae9-92a4-41b2-944c-aa9a6cf8e350", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-revops", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -12,7 +12,7 @@ metadata:
12
12
 
13
13
  ## Staying current
14
14
 
15
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-sales-enablement", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
15
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "383c4a8f-8944-4c95-8f86-7848572d19bd", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
16
16
 
17
17
  This skill provides expert B2B sales enablement guidance. Its goal is to create sales collateral that reps actually use: decks, one-pagers, objection docs, demo scripts, and playbooks that help close deals.
18
18
 
@@ -14,7 +14,7 @@ This skill implements structured data and schema.org markup that helps search en
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-schema", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "754aacf8-87dd-4f22-bee2-2be8383df357", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-schema", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -14,7 +14,7 @@ This skill helps identify SEO issues and provide actionable recommendations to i
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-seo-audit", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "eb3e5efe-31ff-46bc-9aea-0df6bb2afc36", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-seo-audit", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -17,7 +17,7 @@ This is a **context-handoff artifact**, not a status report. The audience is a f
17
17
  ## Staying current
18
18
 
19
19
  On activation, call the Luckiest MCP `check_updates` tool with
20
- `{ listingId: "luckiest-session-handoff", installedSemver: "1.1.0" }`.
20
+ `{ listingId: "54d5df64-4f85-4cdd-8587-5a69cdbe3dd5", installedSemver: "1.1.0" }`.
21
21
  If it returns `upToDate: false`, surface the `notice` to the user. Do nothing further if `upToDate: true`.
22
22
 
23
23
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-session-handoff", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
@@ -14,7 +14,7 @@ This skill optimizes signup and registration flows. The goal is to reduce fricti
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-signup", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "f1e643a0-85a4-4e3b-b6d9-2cbd99c6b2d2", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-signup", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -14,7 +14,7 @@ This skill acts as an information architecture expert. Its goal is to help plan
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-site-architecture", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "7a564054-6046-49dc-a0f4-cdf766496716", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-site-architecture", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -14,7 +14,7 @@ This skill helps plan, build, and optimize SMS and MMS marketing for direct-to-c
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-sms", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "e5e66087-c1b3-4647-85c9-989e44bf79a9", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-sms", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -14,7 +14,7 @@ An expert social media strategist skill. The goal is to help create engaging con
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-social", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "e1b9c06a-7c04-4127-977c-9eb15cbac02f", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-social", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -17,7 +17,7 @@ Post-training alignment suppresses the diversity you learned during pretraining.
17
17
  ## Staying current
18
18
 
19
19
  On activation, call the Luckiest MCP `check_updates` tool with
20
- `{ listingId: "luckiest-thinker", installedSemver: "1.1.0" }`.
20
+ `{ listingId: "4201bdb3-b674-442d-93a2-0ea4d236b660", installedSemver: "1.1.0" }`.
21
21
  If it returns `upToDate: false`, surface the `notice` to the user once, then continue. Never block on this check.
22
22
 
23
23
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-thinker", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
@@ -62,7 +62,7 @@ Research any topic across Reddit, X, YouTube, TikTok, Hacker News, Polymarket, G
62
62
  ## Staying current
63
63
 
64
64
  On activation, call the Luckiest MCP `check_updates` tool with
65
- `{ listingId: "luckiest-trends", installedSemver: "1.1.0" }`.
65
+ `{ listingId: "a357362c-cb53-4bba-86e2-5024dbbece9e", installedSemver: "1.1.0" }`.
66
66
  If it returns `upToDate: false`, surface the `notice` to the user once, then continue. Do nothing further if `upToDate: true`. Never block research on this check — if the tool is unavailable, proceed.
67
67
 
68
68
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-trends", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
@@ -14,7 +14,7 @@ An expert video producer that helps create marketing videos using AI generation
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-video", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "2991a487-dd00-4f65-a9cd-b51fc34fedd1", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
19
  When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-video", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
@@ -0,0 +1,29 @@
1
+ # Attribution
2
+
3
+ `luckiest-website-cloner` and its three companion skills
4
+ (`luckiest-website-cloner-dom`, `luckiest-website-cloner-shaders`,
5
+ `luckiest-website-cloner-remix`) are the Luckiest edition of the open-source
6
+ **site-clone** skill collection, originally published as `clone-site`,
7
+ `dom-clone`, `shader-extract`, and `remix-site`. Licensed **MIT**; the upstream
8
+ license text is kept in `LICENSE`.
9
+
10
+ Changes in this edition:
11
+
12
+ - Renamed to the `luckiest-website-cloner*` family, with every cross-reference
13
+ between the skills updated.
14
+ - Guardrails added to every skill entry point, not just the coordinator, since
15
+ each one can be invoked directly. They now cover login walls, paywalls, bot
16
+ walls, credential and cookie handling, and pages holding personal data.
17
+ - Added `references/builtin-browser-recipes.md` for running the probes from an
18
+ in-app browser pane with no preload support.
19
+ - Frontmatter normalized to the Luckiest package format (tool allowlist,
20
+ version, listing id).
21
+
22
+ `luckiest-website-cloner-shaders/vendor/web-shader-extractor/` is vendored
23
+ unmodified from the **web-shader-extractor** skill in the
24
+ [lixiaolin94/skills](https://github.com/lixiaolin94/skills) repository by
25
+ **lixiaolin94**, with a 2D-Canvas extraction contribution by
26
+ [Huazi](https://github.com/HeyHuazi). Licensed **MIT**. Update that folder by
27
+ re-pulling upstream rather than hand-editing it.
28
+
29
+ Retain this attribution and the MIT license text if you redistribute.
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ ## 1.0.0
4
+
5
+ First Luckiest edition of `luckiest-website-cloner`. Renamed from the upstream site-clone
6
+ collection, guardrails added to every entry point, recipes added for running the
7
+ probes from an in-app browser pane, frontmatter normalized to the Luckiest
8
+ package format. See ATTRIBUTION.md.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Chase Hannegan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,289 @@
1
+ ---
2
+ name: luckiest-website-cloner
3
+ description: >-
4
+ Reverse-engineer and rebuild any website — including its WebGL/WebGPU/canvas
5
+ shader effects — into a clean local codebase. Use this whenever the user wants
6
+ to clone, replicate, rebuild, reverse-engineer, or copy a website or landing
7
+ page, especially designy sites with animated/shader/3D hero backgrounds. This
8
+ is the top-level coordinator: it does recon, classifies every page surface as
9
+ DOM vs GPU-rendered, routes plain layout to the luckiest-website-cloner-dom sub-skill and shader
10
+ surfaces to the luckiest-website-cloner-shaders sub-skill, scaffolds a build target on demand,
11
+ composites the two tracks, and runs automated visual QA. It also produces a
12
+ human-readable TEARDOWN.md (stack, measured design system, every effect with
13
+ its exact runtime params and how it works) — pass --analyze-only to stop there.
14
+ Trigger on "clone this site", "rebuild this page", "make a copy of this
15
+ website", "reverse-engineer this landing page", "clone this but the background
16
+ is some WebGL thing", any pixel-accurate site reproduction, AND on analysis
17
+ asks: "how did they build this", "tear down this site", "site teardown",
18
+ "break down this page", "what stack/animations does this site use", "how does
19
+ this effect work", "website blueprint", "steal this website's design",
20
+ "/site-teardown". Provide one or more target URLs.
21
+ argument-hint: "<url1> [<url2> ...] [--analyze-only]"
22
+ user-invocable: true
23
+ license: MIT. See ATTRIBUTION.md
24
+ allowed-tools: Bash, Read, Write, Edit, Glob, Grep, Skill, AskUserQuestion
25
+ metadata:
26
+ version: "1.0.0"
27
+ listing_id: luckiest-website-cloner
28
+ author: luckiest
29
+ ---
30
+
31
+ # Clone Site
32
+
33
+ You are cloning **$ARGUMENTS** into a clean local codebase. Your job is to be
34
+ the **general contractor**: survey the whole building, decide which trades do
35
+ which parts, hand each trade a precise scope, then assemble and inspect.
36
+
37
+ The reason this skill exists — and why it is not just "run the DOM cloner" — is
38
+ that a modern designy site is really **two different materials welded together**:
39
+
40
+ - **DOM/CSS material** — text, layout, images, buttons, normal animations. A
41
+ DOM extractor reading `getComputedStyle()` reconstructs this faithfully.
42
+ - **GPU material** — WebGL / WebGPU / canvas shader effects (the hero that
43
+ ripples, the 3D blob, the generative gradient). None of it exists in the DOM.
44
+ `getComputedStyle()` sees an empty `<canvas>`. Clone it as HTML and you get a
45
+ dead box where the best part of the site was.
46
+
47
+ Getting a clone right is mostly getting the **routing** right: sending each
48
+ surface to the tool that can actually see it. That routing is this skill's spine.
49
+
50
+ ## Sub-skills you coordinate
51
+
52
+ You do not reimplement extraction. You dispatch to two sibling skills and stitch
53
+ their output together. Read each one's `SKILL.md` before you drive it:
54
+
55
+ - **`../luckiest-website-cloner-dom/SKILL.md`** — extracts DOM/CSS/assets/content section by
56
+ section, writes a spec file per component, dispatches parallel builders.
57
+ - **`../luckiest-website-cloner-shaders/SKILL.md`** — evidence-gated capture-and-replay of a
58
+ single GPU surface (locks the surface, captures the frame with Spector.js /
59
+ WebGPU Inspector, builds a verified local baseline). Do NOT hand it the whole
60
+ page — hand it one locked canvas surface plus an output directory.
61
+
62
+ If either sibling is not installed, tell the user which one is missing and stop;
63
+ you cannot substitute the DOM track for a GPU surface or vice versa.
64
+
65
+ ## Pre-flight
66
+
67
+ 1. **Browser automation is required.** You need a browser you can drive from
68
+ the session — any of: the `playwright-cli` skill (recommended: it is the
69
+ only path with `addInitScript` preload, which makes surface routing and
70
+ motion capture far more reliable; see `references/playwright-cli-recipes.md`
71
+ for the one-call preload recipe, eval quirks, hidden-state capture, asset
72
+ lists), Playwright MCP, Chrome/Claude-in-Chrome MCP, or a built-in browser
73
+ pane with a JavaScript-eval tool (post-hoc probes + screenshots only, no
74
+ preload; see `references/builtin-browser-recipes.md`). If none can load the target (bot wall, auth), stop and say so —
75
+ this skill cannot clone from a fetch or a screenshot.
76
+ Build the injectable probe bundle with `node scripts/build-bundle.cjs`, inject
77
+ it, then evaluate `JSON.stringify(surfaceMap())` etc. For a first look use
78
+ `motionSummary()` (small); the full `motionProbe()`/`tokensProbe()` output
79
+ goes to a file — never dump it into the conversation.
80
+ 2. Parse `$ARGUMENTS` into one or more URLs; validate each and confirm it loads.
81
+ Multiple sites → keep each site's artifacts in its own `output/<hostname>/`.
82
+ 3. Decide the **output directory** now (default `output/<hostname>/`; never
83
+ build inside a notes vault or another project's source tree). Every
84
+ artifact — surface map, probes, specs, captures, the built project — goes
85
+ under it, not into the conversation.
86
+ 4. Parse `--analyze-only`. If present, the run ends after Phase 1 with
87
+ `TEARDOWN.md` (+ the probe JSON) as the deliverable. If the user keeps a
88
+ research folder, offer to copy it there with a `## Key Takeaways` section on
89
+ top. Don't ask first — run and report.
90
+
91
+ ## Phase 1 — Recon & Surface Routing (the part that makes this skill worth it)
92
+
93
+ This runs BEFORE any building. Its product is a **surface map**: a list of every
94
+ visual region tagged with what material it's made of and which track owns it.
95
+
96
+ 1. **Instrument, then load.** If your browser tool supports preload scripts,
97
+ inject `scripts/surface-map.js`'s `instrumentGetContext()` as an init script,
98
+ THEN navigate. This records the real context type each canvas requests —
99
+ ground truth for routing. If preload isn't available, navigate normally and
100
+ rely on the post-hoc probe (still reliable for the common case).
101
+ 2. **Let the page settle** (scroll top→bottom once so lazy canvases initialize),
102
+ then run `surfaceMap()` from `scripts/surface-map.js` in the page context
103
+ (browser MCP evaluate / Playwright `page.evaluate`). Save the JSON to
104
+ `output/<hostname>/surface-map.json`.
105
+ 3. **Read the routing summary.** For each surface:
106
+ - `WEBGL1 / WEBGL2 / WEBGPU` → **luckiest-website-cloner-shaders track**. This is a GPU effect
107
+ the DOM track literally cannot capture.
108
+ - `CANVAS2D` / `CANVAS_UNKNOWN` → inspect. Many 2D canvases are decorative
109
+ particle fields (luckiest-website-cloner-shaders) but some are charting libs better rebuilt
110
+ from data. Use judgment; default animated fullscreen 2D → luckiest-website-cloner-shaders.
111
+ - `VIDEO` → **luckiest-website-cloner-dom track**, re-embed the source `<video>`. Do not rebuild
112
+ a looping video as a canvas — that's wasted effort and looks worse.
113
+ - `SVG_ANIMATED` → luckiest-website-cloner-dom, but preserve the SMIL/CSS animation.
114
+ - everything else (all normal DOM) → **luckiest-website-cloner-dom track**.
115
+ 4. **Record the interaction model.** The surface map also fingerprints smooth
116
+ scroll (Lenis / Locomotive) and scroll-timeline CSS. Note these — they change
117
+ how luckiest-website-cloner-dom must rebuild scroll-driven sections. Confirm by scrolling: does
118
+ content change on its own as you scroll (scroll-driven) or only on click?
119
+ 5. **Probe the motion runtime** — run `scripts/motion-probe.js` (`motionProbe()`;
120
+ with `instrumentMotion()` preloaded when using playwright-cli) and save to
121
+ `motion.json`. This asks the live libraries for their real params instead of
122
+ reading a minified bundle: every GSAP tween + `ScrollTrigger.getAll()`
123
+ (trigger/pin/start/end/scrub/vars), WAAPI animations with keyframes, CSSOM
124
+ `@keyframes` + scroll-timelines, Lenis options, Swiper/Splide params,
125
+ SplitText wrappers, transition signatures, IO registrations + input listeners
126
+ (instrumented mode). `summary.animationStack` is the one-line answer to "what
127
+ makes this site move".
128
+ 6. **Probe the design system** — run `scripts/tokens-probe.js` (`tokensProbe()`)
129
+ at 1440, 768, and 390 → `tokens-<w>.json`. Frequency-ranked palette, type
130
+ scale, fonts + `@font-face` src, spacing rhythm, radii, shadows, z-layers,
131
+ breakpoints, `:root` custom props, section list with offsets, fixed chrome.
132
+ These values ARE the design tokens luckiest-website-cloner-dom writes in its foundation step.
133
+ 7. **Sweep** — scroll in ~viewport steps taking screenshots; hover the obvious
134
+ interactives; click tabs/accordions. Anything that moves but isn't explained
135
+ by `motion.json` gets tagged OBSERVED. Only now, if a specific effect is
136
+ still unexplained, read its source: take the bundle URL from
137
+ `read_network_requests`, `curl` it to the output dir, and `grep` around the
138
+ selector — never WebFetch a bundle (the summarizer drops exactly the numbers
139
+ you need).
140
+ 8. **Write the routing plan** to `output/<hostname>/ROUTING.md`: the section
141
+ topology top-to-bottom, each section's track, and for GPU surfaces their
142
+ selector + bounding box + guessed driver (three.js / unicorn-studio / etc.),
143
+ so the composite step knows exactly where each effect sits and at what z-index.
144
+ 9. **Write `TEARDOWN.md`** per `references/teardown.md` — stack, measured
145
+ design system, effects table, reveals with exact params, assets, build plan.
146
+ Every claim tagged CONFIRMED / OBSERVED / INFERRED. This is the briefing the
147
+ builders get and the whole deliverable of `--analyze-only`. **Stop here if
148
+ `--analyze-only`.**
149
+
150
+ If the routing summary shows **no GPU surfaces**, this is a pure DOM clone —
151
+ proceed with just the luckiest-website-cloner-dom track and skip the luckiest-website-cloner-shaders phase. Say so.
152
+
153
+ ## Phase 2 — Scaffold the build target (on demand)
154
+
155
+ Only scaffold once you know what you're building. Choose the lightest substrate
156
+ that fits what you found — don't force a heavy framework onto a static page:
157
+
158
+ - Static/marketing page, GPU effects present → **Vite + vanilla/TS** (the
159
+ luckiest-website-cloner-shaders baselines are framework-free; Vite composites them cleanly).
160
+ - App-like, component-heavy, needs routing/SSR → **Next.js + Tailwind** (matches
161
+ the luckiest-website-cloner-dom builder conventions).
162
+ - User specified a stack → honor it.
163
+
164
+ Scaffold into `output/<hostname>/site/`. Verify it builds empty before adding
165
+ anything. Record the choice in `ROUTING.md`. (Rationale: the old template hard-
166
+ wired Next.js for every clone; that's overkill for a static shader showcase and
167
+ fights the framework-free shader baselines. Pick per target.)
168
+
169
+ ## Phase 3 — Run the two tracks
170
+
171
+ **Choose the DOM strategy first.** If the target ships scope-attributed CSS
172
+ (`data-v-*`, CSS Modules, styled-components hashes, `_ngcontent`) and the user
173
+ wants fidelity over a maintainable codebase, take the **fidelity fast path**
174
+ (`references/fidelity-fast-path.md`): captured post-hydration HTML + the site's
175
+ own stylesheets + rewritten paths, rebuilding only behaviors. Validated at
176
+ 0.02–0.06% pixel diff in one pass. Otherwise run luckiest-website-cloner-dom's rebuild. State the
177
+ choice in `ROUTING.md`.
178
+
179
+ **Choose the DOM strategy first.** If the target ships scope-attributed CSS
180
+ (, CSS Modules, styled-components hashes, ) and the user
181
+ wants fidelity over a maintainable codebase, take the **fidelity fast path**
182
+ (): captured post-hydration HTML + the site's
183
+ own stylesheets + rewritten paths, rebuilding only behaviors. Validated at
184
+ 0.02–0.06% pixel diff in one pass. Otherwise run luckiest-website-cloner-dom's rebuild. State the
185
+ choice in .
186
+
187
+ Run them **concurrently** — they touch different files and don't depend on each
188
+ other until composite. But note (from the research): decomposing into many small
189
+ builders is a choice for **speed and edit-isolation**, not because a strong model
190
+ can't hold the context. With a capable model, prefer **fewer, larger** builder
191
+ agents scoped to a whole section over many tiny ones; split only when a section
192
+ is genuinely independent (distinct card variants, separate interactive widgets).
193
+ Over-splitting adds merge overhead and coordination cost for no fidelity gain.
194
+
195
+ **DOM track:** Follow `../luckiest-website-cloner-dom/SKILL.md`. Feed it the section topology from
196
+ `ROUTING.md`, `TEARDOWN.md`, and the probe JSON (`tokens-*.json` seeds the
197
+ design tokens verbatim; `motion.json` gives each section's interaction model and
198
+ exact animation params — builders reproduce those numbers, not approximations)
199
+ plus the output dir. It produces the page shell, styled sections,
200
+ downloaded assets, and leaves **placeholder mounts** where GPU surfaces belong
201
+ (a positioned empty container with the right id/size/z-index from the surface
202
+ map). It must not try to rebuild the effect itself.
203
+
204
+ **Assets you can't obtain or rebuild:** some assets are cross-origin/blocked, or
205
+ are brand identity you shouldn't copy into a learning clone. Resolve every asset
206
+ through the ladder in `../luckiest-website-cloner-dom/references/asset-resolution.md` — REAL first,
207
+ then reconstruct, then GENERATE a decorative substitute via the Higgsfield MCP
208
+ (never for logos/brand/identity), then placeholder — and carry the tier labels
209
+ into the report. This is optional: if Higgsfield isn't connected, tier 3 degrades
210
+ to placeholder. Never let a generated asset be reported as the real one.
211
+
212
+ **GPU track:** For each GPU surface, follow `../luckiest-website-cloner-shaders/SKILL.md` once,
213
+ handing it: the locked surface selector, its bounding box, the guessed driver,
214
+ and an output dir `output/<hostname>/effects/<surface-id>/`. It returns a
215
+ self-contained, verified effect module (WebGL/WebGPU replay) that renders into a
216
+ canvas you can mount.
217
+
218
+ ## Phase 4 — Composite
219
+
220
+ Wire the GPU effect modules into the DOM shell's placeholder mounts. See
221
+ `references/compositing.md` for the mount contract (sizing, DPR, z-index,
222
+ pointer-events, teardown, reduced-motion). The composite is where most "looks
223
+ wrong" bugs actually live — an effect that renders fine in isolation can sit at
224
+ the wrong z-index, block clicks, or ignore DPR once mounted. Verify each mount
225
+ in the live page, not just the isolated baseline.
226
+
227
+ ## Phase 5 — Automated Visual QA (not eyeballing)
228
+
229
+ Do NOT declare done by looking at a screenshot. Run a real pixel diff — but
230
+ diff the two materials differently, because GPU effects are **nondeterministic**
231
+ (they animate; two screenshots never match pixel-for-pixel):
232
+
233
+ - **DOM regions** → Playwright `toHaveScreenshot()` (pixelmatch under the hood),
234
+ original vs clone at 1440 / 768 / 390. Tune `maxDiffPixelRatio` / `threshold`
235
+ rather than demanding zero diff (anti-aliasing alone causes false diffs).
236
+ - **GPU regions** → **mask them** in the DOM diff (Playwright `mask:` option) so
237
+ their animation doesn't swamp the result, and verify them separately: does the
238
+ effect render, animate, and respond to pointer/scroll like the original?
239
+
240
+ See `references/visual-qa.md` for the exact harness, thresholds, masking, and
241
+ the harness gotchas (no reducedMotion, no networkidle against Vite, compare
242
+ section heights before pixels, diff per viewport slice).
243
+ For every real discrepancy: trace it to the spec (was the value extracted wrong?)
244
+ or the build (spec right, builder wrong?) and fix at the source.
245
+
246
+ ## Completion report
247
+
248
+ - `TEARDOWN.md` path + the one-line stack summary (`motion.json › summary`)
249
+ - Section topology and per-section routing (DOM vs which GPU track)
250
+ - GPU surfaces found, their drivers, and replay fidelity (SOURCE / PARTIAL /
251
+ approximate — carry luckiest-website-cloner-shaders's honesty labels through; don't upgrade them)
252
+ - Build substrate chosen and why
253
+ - Visual QA: DOM pixel-diff pass rates per breakpoint + GPU verification notes
254
+ - Known gaps (cross-origin canvases that blocked readback, effects only
255
+ approximated, anything the surface map flagged CANVAS_UNKNOWN)
256
+
257
+ ## Handoff
258
+
259
+ After the completion report, **ask one question and act on it**:
260
+
261
+ > "Clone verified (diff numbers above). Make it yours now? — re-skin with your
262
+ > brand/copy/assets, three design directions, tweak panel on the pick."
263
+
264
+ - **Yes** → invoke the `luckiest-website-cloner-remix` skill with this run's output directory
265
+ (`Skill: luckiest-website-cloner-remix`, args `<output-dir>`). It consumes TEARDOWN.md,
266
+ tokens-*.json, motion.json, and site/ directly and stops for the user's input
267
+ at its own checkpoints. From the user's side the whole thing is one command.
268
+ - **No / later** → end with: `/luckiest-website-cloner-remix <output-dir>` re-enters at any time.
269
+
270
+ Do not start re-skinning inside luckiest-website-cloner; luckiest-website-cloner ends at a verified copy
271
+ and luckiest-website-cloner-remix owns everything after.
272
+ ## Guardrails
273
+
274
+ Clone for migration, for recovering your own lost source, or for learning how a
275
+ build works. Do not use it to pass off someone else's brand or design as your
276
+ own, for phishing or impersonation, or against a site whose terms forbid
277
+ reproduction. Logos, brand assets, and copy belong to their owners.
278
+
279
+ Stop and ask the user before continuing if any of these are true:
280
+
281
+ - The target looks like it exists to be impersonated: a bank or wallet login, a
282
+ checkout, an account or password page.
283
+ - The page is behind a login, a paywall, or a bot wall. Never supply
284
+ credentials, cookies, session tokens, or a stored browser profile to get past
285
+ one, and never work around the block.
286
+ - The page holds personal data about real people.
287
+
288
+ Capture only what renders publicly. Do not read or copy credentials, cookies,
289
+ local storage, or session storage from the target.