launchframe 0.4.9 → 0.4.11

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 (35) hide show
  1. package/.amazonq/cli-agents/launchframe.json +1 -1
  2. package/.amazonq/rules/project.md +119 -80
  3. package/.augment/commands/launchframe.md +16 -0
  4. package/.claude/skills/launchframe/SKILL.md +16 -0
  5. package/.clinerules +119 -80
  6. package/.codex/skills/launchframe/SKILL.md +16 -0
  7. package/.continue/commands/launchframe.md +16 -0
  8. package/.continue/rules/project.md +119 -80
  9. package/.cursor/commands/launchframe.md +16 -0
  10. package/.gemini/commands/launchframe.toml +16 -0
  11. package/.github/copilot-instructions.md +119 -80
  12. package/.github/skills/launchframe/SKILL.md +16 -0
  13. package/.gitignore +4 -0
  14. package/.opencode/commands/launchframe.md +16 -0
  15. package/.windsurf/workflows/launchframe.md +16 -0
  16. package/AGENTS.md +2 -2
  17. package/README.md +38 -165
  18. package/bin/launchframe.mjs +380 -380
  19. package/docs/research/INSPECTION_GUIDE.md +117 -78
  20. package/docs/research/example.com/page-inspection/example.com-2026-05-15T21-24-43-488Z/README.txt +16 -0
  21. package/docs/research/example.com/page-inspection/example.com-2026-05-15T21-24-43-488Z/body-outer.html +2 -0
  22. package/docs/research/example.com/page-inspection/example.com-2026-05-15T21-24-43-488Z/capture-meta.json +19 -0
  23. package/docs/research/example.com/page-inspection/example.com-2026-05-15T21-24-43-488Z/document.html +2 -0
  24. package/docs/research/example.com/page-inspection/example.com-2026-05-15T21-24-43-488Z/inline-styles.json +7 -0
  25. package/docs/research/example.com/page-inspection/example.com-2026-05-15T21-24-43-488Z/motion-summary.json +18 -0
  26. package/docs/research/page-captures/example.com-2026-05-15T21-21-31-863Z/README.txt +16 -0
  27. package/docs/research/page-captures/example.com-2026-05-15T21-21-31-863Z/body-outer.html +2 -0
  28. package/docs/research/page-captures/example.com-2026-05-15T21-21-31-863Z/capture-meta.json +19 -0
  29. package/docs/research/page-captures/example.com-2026-05-15T21-21-31-863Z/document.html +2 -0
  30. package/docs/research/page-captures/example.com-2026-05-15T21-21-31-863Z/inline-styles.json +7 -0
  31. package/docs/research/page-captures/example.com-2026-05-15T21-21-31-863Z/motion-summary.json +18 -0
  32. package/package.json +5 -3
  33. package/scripts/page-inspection-dump.mjs +386 -0
  34. package/scripts/sync-agent-rules.sh +88 -88
  35. package/tsconfig.json +34 -34
package/.clinerules CHANGED
@@ -10,7 +10,7 @@ This version has breaking changes — APIs, conventions, and file structure may
10
10
  # Website Reverse-Engineer Template
11
11
 
12
12
  ## What This Is
13
- A reusable template for reverse-engineering any website into a clean, modern Next.js codebase using AI coding agents. The Next.js + shadcn/ui + Tailwind v4 base is pre-scaffolded — use **`/launchframe <url> "saas idea"`** for the full pixel-perfect clone plus SaaS landing copy (`src/lib/launchframe-config.ts`, `launchframe.context.json`, `docs/research/LAUNCHFRAME.md`). For a **new empty folder** only, **`npx launchframe@latest`** unpacks this template; then run **`/launchframe`** in that project with your URL and pitch.
13
+ A reusable template for reverse-engineering any website into a clean, modern Next.js codebase using AI coding agents. The Next.js + shadcn/ui + Tailwind v4 base is pre-scaffolded — use **`/launchframe <url> "saas idea"`** for the full pixel-perfect clone plus SaaS landing copy (`src/lib/launchframe-config.ts`, `launchframe.context.json`, `docs/research/LAUNCHFRAME.md`). The agent executing **`/launchframe`** must follow **Step 0a** in that command: run **`npm run inspect:page`** once per reference URL (Playwright: `document.html`, network CSS, `motion-summary.json`) before Phase 1. For a **new empty folder** only, **`npx launchframe@latest`** unpacks this template; then run **`/launchframe`** in that project with your URL and pitch.
14
14
 
15
15
  ## Tech Stack
16
16
  - **Framework:** Next.js 16 (App Router, React 19, TypeScript strict)
@@ -38,7 +38,7 @@ A reusable template for reverse-engineering any website into a clean, modern Nex
38
38
  - **No personal aesthetic changes during emulation phase** — match 1:1 first, customize later
39
39
  - **Real content** — use actual text and assets from the target site where they are interchangeable chrome; **`/launchframe`** overlays your SaaS pitch on headings and CTAs. **Marketing photographs and illustrative hero/feature imagery are not photocopied**: you **must** ship **committed files** under `public/images/` (etc.) for every such slot — **generate them yourself** with your host **image-generation** tool (prompts tied to the SaaS idea), wire into components, supplement with UI mock composites only if helpful. Blank placeholders count as unfinished. Record paths in `docs/research/LAUNCHFRAME.md`
40
40
  - **Beauty-first** — every pixel matters
41
- - **DOM crawl priority** — when walking the target page, emphasize **images** (raster, responsive sources, CSS backgrounds), **SVGs** (inline icons, sprites, masks — **copy extracted geometry**, do not approximate with unrelated Lucide glyphs), then **motion** (**copy** `@keyframes`, `transition`/`animation` timings, scroll triggers, carousel staggers via Chrome MCP / CSS sources). **Measure and mirror** mounting and styling from the DOM; scrape **permission-neutral** bytes when appropriate. When a raster slot must be original for brand safety, **author** replacements and label them in research notes — **that never waives SVG or animation fidelity**
41
+ - **Inspection workflow (canonical)** — Follow the ordered **five steps** in `docs/research/INSPECTION_GUIDE.md`: (1) **Structure** — DOM as hierarchy reference, not pasted production HTML; (2) **Styles**Computed/stylesheets and tokens; (3) **Motion** — `@keyframes`, transitions, timings, triggers; (4) **Assets** — rasters/SVGs with brand-safe originals for marketing slots when required; (5) **Implementation** — Next.js components rebuild. Within crawls (Chrome MCP / DevTools), still emphasize **images** (raster, responsive sources, CSS backgrounds), **SVGs** (inline, sprites, masks — **exact geometry**, not unrelated Lucide stand-ins), then **motion fidelity**. **Measure and mirror** from the DOM; scrape **permission-neutral** bytes when appropriate **SVG and animation fidelity are not waived** when rasters are replaced
42
42
 
