launchframe 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +147 -147
- package/bin/launchframe.mjs +315 -315
- package/package.json +1 -1
- package/template/.amazonq/cli-agents/clone-website.json +1 -1
- package/template/.amazonq/rules/project.md +180 -109
- package/template/.augment/commands/clone-website.md +33 -3
- package/template/.claude/skills/clone-website/SKILL.md +564 -534
- package/template/.claude/skills/marketing-landing-production/SKILL.md +36 -0
- package/template/.clinerules +180 -109
- package/template/.codex/skills/clone-website/SKILL.md +33 -3
- package/template/.continue/commands/clone-website.md +33 -3
- package/template/.continue/rules/project.md +180 -109
- package/template/.cursor/commands/clone-website.md +33 -3
- package/template/.cursor/commands/marketing-landing-production.md +31 -0
- package/template/.cursor/rules/project.mdc +25 -20
- package/template/.gemini/commands/clone-website.toml +33 -3
- package/template/.github/copilot-instructions.md +180 -109
- package/template/.github/skills/clone-website/SKILL.md +33 -3
- package/template/.opencode/commands/clone-website.md +33 -3
- package/template/.windsurf/workflows/clone-website.md +33 -3
- package/template/AGENTS.md +148 -89
- package/template/README.md +121 -120
- package/template/START_HERE.md +15 -15
- package/template/docs/design-references/playwright-example.com-1440px.png +0 -0
- package/template/docs/design-references/playwright-example.com-390px.png +0 -0
- package/template/docs/research/INSPECTION_GUIDE.md +121 -109
- package/template/package.json +63 -60
- package/template/scripts/recon-playwright.mjs +323 -0
- package/template/src/app/globals.css +93 -1
- package/template/src/app/layout.tsx +3 -2
- package/template/src/app/page.tsx +3 -7
package/template/AGENTS.md
CHANGED
|
@@ -1,89 +1,148 @@
|
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
+
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
|
+
|
|
40
|
+
## Production polish for marketing landings *(imagery + motion density + brandability)*
|
|
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.
|
|
43
|
+
|
|
44
|
+
### Imagery density (every fold earns a visual idea)
|
|
45
|
+
|
|
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.”
|
|
50
|
+
|
|
51
|
+
### Motion choreography *(ship several layers; respect `prefers-reduced-motion`)*
|
|
52
|
+
|
|
53
|
+
Default minimum bar for authored landings — implement with **`framer-motion`** unless matching CSS-only parity:
|
|
54
|
+
|
|
55
|
+
| Tier | What users feel | Typical implementation |
|
|
56
|
+
|------|-----------------|-------------------------|
|
|
57
|
+
| **A — Page load** | Hero headline, subcopy, CTAs, and hero art **stagger in** (opacity + `y`, or blur-in for type) | Parent `variants` + `staggerChildren`; durations 0.35–0.7s, ease `[0.22, 1, 0.36, 1]` or springs |
|
|
58
|
+
| **B — Scroll** | Sections **ease up / fade** on first viewport entry; grids **stagger cards** | `whileInView` + `viewport.once`; `margin: "-80px"` tweak so reveals feel early |
|
|
59
|
+
| **C — Looping ambient** | Logo strip marquee; gradient drift; subtle SVG stroke dashoffset loop; “thinking…” **typing caret** | CSS `@keyframes` or Framer `animate` repeat; keep amplitude **low** |
|
|
60
|
+
| **D — Interaction** | Buttons scale/shine on hover; cards **lift** (`translateY`, shadow); nav **backdrop blur / height** past threshold | `whileHover`, `whileTap`; scroll listener or Framer scroll hooks for nav |
|
|
61
|
+
| **E — Decorative depth** | Pointer parallax on hero cluster (2–4 layers at different strengths) OR scroll-linked `useTransform` | Small rotate/translate ranges (≤ 8px / ≤ 2deg) |
|
|
62
|
+
|
|
63
|
+
Always gate looping motion: **`useReducedMotion()`** from Framer Motion — swap loops for static frames and shorten entrances.
|
|
64
|
+
|
|
65
|
+
### Brandability checklist *(distinctive, not generic SaaS gray)*
|
|
66
|
+
|
|
67
|
+
- **Motif thread** — One recurring visual hook (pen stroke, folded page corner, hub spark, pixel creature) reused in hero, favicon, OG image sketch, and one feature illustration.
|
|
68
|
+
- **Accent discipline** — Define **primary + secondary accent** in `:root` (even if mostly monochrome). Use accents on CTAs, SVG highlights, focus rings — not rainbow scatter.
|
|
69
|
+
- **Wordmark lockup** — SVG glyph + tracked type; provide **icon-only** variant for favicon / meta.
|
|
70
|
+
- **OG & SEO assets** — Generate **`public/seo/og.png`** (or route og image) that includes motif + product name — not a bare screenshot.
|
|
71
|
+
|
|
72
|
+
### Where artifacts live
|
|
73
|
+
|
|
74
|
+
- **Raster/video** — `public/images/`, `public/videos/` (see `MEDIA_MANIFEST.md`).
|
|
75
|
+
- **SVG React illustrations** — Prefer `src/components/marketing/art/` or co-located `*-scene.tsx` modules; export named components (`HeroBackdrop`, `FeatureCaptureIllustration`).
|
|
76
|
+
- **Pixel art** — Same folder pattern; document palette in file header comment.
|
|
77
|
+
|
|
78
|
+
### Spec requirement *(hand-off quality)*
|
|
79
|
+
|
|
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.
|
|
83
|
+
|
|
84
|
+
## Commands
|
|
85
|
+
- `npm run dev` — Start dev server
|
|
86
|
+
- `npm run build` — Production build
|
|
87
|
+
- `npm run lint` — ESLint check
|
|
88
|
+
- `npm run typecheck` — TypeScript check
|
|
89
|
+
- `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)
|
|
91
|
+
- **`npm run recon:headed`** — Same as `recon` but **headed** Chromium (often better for WAF / “Just a moment…” pages)
|
|
92
|
+
|
|
93
|
+
**Playwright browser binaries (once per machine):** `npx playwright install chromium`
|
|
94
|
+
|
|
95
|
+
## When Browser MCP is down
|
|
96
|
+
Prefer **Playwright** for repeatable extraction in-repo — do **not** rely on Chrome DevTools MCP alone.
|
|
97
|
+
|
|
98
|
+
1. Run **`npm run recon`** (or **`npm run recon:headed`** if headless hits a challenge page).
|
|
99
|
+
2. Read **`docs/research/computed-snapshot.json`**, **`docs/research/MEDIA_MANIFEST.md`**, and **`docs/research/EXTRACTION_LIMITATIONS.md`** before writing specs.
|
|
100
|
+
3. Fill **`scripts/download-assets.mjs`** from `MEDIA_MANIFEST.md` and run it to populate `public/images/` and `public/videos/`.
|
|
101
|
+
|
|
102
|
+
## Code Style
|
|
103
|
+
- TypeScript strict mode, no `any`
|
|
104
|
+
- Named exports, PascalCase components, camelCase utils
|
|
105
|
+
- Tailwind utility classes, no inline styles
|
|
106
|
+
- 2-space indentation
|
|
107
|
+
- Responsive: mobile-first
|
|
108
|
+
|
|
109
|
+
## Design Principles
|
|
110
|
+
- **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
|
+
- **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.
|
|
113
|
+
- **Pixel-perfect emulation** — match the target's spacing, colors, typography exactly
|
|
114
|
+
- **No personal aesthetic changes during emulation phase** — match 1:1 first, rebrand later
|
|
115
|
+
- **Real content during extraction** — use actual text and assets from the target site so the clone scaffolds against real shapes
|
|
116
|
+
- **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.
|
|
117
|
+
- **Beauty-first** — every pixel matters
|
|
118
|
+
|
|
119
|
+
## Project Structure
|
|
120
|
+
```
|
|
121
|
+
src/
|
|
122
|
+
app/ # Next.js routes
|
|
123
|
+
components/ # React components
|
|
124
|
+
ui/ # shadcn/ui primitives
|
|
125
|
+
marketing/ # Landing sections + authored SVG scenes (`art/` recommended)
|
|
126
|
+
icons.tsx # Extracted SVG icons as React components
|
|
127
|
+
lib/
|
|
128
|
+
utils.ts # cn() utility (shadcn)
|
|
129
|
+
types/ # TypeScript interfaces
|
|
130
|
+
hooks/ # Custom React hooks
|
|
131
|
+
public/
|
|
132
|
+
images/ # Downloaded images from target site
|
|
133
|
+
videos/ # Downloaded videos from target site
|
|
134
|
+
seo/ # Favicons, OG images, webmanifest
|
|
135
|
+
docs/
|
|
136
|
+
research/ # Inspection output (design tokens, components, layout)
|
|
137
|
+
design-references/ # Screenshots and visual references
|
|
138
|
+
scripts/ # Asset download scripts
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## MOST IMPORTANT NOTES
|
|
142
|
+
- **Always start by reading `launchframe.config.json`** — that file dictates the URL to clone and the SaaS idea to re-skin for.
|
|
143
|
+
- 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
|
+
- After editing `AGENTS.md`, run `bash scripts/sync-agent-rules.sh` to regenerate platform-specific instruction files.
|
|
145
|
+
- 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
|
+
|
|
148
|
+
@docs/research/INSPECTION_GUIDE.md
|
package/template/README.md
CHANGED
|
@@ -1,120 +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. 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 (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
sync-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
npm run
|
|
100
|
-
npm run
|
|
101
|
-
npm run
|
|
102
|
-
npm run
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
- **
|
|
109
|
-
- **
|
|
110
|
-
- **
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
- **
|
|
116
|
-
- **
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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
|
package/template/START_HERE.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
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.
|
|
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.
|
|
Binary file
|