launchframe 0.2.2 → 0.2.4

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.
@@ -36,16 +36,22 @@ 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 is required.** Check for available browser MCP tools (Chrome MCP, Playwright MCP, Browserbase MCP, Puppeteer MCP, etc.). Use whichever is available if multiple exist, prefer Chrome MCP. If none are detected, ask the user which browser tool they have and how to connect it. This skill cannot work without browser automation.
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.
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
- 5. Create the output directories if they don't exist: `docs/research/`, `docs/research/components/`, `docs/design-references/`, `scripts/`. For multiple clones, also prepare per-site folders like `docs/research/<hostname>/` and `docs/design-references/<hostname>/`.
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>/`.
43
43
  6. When working with multiple sites in one command, optionally confirm whether to run them in parallel (recommended, if resources allow) or sequentially to avoid overload.
44
44
 
45
45
  ## Guiding Principles
46
46
 
47
47
  These are the truths that separate a successful clone from a "close enough" mess. Internalize them — they should inform every decision you make.
48
48
 
49
+ ### 0. Launchframe priorities: media & motion (do not defer)
50
+
51
+ **Raster & video are first-class.** Before you treat the page as “mostly typography,” run a dedicated **media inventory** (see `@docs/research/INSPECTION_GUIDE.md` Priority section): every `<img>`, `<picture>` / `<source>`, `<video>` (+ poster), and non-trivial `background-image`. Download to `public/images/` and `public/videos/` and write `docs/research/MEDIA_MANIFEST.md` (URL → local path, or `BLOCKED` + reason). Component specs MUST list concrete `public/...` paths; if you use a placeholder, say why in `docs/research/EXTRACTION_LIMITATIONS.md`. Never silently drop a hero layer, reel, or og visual.
52
+
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`) 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, and **implementation: CSS | framer-motion**. Prefer CSS only when it matches the target exactly without JS.
54
+
49
55
  ### 1. Completeness Beats Speed
50
56
 
51
57
  Every builder agent must receive **everything** it needs to do its job perfectly: screenshot, exact CSS values, downloaded assets with local paths, real text content, component structure. If a builder has to guess anything — a color, a font size, a padding value — you have failed at extraction. Take the extra minute to extract one more property rather than shipping an incomplete brief.
@@ -190,11 +196,12 @@ Save this as `docs/research/PAGE_TOPOLOGY.md` — it becomes your assembly bluep
190
196
  This is sequential. Do it yourself (not delegated to an agent) since it touches many files:
191
197
 
192
198
  1. **Update fonts** in `layout.tsx` to match the target site's actual fonts
193
- 2. **Update globals.css** with the target's color tokens, spacing values, keyframe animations, utility classes, and any **global scroll behaviors** (Lenis, smooth scroll CSS, scroll-snap on body)
194
- 3. **Create TypeScript interfaces** in `src/types/` for the content structures you've observed
195
- 4. **Extract SVG icons** — find all inline `<svg>` elements on the page, deduplicate them, and save as named React components in `src/components/icons.tsx`. Name them by visual function (e.g., `SearchIcon`, `ArrowRightIcon`, `LogoIcon`).
196
- 5. **Download global assets** write and run a Node.js script (`scripts/download-assets.mjs`) that downloads all images, videos, and other binary assets from the page to `public/`. Preserve meaningful directory structure.
197
- 6. Verify: `npm run build` passes
199
+ 2. **Confirm Framer Motion** `framer-motion` should already be in `package.json`. If missing, add it (`npm install framer-motion`) so builders can import `motion` without ad-hoc library drift.
200
+ 3. **Update globals.css** with the target's color tokens, spacing values, keyframe animations, utility classes, and any **global scroll behaviors** (Lenis, smooth scroll CSS, scroll-snap on body)
201
+ 4. **Media inventory + download (early, high priority)** — run the asset discovery script (below) via browser MCP, write `docs/research/MEDIA_MANIFEST.md`, then implement **`scripts/download-assets.mjs`** and execute it so **images** land in `public/images/` and **videos** (+ posters) in `public/videos/` (or a clear subdirectory scheme under `public/`). Batch parallel downloads (4 concurrent) with errors logged — do not claim success if URLs failed. This step should complete **before** most section components are built so builders use real paths.
202
+ 5. **Create TypeScript interfaces** in `src/types/` for the content structures you've observed
203
+ 6. **Extract SVG icons** — find all inline `<svg>` elements on the page, deduplicate them, and save as named React components in `src/components/icons.tsx`. Name them by visual function (e.g., `SearchIcon`, `ArrowRightIcon`, `LogoIcon`).
204
+ 7. Verify: `npm run build` passes
198
205
 