43
43
  ## Project Structure
44
44
  ```
@@ -71,89 +71,128 @@ scripts/ # Asset download scripts
71
71
 
72
72
  ## How to Reverse-Engineer Any Website
73
73
 
74
- This guide outlines what to capture when inspecting a target website via Chrome MCP or browser DevTools.
74
+ This guide is the **canonical workflow** when inspecting a target site (Chrome MCP, DevTools, or similar). Execute the steps **in order**: structure and styles establish the blueprint; motion and assets define feel and legality; implementation is always a deliberate rebuild—not a pasted dump.
75
75
 
76
- ## Priority: media, SVGs, and motion (do this early)
76
+ ---
77
77
 
78
- When crawling the DOM and network, **tackle these before fine-tuning copy or spacing**:
78
+ ## Step 1 Structure (DOM hierarchy only)
79
79
 
80
- 1. **Raster imagery** — Every `<img>`, `<picture>` / `source`, `srcset` / `sizes`, CDN URLs, lazy-loaded `data-src`, `loading="lazy"` nodes, **CSS `background-image`** on the element and ancestors (including `::before` / `::after`), masks that use `url()`, `<video>` still / poster frames. Prefer **downloading** originals via scripts or MCP; if a URL is blocked or session-gated, **export a screenshot** of the element’s bounding box at a crisp DPR and store it under `public/images/`, and note the substitute in the spec.
81
- 2. **SVGs** — Inline `<svg>`, `<use>` / sprite sheets, **SVG in CSS** (`mask-image`, `background-image`), favicons as SVG, logo marks. Prefer extracting path/viewBox into React components or static files under `public/` — **recreate** from a screenshot/trace only when the markup is obfuscated or blocked.
82
- 3. **Motion & animation** — Inspect Styles for `animation`, `animation-name`, `animation-timeline`, `transition`, `transform`, `@keyframes`; check for libraries (Framer Motion, GSAP, Lottie, Lenis). Capture **durations, easings, delays, fill-modes**, scroll/view triggers, and `prefers-reduced-motion` handling. Motion often defines perceived quality — do not leave it as an afterthought.
80
+ Treat HTML as a **map of hierarchy**, not as shippable source code.
83
81
 
84
- Then continue with typography, spacing, and component structure as usual.
82
+ - **DevTools limitation:** Copying `<head>` and `<body>` with “Copy Copy outerHTML” gives **one frozen snapshot**. It omits most **stylesheet and script** behavior and may inline classes whose meaning lives in external bundles.
83
+ - **What to extract anyway:** Landmark regions, heading levels, nesting (sections → rows → cards), repeated patterns, form fields, navigation trees, semantic roles.
84
+ - **What not to do:** Do not paste a single giant HTML file into production or assume it reproduces routing, hydration, or data fetching.
85
85
 
86
- ## Phase 1: Visual Audit
86
+ ### Component & layout checklist (supports Step 1)
87
+
88
+ **Component inventory** — For each distinct UI block, capture:
87
89
 
88
- ### Screenshots to Capture
89
- - [ ] Every distinct page — desktop, tablet, mobile
90
- - [ ] Dark mode variants (if applicable)
91
- - [ ] Light mode variants (if applicable)
92
- - [ ] Key interaction states (hover, active, open menus, modals)
93
- - [ ] Loading/skeleton states
94
- - [ ] Empty states
95
- - [ ] Error states
96
-
97
- ### Design Tokens to Extract
98
- - [ ] **Colors** — background, text (primary/secondary/muted), accent, border, hover, error, success, warning
99
- - [ ] **Typography** — font family, sizes (h1-h6, body, caption, label), weights, line heights, letter spacing
100
- - [ ] **Spacing** — padding/margin patterns (look for a scale: 4px, 8px, 12px, 16px, 24px, 32px, etc.)
101
- - [ ] **Border radius** — buttons, cards, avatars, inputs
102
- - [ ] **Shadows/elevation** — card shadows, dropdown shadows, modal overlay
103
- - [ ] **Breakpoints** — when does the layout shift? (inspect with DevTools responsive mode)
104
- - [ ] **Icons** — which icon library? custom SVGs? sizes?
105
- - [ ] **Avatars** — sizes, shapes, fallback behavior
106
- - [ ] **Buttons** — all variants (primary, secondary, ghost, icon-only, danger)
107
- - [ ] **Inputs** — text fields, textareas, selects, checkboxes, toggles
108
-
109
- ## Phase 2: Component Inventory
110
-
111
- For each distinct UI component, document:
112
90
  1. **Name** — what would you call this component?
113
- 2. **Structure** — what HTML elements / child components does it contain?
114
- 3. **Variants** — does it have different sizes, colors, or states?
91
+ 2. **Structure** — HTML elements / child components and order
92
+ 3. **Variants** — sizes, tones, densities
115
93
  4. **States** — default, hover, active, disabled, loading, error, empty
116
- 5. **Responsive behavior** — how does it change at different breakpoints?
117
- 6. **Interactions** — click, hover, focus, keyboard navigation
118
- 7. **Animations** — transitions, entrance/exit animations, micro-interactions
119
-
120
- ### Common Components to Look For
121
- - Navigation (top bar, sidebar, bottom bar)
122
- - Cards / list items
123
- - Buttons and links
124
- - Forms and inputs
125
- - Modals and dialogs
126
- - Dropdowns and menus
127
- - Tabs and segmented controls
128
- - Avatars and user badges
129
- - Loading skeletons
130
- - Toast notifications
131
- - Tooltips and popovers
132
-
133
- ## Phase 3: Layout Architecture
134
-
135
- - [ ] **Grid system** — CSS Grid? Flexbox? Fixed widths?
136
- - [ ] **Column layout** — how many columns at each breakpoint?
137
- - [ ] **Max-width** main content area max-width
138
- - [ ] **Sticky elements** — header, sidebar, floating buttons
139
- - [ ] **Z-index layers** navigation, modals, tooltips, overlays
140
- - [ ] **Scroll behavior** — infinite scroll, pagination, virtual scrolling
141
-
142
- ## Phase 4: Technical Stack Analysis
143
-
144
- - [ ] **Framework** — React? Vue? Angular? Check `__NEXT_DATA__`, `__NUXT__`, `ng-version`
145
- - [ ] **CSS approach** — Tailwind (utility classes), CSS Modules, Styled Components, Emotion, vanilla CSS
146
- - [ ] **State management** — Redux (check DevTools), React Query, Zustand, Pinia
147
- - [ ] **API patterns** — REST, GraphQL (check network tab for `/graphql` requests)
148
- - [ ] **Font loading** — Google Fonts, self-hosted, system fonts
149
- - [ ] **Image strategy** — CDN, lazy loading, srcset, WebP/AVIF
150
- - [ ] **Animation library** — Framer Motion, GSAP, CSS transitions only
151
-
152
- ## Phase 5: Documentation Output
153
-
154
- After inspection, create these files in `docs/research/`:
155
- 1. `DESIGN_TOKENS.md` All extracted colors, typography, spacing
156
- 2. `COMPONENT_INVENTORY.md`Every component with structure notes
157
- 3. `LAYOUT_ARCHITECTURE.md` — Page layouts, grid system, responsive behavior
158
- 4. `INTERACTION_PATTERNS.md` — Animations, transitions, hover states
159
- 5. `TECH_STACK_ANALYSIS.md` — What the site uses and our chosen equivalents
94
+ 5. **Responsive behavior** — changes per breakpoint
95
+ 6. **Interactions** — click, hover, focus, keyboard
96
+
97
+ **Layout architecture**
98
+
99
+ - [ ] **Grid vs flex** — primary layout mechanism
100
+ - [ ] **Columns** — count per breakpoint
101
+ - [ ] **Max-width** — content well width
102
+ - [ ] **Sticky / fixed** — header, sidebars, floating CTAs
103
+ - [ ] **Z-index layers** — nav, overlays, tooltips
104
+ - [ ] **Scroll model** — normal, infinite, virtual lists, snap
105
+
106
+ **Screenshots** (tie each shot to a section in the hierarchy)
107
+
108
+ - [ ] Every distinct page — desktop, tablet, mobile
109
+ - [ ] Theme variants (light / dark if applicable)
110
+ - [ ] Hover, active, menus open, modals
111
+ - [ ] Loading / skeleton / empty / error states
112
+
113
+ ---
114
+
115
+ ## Step 2Styles (computed appearance + real CSS)
116
+
117
+ Rendered look comes from **CSS** (linked files, injected `<style>` blocks, build output)—not from raw element copy alone.
118
+
119
+ - **Per-element:** In DevTools **Styles** / **Computed**, capture what matters for fidelity: typography, spacing, colors, borders, shadows, breakpoints where rules change.
120
+ - **Global:** From **Sources** or **Network**, identify main stylesheets / CSS chunks; note filenames or URLs for the agents or scripts that will mirror tokens.
121
+ - **Design tokens to extract**
122
+
123
+ - [ ] **Colors** — background, text (primary / secondary / muted), accent, border, hover / focus, semantic (error, success, warning)
124
+ - [ ] **Typography** — families, scale (h1–h6, body, captions), weights, line-height, letter-spacing
125
+ - [ ] **Spacing** — padding/margin rhythm (e.g. 4/8/12/16…)
126
+ - [ ] **Radius & elevation** — cards, buttons, inputs, overlays
127
+ - [ ] **Breakpoints** — layout shifts (responsive mode)
128
+ - [ ] **Icons & avatars** — sizes, masks, fallbacks
129
+
130
+ **Technical CSS context** (informs Tailwind mapping)
131
+
132
+ - [ ] **CSS approach** utilities vs modules vs styled components vs vanilla
133
+ - [ ] **Fonts** Google, self-hosted, system stacks
134
+ - [ ] **Image CSS** `object-fit`, `aspect-ratio`, background layers
135
+
136
+ ---
137
+
138
+ ## Step 3 — Motion (what moves and how)
139
+
140
+ Motion is rarely recoverable from HTML copy; it lives in **CSS animations/transitions** and often **JavaScript** (scroll, gestures, carousel timing).
141
+
142
+ - **Catalog behaviors:** Entrance, hover, focus, drag, scroll-linked, carousel stagger, modal open/close, page transitions.
143
+ - **From Styles / Sources:** `animation-*`, `@keyframes`, `transition`, `transform`, `will-change`; note **duration, easing, delay, fill-mode**.
144
+ - **Libraries:** Identify Framer Motion, GSAP, Lottie, Lenis, CSS-only, etc.
145
+ - **Accessibility:** Note `prefers-reduced-motion` behavior if present.
146
+
147
+ **Priority reminder:** Capture **motion early** alongside media—perceived polish depends on it; do not leave it until the end.
148
+
149
+ ---
150
+
151
+ ## Step 4 — Assets (permission-neutral bytes + originals where required)
152
+
153
+ **Early capture**
154
+
155
+ 1. **Raster imagery** — `<img>`, `<picture>` / `<source>`, `srcset` / `sizes`, CDN URLs, lazy `data-src`, `loading="lazy"`, **`background-image`** on elements and ancestors (including `::before` / `::after`), masks using `url()`, video posters / stills.
156
+ 2. **SVGs** — Inline `<svg>`, `<use>` / sprites, **SVG in CSS** (`mask-image`, backgrounds), favicons. Prefer extracting path/viewBox into React components or files under `public/` — recreate from screenshot/trace only when markup is blocked or obfuscated.
157
+ 3. **Brand-safe slots** — **Marketing photos and illustrative hero/feature art** must not be photocopied when policy requires originality: ship **committed** files under `public/images/` (etc.), generated for **your** product idea; document paths in `docs/research/LAUNCHFRAME.md`. Blank placeholders are unfinished.
158
+ 4. **Fallbacks** — If URLs are gated, export a crisp screenshot of the element’s box (note DPR) and record the substitution in research notes.
159
+
160
+ **Technical**
161
+
162
+ - [ ] CDN vs origin paths
163
+ - [ ] Lazy loading and responsive image strategy
164
+
165
+ ---
166
+
167
+ ## Step 5 — Implementation (Next.js + components)
168
+
169
+ Rebuild deliberately in **this template’s stack** (Next.js App Router, React, TypeScript strict, shadcn/ui, Tailwind v4).
170
+
171
+ - **Do:** Small composable components, shared tokens, `cn()`, extracted icons in `src/components/icons.tsx` (or adjacent), routes under `src/app/`.
172
+ - **Don’t:** Ship one monolithic HTML string as the app or skip TypeScript/component boundaries.
173
+
174
+ ### Stack parity (helps choose libraries)
175
+
176
+ - [ ] **Framework signals** — e.g. `__NEXT_DATA__`, `__NUXT__`, `ng-version`
177
+ - [ ] **State / data** — REST, GraphQL, client stores (infer from Network)
178
+ - [ ] **Animation stack** — match or approximate with CSS or an approved motion library
179
+
180
+ ### Documentation output (`docs/research/`)
181
+
182
+ After inspection, produce durable notes:
183
+
184
+ 1. `DESIGN_TOKENS.md` — colors, typography, spacing, radius, shadows
185
+ 2. `COMPONENT_INVENTORY.md` — components with structure and states
186
+ 3. `LAYOUT_ARCHITECTURE.md` — grids, breakpoints, sticky layers
187
+ 4. `INTERACTION_PATTERNS.md` — motion, transitions, hover/focus
188
+ 5. `TECH_STACK_ANALYSIS.md` — source stack vs chosen equivalents
189
+
190
+ ### Common components to hunt for
191
+
192
+ Navigation (top/side/bottom), cards, buttons, links, forms, modals, menus, tabs, avatars/badges, skeletons, toasts, tooltips/popovers.
193
+
194
+ ---
195
+
196
+ ## Reference: Chrome MCP / agent crawl habits
197
+
198
+ Walk the DOM and network **top-down**. When multiple agents collaborate, reconcile tokens and animation specs in shared research files so Step 5 does not drift. For **`/launchframe`**, tie findings to `launchframe.context.json` and `docs/research/LAUNCHFRAME.md` per project conventions.
@@ -24,6 +24,22 @@ Before reconnaissance, write or update:
24
24
  - `docs/research/LAUNCHFRAME.md` — URLs and SaaS idea
25
25
  - **`docs/research/LAUNCHFRAME_SUBAGENTS.md`** — **before Phase 6**, ensure this runbook holds all four verifier prompts (**copy-ready**). When the bundled template differs from the latest SKILL rubrics (after skill edits), re-sync Section **Phase 6** rubrics **into this file**. Subagents receive prompts **only** from here.
26
26
 
27
+ ### Step 0a — Automated page inspection dump (mandatory)
28
+
29
+ Right after Step 0 files are written, **from the repository root**, run the bundled **Playwright** capture **once per parsed reference URL** (before Phase 1 Chrome MCP). This produces `document.html`, network `*.css` bodies, `inline-styles.json`, and `motion-summary.json` — a frozen DOM/CSS/motion bundle to attach or diff alongside live `getComputedStyle` / WAAPI work (**this does not replace** Chrome MCP for numeric motion and interaction sweeps).
30
+
31
+ 1. **One-time per machine:** `npx playwright install chromium`
32
+ 2. **Per URL** — use the URL’s hostname for the folder (example hostname `www.example.com`):
33
+
34
+ ```bash
35
+ npm run inspect:page -- "https://www.example.com/" --scroll-full --wait-until networkidle --timeout 120000 --out-parent "docs/research/www.example.com/page-inspection"
36
+ ```
37
+
38
+ That creates `docs/research/<hostname>/page-inspection/<hostname>-<iso-stamp>/` with all artifacts. Omit `--out-parent` to use the default `docs/research/page-captures/<host>-<stamp>/`.
39
+ 3. Append an **`Automated captures`** subsection to `docs/research/LAUNCHFRAME.md` listing every URL and its output directory path. Use those files in Phase 1 when structuring specs (DOM outline, stylesheet text, `@keyframes` from `motion-summary.json`) while still measuring behavior in the live tab.
40
+
41
+ If the dump fails (missing browsers, navigation timeout, TLS, bot wall), increase `--timeout`, retry with `domcontentloaded` only when necessary, or document the failure in `LAUNCHFRAME.md` and unblock before treating Phase 1 as complete.
42
+
27
43
  ## SaaS copy overlay (Phase 4 assembly and final polish)
28
44
 
29
45
  After structure and styles match the reference, apply the **SaaS idea** to hero, headings, and primary CTAs where the reference uses interchangeable marketing copy, **without** changing layout grids, spacing, or **motion numbers** from extracted specs. **Icon shapes** and **animations** (`@keyframes`, transitions, staggers, scroll triggers) remain **parity goals** sourced from extraction — swapping narrative photos does **not** relax them. **Brand identity** (below) must be **original** for anything you ship as the user’s product — never pass off the reference company’s trademarks or distinctive marks.
@@ -25,6 +25,22 @@ Before reconnaissance, write or update:
25
25
  - `docs/research/LAUNCHFRAME.md` — URLs and SaaS idea
26
26
  - **`docs/research/LAUNCHFRAME_SUBAGENTS.md`** — **before Phase 6**, ensure this runbook holds all four verifier prompts (**copy-ready**). When the bundled template differs from the latest SKILL rubrics (after skill edits), re-sync Section **Phase 6** rubrics **into this file**. Subagents receive prompts **only** from here.
27
27
 
28
+ ### Step 0a — Automated page inspection dump (mandatory)
29
+
30
+ Right after Step 0 files are written, **from the repository root**, run the bundled **Playwright** capture **once per parsed reference URL** (before Phase 1 Chrome MCP). This produces `document.html`, network `*.css` bodies, `inline-styles.json`, and `motion-summary.json` — a frozen DOM/CSS/motion bundle to attach or diff alongside live `getComputedStyle` / WAAPI work (**this does not replace** Chrome MCP for numeric motion and interaction sweeps).
31
+
32
+ 1. **One-time per machine:** `npx playwright install chromium`
33
+ 2. **Per URL** — use the URL’s hostname for the folder (example hostname `www.example.com`):
34
+
35
+ ```bash
36
+ npm run inspect:page -- "https://www.example.com/" --scroll-full --wait-until networkidle --timeout 120000 --out-parent "docs/research/www.example.com/page-inspection"
37
+ ```
38
+
39
+ That creates `docs/research/<hostname>/page-inspection/<hostname>-<iso-stamp>/` with all artifacts. Omit `--out-parent` to use the default `docs/research/page-captures/<host>-<stamp>/`.
40
+ 3. Append an **`Automated captures`** subsection to `docs/research/LAUNCHFRAME.md` listing every URL and its output directory path. Use those files in Phase 1 when structuring specs (DOM outline, stylesheet text, `@keyframes` from `motion-summary.json`) while still measuring behavior in the live tab.
41
+
42
+ If the dump fails (missing browsers, navigation timeout, TLS, bot wall), increase `--timeout`, retry with `domcontentloaded` only when necessary, or document the failure in `LAUNCHFRAME.md` and unblock before treating Phase 1 as complete.
43
+
28
44
  ## SaaS copy overlay (Phase 4 assembly and final polish)
29
45
 
30
46
  After structure and styles match the reference, apply the **SaaS idea** to hero, headings, and primary CTAs where the reference uses interchangeable marketing copy, **without** changing layout grids, spacing, or **motion numbers** from extracted specs. **Icon shapes** and **animations** (`@keyframes`, transitions, staggers, scroll triggers) remain **parity goals** sourced from extraction — swapping narrative photos does **not** relax them. **Brand identity** (below) must be **original** for anything you ship as the user’s product — never pass off the reference company’s trademarks or distinctive marks.
@@ -14,7 +14,7 @@ This version has breaking changes — APIs, conventions, and file structure may
14
14
  # Website Reverse-Engineer Template
15
15
 
16
16
  ## What This Is
17
- A reusable template for reverse-engineering any website into a clean, modern Next.js codebase using AI coding agents. The Next.js + shadcn/ui + Tailwind v4 base is pre-scaffolded — use **`/launchframe <url> "saas idea"`** for the full pixel-perfect clone plus SaaS landing copy (`src/lib/launchframe-config.ts`, `launchframe.context.json`, `docs/research/LAUNCHFRAME.md`). For a **new empty folder** only, **`npx launchframe@latest`** unpacks this template; then run **`/launchframe`** in that project with your URL and pitch.
17
+ A reusable template for reverse-engineering any website into a clean, modern Next.js codebase using AI coding agents. The Next.js + shadcn/ui + Tailwind v4 base is pre-scaffolded — use **`/launchframe <url> "saas idea"`** for the full pixel-perfect clone plus SaaS landing copy (`src/lib/launchframe-config.ts`, `launchframe.context.json`, `docs/research/LAUNCHFRAME.md`). The agent executing **`/launchframe`** must follow **Step 0a** in that command: run **`npm run inspect:page`** once per reference URL (Playwright: `document.html`, network CSS, `motion-summary.json`) before Phase 1. For a **new empty folder** only, **`npx launchframe@latest`** unpacks this template; then run **`/launchframe`** in that project with your URL and pitch.
18
18
 
19
19
  ## Tech Stack
20
20
  - **Framework:** Next.js 16 (App Router, React 19, TypeScript strict)
@@ -42,7 +42,7 @@ A reusable template for reverse-engineering any website into a clean, modern Nex
42
42
  - **No personal aesthetic changes during emulation phase** — match 1:1 first, customize later
43
43
  - **Real content** — use actual text and assets from the target site where they are interchangeable chrome; **`/launchframe`** overlays your SaaS pitch on headings and CTAs. **Marketing photographs and illustrative hero/feature imagery are not photocopied**: you **must** ship **committed files** under `public/images/` (etc.) for every such slot — **generate them yourself** with your host **image-generation** tool (prompts tied to the SaaS idea), wire into components, supplement with UI mock composites only if helpful. Blank placeholders count as unfinished. Record paths in `docs/research/LAUNCHFRAME.md`
44
44
  - **Beauty-first** — every pixel matters
45
- - **DOM crawl priority** — when walking the target page, emphasize **images** (raster, responsive sources, CSS backgrounds), **SVGs** (inline icons, sprites, masks — **copy extracted geometry**, do not approximate with unrelated Lucide glyphs), then **motion** (**copy** `@keyframes`, `transition`/`animation` timings, scroll triggers, carousel staggers via Chrome MCP / CSS sources). **Measure and mirror** mounting and styling from the DOM; scrape **permission-neutral** bytes when appropriate. When a raster slot must be original for brand safety, **author** replacements and label them in research notes — **that never waives SVG or animation fidelity**
45
+ - **Inspection workflow (canonical)** — Follow the ordered **five steps** in `docs/research/INSPECTION_GUIDE.md`: (1) **Structure** — DOM as hierarchy reference, not pasted production HTML; (2) **Styles**Computed/stylesheets and tokens; (3) **Motion** — `@keyframes`, transitions, timings, triggers; (4) **Assets** — rasters/SVGs with brand-safe originals for marketing slots when required; (5) **Implementation** — Next.js components rebuild. Within crawls (Chrome MCP / DevTools), still emphasize **images** (raster, responsive sources, CSS backgrounds), **SVGs** (inline, sprites, masks — **exact geometry**, not unrelated Lucide stand-ins), then **motion fidelity**. **Measure and mirror** from the DOM; scrape **permission-neutral** bytes when appropriate **SVG and animation fidelity are not waived** when rasters are replaced
46
46
 
47
47
  ## Project Structure
48
48
  ```
