launchframe 0.2.6 → 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 (70) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +76 -102
  3. package/launchframe.config.json +14 -0
  4. package/package.json +54 -52
  5. package/bin/launchframe.mjs +0 -315
  6. package/template/README.md +0 -121
  7. package/template/package-lock.json +0 -8795
  8. package/template/package.json +0 -63
  9. /package/{template/.aider.conf.yml → .aider.conf.yml} +0 -0
  10. /package/{template/.amazonq → .amazonq}/cli-agents/clone-website.json +0 -0
  11. /package/{template/.amazonq → .amazonq}/rules/project.md +0 -0
  12. /package/{template/.augment → .augment}/commands/clone-website.md +0 -0
  13. /package/{template/.claude → .claude}/skills/clone-website/SKILL.md +0 -0
  14. /package/{template/.claude → .claude}/skills/marketing-social-proof-motion/SKILL.md +0 -0
  15. /package/{template/.clinerules → .clinerules} +0 -0
  16. /package/{template/.codex → .codex}/skills/clone-website/SKILL.md +0 -0
  17. /package/{template/.continue → .continue}/commands/clone-website.md +0 -0
  18. /package/{template/.continue → .continue}/rules/project.md +0 -0
  19. /package/{template/.cursor → .cursor}/commands/clone-website.md +0 -0
  20. /package/{template/.cursor → .cursor}/commands/marketing-social-proof-motion.md +0 -0
  21. /package/{template/.cursor → .cursor}/rules/project.mdc +0 -0
  22. /package/{template/.dockerignore → .dockerignore} +0 -0
  23. /package/{template/.gemini → .gemini}/commands/clone-website.toml +0 -0
  24. /package/{template/.gitattributes → .gitattributes} +0 -0
  25. /package/{template/.github → .github}/ISSUE_TEMPLATE/bug_report.yml +0 -0
  26. /package/{template/.github → .github}/ISSUE_TEMPLATE/config.yml +0 -0
  27. /package/{template/.github → .github}/ISSUE_TEMPLATE/feature_request.yml +0 -0
  28. /package/{template/.github → .github}/PULL_REQUEST_TEMPLATE.md +0 -0
  29. /package/{template/.github → .github}/copilot-instructions.md +0 -0
  30. /package/{template/.github → .github}/copilot-setup-steps.yml +0 -0
  31. /package/{template/.github → .github}/skills/clone-website/SKILL.md +0 -0
  32. /package/{template/.github → .github}/workflows/ci.yml +0 -0
  33. /package/{template/.nvmrc → .nvmrc} +0 -0
  34. /package/{template/.opencode → .opencode}/commands/clone-website.md +0 -0
  35. /package/{template/.windsurf → .windsurf}/workflows/clone-website.md +0 -0
  36. /package/{template/.windsurfrules → .windsurfrules} +0 -0
  37. /package/{template/AGENTS.md → AGENTS.md} +0 -0
  38. /package/{template/CHANGELOG.md → CHANGELOG.md} +0 -0
  39. /package/{template/CLAUDE.md → CLAUDE.md} +0 -0
  40. /package/{template/Dockerfile → Dockerfile} +0 -0
  41. /package/{template/Dockerfile.dev → Dockerfile.dev} +0 -0
  42. /package/{template/GEMINI.md → GEMINI.md} +0 -0
  43. /package/{template/START_HERE.md → START_HERE.md} +0 -0
  44. /package/{template/components.json → components.json} +0 -0
  45. /package/{template/docker-compose.yml → docker-compose.yml} +0 -0
  46. /package/{template/docs → docs}/design-references/.gitkeep +0 -0
  47. /package/{template/docs → docs}/design-references/comparison.png +0 -0
  48. /package/{template/docs → docs}/design-references/playwright-example.com-1440px.png +0 -0
  49. /package/{template/docs → docs}/design-references/playwright-example.com-390px.png +0 -0
  50. /package/{template/docs → docs}/research/INSPECTION_GUIDE.md +0 -0
  51. /package/{template/eslint.config.mjs → eslint.config.mjs} +0 -0
  52. /package/{template/next.config.ts → next.config.ts} +0 -0
  53. /package/{template/postcss.config.mjs → postcss.config.mjs} +0 -0
  54. /package/{template/public → public}/images/.gitkeep +0 -0
  55. /package/{template/public → public}/seo/.gitkeep +0 -0
  56. /package/{template/public → public}/videos/.gitkeep +0 -0
  57. /package/{template/scripts → scripts}/.gitkeep +0 -0
  58. /package/{template/scripts → scripts}/recon-playwright.mjs +0 -0
  59. /package/{template/scripts → scripts}/sync-agent-rules.sh +0 -0
  60. /package/{template/scripts → scripts}/sync-skills.mjs +0 -0
  61. /package/{template/src → src}/app/favicon.ico +0 -0
  62. /package/{template/src → src}/app/globals.css +0 -0
  63. /package/{template/src → src}/app/layout.tsx +0 -0
  64. /package/{template/src → src}/app/page.tsx +0 -0
  65. /package/{template/src → src}/components/marketing/scribewise-landing.tsx +0 -0
  66. /package/{template/src → src}/components/ui/button.tsx +0 -0
  67. /package/{template/src → src}/hooks/.gitkeep +0 -0
  68. /package/{template/src → src}/lib/utils.ts +0 -0
  69. /package/{template/src → src}/types/.gitkeep +0 -0
  70. /package/{template/tsconfig.json → tsconfig.json} +0 -0
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
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://launchframe.dev/schema/launchframe.config.json",
3
+ "url": "https://vercel.com/",
4
+ "idea": "saas-idea",
5
+ "createdAt": "2026-05-15T00:27:49.833Z",
6
+ "launchframeVersion": "0.2.6",
7
+ "notes": [
8
+ "The /clone-website skill reads this file at the start of every run.",
9
+ "After scaffold: open this folder in Cursor (or your AI editor) and say **Build it** — same workflow.",
10
+ "`url` is the visual source-of-truth (clone its layout, spacing, tokens, motion).",
11
+ "`idea` is the rebranding directive applied AFTER the pixel-perfect clone.",
12
+ "Edit either field and re-invoke the skill to re-run."
13
+ ]
14
+ }
package/package.json CHANGED
@@ -1,52 +1,54 @@
1
- {
2
- "name": "launchframe",
3
- "version": "0.2.6",
4
- "description": "Scaffold a SaaS-ready Next.js codebase from any URL. Point launchframe at a website you admire and describe the SaaS you want to build — it drops in the AI-cloner template wired with your URL and idea so your AI agent (Claude Code, Cursor, Codex, etc.) can run /clone-website and produce a pixel-perfect, re-skinned starting point.",
5
- "license": "MIT",
6
- "author": "Evan Gruhlkey",
7
- "homepage": "https://github.com/evangruhlkey/launchframe#readme",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/evangruhlkey/launchframe.git"
11
- },
12
- "bugs": {
13
- "url": "https://github.com/evangruhlkey/launchframe/issues"
14
- },
15
- "keywords": [
16
- "launchframe",
17
- "scaffold",
18
- "ai",
19
- "ai-agents",
20
- "website-clone",
21
- "reverse-engineering",
22
- "saas",
23
- "boilerplate",
24
- "template",
25
- "nextjs",
26
- "shadcn",
27
- "shadcn-ui",
28
- "tailwindcss",
29
- "claude-code",
30
- "cursor",
31
- "codex",
32
- "cli"
33
- ],
34
- "bin": {
35
- "launchframe": "bin/launchframe.mjs"
36
- },
37
- "files": [
38
- "bin",
39
- "template",
40
- "README.md",
41
- "LICENSE"
42
- ],
43
- "scripts": {
44
- "test:scaffold": "node bin/launchframe.mjs https://linear.app \"AI feedback platform\" --dir tmp-scaffold --force --skip-install",
45
- "sync:skill": "node template/scripts/sync-skills.mjs",
46
- "sync:agents": "bash template/scripts/sync-agent-rules.sh"
47
- },
48
- "engines": {
49
- "node": ">=18.0.0"
50
- },
51
- "type": "module"
52
- }
1
+ {
2
+ "name": "launchframe",
3
+ "version": "0.3.0",
4
+ "private": false,
5
+ "description": "clone any website into a clean, modern Next.js codebase using AI coding agents",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "claude-code",
9
+ "website-clone",
10
+ "reverse-engineering",
11
+ "nextjs",
12
+ "ai",
13
+ "template",
14
+ "tailwindcss",
15
+ "shadcn-ui"
16
+ ],
17
+ "engines": {
18
+ "node": ">=24"
19
+ },
20
+ "scripts": {
21
+ "dev": "next dev",
22
+ "build": "next build",
23
+ "start": "next start",
24
+ "lint": "eslint",
25
+ "typecheck": "tsc --noEmit",
26
+ "check": "npm run lint && npm run typecheck && npm run build",
27
+ "recon": "node scripts/recon-playwright.mjs",
28
+ "recon:headed": "node scripts/recon-playwright.mjs --headed"
29
+ },
30
+ "dependencies": {
31
+ "@base-ui/react": "^1.3.0",
32
+ "class-variance-authority": "^0.7.1",
33
+ "clsx": "^2.1.1",
34
+ "framer-motion": "^12.4.0",
35
+ "lucide-react": "^1.6.0",
36
+ "next": "16.2.1",
37
+ "react": "19.2.4",
38
+ "react-dom": "19.2.4",
39
+ "shadcn": "^4.1.0",
40
+ "tailwind-merge": "^3.5.0",
41
+ "tw-animate-css": "^1.4.0"
42
+ },
43
+ "devDependencies": {
44
+ "@tailwindcss/postcss": "^4",
45
+ "@types/node": "^24",
46
+ "@types/react": "^19",
47
+ "@types/react-dom": "^19",
48
+ "eslint": "^9",
49
+ "eslint-config-next": "16.2.1",
50
+ "playwright": "^1.49.1",
51
+ "tailwindcss": "^4",
52
+ "typescript": "^5"
53
+ }
54
+ }