199
206
  ### Asset Discovery Script Pattern
200
207
 
@@ -351,11 +358,16 @@ For each section (or sub-component, if you're breaking it up), create a spec fil
351
358
  - **State A (before):** maxWidth: 100vw, boxShadow: none, borderRadius: 0
352
359
  - **State B (after):** maxWidth: 1200px, boxShadow: 0 4px 20px rgba(0,0,0,0.1), borderRadius: 16px
353
360
  - **Transition:** transition: all 0.3s ease
354
- - **Implementation approach:** <CSS transition + scroll listener | IntersectionObserver | CSS animation-timeline | etc.>
361
+ - **Implementation approach:** <CSS transition + scroll listener | IntersectionObserver | CSS animation-timeline | **framer-motion** (`motion`, `whileInView`, stagger container) | etc.>
355
362
 
356
363
  ### Hover states
357
364
  - **<Element>:** <property>: <before> → <after>, transition: <value>
358
365
 
366
+ ## Motion (Framer Motion vs CSS)
367
+ - **Entrance / scroll reveals:** <e.g. fade+translateY, staggerChildren — specify duration, easing, delay, viewport `once`/`margin`>
368
+ - **Library:** <`framer-motion` | CSS-only — justify if CSS-only>
369
+ - **Keyframes / springs:** <if any — match target curve>
370
+
359
371
  ## Per-State Content (if applicable)
360
372
 
361
373
  ### State: "Featured"
@@ -367,9 +379,10 @@ For each section (or sub-component, if you're breaking it up), create a spec fil
367
379
  - Title: "..."
368
380
  - Cards: [...]
369
381
 
370
- ## Assets
371
- - Background image: `public/images/<file>.webp`
372
- - Overlay image: `public/images/<file>.png`
382
+ ## Assets (images & video — required detail)
383
+ - Raster: `public/images/<file>` — dimensions, `object-fit`, lazy if below fold
384
+ - Video: `public/videos/<file>` — poster `public/images/...` or `public/videos/...`, autoplay/muted/loop, controls
385
+ - Background layers: which div uses `background-image` and resolved URL → local path
373
386
  - Icons used: <ArrowIcon>, <SearchIcon> from icons.tsx
374
387
 
375
388
  ## Text Content (verbatim)
@@ -443,7 +456,7 @@ For every section, replace:
443
456
  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.
444
457
 
445
458
  What you must NOT change in this pass:
446
- - Spacing, padding, typography scale, color tokens, animations, responsive breakpoints — those are still 1:1 to the original
459
+ - Spacing, padding, typography scale, color tokens, **animation timing & motion choreography** (including Framer Motion `variants` / `transition` props), responsive breakpoints — those are still 1:1 to the original
447
460
  - Section order, section count, component structure
448
461
  - Interaction models (scroll-driven stays scroll-driven, etc.)
449
462
  - Any computed-style value extracted in Phase 3
@@ -477,6 +490,8 @@ Before dispatching ANY builder agent, verify you can check every box. If you can
477
490
  - [ ] For scroll-driven components: trigger threshold, before/after styles, and transition are recorded
478
491
  - [ ] For hover states: before/after values and transition timing are recorded
479
492
  - [ ] All images in the section are identified (including overlays and layered compositions)
493
+ - [ ] Any `<video>` (and poster), Lottie, or canvas-driven hero is identified — not approximated as a static div
494
+ - [ ] **Motion** subsection filled: CSS vs **framer-motion**, durations, easings, stagger, scroll triggers
480
495
  - [ ] Responsive behavior is documented for at least desktop and mobile
481
496
  - [ ] Text content is verbatim from the site, not paraphrased
482
497
  - [ ] The builder prompt is under ~150 lines of spec; if over, the section needs to be split
@@ -493,6 +508,8 @@ These are lessons from previous failed clones — each one cost hours of rework:
493
508
  - **Don't build everything in one monolithic commit.** The whole point of this pipeline is incremental progress with verified builds at each step.
494
509
  - **Don't reference docs from builder prompts.** Each builder gets the CSS spec inline in its prompt — never "see DESIGN_TOKENS.md for colors." The builder should have zero need to read external docs.
495
510
  - **Don't skip asset extraction.** Without real images, videos, and fonts, the clone will always look fake regardless of how perfect the CSS is.
511
+ - **Don't defer image/video download to the end.** Run `MEDIA_MANIFEST.md` + `download-assets.mjs` during foundation so components reference real `public/` paths from the first build.
512
+ - **Don't fake complex motion with a single CSS `transition` when the target uses staggered, scroll-scrubbed, or layout-driven animation** — use **`framer-motion`** (`motion`, `whileInView`, `variants`, `staggerChildren`) and match duration/easing from extraction.
496
513
  - **Don't give a builder agent too much scope.** If you're writing a builder prompt and it's getting long because the section is complex, that's a signal to break it into smaller tasks.
497
514
  - **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.
498
515
  - **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.
@@ -507,7 +524,7 @@ When done, report:
507
524
  - Total sections built
508
525
  - Total components created
509
526
  - Total spec files written (should match components)
510
- - Total assets downloaded (images, videos, SVGs, fonts)
527
+ - Total assets downloaded (images, videos, SVGs, fonts) — path to `docs/research/MEDIA_MANIFEST.md`
511
528
  - Rebrand summary (path to `docs/research/REBRAND.md`)
512
529
  - Build status (`npm run build` result)
513
530
  - Visual QA results (any remaining discrepancies)
@@ -1,79 +1,100 @@
1
- <!-- BEGIN:nextjs-agent-rules -->
2
- # This is NOT the Next.js you know
3
-
4
- This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
5
- <!-- END:nextjs-agent-rules -->
6
-
7
- # Launchframe Project (AI Website Cloner + SaaS Rebrand)
8
-
9
- ## What This Is
10
- This project was scaffolded by [Launchframe](https://github.com/evangruhlkey/launchframe) via `npx launchframe@latest <url> "<saas idea>"`. It is a Next.js + shadcn/ui + Tailwind v4 base wired with an AI-cloner skill (`/clone-website`) that reverse-engineers a real website pixel-perfectly and then re-skins its copy/branding for the user's SaaS idea.
11
-
12
- ## Single Source of Truth: `launchframe.config.json`
13
- At the project root there is a `launchframe.config.json` containing:
14
- - `url` — the visual source-of-truth to clone
15
- - `idea` — the SaaS idea used as the rebranding directive after the clone
16
-
17
- **Always read this file first** at the start of any cloning or build task. The `/clone-website` skill depends on it.
18
-
19
- ## What the user says (zero-setup flow)
20
- Users scaffold with `npx launchframe@latest <url> "<saas idea>"` — `npm install` already ran — then they open this folder and say **Build it** (or **Go**, **Ship it**, **Clone the site**).
21
-
22
- When you see that with no other instructions, **start the full clone-website pipeline immediately** using only `launchframe.config.json` for `url` and `idea`. Do not ask them to repeat the URL unless the config is missing or invalid. `/clone-website` is an alias for the same work.
23
-
24
- ## Tech Stack
25
- - **Framework:** Next.js 16 (App Router, React 19, TypeScript strict)
26
- - **UI:** shadcn/ui (Radix primitives, Tailwind CSS v4, `cn()` utility)
27
- - **Icons:** Lucide React (defaultwill be replaced/supplemented by extracted SVGs)
28
- - **Styling:** Tailwind CSS v4 with oklch design tokens
29
- - **Deployment:** Vercel
30
-
31
- ## Commands
32
- - `npm run dev` — Start dev server
33
- - `npm run build` Production build
34
- - `npm run lint` ESLint check
35
- - `npm run typecheck` — TypeScript check
36
- - `npm run check` Run lint + typecheck + build
37
-
38
- ## Code Style
39
- - TypeScript strict mode, no `any`
40
- - Named exports, PascalCase components, camelCase utils
41
- - Tailwind utility classes, no inline styles
42
- - 2-space indentation
43
- - Responsive: mobile-first
44
-
45
- ## Design Principles
46
- - **Pixel-perfect emulation**match the target's spacing, colors, typography exactly
47
- - **No personal aesthetic changes during emulation phase** — match 1:1 first, rebrand later
48
- - **Real content during extraction** use actual text and assets from the target site so the clone scaffolds against real shapes
49
- - **Rebrand pass swaps copy, not visuals** — once the clone is built, replace product name, headlines, feature copy, and brand marks with content tuned to `launchframe.config.json#idea`. Do NOT alter spacing, color tokens, typography scale, animations, or responsive breakpoints during the rebrand.
50
- - **Beauty-first** every pixel matters
51
-
52
- ## Project Structure
53
- ```
54
- src/
55
- app/ # Next.js routes
56
- components/ # React components
57
- ui/ # shadcn/ui primitives
58
- icons.tsx # Extracted SVG icons as React components
59
- lib/
60
- utils.ts # cn() utility (shadcn)
61
- types/ # TypeScript interfaces
62
- hooks/ # Custom React hooks
63
- public/
64
- images/ # Downloaded images from target site
65
- videos/ # Downloaded videos from target site
66
- seo/ # Favicons, OG images, webmanifest
67
- docs/
68
- research/ # Inspection output (design tokens, components, layout)
69
- design-references/ # Screenshots and visual references
70
- scripts/ # Asset download scripts
71
- ```
72
-
73
- ## MOST IMPORTANT NOTES
74
- - **Always start by reading `launchframe.config.json`** — that file dictates the URL to clone and the SaaS idea to re-skin for.
75
- - 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.
76
- - After editing `AGENTS.md`, run `bash scripts/sync-agent-rules.sh` to regenerate platform-specific instruction files.
77
- - After editing `.claude/skills/clone-website/SKILL.md`, run `node scripts/sync-skills.mjs` to regenerate the skill for all platforms.
78
-
79
- @docs/research/INSPECTION_GUIDE.md
1
+ <!-- BEGIN:nextjs-agent-rules -->
2
+ # This is NOT the Next.js you know
3
+
4
+ This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
5
+ <!-- END:nextjs-agent-rules -->
6
+
7
+ # Launchframe Project (AI Website Cloner + SaaS Rebrand)
8
+
9
+ ## What This Is
10
+ This project was scaffolded by [Launchframe](https://github.com/evangruhlkey/launchframe) via `npx launchframe@latest <url> "<saas idea>"`. It is a Next.js + shadcn/ui + Tailwind v4 base wired with an AI-cloner skill (`/clone-website`) that reverse-engineers a real website pixel-perfectly and then re-skins its copy/branding for the user's SaaS idea.
11
+
12
+ ## Single Source of Truth: `launchframe.config.json`
13
+ At the project root there is a `launchframe.config.json` containing:
14
+ - `url` — the visual source-of-truth to clone
15
+ - `idea` — the SaaS idea used as the rebranding directive after the clone
16
+
17
+ **Always read this file first** at the start of any cloning or build task. The `/clone-website` skill depends on it.
18
+
19
+ ## What the user says (zero-setup flow)
20
+ Users scaffold with `npx launchframe@latest <url> "<saas idea>"` — `npm install` already ran — then they open this folder and say **Build it** (or **Go**, **Ship it**, **Clone the site**).
21
+
22
+ When you see that with no other instructions, **start the full clone-website pipeline immediately** using only `launchframe.config.json` for `url` and `idea`. Do not ask them to repeat the URL unless the config is missing or invalid. `/clone-website` is an alias for the same work.
23
+
24
+ ## Tech Stack
25
+ - **Framework:** Next.js 16 (App Router, React 19, TypeScript strict)
26
+ - **UI:** shadcn/ui (Radix primitives, Tailwind CSS v4, `cn()` utility)
27
+ - **Motion:** **Framer Motion** (`framer-motion`)**default for non-trivial animation** (scroll reveals, staggers, layout, gestures). Use CSS `transition` / `@keyframes` only when they reproduce the target exactly without JS.
28
+ - **Icons:** Lucide React (default will be replaced/supplemented by extracted SVGs)
29
+ - **Styling:** Tailwind CSS v4 with oklch design tokens
30
+ - **Media:** Real **images & videos** from the target URL, saved under `public/images/` and `public/videos/` (see `.claude/skills/clone-website/SKILL.md` and `docs/research/INSPECTION_GUIDE.md`). Do not ship a “pretty shell” with missing raster/video unless extraction is **blocked** and documented in `docs/research/EXTRACTION_LIMITATIONS.md`.
31
+ - **Deployment:** Vercel
32
+
33
+ ## Priority: images, videos & motion
34
+ Treat these as **first-class deliverables**, not polish at the end.
35
+
36
+ 1. **Raster & video** — Early in recon, inventory every `<img>`, `<picture>` / `<source>`, `<video>`, poster image, and meaningful `background-image` URL. Download into `public/` and reference **local paths** in specs and components. Hero bands and marketing sections often fail visually when a single layer is skipped.
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
+
39
+ ## Commands
40
+ - `npm run dev` Start dev server
41
+ - `npm run build` Production build
42
+ - `npm run lint` — ESLint check
43
+ - `npm run typecheck` — TypeScript check
44
+ - `npm run check` — Run lint + typecheck + build
45
+ - **`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)
46
+ - **`npm run recon:headed`** Same as `recon` but **headed** Chromium (often better for WAF / “Just a moment…” pages)
47
+
48
+ **Playwright browser binaries (once per machine):** `npx playwright install chromium`
49
+
50
+ ## When Browser MCP is down
51
+ Prefer **Playwright** for repeatable extraction in-repo — do **not** rely on Chrome DevTools MCP alone.
52
+
53
+ 1. Run **`npm run recon`** (or **`npm run recon:headed`** if headless hits a challenge page).
54
+ 2. Read **`docs/research/computed-snapshot.json`**, **`docs/research/MEDIA_MANIFEST.md`**, and **`docs/research/EXTRACTION_LIMITATIONS.md`** before writing specs.
55
+ 3. Fill **`scripts/download-assets.mjs`** from `MEDIA_MANIFEST.md` and run it to populate `public/images/` and `public/videos/`.
56
+
57
+ ## Code Style
58
+ - TypeScript strict mode, no `any`
59
+ - Named exports, PascalCase components, camelCase utils
60
+ - Tailwind utility classes, no inline styles
61
+ - 2-space indentation
62
+ - Responsive: mobile-first
63
+
64
+ ## Design Principles
65
+ - **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.
66
+ - **Motion fidelity** timing and easing matter as much as color; use Framer Motion when CSS alone cannot match staggered or scroll-driven behavior.
67
+ - **Pixel-perfect emulation** — match the target's spacing, colors, typography exactly
68
+ - **No personal aesthetic changes during emulation phase** — match 1:1 first, rebrand later
69
+ - **Real content during extraction** — use actual text and assets from the target site so the clone scaffolds against real shapes
70
+ - **Rebrand pass swaps copy, not visuals** — once the clone is built, replace product name, headlines, feature copy, and brand marks with content tuned to `launchframe.config.json#idea`. Do NOT alter spacing, color tokens, typography scale, animations, or responsive breakpoints during the rebrand.
71
+ - **Beauty-first** — every pixel matters
72
+
73
+ ## Project Structure
74
+ ```
75
+ src/
76
+ app/ # Next.js routes
77
+ components/ # React components
78
+ ui/ # shadcn/ui primitives
79
+ icons.tsx # Extracted SVG icons as React components
80
+ lib/
81
+ utils.ts # cn() utility (shadcn)
82
+ types/ # TypeScript interfaces
83
+ hooks/ # Custom React hooks
84
+ public/
85
+ images/ # Downloaded images from target site
86
+ videos/ # Downloaded videos from target site
87
+ seo/ # Favicons, OG images, webmanifest
88
+ docs/
89
+ research/ # Inspection output (design tokens, components, layout)
90
+ design-references/ # Screenshots and visual references
91
+ scripts/ # Asset download scripts
92
+ ```
93
+
94
+ ## MOST IMPORTANT NOTES
95
+ - **Always start by reading `launchframe.config.json`** — that file dictates the URL to clone and the SaaS idea to re-skin for.
96
+ - 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.
97
+ - After editing `AGENTS.md`, run `bash scripts/sync-agent-rules.sh` to regenerate platform-specific instruction files.
98
+ - After editing `.claude/skills/clone-website/SKILL.md`, run `node scripts/sync-skills.mjs` to regenerate the skill for all platforms.
99
+
100
+ @docs/research/INSPECTION_GUIDE.md
@@ -1,118 +1,121 @@
1
- # Launchframe Project
2
-
3
- This project was scaffolded by **[Launchframe](https://github.com/evangruhlkey/launchframe)** — an AI-powered website cloner + SaaS rebrander.
4
-
5
- ```bash
6
- npx launchframe@latest <url> "<saas idea>"
7
- ```
8
-
9
- Dependencies were installed for you. It bundles the [`ai-website-cloner-template`](https://github.com/JCodesMore/ai-website-cloner-template) workflow with **`launchframe.config.json`** (your `url` + SaaS `idea`).
10
-
11
- ---
12
-
13
- ## Quick start (two steps)
14
-
15
- 1. **Open this folder** in [Cursor](https://cursor.com/) (or any AI editor).
16
- 2. In chat, say: **Build it.**
17
-
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`**).
19
-
20
- Rather read a postcard? See [`START_HERE.md`](./START_HERE.md).
21
-
22
- ## What `/clone-website` does
23
-
24
- A multi-phase pipeline runs inside your AI agent:
25
-
26
- 1. **Reconnaissance** — screenshots, design-token extraction, interaction sweep (scroll, click, hover, responsive)
27
- 2. **Foundation** — updates fonts, colors, globals, downloads all assets
28
- 3. **Component Specs** — writes detailed spec files (`docs/research/components/`) with exact computed CSS values
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
32
-
33
- Each builder agent receives the full component spec inline — exact `getComputedStyle()` values, interaction models, multi-state content, responsive breakpoints, asset paths. No guessing.
34
-
35
- ## Supported AI Agents
36
-
37
- | Agent | Status |
38
- | ------------------------------------------------------------- | -------------------------- |
39
- | [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | **Recommended** — Opus 4.7 |
40
- | [Codex CLI](https://github.com/openai/codex) | Supported |
41
- | [OpenCode](https://opencode.ai/) | Supported |
42
- | [GitHub Copilot](https://github.com/features/copilot) | Supported |
43
- | [Cursor](https://cursor.com/) | Supported |
44
- | [Windsurf](https://codeium.com/windsurf) | 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 |
48
- | [Continue](https://continue.dev/) | Supported |
49
- | [Amazon Q](https://aws.amazon.com/q/developer/) | Supported |
50
- | [Augment Code](https://www.augmentcode.com/) | Supported |
51
- | [Aider](https://aider.chat/) | Supported |
52
-
53
- ## Tech Stack
54
-
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
- - **Lucide React** — default icons (replaced by extracted SVGs during cloning)
59
-
60
- ## Prerequisites
61
-
62
- - [Node.js](https://nodejs.org/) 24+
63
- - An AI coding agent with browser automation MCP (Chrome MCP, Playwright MCP, Browserbase MCP, etc.)
64
-
65
- ## Project Structure
66
-
67
- ```
68
- src/
69
- app/ # Next.js routes
70
- components/ # React components
71
- ui/ # shadcn/ui primitives
72
- icons.tsx # Extracted SVG icons
73
- lib/utils.ts # cn() utility
74
- types/ # TypeScript interfaces
75
- hooks/ # Custom React hooks
76
- public/
77
- images/ # Downloaded images from target
78
- videos/ # Downloaded videos from target
79
- seo/ # Favicons, OG images
80
- docs/
81
- research/ # Extraction output, component specs, REBRAND.md
82
- design-references/ # Screenshots
83
- scripts/
84
- sync-agent-rules.sh # Regenerate agent instruction files
85
- sync-skills.mjs # Regenerate /clone-website for all platforms
86
- launchframe.config.json # ← URL + SaaS idea (single source of truth)
87
- AGENTS.md # Agent instructions (single source of truth)
88
- START_HERE.md # "Open Cursor say Build it"
89
- CLAUDE.md # Claude Code config (imports AGENTS.md)
90
- GEMINI.md # Gemini CLI config (imports AGENTS.md)
91
- ```
92
-
93
- ## Commands
94
-
95
- ```bash
96
- npm run dev # Start dev server
97
- npm run build # Production build
98
- npm run lint # ESLint check
99
- npm run typecheck # TypeScript check
100
- npm run check # Run lint + typecheck + build
101
- ```
102
-
103
- ## Use Cases
104
-
105
- - **Launch a SaaS faster** — start from a proven landing page, not a blank canvas
106
- - **Platform migration** — rebuild a site you own from WordPress/Webflow/Squarespace into a modern Next.js codebase
107
- - **Lost source code** — your site is live but the repo is gone; get the code back in a modern format
108
- - **Learning** — deconstruct how production sites achieve specific layouts, animations, and responsive behavior
109
-
110
- ## Not Intended For
111
-
112
- - **Phishing or impersonation** — this project must not be used for deceptive purposes, impersonation, or any activity that breaks the law
113
- - **Passing off someone's design as your own** — logos, brand assets, and original copy belong to their owners
114
- - **Violating terms of service** — some sites prohibit scraping or reproduction. Check first
115
-
116
- ## License
117
-
118
- MIT
1
+ # Launchframe Project
2
+
3
+ This project was scaffolded by **[Launchframe](https://github.com/evangruhlkey/launchframe)** — an AI-powered website cloner + SaaS rebrander.
4
+
5
+ ```bash
6
+ npx launchframe@latest <url> "<saas idea>"
7
+ ```
8
+
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
+
11
+ ---
12
+
13
+ ## Quick start (two steps)
14
+
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.**
17
+
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`**).
19
+
20
+ Rather read a postcard? See [`START_HERE.md`](./START_HERE.md).
21
+
22
+ ## What `/clone-website` does
23
+
24
+ A multi-phase pipeline runs inside your AI agent:
25
+
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
32
+
33
+ Each builder agent receives the full component spec inline — exact `getComputedStyle()` values, interaction models, multi-state content, responsive breakpoints, asset paths. No guessing.
34
+
35
+ ## Supported AI Agents
36
+
37
+ | Agent | Status |
38
+ | ------------------------------------------------------------- | -------------------------- |
39
+ | [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | **Recommended** — Opus 4.7 |
40
+ | [Codex CLI](https://github.com/openai/codex) | Supported |
41
+ | [OpenCode](https://opencode.ai/) | Supported |
42
+ | [GitHub Copilot](https://github.com/features/copilot) | Supported |
43
+ | [Cursor](https://cursor.com/) | Supported |
44
+ | [Windsurf](https://codeium.com/windsurf) | 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 |
48
+ | [Continue](https://continue.dev/) | Supported |
49
+ | [Amazon Q](https://aws.amazon.com/q/developer/) | Supported |
50
+ | [Augment Code](https://www.augmentcode.com/) | Supported |
51
+ | [Aider](https://aider.chat/) | Supported |
52
+
53
+ ## Tech Stack
54
+
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`)
61
+
62
+ ## Prerequisites
63
+
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`
67
+
68
+ ## Project Structure
69
+
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)
94
+ ```
95
+
96
+ ## Commands
97
+
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
+ ```
105
+
106
+ ## Use Cases
107
+
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
112
+
113
+ ## Not Intended For
114
+
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
118
+
119
+ ## License
120
+
121
+ MIT
@@ -1,15 +1,15 @@
1
- # Start here
2
-
3
- You already ran `npx launchframe@latest <url> "<saas idea>"` dependencies were installed for you.
4
-
5
- ## Do this next
6
-
7
- 1. **Open this folder** in [Cursor](https://cursor.com/) (or any AI editor).
8
- 2. In chat, say: **Build it.**
9
-
10
- That tells your AI to read `launchframe.config.json` and `AGENTS.md` and run the full **clone + SaaS rebrand** pipeline (same work as `/clone-website`).
11
-
12
- ## Optional
13
-
14
- - Prefer a slash command? Use **`/clone-website`** in Cursor.
15
- - Wrong URL or idea? Edit **`launchframe.config.json`**, then say **Build it** again.
1
+ # Start here
2
+
3
+ Launchframe wrote files into **this folder** (your project root), including **`.cursor`** and **`.claude`**, so they work when you open this directory in your editor.
4
+
5
+ ## Do this next
6
+
7
+ 1. **Open this folder** in [Cursor](https://cursor.com/) (the root that contains `.cursor` — not a parent directory).
8
+ 2. In chat, say: **Build it.**
9
+
10
+ That tells your AI to read `launchframe.config.json` and `AGENTS.md` and run the full **clone + SaaS rebrand** pipeline (same work as `/clone-website`).
11
+
12
+ ## Optional
13
+
14
+ - Prefer a slash command? Use **`/clone-website`** in Cursor.
15
+ - Wrong URL or idea? Edit **`launchframe.config.json`**, then say **Build it** again.