@@ -75,89 +75,128 @@ scripts/ # Asset download scripts
75
75
 
76
76
  ## How to Reverse-Engineer Any Website
77
77
 
78
- This guide outlines what to capture when inspecting a target website via Chrome MCP or browser DevTools.
78
+ This guide is the **canonical workflow** when inspecting a target site (Chrome MCP, DevTools, or similar). Execute the steps **in order**: structure and styles establish the blueprint; motion and assets define feel and legality; implementation is always a deliberate rebuild—not a pasted dump.
79
79
 
80
- ## Priority: media, SVGs, and motion (do this early)
80
+ ---
81
81
 
82
- When crawling the DOM and network, **tackle these before fine-tuning copy or spacing**:
82
+ ## Step 1 Structure (DOM hierarchy only)
83
83
 
84
- 1. **Raster imagery** — Every `<img>`, `<picture>` / `source`, `srcset` / `sizes`, CDN URLs, lazy-loaded `data-src`, `loading="lazy"` nodes, **CSS `background-image`** on the element and ancestors (including `::before` / `::after`), masks that use `url()`, `<video>` still / poster frames. Prefer **downloading** originals via scripts or MCP; if a URL is blocked or session-gated, **export a screenshot** of the element’s bounding box at a crisp DPR and store it under `public/images/`, and note the substitute in the spec.
85
- 2. **SVGs** — Inline `<svg>`, `<use>` / sprite sheets, **SVG in CSS** (`mask-image`, `background-image`), favicons as SVG, logo marks. Prefer extracting path/viewBox into React components or static files under `public/` — **recreate** from a screenshot/trace only when the markup is obfuscated or blocked.
86
- 3. **Motion & animation** — Inspect Styles for `animation`, `animation-name`, `animation-timeline`, `transition`, `transform`, `@keyframes`; check for libraries (Framer Motion, GSAP, Lottie, Lenis). Capture **durations, easings, delays, fill-modes**, scroll/view triggers, and `prefers-reduced-motion` handling. Motion often defines perceived quality — do not leave it as an afterthought.
84
+ Treat HTML as a **map of hierarchy**, not as shippable source code.
87
85
 
