launchframe 0.2.5 → 0.3.0

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 (72) hide show
  1. package/.amazonq/cli-agents/clone-website.json +9 -0
  2. package/{template/.amazonq → .amazonq}/rules/project.md +28 -18
  3. package/{template/.augment → .augment}/commands/clone-website.md +25 -25
  4. package/{template/.github → .claude}/skills/clone-website/SKILL.md +25 -25
  5. package/.claude/skills/marketing-social-proof-motion/SKILL.md +47 -0
  6. package/{template/.clinerules → .clinerules} +33 -19
  7. package/{template/.claude → .codex}/skills/clone-website/SKILL.md +25 -25
  8. package/{template/.continue → .continue}/commands/clone-website.md +25 -25
  9. package/{template/.continue → .continue}/rules/project.md +28 -18
  10. package/{template/.windsurf/workflows → .cursor/commands}/clone-website.md +25 -25
  11. package/.cursor/commands/marketing-social-proof-motion.md +42 -0
  12. package/{template/.cursor → .cursor}/rules/project.mdc +1 -4
  13. package/{template/.gemini → .gemini}/commands/clone-website.toml +25 -25
  14. package/{template/.github → .github}/copilot-instructions.md +28 -18
  15. package/{template/.codex → .github}/skills/clone-website/SKILL.md +25 -25
  16. package/{template/.opencode → .opencode}/commands/clone-website.md +25 -25
  17. package/{template/.cursor/commands → .windsurf/workflows}/clone-website.md +25 -25
  18. package/{template/AGENTS.md → AGENTS.md} +24 -12
  19. package/LICENSE +1 -1
  20. package/README.md +76 -102
  21. package/{template/docs → docs}/research/INSPECTION_GUIDE.md +11 -8
  22. package/launchframe.config.json +14 -0
  23. package/package.json +54 -52
  24. package/{template/scripts → scripts}/recon-playwright.mjs +90 -17
  25. package/src/components/marketing/scribewise-landing.tsx +34 -0
  26. package/bin/launchframe.mjs +0 -315
  27. package/template/.amazonq/cli-agents/clone-website.json +0 -9
  28. package/template/.claude/skills/marketing-landing-production/SKILL.md +0 -36
  29. package/template/.cursor/commands/marketing-landing-production.md +0 -31
  30. package/template/README.md +0 -121
  31. package/template/package.json +0 -63
  32. /package/{template/.aider.conf.yml → .aider.conf.yml} +0 -0
  33. /package/{template/.dockerignore → .dockerignore} +0 -0
  34. /package/{template/.gitattributes → .gitattributes} +0 -0
  35. /package/{template/.github → .github}/ISSUE_TEMPLATE/bug_report.yml +0 -0
  36. /package/{template/.github → .github}/ISSUE_TEMPLATE/config.yml +0 -0
  37. /package/{template/.github → .github}/ISSUE_TEMPLATE/feature_request.yml +0 -0
  38. /package/{template/.github → .github}/PULL_REQUEST_TEMPLATE.md +0 -0
  39. /package/{template/.github → .github}/copilot-setup-steps.yml +0 -0
  40. /package/{template/.github → .github}/workflows/ci.yml +0 -0
  41. /package/{template/.nvmrc → .nvmrc} +0 -0
  42. /package/{template/.windsurfrules → .windsurfrules} +0 -0
  43. /package/{template/CHANGELOG.md → CHANGELOG.md} +0 -0
  44. /package/{template/CLAUDE.md → CLAUDE.md} +0 -0
  45. /package/{template/Dockerfile → Dockerfile} +0 -0
  46. /package/{template/Dockerfile.dev → Dockerfile.dev} +0 -0
  47. /package/{template/GEMINI.md → GEMINI.md} +0 -0
  48. /package/{template/START_HERE.md → START_HERE.md} +0 -0
  49. /package/{template/components.json → components.json} +0 -0
  50. /package/{template/docker-compose.yml → docker-compose.yml} +0 -0
  51. /package/{template/docs → docs}/design-references/.gitkeep +0 -0
  52. /package/{template/docs → docs}/design-references/comparison.png +0 -0
  53. /package/{template/docs → docs}/design-references/playwright-example.com-1440px.png +0 -0
  54. /package/{template/docs → docs}/design-references/playwright-example.com-390px.png +0 -0
  55. /package/{template/eslint.config.mjs → eslint.config.mjs} +0 -0
  56. /package/{template/next.config.ts → next.config.ts} +0 -0
  57. /package/{template/postcss.config.mjs → postcss.config.mjs} +0 -0
  58. /package/{template/public → public}/images/.gitkeep +0 -0
  59. /package/{template/public → public}/seo/.gitkeep +0 -0
  60. /package/{template/public → public}/videos/.gitkeep +0 -0
  61. /package/{template/scripts → scripts}/.gitkeep +0 -0
  62. /package/{template/scripts → scripts}/sync-agent-rules.sh +0 -0
  63. /package/{template/scripts → scripts}/sync-skills.mjs +0 -0
  64. /package/{template/src → src}/app/favicon.ico +0 -0
  65. /package/{template/src → src}/app/globals.css +0 -0
  66. /package/{template/src → src}/app/layout.tsx +0 -0
  67. /package/{template/src → src}/app/page.tsx +0 -0
  68. /package/{template/src → src}/components/ui/button.tsx +0 -0
  69. /package/{template/src → src}/hooks/.gitkeep +0 -0
  70. /package/{template/src → src}/lib/utils.ts +0 -0
  71. /package/{template/src → src}/types/.gitkeep +0 -0
  72. /package/{template/tsconfig.json → tsconfig.json} +0 -0
