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.
- package/.claude-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/skills/luckiest-ab-testing/SKILL.md +1 -1
- package/skills/luckiest-ad-creative/SKILL.md +1 -1
- package/skills/luckiest-ads/SKILL.md +1 -1
- package/skills/luckiest-advisors/SKILL.md +1 -1
- package/skills/luckiest-aeo-grader/SKILL.md +1 -1
- package/skills/luckiest-ai-seo/SKILL.md +1 -1
- package/skills/luckiest-analytics/SKILL.md +1 -1
- package/skills/luckiest-aso/SKILL.md +1 -1
- package/skills/luckiest-churn-prevention/SKILL.md +1 -1
- package/skills/luckiest-co-marketing/SKILL.md +1 -1
- package/skills/luckiest-coder/SKILL.md +1 -1
- package/skills/luckiest-coder-brainstorming/SKILL.md +1 -1
- package/skills/luckiest-coder-consistency/SKILL.md +1 -1
- package/skills/luckiest-coder-constitution/SKILL.md +1 -1
- package/skills/luckiest-coder-debugging/SKILL.md +1 -1
- package/skills/luckiest-coder-dispatching-parallel-agents/SKILL.md +1 -1
- package/skills/luckiest-coder-executing-plans/SKILL.md +1 -1
- package/skills/luckiest-coder-finishing-a-branch/SKILL.md +1 -1
- package/skills/luckiest-coder-git-worktrees/SKILL.md +1 -1
- package/skills/luckiest-coder-guard/SKILL.md +1 -1
- package/skills/luckiest-coder-qa/SKILL.md +1 -1
- package/skills/luckiest-coder-receiving-code-review/SKILL.md +1 -1
- package/skills/luckiest-coder-requesting-code-review/SKILL.md +1 -1
- package/skills/luckiest-coder-shipping/SKILL.md +1 -1
- package/skills/luckiest-coder-subagent-driven-development/SKILL.md +1 -1
- package/skills/luckiest-coder-tdd/SKILL.md +1 -1
- package/skills/luckiest-coder-verification/SKILL.md +1 -1
- package/skills/luckiest-coder-writing-plans/SKILL.md +1 -1
- package/skills/luckiest-coder-writing-skills/SKILL.md +1 -1
- package/skills/luckiest-cold-email/SKILL.md +1 -1
- package/skills/luckiest-community-marketing/SKILL.md +1 -1
- package/skills/luckiest-competitor-profiling/SKILL.md +1 -1
- package/skills/luckiest-competitors/SKILL.md +1 -1
- package/skills/luckiest-content-strategy/SKILL.md +1 -1
- package/skills/luckiest-copy-editing/SKILL.md +1 -1
- package/skills/luckiest-copywriting/SKILL.md +1 -1
- package/skills/luckiest-cro/SKILL.md +1 -1
- package/skills/luckiest-customer-research/SKILL.md +1 -1
- package/skills/luckiest-directory-submissions/SKILL.md +1 -1
- package/skills/luckiest-emails/SKILL.md +1 -1
- package/skills/luckiest-extract-design-system/SKILL.md +1 -1
- package/skills/luckiest-free-tools/SKILL.md +1 -1
- package/skills/luckiest-image/SKILL.md +1 -1
- package/skills/luckiest-launch/SKILL.md +1 -1
- package/skills/luckiest-lead-magnets/SKILL.md +1 -1
- package/skills/luckiest-marketing-ideas/SKILL.md +1 -1
- package/skills/luckiest-marketing-plan/SKILL.md +1 -1
- package/skills/luckiest-marketing-psychology/SKILL.md +1 -1
- package/skills/luckiest-model-router/SKILL.md +1 -1
- package/skills/luckiest-offers/SKILL.md +1 -1
- package/skills/luckiest-onboarding/SKILL.md +1 -1
- package/skills/luckiest-paywalls/SKILL.md +1 -1
- package/skills/luckiest-popups/SKILL.md +1 -1
- package/skills/luckiest-pricing/SKILL.md +1 -1
- package/skills/luckiest-product-marketing/SKILL.md +1 -1
- package/skills/luckiest-programmatic-seo/SKILL.md +1 -1
- package/skills/luckiest-prompt-rewrite/SKILL.md +1 -1
- package/skills/luckiest-prospecting/SKILL.md +1 -1
- package/skills/luckiest-public-relations/SKILL.md +1 -1
- package/skills/luckiest-referrals/SKILL.md +1 -1
- package/skills/luckiest-revops/SKILL.md +1 -1
- package/skills/luckiest-sales-enablement/SKILL.md +1 -1
- package/skills/luckiest-schema/SKILL.md +1 -1
- package/skills/luckiest-seo-audit/SKILL.md +1 -1
- package/skills/luckiest-session-handoff/SKILL.md +1 -1
- package/skills/luckiest-signup/SKILL.md +1 -1
- package/skills/luckiest-site-architecture/SKILL.md +1 -1
- package/skills/luckiest-sms/SKILL.md +1 -1
- package/skills/luckiest-social/SKILL.md +1 -1
- package/skills/luckiest-thinker/SKILL.md +1 -1
- package/skills/luckiest-trends/SKILL.md +1 -1
- package/skills/luckiest-video/SKILL.md +1 -1
- package/skills/luckiest-website-cloner/ATTRIBUTION.md +29 -0
- package/skills/luckiest-website-cloner/CHANGELOG.md +8 -0
- package/skills/luckiest-website-cloner/LICENSE +21 -0
- package/skills/luckiest-website-cloner/SKILL.md +289 -0
- package/skills/luckiest-website-cloner/references/builtin-browser-recipes.md +74 -0
- package/skills/luckiest-website-cloner/references/compositing.md +65 -0
- package/skills/luckiest-website-cloner/references/fidelity-fast-path.md +92 -0
- package/skills/luckiest-website-cloner/references/playwright-cli-recipes.md +68 -0
- package/skills/luckiest-website-cloner/references/teardown.md +142 -0
- package/skills/luckiest-website-cloner/references/visual-qa.md +102 -0
- package/skills/luckiest-website-cloner/scripts/build-bundle.cjs +12 -0
- package/skills/luckiest-website-cloner/scripts/motion-probe.js +423 -0
- package/skills/luckiest-website-cloner/scripts/surface-map.js +392 -0
- package/skills/luckiest-website-cloner/scripts/tokens-probe.js +178 -0
- package/skills/luckiest-website-cloner-dom/ATTRIBUTION.md +4 -0
- package/skills/luckiest-website-cloner-dom/CHANGELOG.md +8 -0
- package/skills/luckiest-website-cloner-dom/LICENSE +21 -0
- package/skills/luckiest-website-cloner-dom/SKILL.md +170 -0
- package/skills/luckiest-website-cloner-dom/references/asset-resolution.md +93 -0
- package/skills/luckiest-website-cloner-dom/references/interaction-fingerprints.md +85 -0
- package/skills/luckiest-website-cloner-remix/ATTRIBUTION.md +4 -0
- package/skills/luckiest-website-cloner-remix/CHANGELOG.md +8 -0
- package/skills/luckiest-website-cloner-remix/LICENSE +21 -0
- package/skills/luckiest-website-cloner-remix/SKILL.md +202 -0
- package/skills/luckiest-website-cloner-remix/references/directions.md +82 -0
- package/skills/luckiest-website-cloner-remix/references/reskin.md +84 -0
- package/skills/luckiest-website-cloner-remix/references/tweak-panel.md +72 -0
- package/skills/luckiest-website-cloner-remix/scripts/apply-overrides.cjs +105 -0
- package/skills/luckiest-website-cloner-remix/scripts/gallery.cjs +71 -0
- package/skills/luckiest-website-cloner-remix/scripts/tokenize-css.cjs +127 -0
- package/skills/luckiest-website-cloner-remix/scripts/tweak-panel.js +169 -0
- package/skills/luckiest-website-cloner-shaders/ATTRIBUTION.md +11 -0
- package/skills/luckiest-website-cloner-shaders/CHANGELOG.md +8 -0
- package/skills/luckiest-website-cloner-shaders/LICENSE +21 -0
- package/skills/luckiest-website-cloner-shaders/SKILL.md +129 -0
- package/skills/luckiest-website-cloner-shaders/references/capture-backends.md +89 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/SKILL.md +123 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/capture-backends.md +201 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/evidence-policy.md +93 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/operating-contract.md +82 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/qa-failure-policy.md +100 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/recon-kernel.md +206 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/replay-policy.md +145 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/shaders-com.md +212 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/source-analysis.md +112 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/surface-discovery.md +113 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/target-lock.md +205 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/three-shader-reconstruction.md +155 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/tool-capability-matrix.md +57 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/references/unicorn-studio.md +387 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/scripts/fetch-rendered-dom.mjs +178 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/scripts/scan-bundle.sh +80 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/extraction-report.md +41 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/known-gaps.md +14 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/qa-report.md +74 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/replay-manifest.json +147 -0
- package/skills/luckiest-website-cloner-shaders/vendor/web-shader-extractor/templates/run-state.json +75 -0
- 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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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.
|