88
- Then continue with typography, spacing, and component structure as usual.
86
+ - **DevTools limitation:** Copying `<head>` and `<body>` with “Copy Copy outerHTML” gives **one frozen snapshot**. It omits most **stylesheet and script** behavior and may inline classes whose meaning lives in external bundles.
87
+ - **What to extract anyway:** Landmark regions, heading levels, nesting (sections → rows → cards), repeated patterns, form fields, navigation trees, semantic roles.
88
+ - **What not to do:** Do not paste a single giant HTML file into production or assume it reproduces routing, hydration, or data fetching.
89
89
 
90
- ## Phase 1: Visual Audit
90
+ ### Component & layout checklist (supports Step 1)
91
+
92
+ **Component inventory** — For each distinct UI block, capture:
91
93
 
92
- ### Screenshots to Capture
93
- - [ ] Every distinct page — desktop, tablet, mobile
94
- - [ ] Dark mode variants (if applicable)
95
- - [ ] Light mode variants (if applicable)
96
- - [ ] Key interaction states (hover, active, open menus, modals)
97
- - [ ] Loading/skeleton states
98
- - [ ] Empty states
99
- - [ ] Error states
100
-
101
- ### Design Tokens to Extract
102
- - [ ] **Colors** — background, text (primary/secondary/muted), accent, border, hover, error, success, warning
103
- - [ ] **Typography** — font family, sizes (h1-h6, body, caption, label), weights, line heights, letter spacing
104
- - [ ] **Spacing** — padding/margin patterns (look for a scale: 4px, 8px, 12px, 16px, 24px, 32px, etc.)
105
- - [ ] **Border radius** — buttons, cards, avatars, inputs
106
- - [ ] **Shadows/elevation** — card shadows, dropdown shadows, modal overlay
107
- - [ ] **Breakpoints** — when does the layout shift? (inspect with DevTools responsive mode)
108
- - [ ] **Icons** — which icon library? custom SVGs? sizes?
109
- - [ ] **Avatars** — sizes, shapes, fallback behavior
110
- - [ ] **Buttons** — all variants (primary, secondary, ghost, icon-only, danger)
111
- - [ ] **Inputs** — text fields, textareas, selects, checkboxes, toggles
112
-
113
- ## Phase 2: Component Inventory
114
-
115
- For each distinct UI component, document:
116
94
  1. **Name** — what would you call this component?