@@ -39,7 +39,7 @@ If the user provides additional instructions (specific fidelity level, deeper cu
39
39
  ## Pre-Flight
40
40
 
41
41
  1. **Read `launchframe.config.json`** (see Step 0 above). After a fresh `npx launchframe` scaffold, proceed immediately — only echo `url`/`idea` for confirmation if the config looks wrong or the user asked to verify.
42
- 2. **Browser automation.** Prefer an MCP (Chrome DevTools MCP, Playwright MCP, Browserbase MCP, etc.) when it is healthy. **If MCP is missing or in an error state, run `npm run recon` (Playwright)** — see `scripts/recon-playwright.mjs`. It writes `docs/research/computed-snapshot.json`, `docs/research/MEDIA_MANIFEST.md`, and full-page screenshots under `docs/design-references/`. Use `npm run recon:headed` if headless hits a WAF/challenge page. One-time install: `npx playwright install chromium`. Do not skip extraction — adapt the pipeline to the tools that work.
42
+ 2. **Browser automation.** Prefer an MCP (Chrome DevTools MCP, Playwright MCP, Browserbase MCP, etc.) when it is healthy. **If MCP is missing or in an error state, run `npm run recon` (Playwright)** — see `scripts/recon-playwright.mjs`. It performs **stabilized full-document scrolling** at desktop and mobile, writes merged **`computed-snapshot.json`** + **`MEDIA_MANIFEST.md`**, and **full-page** screenshots under `docs/design-references/`. Use `npm run recon:headed` if headless hits a WAF/challenge page. One-time install: `npx playwright install chromium`. Do not skip extraction — adapt the pipeline to the tools that work.
43
43
  3. Validate the resolved URL(s). Normalize and verify each is accessible via your browser MCP tool. If any are invalid, ask the user to correct `launchframe.config.json` (or pass an override) before proceeding.
44
44
  4. Verify the base project builds: `npm run build`. The Next.js + shadcn/ui + Tailwind v4 scaffold should already be in place. If not, tell the user to run `npm install` first.
45
45
  5. Create the output directories if they don't exist: `docs/research/`, `docs/research/components/`, `docs/design-references/`, `scripts/`. Plan `docs/research/MEDIA_MANIFEST.md` as soon as media is inventoried. For multiple clones, also prepare per-site folders like `docs/research/<hostname>/` and `docs/design-references/<hostname>/`.
@@ -55,7 +55,7 @@ These are the truths that separate a successful clone from a "close enough" mess
55
55
 
56
56
  **Motion defaults to Framer Motion.** This template lists `framer-motion` as a dependency. After foundation tokens, ensure `import { motion } from "framer-motion"` (and related APIs: `useScroll`, `useTransform`, `AnimatePresence`, `LayoutGroup`, **`useReducedMotion`**) for: scroll-triggered reveals, staggered children, layout transitions, and gestures — anything beyond a trivial one-property CSS `transition`. In each spec file, add a **Motion** subsection: trigger, duration, easing, delay/stagger, **tier A–E coverage** (see `AGENTS.md` production polish table), reduced-motion fallback, and **implementation: CSS | framer-motion**. Prefer CSS only when it matches the target exactly without JS.
57
57
 
58
- **Illustration & pixel art are production inputs.** Where the target (or post-rebrand layout) lacks convincing visuals, specs MUST still allocate **SVG illustration layers** — hero backdrop cluster, section separators, feature-card scenes tied to copyusing React SVG components (`currentColor` + theme vars). Pixel-art motifs require an explicit palette table in the spec. Do not ship ambiguous gray placeholders when `AGENTS.md` calls for production density on authored landings.
58
+ **Illustration & pixel art are production inputs.** Where the target (or post-rebrand layout) lacks convincing visuals, specs MUST allocate **idea-tailored SVG scenes** — metaphors drawn from `launchframe.config.json#idea`, documented with **Idea tie-in** per assetnot generic gray placeholders or unrelated clipart. Pixel-art motifs require concept justification plus palette table in the spec.
59
59
 
60
60
  ### 1. Completeness Beats Speed
61
61
 
@@ -142,10 +142,12 @@ Every builder agent must verify `npx tsc --noEmit` passes before finishing. Afte
142
142
 
143
143
  Navigate to the target URL with browser MCP.
144
144
 
145
- ### Screenshots
146
- - Take **full-page screenshots** at desktop (1440px) and mobile (390px) viewports
147
- - Save to `docs/design-references/` with descriptive names
148
- - These are your master reference builders will receive section-specific crops/screenshots later
145
+ ### Screenshots *(entire landing — never “above the fold” only)*
146
+ - Capture the **whole marketing surface**: hero through footer (single-page landings). Do **not** stop after the first viewport — lazy-loaded sections, footer nav, and bottom CTAs are required context.
147
+ - Before **every** full-page capture (MCP or Playwright): **slow scroll top → bottom → top** once or twice until `scrollHeight` stops growing, so lazy images/`srcset`/`data-src` resolve where possible.
148
+ - Take **`fullPage: true`** (or MCP equivalent) screenshots at desktop (**1440px**) and mobile (**390px**); save under `docs/design-references/` with descriptive names.
149
+ - **`npm run recon`** already performs stabilized full-document scrolling + merged desktop/mobile asset inventory — prefer running it when automation must match full-page depth reliably.
150
+ - These masters are references — builders still get section crops later, but those crops must exist because **you** scrolled and documented every band first.
149
151
 
150
152
  ### Global Extraction
151
153
  Extract these from the page before doing anything else:
@@ -375,10 +377,12 @@ For each section (or sub-component, if you're breaking it up), create a spec fil
375
377
  - **Library:** <`framer-motion` | CSS-only — justify if CSS-only>
376
378
  - **Keyframes / springs:** <if any — match target curve>
377
379
 
378
- ## Illustration & pixel art *(production uplift)*
380
+ ## Illustration & pixel art *(production uplift — idea-native)*
381
+ - **Idea tie-in:** <one sentence — why this asset belongs only to this product>
382
+ - **Metaphor link:** <which keyword from `idea` / metaphor list this illustrates>
379
383
  - **SVG components:** <named exports, paths using currentColor vs fixed fills>
380
384
  - **Pixel motif:** <palette hex table, grid, scaling — or N/A>
381
- - **Motif thread:** <how illustration echoes logo / OG / favicon>
385
+ - **Motif thread:** <how this echoes logo / OG / favicon for this SaaS>
382
386
 
383
387
  ## Per-State Content (if applicable)
384
388
 
@@ -460,11 +464,7 @@ For every section, replace:
460
464
  3. **Feature/section copy** — rewrite each feature card, callout, stat, and testimonial to fit the SaaS idea. Preserve the count and shape of items (3 feature cards stay 3 feature cards; a 4-column logo bar stays 4 columns). Generate plausible customer-logo names — never use real company names you haven't been authorized to use.
461
465
  4. **CTA labels** — adapt button text to the SaaS idea ("Start free", "Get a demo", "Try it free", etc.). Keep the CTA hierarchy (primary/secondary) identical to the original.
462
466
  5. **Mock data** — for product UI mockups embedded in marketing screenshots (e.g., a fake dashboard inside a hero), generate mock data shaped for the SaaS idea: realistic-looking but fictional rows, charts, conversation logs, etc.
463
- 6. **Imagery** — placeholder-swap any photography or product screenshots that depict the original brand. Prefer using:
464
- - A neutral abstract gradient / shape composition you generate with CSS or SVG
465
- - A Lucide icon arrangement
466
- - Placeholder service URLs only if explicitly allowed by the user
467
- Keep dimensions, aspect ratios, drop shadows, and surrounding spacing identical to the original.
467
+ 6. **Imagery** — Replace photography/screenshots that depict the original brand with visuals **authored for this SaaS idea**, not interchangeable decoration. Before designing: derive a **metaphor list** from `idea` (3–6 concrete hooks). Each hero/feature/OG asset gets an **Idea tie-in** sentence in `docs/research/REBRAND.md`. Prefer bespoke SVG scenes (`src/components/marketing/art/`) or raster under `public/images/marketing/` that preserve dimensions/aspect/shadows from the cloned layout. **Avoid:** unrelated filler (e.g. apparel, random lifestyle props when the product is notes/voice), generic gradient-only heroes, Lucide-icon piles unless the reference was already that minimal — those fail the uniqueness bar in `AGENTS.md`.
468
468
  7. **Metadata** — update `<title>`, meta description, OG tags, and favicon manifest in `src/app/layout.tsx` to reflect the new SaaS. Generate a simple favicon (initial letter on a brand-colored square) if no asset is provided.
469
469
 
470
470
  What you must NOT change in this pass:
@@ -475,25 +475,24 @@ What you must NOT change in this pass:
475
475
 
476
476
  After the rebrand pass, the codebase should look like the original site visually but read like the user's SaaS at a glance. Save a short `docs/research/REBRAND.md` summarizing the product name you chose, the headline rewrites, and any assets you swapped — so the user can audit what's clone-derived vs. authored.
477
477
 
478
- ## Phase 4.6: Production uplift *(sparse references / user asks for prod polish)*
478
+ ## Phase 4.6: Production uplift *(sparse references / stronger idea-specific art)*
479
479
 
480
480
  Run this pass when **any** of the following is true:
481
481
 
482
482
  - The cloned reference is mostly typography with weak imagery (internal demos, minimalist SaaS shells).
483
- - The user asks for **more motion**, **SVG / illustration**, **pixel art**, **brandability**, or **production-ready** marketing polish.
484
- - Visual QA feels “correct but dead” — layout matches but nothing moves and cards use unrelated placeholders.
483
+ - The user asks for **more unique images**, **illustration tailored to the idea**, **stronger visuals**, motion, pixel art, or production polish.
484
+ - Visual QA feels “correct but dead” — layout matches but art is generic, unrelated, or repeated stock metaphors.
485
485
 
486
- **Do not contradict pixel-perfect emulation when cloning a rich reference** — this phase *adds* density only where the brief allows uplift or the reference was inherently flat.
486
+ **Do not contradict pixel-perfect emulation when cloning a rich reference** — this phase *adds* or swaps **idea-native** imagery only where the brief allows uplift or the reference was inherently flat.
487
487
 
488
- Checklist (mirror `AGENTS.md`):
488
+ Checklist (mirror `AGENTS.md` — **uniqueness first**):
489
489
 
490
- 1. **Imagery** — Add layered hero treatment + purposeful SVG scenes per feature (swap nonsense placeholders). Prefer named components under `src/components/marketing/art/`.
491
- 2. **Motion tiers** — Implement at minimum **A + B + one of C/D**, optionally **E**: staggered hero load, `whileInView` sections + card stagger, looping ambient (marquee / caret / SVG dash loop), hover lifts / nav scroll shrink, optional light parallax. Gate loops with **`useReducedMotion()`**.
492
- 3. **Brand** — Establish motif thread + accent tokens in `:root`; refresh favicon / OG sketch to match.
490
+ 1. **Idea-tailored imagery** — Metaphor list from `idea`; replace any asset that could belong to another vertical. Per-asset **Idea tie-in** in `docs/research/PRODUCTION_UPLIFT.md` alongside SVG/raster paths.
491
+ 2. **Density** — Layered hero + distinct scene per feature card in **one shared visual language** (stroke/accent/grid), still idea-specific.
492
+ 3. **Motion tiers** — Implement at minimum **A + B + one of C/D**, optionally **E**: staggered hero load, `whileInView` sections + card stagger, looping ambient (marquee / caret / SVG dash loop), hover lifts / nav scroll shrink, optional light parallax. Gate loops with **`useReducedMotion()`**.
493
+ 4. **Brand** — Motif thread + accent tokens in `:root`; favicon / OG echo **this** product narrative.
493
494
 
494
- Document deltas in `docs/research/PRODUCTION_UPLIFT.md` (what SVGs/motion/accent decisions shipped).
495
-
496
- Invoke `.claude/skills/marketing-landing-production/SKILL.md` as a focused playbook for this pass.
495
+ Document deltas in `docs/research/PRODUCTION_UPLIFT.md`.
497
496
 
498
497
  ## Phase 5: Visual QA Diff
499
498
 
@@ -524,7 +523,7 @@ Before dispatching ANY builder agent, verify you can check every box. If you can
524
523
  - [ ] All images in the section are identified (including overlays and layered compositions)
525
524
  - [ ] Any `<video>` (and poster), Lottie, or canvas-driven hero is identified — not approximated as a static div
526
525
  - [ ] **Motion** subsection filled: tiers **A–E** coverage (see `AGENTS.md`), CSS vs **framer-motion**, durations, easings, stagger, scroll triggers, **reduced-motion** fallback
527
- - [ ] **Illustration** subsection filled when uplift applies: SVG components / palette / motif thread — or explicit **N/A** with justification only on strict clone parity jobs
526
+ - [ ] **Illustration** subsection filled when uplift applies: **Idea tie-in** + metaphor link per asset, SVG/pixel detail — or explicit **N/A** with justification only on strict clone parity jobs
528
527
  - [ ] Responsive behavior is documented for at least desktop and mobile
529
528
  - [ ] Text content is verbatim from the site, not paraphrased
530
529
  - [ ] The builder prompt is under ~150 lines of spec; if over, the section needs to be split
@@ -547,6 +546,7 @@ These are lessons from previous failed clones — each one cost hours of rework:
547
546
  - **Don't bundle unrelated sections into one agent.** A CTA section and a footer are different components with different designs — don't hand them both to one agent and hope for the best.
548
547
  - **Don't skip responsive extraction.** If you only inspect at desktop width, the clone will break at tablet and mobile. Test at 1440, 768, and 390 during extraction.
549
548
  - **Don't forget smooth scroll libraries.** Check for Lenis (`.lenis` class), Locomotive Scroll, or similar. Default browser scrolling feels noticeably different and the user will spot it immediately.
549
+ - **Don't ship interchangeable marketing art.** Random objects, unrelated lifestyle stock, or generic gradients that could match any SaaS violate the **idea-tailored** rule in `AGENTS.md` — every major visual needs a metaphor from `launchframe.config.json#idea`.
550
550
  - **Don't dispatch builders without a spec file.** The spec file forces exhaustive extraction and creates an auditable artifact. Skipping it means the builder gets whatever you can fit in a prompt from memory.
551
551
 
552
552
  ## Completion
@@ -36,7 +36,7 @@ If the user provides additional instructions (specific fidelity level, deeper cu
36
36
  ## Pre-Flight
37
37
 
38
38
  1. **Read `launchframe.config.json`** (see Step 0 above). After a fresh `npx launchframe` scaffold, proceed immediately — only echo `url`/`idea` for confirmation if the config looks wrong or the user asked to verify.
39
- 2. **Browser automation.** Prefer an MCP (Chrome DevTools MCP, Playwright MCP, Browserbase MCP, etc.) when it is healthy. **If MCP is missing or in an error state, run `npm run recon` (Playwright)** — see `scripts/recon-playwright.mjs`. It writes `docs/research/computed-snapshot.json`, `docs/research/MEDIA_MANIFEST.md`, and full-page screenshots under `docs/design-references/`. Use `npm run recon:headed` if headless hits a WAF/challenge page. One-time install: `npx playwright install chromium`. Do not skip extraction — adapt the pipeline to the tools that work.
39
+ 2. **Browser automation.** Prefer an MCP (Chrome DevTools MCP, Playwright MCP, Browserbase MCP, etc.) when it is healthy. **If MCP is missing or in an error state, run `npm run recon` (Playwright)** — see `scripts/recon-playwright.mjs`. It performs **stabilized full-document scrolling** at desktop and mobile, writes merged **`computed-snapshot.json`** + **`MEDIA_MANIFEST.md`**, and **full-page** screenshots under `docs/design-references/`. Use `npm run recon:headed` if headless hits a WAF/challenge page. One-time install: `npx playwright install chromium`. Do not skip extraction — adapt the pipeline to the tools that work.
40
40
  3. Validate the resolved URL(s). Normalize and verify each is accessible via your browser MCP tool. If any are invalid, ask the user to correct `launchframe.config.json` (or pass an override) before proceeding.
41
41
  4. Verify the base project builds: `npm run build`. The Next.js + shadcn/ui + Tailwind v4 scaffold should already be in place. If not, tell the user to run `npm install` first.
42
42
  5. Create the output directories if they don't exist: `docs/research/`, `docs/research/components/`, `docs/design-references/`, `scripts/`. Plan `docs/research/MEDIA_MANIFEST.md` as soon as media is inventoried. For multiple clones, also prepare per-site folders like `docs/research/<hostname>/` and `docs/design-references/<hostname>/`.
@@ -52,7 +52,7 @@ These are the truths that separate a successful clone from a "close enough" mess
52
52
 
53
53
  **Motion defaults to Framer Motion.** This template lists `framer-motion` as a dependency. After foundation tokens, ensure `import { motion } from "framer-motion"` (and related APIs: `useScroll`, `useTransform`, `AnimatePresence`, `LayoutGroup`, **`useReducedMotion`**) for: scroll-triggered reveals, staggered children, layout transitions, and gestures — anything beyond a trivial one-property CSS `transition`. In each spec file, add a **Motion** subsection: trigger, duration, easing, delay/stagger, **tier A–E coverage** (see `AGENTS.md` production polish table), reduced-motion fallback, and **implementation: CSS | framer-motion**. Prefer CSS only when it matches the target exactly without JS.
54
54
 
55
- **Illustration & pixel art are production inputs.** Where the target (or post-rebrand layout) lacks convincing visuals, specs MUST still allocate **SVG illustration layers** — hero backdrop cluster, section separators, feature-card scenes tied to copyusing React SVG components (`currentColor` + theme vars). Pixel-art motifs require an explicit palette table in the spec. Do not ship ambiguous gray placeholders when `AGENTS.md` calls for production density on authored landings.
55
+ **Illustration & pixel art are production inputs.** Where the target (or post-rebrand layout) lacks convincing visuals, specs MUST allocate **idea-tailored SVG scenes** — metaphors drawn from `launchframe.config.json#idea`, documented with **Idea tie-in** per assetnot generic gray placeholders or unrelated clipart. Pixel-art motifs require concept justification plus palette table in the spec.
56
56
 
57
57
  ### 1. Completeness Beats Speed
58
58
 
@@ -139,10 +139,12 @@ Every builder agent must verify `npx tsc --noEmit` passes before finishing. Afte
139
139
 
140
140
  Navigate to the target URL with browser MCP.
141
141
 
142
- ### Screenshots
143
- - Take **full-page screenshots** at desktop (1440px) and mobile (390px) viewports
144
- - Save to `docs/design-references/` with descriptive names
145
- - These are your master reference builders will receive section-specific crops/screenshots later
142
+ ### Screenshots *(entire landing — never “above the fold” only)*
143
+ - Capture the **whole marketing surface**: hero through footer (single-page landings). Do **not** stop after the first viewport — lazy-loaded sections, footer nav, and bottom CTAs are required context.
144
+ - Before **every** full-page capture (MCP or Playwright): **slow scroll top → bottom → top** once or twice until `scrollHeight` stops growing, so lazy images/`srcset`/`data-src` resolve where possible.
145
+ - Take **`fullPage: true`** (or MCP equivalent) screenshots at desktop (**1440px**) and mobile (**390px**); save under `docs/design-references/` with descriptive names.
146
+ - **`npm run recon`** already performs stabilized full-document scrolling + merged desktop/mobile asset inventory — prefer running it when automation must match full-page depth reliably.
147
+ - These masters are references — builders still get section crops later, but those crops must exist because **you** scrolled and documented every band first.
146
148
 
147
149
  ### Global Extraction
148
150
  Extract these from the page before doing anything else:
@@ -372,10 +374,12 @@ For each section (or sub-component, if you're breaking it up), create a spec fil
372
374
  - **Library:** <`framer-motion` | CSS-only — justify if CSS-only>
373
375
  - **Keyframes / springs:** <if any — match target curve>
374
376
 
375
- ## Illustration & pixel art *(production uplift)*
377
+ ## Illustration & pixel art *(production uplift — idea-native)*
378
+ - **Idea tie-in:** <one sentence — why this asset belongs only to this product>
379
+ - **Metaphor link:** <which keyword from `idea` / metaphor list this illustrates>
376
380
  - **SVG components:** <named exports, paths using currentColor vs fixed fills>
377
381
  - **Pixel motif:** <palette hex table, grid, scaling — or N/A>
378
- - **Motif thread:** <how illustration echoes logo / OG / favicon>
382
+ - **Motif thread:** <how this echoes logo / OG / favicon for this SaaS>
379
383
 
380
384
  ## Per-State Content (if applicable)
381
385
 
@@ -457,11 +461,7 @@ For every section, replace:
457
461
  3. **Feature/section copy** — rewrite each feature card, callout, stat, and testimonial to fit the SaaS idea. Preserve the count and shape of items (3 feature cards stay 3 feature cards; a 4-column logo bar stays 4 columns). Generate plausible customer-logo names — never use real company names you haven't been authorized to use.
458
462
  4. **CTA labels** — adapt button text to the SaaS idea ("Start free", "Get a demo", "Try it free", etc.). Keep the CTA hierarchy (primary/secondary) identical to the original.
459
463
  5. **Mock data** — for product UI mockups embedded in marketing screenshots (e.g., a fake dashboard inside a hero), generate mock data shaped for the SaaS idea: realistic-looking but fictional rows, charts, conversation logs, etc.
460
- 6. **Imagery** — placeholder-swap any photography or product screenshots that depict the original brand. Prefer using:
461
- - A neutral abstract gradient / shape composition you generate with CSS or SVG
462
- - A Lucide icon arrangement
463
- - Placeholder service URLs only if explicitly allowed by the user
464
- Keep dimensions, aspect ratios, drop shadows, and surrounding spacing identical to the original.
464
+ 6. **Imagery** — Replace photography/screenshots that depict the original brand with visuals **authored for this SaaS idea**, not interchangeable decoration. Before designing: derive a **metaphor list** from `idea` (3–6 concrete hooks). Each hero/feature/OG asset gets an **Idea tie-in** sentence in `docs/research/REBRAND.md`. Prefer bespoke SVG scenes (`src/components/marketing/art/`) or raster under `public/images/marketing/` that preserve dimensions/aspect/shadows from the cloned layout. **Avoid:** unrelated filler (e.g. apparel, random lifestyle props when the product is notes/voice), generic gradient-only heroes, Lucide-icon piles unless the reference was already that minimal — those fail the uniqueness bar in `AGENTS.md`.
465
465
  7. **Metadata** — update `<title>`, meta description, OG tags, and favicon manifest in `src/app/layout.tsx` to reflect the new SaaS. Generate a simple favicon (initial letter on a brand-colored square) if no asset is provided.
466
466
 
467
467
  What you must NOT change in this pass:
@@ -472,25 +472,24 @@ What you must NOT change in this pass:
472
472
 
473
473
  After the rebrand pass, the codebase should look like the original site visually but read like the user's SaaS at a glance. Save a short `docs/research/REBRAND.md` summarizing the product name you chose, the headline rewrites, and any assets you swapped — so the user can audit what's clone-derived vs. authored.
474
474
 
475
- ## Phase 4.6: Production uplift *(sparse references / user asks for prod polish)*
475
+ ## Phase 4.6: Production uplift *(sparse references / stronger idea-specific art)*
476
476
 
477
477
  Run this pass when **any** of the following is true:
478
478
 
479
479
  - The cloned reference is mostly typography with weak imagery (internal demos, minimalist SaaS shells).
480
- - The user asks for **more motion**, **SVG / illustration**, **pixel art**, **brandability**, or **production-ready** marketing polish.
481
- - Visual QA feels “correct but dead” — layout matches but nothing moves and cards use unrelated placeholders.
480
+ - The user asks for **more unique images**, **illustration tailored to the idea**, **stronger visuals**, motion, pixel art, or production polish.
481
+ - Visual QA feels “correct but dead” — layout matches but art is generic, unrelated, or repeated stock metaphors.
482
482
 
483
- **Do not contradict pixel-perfect emulation when cloning a rich reference** — this phase *adds* density only where the brief allows uplift or the reference was inherently flat.
483
+ **Do not contradict pixel-perfect emulation when cloning a rich reference** — this phase *adds* or swaps **idea-native** imagery only where the brief allows uplift or the reference was inherently flat.
484
484
 
485
- Checklist (mirror `AGENTS.md`):
485
+ Checklist (mirror `AGENTS.md` — **uniqueness first**):
486
486
 
487
- 1. **Imagery** — Add layered hero treatment + purposeful SVG scenes per feature (swap nonsense placeholders). Prefer named components under `src/components/marketing/art/`.
488
- 2. **Motion tiers** — Implement at minimum **A + B + one of C/D**, optionally **E**: staggered hero load, `whileInView` sections + card stagger, looping ambient (marquee / caret / SVG dash loop), hover lifts / nav scroll shrink, optional light parallax. Gate loops with **`useReducedMotion()`**.
489
- 3. **Brand** — Establish motif thread + accent tokens in `:root`; refresh favicon / OG sketch to match.
487
+ 1. **Idea-tailored imagery** — Metaphor list from `idea`; replace any asset that could belong to another vertical. Per-asset **Idea tie-in** in `docs/research/PRODUCTION_UPLIFT.md` alongside SVG/raster paths.
488
+ 2. **Density** — Layered hero + distinct scene per feature card in **one shared visual language** (stroke/accent/grid), still idea-specific.
489
+ 3. **Motion tiers** — Implement at minimum **A + B + one of C/D**, optionally **E**: staggered hero load, `whileInView` sections + card stagger, looping ambient (marquee / caret / SVG dash loop), hover lifts / nav scroll shrink, optional light parallax. Gate loops with **`useReducedMotion()`**.
490
+ 4. **Brand** — Motif thread + accent tokens in `:root`; favicon / OG echo **this** product narrative.
490
491
 
491
- Document deltas in `docs/research/PRODUCTION_UPLIFT.md` (what SVGs/motion/accent decisions shipped).
492
-
493
- Invoke `.claude/skills/marketing-landing-production/SKILL.md` as a focused playbook for this pass.
492
+ Document deltas in `docs/research/PRODUCTION_UPLIFT.md`.
494
493
 
495
494
  ## Phase 5: Visual QA Diff
496
495
 
@@ -521,7 +520,7 @@ Before dispatching ANY builder agent, verify you can check every box. If you can
521
520
  - [ ] All images in the section are identified (including overlays and layered compositions)
522
521
  - [ ] Any `<video>` (and poster), Lottie, or canvas-driven hero is identified — not approximated as a static div
523
522
  - [ ] **Motion** subsection filled: tiers **A–E** coverage (see `AGENTS.md`), CSS vs **framer-motion**, durations, easings, stagger, scroll triggers, **reduced-motion** fallback
524
- - [ ] **Illustration** subsection filled when uplift applies: SVG components / palette / motif thread — or explicit **N/A** with justification only on strict clone parity jobs
523
+ - [ ] **Illustration** subsection filled when uplift applies: **Idea tie-in** + metaphor link per asset, SVG/pixel detail — or explicit **N/A** with justification only on strict clone parity jobs
525
524
  - [ ] Responsive behavior is documented for at least desktop and mobile
526
525
  - [ ] Text content is verbatim from the site, not paraphrased
527
526
  - [ ] The builder prompt is under ~150 lines of spec; if over, the section needs to be split
@@ -544,6 +543,7 @@ These are lessons from previous failed clones — each one cost hours of rework:
544
543
  - **Don't bundle unrelated sections into one agent.** A CTA section and a footer are different components with different designs — don't hand them both to one agent and hope for the best.
545
544
  - **Don't skip responsive extraction.** If you only inspect at desktop width, the clone will break at tablet and mobile. Test at 1440, 768, and 390 during extraction.
546
545
  - **Don't forget smooth scroll libraries.** Check for Lenis (`.lenis` class), Locomotive Scroll, or similar. Default browser scrolling feels noticeably different and the user will spot it immediately.
546
+ - **Don't ship interchangeable marketing art.** Random objects, unrelated lifestyle stock, or generic gradients that could match any SaaS violate the **idea-tailored** rule in `AGENTS.md` — every major visual needs a metaphor from `launchframe.config.json#idea`.
547
547
  - **Don't dispatch builders without a spec file.** The spec file forces exhaustive extraction and creates an auditable artifact. Skipping it means the builder gets whatever you can fit in a prompt from memory.
548
548
 
549
549
  ## Completion
@@ -37,16 +37,26 @@ Treat these as **first-class deliverables**, not polish at the end.
37
37
  2. **Motion** — Match the target’s feel: easing, duration, stagger, scroll triggers. Prefer **`motion` from `framer-motion`** for entrance sequences, viewport-driven animations, shared-layout-style transitions, and anything beyond a one-off CSS transition. Note in each component spec whether behavior is **CSS-only** vs **Framer Motion**.
38
38
  3. **Illustration & brand marks** — Inline **SVG React components** (not only Lucide) for motifs that repeat across sections: logo glyph variants, dividers, grain/noise overlays, hero “scene” shapes, feature-card mini-compositions. Prefer **`currentColor`** + CSS variables so SVGs inherit theme tokens. For **pixel art**, keep a tight palette (4–8 fills), consistent pixel grid logic, and use `style={{ imageRendering: "pixelated" }}` on upscaled raster OR build pixel SVG paths intentionally — never blurry upscale.
39
39
 
40
- ## Production polish for marketing landings *(imagery + motion density + brandability)*
40
+ ## Production polish for marketing landings *(idea-tailored visuals + motion + brand)*
41
41
 
42
- Use this whenever the page is **authored or minimalist** (internal templates, rebranded clones that still feel flat, or targets that are mostly typography). “Looks OK” is not ship-ready — **production landings** stack multiple visual layers, choreographed motion, and recognizable brand cues.
42
+ Use this whenever the page is **authored or minimalist** (internal templates, rebranded clones that still feel flat, or targets that are mostly typography). “Looks OK” is not ship-ready — **production landings** stack multiple visual layers, choreographed motion, and cues that clearly belong to **this** product (`launchframe.config.json#idea`), not any SaaS.
43
+
44
+ ### Idea-tailored imagery *(uniqueness bar)*
45
+
46
+ Generic decoration fails review. Apply this to **every** hero composition, feature-card illustration, OG image sketch, and major `public/` marketing raster.
47
+
48
+ 1. **Derive metaphors from the idea** — Read `idea` (and product name). List 3–6 concrete nouns/verbs the product owns (e.g. voice → waveform, mic; notes → folded page, margin line; sync → paired arrows). Every bespoke visual must trace back to that list — **not** interchangeable clipart (random apparel, unrelated lifestyle objects, vague “business” silhouettes unless the idea demands them).
49
+ 2. **Could this ship on another site unchanged?** If yes, redesign until **no** — different silhouette story, palette accent, or composition so the asset “only fits” this narrative.
50
+ 3. **One tie-in sentence per asset** — In specs or `docs/research/REBRAND.md`, each image/SVG scene gets **Idea tie-in:** `<why this belongs to this product>`.
51
+ 4. **Prefer authored scenes** — Custom SVG narratives (several shapes telling one moment), optional pixel mascot **on-brand** for the category, or composed raster under `public/images/marketing/` when illustration needs texture. Lucide-only piles and neutral blobs are **last resort**, not default.
52
+ 5. **Distinct accents** — Pick accent hues/shapes suggested by the idea’s personality (precise studio vs warm companion vs rugged utility); avoid default gray-only SaaS anonymity unless the brief is explicitly brutalist.
43
53
 
44
54
  ### Imagery density (every fold earns a visual idea)
45
55
 
46
- - **Hero** — Never headline-only on white: add at least two of — soft gradient mesh / radial spotlight, subtle SVG grid or notebook lines, floating glyph cluster, ambient particle dots, masked photo or device frame with **real `public/` raster**, thin geometric frame that echoes the logo.
47
- - **Between sections** — Optional SVG waves, angled cuts, or dashed “tape” strips so rhythm feels intentional.
48
- - **Feature rows** — Replace generic placeholders (random shirts, blank boxes) with **purpose-built SVG scenes** tied to copy (capture → waveform + mic; workspace → windows + avatars; publish → export arrows + formats). Each card gets **foreground illustration + supporting UI chrome**, not one flat rectangle.
49
- - **Social proof** — Logo strip may use grayscale marks; add **slow infinite marquee** or gentle opacity drift — motion sells “living product.”
56
+ - **Hero** — Never headline-only on white: add at least two of — soft gradient mesh / radial spotlight, **idea-specific** SVG cluster (metaphors from the list above), notebook/grid lines when the idea is docs, waveform device frame when the idea is capture, masked **purpose-built** raster in `public/images/marketing/`, geometric frame echoing **this** logo shape.
57
+ - **Between sections** — Optional dividers whose pattern/stroke **echoes the product motif** (not a stock wave).
58
+ - **Feature rows** — Each card illustration is a **different** moment in the same visual language (shared stroke weight, accent, or grid) all still **idea-native** (e.g. capture → transcript lines; workspace → shared cursors; publish → export channels). No unrelated filler.
59
+ - **Social proof** — Logo strip may use grayscale marks; add **slow infinite marquee** or gentle opacity drift — motion sells “living product.” Name recognizable companies where appropriate; use lawful logo marks under `public/images/logos/` (or generate **original** tiles — never counterfeit trademarks). Full workflow: **`.claude/skills/marketing-social-proof-motion/SKILL.md`** · Cursor **`/marketing-social-proof-motion`**.
50
60
 
51
61
  ### Motion choreography *(ship several layers; respect `prefers-reduced-motion`)*
52
62
 
@@ -77,9 +87,7 @@ Always gate looping motion: **`useReducedMotion()`** from Framer Motion — swap
77
87
 
78
88
  ### Spec requirement *(hand-off quality)*
79
89
 
80
- When writing `docs/research/components/*.spec.md`, add sections **Illustration** (layers, SVG components, raster paths) and expand **Motion** with tier **A–E** coverage and reduced-motion fallback. Builders should not invent motion ad hoc — the spec states durations and triggers.
81
-
82
- Invoke **`marketing-landing-production`** (`.claude/skills/marketing-landing-production/SKILL.md`) when the user asks for **prod-ready polish**, **more motion**, **SVG/pixel art**, or **stronger branding** on an existing landing.
90
+ When writing `docs/research/components/*.spec.md`, add sections **Illustration** (**Idea tie-in** per asset, layers, SVG components, raster paths) and expand **Motion** with tier **A–E** coverage and reduced-motion fallback. Builders should not invent motion ad hoc — the spec states durations and triggers.
83
91
 
84
92
  ## Commands
85
93
  - `npm run dev` — Start dev server
@@ -87,7 +95,7 @@ Invoke **`marketing-landing-production`** (`.claude/skills/marketing-landing-pro
87
95
  - `npm run lint` — ESLint check
88
96
  - `npm run typecheck` — TypeScript check
89
97
  - `npm run check` — Run lint + typecheck + build
90
- - **`npm run recon`** — **Playwright** capture: full-page screenshots, `computed-snapshot.json`, `MEDIA_MANIFEST.md` (use when Browser MCP / Chrome DevTools MCP is broken or missing)
98
+ - **`npm run recon`** — **Playwright**: stabilized **full-document** scrolling at **desktop + mobile**, merged **`computed-snapshot.json`** + **`MEDIA_MANIFEST.md`**, **full-page** screenshots under `docs/design-references/` (use when Browser MCP / Chrome DevTools MCP is broken or missing)
91
99
  - **`npm run recon:headed`** — Same as `recon` but **headed** Chromium (often better for WAF / “Just a moment…” pages)
92
100
 
93
101
  **Playwright browser binaries (once per machine):** `npx playwright install chromium`
@@ -95,6 +103,10 @@ Invoke **`marketing-landing-production`** (`.claude/skills/marketing-landing-pro
95
103
  ## When Browser MCP is down
96
104
  Prefer **Playwright** for repeatable extraction in-repo — do **not** rely on Chrome DevTools MCP alone.
97
105
 
106
+ ### Full landing coverage (agents + automation)
107
+
108
+ Whether using MCP or Playwright, extraction must cover the **entire visible landing** (hero → footer): slow-scroll until lazy content settles, then **`fullPage`** screenshots — never treat “what fits in one viewport” as sufficient for inventory or specs.
109
+
98
110
  1. Run **`npm run recon`** (or **`npm run recon:headed`** if headless hits a challenge page).
99
111
  2. Read **`docs/research/computed-snapshot.json`**, **`docs/research/MEDIA_MANIFEST.md`**, and **`docs/research/EXTRACTION_LIMITATIONS.md`** before writing specs.
100
112
  3. Fill **`scripts/download-assets.mjs`** from `MEDIA_MANIFEST.md` and run it to populate `public/images/` and `public/videos/`.
@@ -109,7 +121,8 @@ Prefer **Playwright** for repeatable extraction in-repo — do **not** rely on C
109
121
  ## Design Principles
110
122
  - **Images & video fidelity** — prefer real downloaded assets; preserve aspect ratio, `object-fit`, layering, and poster frames. Rebrand pass may **swap** URLs for IP-safe alternates but must keep layout identical.
111
123
  - **Motion fidelity** — timing and easing matter as much as color; use Framer Motion when CSS alone cannot match staggered or scroll-driven behavior.
112
- - **Production landing density** — For authored/minimal pages, deliberately add **SVG illustration layers**, **pixel-art accents**, and **tiered motion (A–E)** per “Production polish” above; static monochrome layouts are incomplete unless the user explicitly wants extreme minimalism.
124
+ - **Idea-specific imagery** — Marketing art (SVG, raster, OG) must be **tailored to `launchframe.config.json#idea`**: explicit metaphors, per-asset **Idea tie-in** notes, and **no interchangeable filler** that could belong to any generic SaaS.
125
+ - **Production landing density** — For authored/minimal pages, deliberately add **idea-specific** illustration (not generic SaaS filler), **pixel-art accents** when they reinforce the metaphor, and **tiered motion (A–E)** per “Production polish” above; static monochrome layouts are incomplete unless the user explicitly wants extreme minimalism.
113
126
  - **Pixel-perfect emulation** — match the target's spacing, colors, typography exactly
114
127
  - **No personal aesthetic changes during emulation phase** — match 1:1 first, rebrand later
115
128
  - **Real content during extraction** — use actual text and assets from the target site so the clone scaffolds against real shapes
@@ -143,6 +156,5 @@ scripts/ # Asset download scripts
143
156
  - When launching Claude Code agent teams, ALWAYS have each teammate work in their own worktree branch and merge everyone's work at the end, resolving any merge conflicts smartly since you are basically serving the orchestrator role and have full context to our goals, work given, work achieved, and desired outcomes.
144
157
  - After editing `AGENTS.md`, run `bash scripts/sync-agent-rules.sh` to regenerate platform-specific instruction files.
145
158
  - After editing `.claude/skills/clone-website/SKILL.md`, run `node scripts/sync-skills.mjs` to regenerate the skill for all platforms.
146
- - After editing `.claude/skills/marketing-landing-production/SKILL.md`, update `.cursor/commands/marketing-landing-production.md` to match (Cursor command is maintained beside the Claude skill until sync-skills grows multi-skill support).
147
159
 
148
160
  @docs/research/INSPECTION_GUIDE.md
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Evan Gruhlkey and Launchframe contributors
3
+ Copyright (c) 2025 JCodesMore
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,86 +1,36 @@
1
- # Launchframe
1
+ # Launchframe Project
2
2
 
3
- > **Scaffold a SaaS-ready Next.js codebase from any URL in one command.**
3
+ This project was scaffolded by **[Launchframe](https://github.com/evangruhlkey/launchframe)** an AI-powered website cloner + SaaS rebrander.
4
4
 
5
5
  ```bash
6
6
  npx launchframe@latest <url> "<saas idea>"
7
7
  ```
8
8
 
9
- Launchframe drops an [AI-cloner template](https://github.com/JCodesMore/ai-website-cloner-template) into **your current folder (project root)** by default — so **`.cursor`**, **`.claude`**, and the rest of the dotfolders sit where your editor expects them when you open that folder. It **runs `npm install` for you**. Then tell your AI **Build it** (same as `/clone-website`).
9
+ Dependencies were installed for you. Files were written to **this directory** (project root) so **`.cursor`**, **`.claude`**, etc. work when you open this folder in your editor. Config lives in **`launchframe.config.json`** (`url` + SaaS `idea`).
10
10
 
11
- ## Why Launchframe
11
+ ---
12
12
 
13
- Cloning a website is a solved problem if you have a great AI agent and a great template. What's missing is **a one-command entrypoint that wires those together with your specific intent**.
13
+ ## Quick start (two steps)
14
14
 
15
- - Pick a real, beautiful, production-tested landing page
16
- - Pick the SaaS you want to ship
17
- - ✅ Get a buildable Next.js codebase in seconds, ready for your AI agent to clone + rebrand
15
+ 1. **Open this folder** in [Cursor](https://cursor.com/) the directory that **contains** `.cursor/` (not a parent folder).
16
+ 2. In chat, say: **Build it.**
18
17
 
19
- You spend your time on product, not on translating Figma boxes into Tailwind.
18
+ Your AI reads [`launchframe.config.json`](./launchframe.config.json) and [`AGENTS.md`](./AGENTS.md) and runs the full clone + rebrand pipeline (same as **`/clone-website`**).
20
19
 
21
- ## Quick Start
20
+ Rather read a postcard? See [`START_HERE.md`](./START_HERE.md).
22
21
 
23
- From an **empty** project folder (or after `git init` only):
22
+ ## What `/clone-website` does
24
23
 
25
- ```bash
26
- mkdir my-saas && cd my-saas
27
- npx launchframe@latest https://linear.app "AI-powered customer feedback platform"
28
- ```
29
-
30
- Then open **this folder** in [Cursor](https://cursor.com/) and chat: **Build it.**
24
+ A multi-phase pipeline runs inside your AI agent:
31
25
 
32
- Files land in the **current directory** so workspace rules apply. Prefer a subfolder? Use `--dir launchframe-app`.
26
+ 1. **Reconnaissance** screenshots, design-token extraction, **image/video inventory** (`MEDIA_MANIFEST.md`), interaction sweep (scroll, click, hover, responsive)
27
+ 2. **Foundation** — fonts, globals, **`framer-motion`**, **download images & videos** to `public/` before most UI build
28
+ 3. **Component Specs** — writes detailed spec files (`docs/research/components/`) with exact CSS, **local media paths**, and **Motion** (CSS vs Framer)
29
+ 4. **Parallel Build** — dispatches builder agents in git worktrees, one per section
30
+ 5. **SaaS Rebrand Pass** — swaps product name, headlines, feature copy, CTAs, and brand marks to match `launchframe.config.json#idea`. Visuals stay 1:1.
31
+ 6. **Assembly & Visual QA** — merges worktrees, wires up the page, runs visual diff against the original
33
32
 
34
- Optional: **`/clone-website`** in Cursor, or **`--skip-install`** for CI / debugging.
35
-
36
- ```bash
37
- npx launchframe@latest https://linear.app "My idea" --skip-install
38
- ```
39
-
40
- ## What gets generated
41
-
42
- ```
43
- my-saas/ (or use --dir to create a subfolder)
44
- ├─ START_HERE.md ← "open Cursor, say Build it"
45
- ├─ launchframe.config.json ← url + saas idea (the directive)
46
- ├─ AGENTS.md ← agent instructions (single source of truth)
47
- ├─ .cursor/ ← at project root (Cursor rules + /clone-website)
48
- ├─ .claude/ ← Claude Code skill
49
- ├─ .codex/ .gemini/ .opencode/ .windsurf/ .github/ .augment/
50
- │ .continue/ .amazonq/ ← every other agent gets the same skill, format-adapted
51
- ├─ src/ ← Next.js 16 + shadcn/ui + Tailwind v4 scaffold
52
- ├─ public/ ← becomes populated by the cloner with real assets
53
- ├─ docs/research/ ← extraction artifacts the cloner writes during the run
54
- └─ scripts/ ← asset download + sync scripts
55
- ```
56
-
57
- ## CLI Reference
58
-
59
- ```
60
- npx launchframe@latest <url> "<saas idea>" [options]
61
-
62
- Arguments:
63
- <url> URL of the site you want to clone (e.g. https://linear.app)
64
- <saas idea> One-line description of the SaaS you're building
65
-
66
- Options:
67
- --dir <path> Output folder (default: . — current directory / project root)
68
- --force Merge into a non-empty directory (use with care)
69
- --skip-install Skip npm install (for CI / debugging only)
70
- --help, -h Show this message
71
- --version, -v Show the version
72
- ```
73
-
74
- ### Examples
75
-
76
- ```bash
77
- npx launchframe@latest https://linear.app "AI-powered customer feedback platform"
78
-
79
- npx launchframe@latest https://vercel.com "DevOps for ML" --dir launchframe-app
80
-
81
- # Hostname-only — launchframe will prepend https://
82
- npx launchframe@latest stripe.com "B2B billing for AI agent companies"
83
- ```
33
+ Each builder agent receives the full component spec inline — exact `getComputedStyle()` values, interaction models, multi-state content, responsive breakpoints, asset paths. No guessing.
84
34
 
85
35
  ## Supported AI Agents
86
36
 
@@ -88,60 +38,84 @@ npx launchframe@latest stripe.com "B2B billing for AI agent companies"
88
38
  | ------------------------------------------------------------- | -------------------------- |
89
39
  | [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | **Recommended** — Opus 4.7 |
90
40
  | [Codex CLI](https://github.com/openai/codex) | Supported |
91
- | [Cursor](https://cursor.com/) | Supported |
92
- | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | Supported |
93
- | [GitHub Copilot](https://github.com/features/copilot) | Supported |
94
41
  | [OpenCode](https://opencode.ai/) | Supported |
42
+ | [GitHub Copilot](https://github.com/features/copilot) | Supported |
43
+ | [Cursor](https://cursor.com/) | Supported |
95
44
  | [Windsurf](https://codeium.com/windsurf) | Supported |
96
- | [Cline](https://github.com/cline/cline) / Roo Code | Supported |
45
+ | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | Supported |
46
+ | [Cline](https://github.com/cline/cline) | Supported |
47
+ | [Roo Code](https://github.com/RooCodeInc/Roo-Code) | Supported |
97
48
  | [Continue](https://continue.dev/) | Supported |
98
49
  | [Amazon Q](https://aws.amazon.com/q/developer/) | Supported |
99
50
  | [Augment Code](https://www.augmentcode.com/) | Supported |
100
51
  | [Aider](https://aider.chat/) | Supported |
101
52
 
102
- Every supported agent receives the same `/clone-website` skill — it's auto-synced from a single source-of-truth file in the template.
103
-
104
- ## How `/clone-website` Works
53
+ ## Tech Stack
105
54
 
106
- A multi-phase pipeline runs inside your AI agent. Browser automation MCP (Chrome MCP / Playwright MCP / Browserbase MCP) is required.
55
+ - **Next.js 16** App Router, React 19, TypeScript strict
56
+ - **shadcn/ui** — Radix primitives + Tailwind CSS v4
57
+ - **Tailwind CSS v4** — oklch design tokens
58
+ - **Framer Motion** — default for non-trivial marketing animation (scroll reveals, staggers, layout); see `AGENTS.md`
59
+ - **Lucide React** — default icons (replaced by extracted SVGs during cloning)
60
+ - **Media** — targets download to `public/images/` & `public/videos/` per `docs/research/MEDIA_MANIFEST.md` (see `INSPECTION_GUIDE.md`)
107
61
 
108
- 1. **Reconnaissance** — full-page screenshots at desktop + mobile, design-token extraction, mandatory scroll/click/hover/responsive sweep
109
- 2. **Foundation** — updates fonts, colors, globals.css; downloads all assets; extracts SVG icons
110
- 3. **Component Specs** — writes detailed `.spec.md` files for every section with exact `getComputedStyle()` values
111
- 4. **Parallel Build** — dispatches builder agents in git worktrees, one per section/component
112
- 5. **SaaS Rebrand Pass** — swaps product name, headlines, feature copy, CTAs, and brand marks to match `launchframe.config.json#idea`. Spacing, color, typography, animations stay 1:1
113
- 6. **Assembly + Visual QA** — merges worktrees, wires `src/app/page.tsx`, runs side-by-side diff against the original
114
-
115
- Each builder agent gets the full component spec inline. No guessing.
62
+ ## Prerequisites
116
63
 
117
- ## Editing the Config Mid-Project
64
+ - [Node.js](https://nodejs.org/) 24+
65
+ - An AI coding agent with browser automation MCP **or** [Playwright](https://playwright.dev/) for `npm run recon` when MCP is unavailable
66
+ - **First-time Playwright browsers:** after `npm install`, run `npx playwright install chromium`
118
67
 
119
- `launchframe.config.json` is the contract between you and the skill. Change either field any time and re-invoke `/clone-website`:
68
+ ## Project Structure
120
69
 
121
- ```json
122
- {
123
- "url": "https://stripe.com",
124
- "idea": "Usage-based billing for AI agent startups"
125
- }
70
+ ```
71
+ src/
72
+ app/ # Next.js routes
73
+ components/ # React components
74
+ ui/ # shadcn/ui primitives
75
+ icons.tsx # Extracted SVG icons
76
+ lib/utils.ts # cn() utility
77
+ types/ # TypeScript interfaces
78
+ hooks/ # Custom React hooks
79
+ public/
80
+ images/ # Downloaded images from target
81
+ videos/ # Downloaded videos from target
82
+ seo/ # Favicons, OG images
83
+ docs/
84
+ research/ # Extraction output, component specs, REBRAND.md
85
+ design-references/ # Screenshots
86
+ scripts/
87
+ sync-agent-rules.sh # Regenerate agent instruction files
88
+ sync-skills.mjs # Regenerate /clone-website for all platforms
89
+ launchframe.config.json # ← URL + SaaS idea (single source of truth)
90
+ AGENTS.md # Agent instructions (single source of truth)
91
+ START_HERE.md # "Open Cursor → say Build it"
92
+ CLAUDE.md # Claude Code config (imports AGENTS.md)
93
+ GEMINI.md # Gemini CLI config (imports AGENTS.md)
126
94
  ```
127
95
 
128
- ## Built On
96
+ ## Commands
129
97
 
130
- - The amazing [`ai-website-cloner-template`](https://github.com/JCodesMore/ai-website-cloner-template) by [@JCodesMore](https://github.com/JCodesMore) — Launchframe vendors and extends this as its payload
131
- - [Next.js 16](https://nextjs.org/), [React 19](https://react.dev/), [shadcn/ui](https://ui.shadcn.com/), [Tailwind CSS v4](https://tailwindcss.com/)
98
+ ```bash
99
+ npm run dev # Start dev server
100
+ npm run build # Production build
101
+ npm run lint # ESLint check
102
+ npm run typecheck # TypeScript check
103
+ npm run check # Run lint + typecheck + build
104
+ ```
132
105
 
133
- ## Prerequisites
106
+ ## Use Cases
134
107
 
135
- - [Node.js](https://nodejs.org/) 18+ to run the CLI
136
- - [Node.js](https://nodejs.org/) 24+ inside the scaffolded project (for Next.js 16)
137
- - An AI coding agent with browser automation MCP
108
+ - **Launch a SaaS faster** start from a proven landing page, not a blank canvas
109
+ - **Platform migration** rebuild a site you own from WordPress/Webflow/Squarespace into a modern Next.js codebase
110
+ - **Lost source code** your site is live but the repo is gone; get the code back in a modern format
111
+ - **Learning** — deconstruct how production sites achieve specific layouts, animations, and responsive behavior
138
112
 
139
113
  ## Not Intended For
140
114
 
141
- - Phishing or impersonation
142
- - Passing off someone else's design as your own
143
- - Violating terms of service (some sites prohibit scraping or reproduction check first)
115
+ - **Phishing or impersonation** — this project must not be used for deceptive purposes, impersonation, or any activity that breaks the law
116
+ - **Passing off someone's design as your own** — logos, brand assets, and original copy belong to their owners
117
+ - **Violating terms of service** some sites prohibit scraping or reproduction. Check first
144
118
 
145
119
  ## License
146
120
 
147
- MIT — see [LICENSE](./LICENSE).
121
+ MIT