117
- 2. **Structure** — what HTML elements / child components does it contain?
118
- 3. **Variants** — does it have different sizes, colors, or states?
95
+ 2. **Structure** — HTML elements / child components and order
96
+ 3. **Variants** — sizes, tones, densities
119
97
  4. **States** — default, hover, active, disabled, loading, error, empty
120
- 5. **Responsive behavior** — how does it change at different breakpoints?
121
- 6. **Interactions** — click, hover, focus, keyboard navigation
122
- 7. **Animations** — transitions, entrance/exit animations, micro-interactions
123
-
124
- ### Common Components to Look For
125
- - Navigation (top bar, sidebar, bottom bar)
126
- - Cards / list items
127
- - Buttons and links
128
- - Forms and inputs
129
- - Modals and dialogs
130
- - Dropdowns and menus
131
- - Tabs and segmented controls
132
- - Avatars and user badges
133
- - Loading skeletons
134
- - Toast notifications
135
- - Tooltips and popovers
136
-
137
- ## Phase 3: Layout Architecture
138
-
139
- - [ ] **Grid system** — CSS Grid? Flexbox? Fixed widths?
140
- - [ ] **Column layout** — how many columns at each breakpoint?
141
- - [ ] **Max-width** main content area max-width
142
- - [ ] **Sticky elements** — header, sidebar, floating buttons
143
- - [ ] **Z-index layers** navigation, modals, tooltips, overlays
144
- - [ ] **Scroll behavior** — infinite scroll, pagination, virtual scrolling
145
-
146
- ## Phase 4: Technical Stack Analysis
147
-
148
- - [ ] **Framework** — React? Vue? Angular? Check `__NEXT_DATA__`, `__NUXT__`, `ng-version`
149
- - [ ] **CSS approach** — Tailwind (utility classes), CSS Modules, Styled Components, Emotion, vanilla CSS
150
- - [ ] **State management** — Redux (check DevTools), React Query, Zustand, Pinia
151
- - [ ] **API patterns** — REST, GraphQL (check network tab for `/graphql` requests)
152
- - [ ] **Font loading** — Google Fonts, self-hosted, system fonts
153
- - [ ] **Image strategy** — CDN, lazy loading, srcset, WebP/AVIF
154
- - [ ] **Animation library** — Framer Motion, GSAP, CSS transitions only
155
-
156
- ## Phase 5: Documentation Output
157
-
158
- After inspection, create these files in `docs/research/`:
159
- 1. `DESIGN_TOKENS.md` All extracted colors, typography, spacing
160
- 2. `COMPONENT_INVENTORY.md`Every component with structure notes
161
- 3. `LAYOUT_ARCHITECTURE.md` — Page layouts, grid system, responsive behavior
162
- 4. `INTERACTION_PATTERNS.md` — Animations, transitions, hover states
163
- 5. `TECH_STACK_ANALYSIS.md` — What the site uses and our chosen equivalents
98
+ 5. **Responsive behavior** — changes per breakpoint
99
+ 6. **Interactions** — click, hover, focus, keyboard
100
+
101
+ **Layout architecture**
102
+
103
+ - [ ] **Grid vs flex** — primary layout mechanism
104
+ - [ ] **Columns** — count per breakpoint
105
+ - [ ] **Max-width** — content well width
106
+ - [ ] **Sticky / fixed** — header, sidebars, floating CTAs
107
+ - [ ] **Z-index layers** — nav, overlays, tooltips
108
+ - [ ] **Scroll model** — normal, infinite, virtual lists, snap
109
+
110
+ **Screenshots** (tie each shot to a section in the hierarchy)
111
+
112
+ - [ ] Every distinct page — desktop, tablet, mobile
113
+ - [ ] Theme variants (light / dark if applicable)
114
+ - [ ] Hover, active, menus open, modals
115
+ - [ ] Loading / skeleton / empty / error states
116
+
117
+ ---
118
+
119
+ ## Step 2Styles (computed appearance + real CSS)
120
+
121
+ Rendered look comes from **CSS** (linked files, injected `<style>` blocks, build output)—not from raw element copy alone.
122
+
123
+ - **Per-element:** In DevTools **Styles** / **Computed**, capture what matters for fidelity: typography, spacing, colors, borders, shadows, breakpoints where rules change.
124
+ - **Global:** From **Sources** or **Network**, identify main stylesheets / CSS chunks; note filenames or URLs for the agents or scripts that will mirror tokens.
125
+ - **Design tokens to extract**
126
+
127
+ - [ ] **Colors** — background, text (primary / secondary / muted), accent, border, hover / focus, semantic (error, success, warning)
128
+ - [ ] **Typography** — families, scale (h1–h6, body, captions), weights, line-height, letter-spacing
129
+ - [ ] **Spacing** — padding/margin rhythm (e.g. 4/8/12/16…)
130
+ - [ ] **Radius & elevation** — cards, buttons, inputs, overlays
131
+ - [ ] **Breakpoints** — layout shifts (responsive mode)
132
+ - [ ] **Icons & avatars** — sizes, masks, fallbacks
133
+
134
+ **Technical CSS context** (informs Tailwind mapping)
135
+
136
+ - [ ] **CSS approach** utilities vs modules vs styled components vs vanilla
137
+ - [ ] **Fonts** Google, self-hosted, system stacks
138
+ - [ ] **Image CSS** `object-fit`, `aspect-ratio`, background layers
139
+
140
+ ---
141
+
142
+ ## Step 3 — Motion (what moves and how)
143
+
144
+ Motion is rarely recoverable from HTML copy; it lives in **CSS animations/transitions** and often **JavaScript** (scroll, gestures, carousel timing).
145
+
146
+ - **Catalog behaviors:** Entrance, hover, focus, drag, scroll-linked, carousel stagger, modal open/close, page transitions.
147
+ - **From Styles / Sources:** `animation-*`, `@keyframes`, `transition`, `transform`, `will-change`; note **duration, easing, delay, fill-mode**.
148
+ - **Libraries:** Identify Framer Motion, GSAP, Lottie, Lenis, CSS-only, etc.
149
+ - **Accessibility:** Note `prefers-reduced-motion` behavior if present.
150
+
151
+ **Priority reminder:** Capture **motion early** alongside media—perceived polish depends on it; do not leave it until the end.
152
+
153
+ ---
154
+
155
+ ## Step 4 — Assets (permission-neutral bytes + originals where required)
156
+
157
+ **Early capture**
158
+
159
+ 1. **Raster imagery** — `<img>`, `<picture>` / `<source>`, `srcset` / `sizes`, CDN URLs, lazy `data-src`, `loading="lazy"`, **`background-image`** on elements and ancestors (including `::before` / `::after`), masks using `url()`, video posters / stills.
160
+ 2. **SVGs** — Inline `<svg>`, `<use>` / sprites, **SVG in CSS** (`mask-image`, backgrounds), favicons. Prefer extracting path/viewBox into React components or files under `public/` — recreate from screenshot/trace only when markup is blocked or obfuscated.
161
+ 3. **Brand-safe slots** — **Marketing photos and illustrative hero/feature art** must not be photocopied when policy requires originality: ship **committed** files under `public/images/` (etc.), generated for **your** product idea; document paths in `docs/research/LAUNCHFRAME.md`. Blank placeholders are unfinished.
162
+ 4. **Fallbacks** — If URLs are gated, export a crisp screenshot of the element’s box (note DPR) and record the substitution in research notes.
163
+
164
+ **Technical**
165
+
166
+ - [ ] CDN vs origin paths
167
+ - [ ] Lazy loading and responsive image strategy
168
+
169
+ ---
170
+
171
+ ## Step 5 — Implementation (Next.js + components)
172
+
173
+ Rebuild deliberately in **this template’s stack** (Next.js App Router, React, TypeScript strict, shadcn/ui, Tailwind v4).
174
+
175
+ - **Do:** Small composable components, shared tokens, `cn()`, extracted icons in `src/components/icons.tsx` (or adjacent), routes under `src/app/`.
176
+ - **Don’t:** Ship one monolithic HTML string as the app or skip TypeScript/component boundaries.
177
+
178
+ ### Stack parity (helps choose libraries)
179
+
180
+ - [ ] **Framework signals** — e.g. `__NEXT_DATA__`, `__NUXT__`, `ng-version`
181
+ - [ ] **State / data** — REST, GraphQL, client stores (infer from Network)
182
+ - [ ] **Animation stack** — match or approximate with CSS or an approved motion library
183
+
184
+ ### Documentation output (`docs/research/`)
185
+
186
+ After inspection, produce durable notes:
187
+
188
+ 1. `DESIGN_TOKENS.md` — colors, typography, spacing, radius, shadows
189
+ 2. `COMPONENT_INVENTORY.md` — components with structure and states
190
+ 3. `LAYOUT_ARCHITECTURE.md` — grids, breakpoints, sticky layers
191
+ 4. `INTERACTION_PATTERNS.md` — motion, transitions, hover/focus
192
+ 5. `TECH_STACK_ANALYSIS.md` — source stack vs chosen equivalents
193
+
194
+ ### Common components to hunt for
195
+
196
+ Navigation (top/side/bottom), cards, buttons, links, forms, modals, menus, tabs, avatars/badges, skeletons, toasts, tooltips/popovers.
197
+
198
+ ---
199
+
200
+ ## Reference: Chrome MCP / agent crawl habits
201
+
202
+ Walk the DOM and network **top-down**. When multiple agents collaborate, reconcile tokens and animation specs in shared research files so Step 5 does not drift. For **`/launchframe`**, tie findings to `launchframe.context.json` and `docs/research/LAUNCHFRAME.md` per project conventions.
@@ -20,6 +20,22 @@ Before reconnaissance, write or update:
20
20
  - `docs/research/LAUNCHFRAME.md` — URLs and SaaS idea
21
21
  - **`docs/research/LAUNCHFRAME_SUBAGENTS.md`** — **before Phase 6**, ensure this runbook holds all four verifier prompts (**copy-ready**). When the bundled template differs from the latest SKILL rubrics (after skill edits), re-sync Section **Phase 6** rubrics **into this file**. Subagents receive prompts **only** from here.
22
22
 
23
+ ### Step 0a — Automated page inspection dump (mandatory)
24
+
25
+ Right after Step 0 files are written, **from the repository root**, run the bundled **Playwright** capture **once per parsed reference URL** (before Phase 1 Chrome MCP). This produces `document.html`, network `*.css` bodies, `inline-styles.json`, and `motion-summary.json` — a frozen DOM/CSS/motion bundle to attach or diff alongside live `getComputedStyle` / WAAPI work (**this does not replace** Chrome MCP for numeric motion and interaction sweeps).
26
+
27
+ 1. **One-time per machine:** `npx playwright install chromium`
28
+ 2. **Per URL** — use the URL’s hostname for the folder (example hostname `www.example.com`):
29
+
30
+ ```bash
31
+ npm run inspect:page -- "https://www.example.com/" --scroll-full --wait-until networkidle --timeout 120000 --out-parent "docs/research/www.example.com/page-inspection"
32
+ ```
33
+
34
+ That creates `docs/research/<hostname>/page-inspection/<hostname>-<iso-stamp>/` with all artifacts. Omit `--out-parent` to use the default `docs/research/page-captures/<host>-<stamp>/`.
35
+ 3. Append an **`Automated captures`** subsection to `docs/research/LAUNCHFRAME.md` listing every URL and its output directory path. Use those files in Phase 1 when structuring specs (DOM outline, stylesheet text, `@keyframes` from `motion-summary.json`) while still measuring behavior in the live tab.
36
+
37
+ If the dump fails (missing browsers, navigation timeout, TLS, bot wall), increase `--timeout`, retry with `domcontentloaded` only when necessary, or document the failure in `LAUNCHFRAME.md` and unblock before treating Phase 1 as complete.
38
+
23
39
  ## SaaS copy overlay (Phase 4 assembly and final polish)
24
40
 
25
41
  After structure and styles match the reference, apply the **SaaS idea** to hero, headings, and primary CTAs where the reference uses interchangeable marketing copy, **without** changing layout grids, spacing, or **motion numbers** from extracted specs. **Icon shapes** and **animations** (`@keyframes`, transitions, staggers, scroll triggers) remain **parity goals** sourced from extraction — swapping narrative photos does **not** relax them. **Brand identity** (below) must be **original** for anything you ship as the user’s product — never pass off the reference company’s trademarks or distinctive marks.
@@ -24,6 +24,22 @@ Before reconnaissance, write or update:
24
24
  - `docs/research/LAUNCHFRAME.md` — URLs and SaaS idea
25
25
  - **`docs/research/LAUNCHFRAME_SUBAGENTS.md`** — **before Phase 6**, ensure this runbook holds all four verifier prompts (**copy-ready**). When the bundled template differs from the latest SKILL rubrics (after skill edits), re-sync Section **Phase 6** rubrics **into this file**. Subagents receive prompts **only** from here.
26
26
 
27
+ ### Step 0a — Automated page inspection dump (mandatory)
28
+
29
+ Right after Step 0 files are written, **from the repository root**, run the bundled **Playwright** capture **once per parsed reference URL** (before Phase 1 Chrome MCP). This produces `document.html`, network `*.css` bodies, `inline-styles.json`, and `motion-summary.json` — a frozen DOM/CSS/motion bundle to attach or diff alongside live `getComputedStyle` / WAAPI work (**this does not replace** Chrome MCP for numeric motion and interaction sweeps).
30
+
31
+ 1. **One-time per machine:** `npx playwright install chromium`
32
+ 2. **Per URL** — use the URL’s hostname for the folder (example hostname `www.example.com`):
33
+
34
+ ```bash
35
+ npm run inspect:page -- "https://www.example.com/" --scroll-full --wait-until networkidle --timeout 120000 --out-parent "docs/research/www.example.com/page-inspection"
36
+ ```
37
+
38
+ That creates `docs/research/<hostname>/page-inspection/<hostname>-<iso-stamp>/` with all artifacts. Omit `--out-parent` to use the default `docs/research/page-captures/<host>-<stamp>/`.
39
+ 3. Append an **`Automated captures`** subsection to `docs/research/LAUNCHFRAME.md` listing every URL and its output directory path. Use those files in Phase 1 when structuring specs (DOM outline, stylesheet text, `@keyframes` from `motion-summary.json`) while still measuring behavior in the live tab.
40
+
41
+ If the dump fails (missing browsers, navigation timeout, TLS, bot wall), increase `--timeout`, retry with `domcontentloaded` only when necessary, or document the failure in `LAUNCHFRAME.md` and unblock before treating Phase 1 as complete.
42
+
27
43
  ## SaaS copy overlay (Phase 4 assembly and final polish)
28
44
 
29
45
  After structure and styles match the reference, apply the **SaaS idea** to hero, headings, and primary CTAs where the reference uses interchangeable marketing copy, **without** changing layout grids, spacing, or **motion numbers** from extracted specs. **Icon shapes** and **animations** (`@keyframes`, transitions, staggers, scroll triggers) remain **parity goals** sourced from extraction — swapping narrative photos does **not** relax them. **Brand identity** (below) must be **original** for anything you ship as the user’s product — never pass off the reference company’s trademarks or distinctive marks.