launchframe 0.4.6 → 0.4.8

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.
@@ -2,6 +2,7 @@
2
2
  name: launchframe
3
3
  description: Pixel-perfect reverse-engineer of a reference URL into this repo, plus SaaS landing copy — the only clone slash command for this template. Invoked as /launchframe.
4
4
  argument-hint: '<url> "<saas-idea>"'
5
+ argument-substitution: the reference URL(s) and SaaS idea the user passed with /launchframe
5
6
  user-invocable: true
6
7
  ---
7
8
 
@@ -12,7 +13,7 @@ user-invocable: true
12
13
  1. **Reference URL(s)** — Every `http://` or `https://` token (clone each site; use `docs/research/<hostname>/` when there are multiple).
13
14
  2. **SaaS idea** — All remaining text that is not a URL (often quoted): product pitch for hero and key marketing lines.
14
15
 
15
- You are a **foreman walking the job site** — write specs per section, dispatch builders in parallel where possible, **dispatch verification subagents** after assembly to audit images / DOM / CSS / motion, merge their findings, then QA. Not a shallow inspect-then-guess flow.
16
+ You are a **foreman walking the job site** — write specs per section, dispatch builders in parallel where possible, **dispatch verification subagents** after assembly to audit raster slots **and extracted SVG/icons** / DOM / CSS / **motion choreography**, merge their findings, then QA. Not a shallow inspect-then-guess flow.
16
17
 
17
18
  ## Step 0 — Persist Launchframe inputs
18
19
 
@@ -24,7 +25,7 @@ Before reconnaissance, write or update:
24
25
 
25
26
  ## SaaS copy overlay (Phase 4 assembly and final polish)
26
27
 
27
- 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 from extracted specs. **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.
28
+ 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.
28
29
 
29
30
  ---
30
31
 
@@ -32,11 +33,12 @@ After structure and styles match the reference, apply the **SaaS idea** to hero,
32
33
 
33
34
  The target page(s) are the URL(s) you parsed in Pre-Flight. Clone exactly what's visible at each URL. Unless the user specifies otherwise, use these defaults:
34
35
 
35
- - **Fidelity level:** Pixel-perfect — exact match in colors, spacing, typography, animations, **image presentation**, **DOM structure**, and **authored CSS intent** (computed values must match after extraction)
36
+ - **Fidelity level:** Pixel-perfect — exact match in colors, spacing, typography, **SVG icon presentation** (dimensions, strokes, fills, `viewBox`), **animations** (`@keyframes`, `animation*` / `transition*`, WA API timings, scroll timelines), raster **presentation** (responsive markup + CSS painting), **DOM structure**, and **authored CSS intent** (computed values must match after extraction)
36
37
  - **In scope:** Visual layout and styling, component structure and interactions, responsive design, mock data for demo purposes
37
38
  - **Out of scope:** Real backend / database, authentication, real-time features, SEO optimization, accessibility audit
38
39
  - **Customization:** Structure and visuals — pure emulation of the reference. **Marketing copy** — apply the parsed **SaaS idea** where hero/headlines/CTAs are interchangeable (see “SaaS copy overlay” above); do not invent a different product than the user’s idea.
39
- - **Brand identity:** The reference is a **pattern** for layout, motion, and UI craft — **not** permission to ship their brand. Unless the user **explicitly** asks for a faithful copy of the reference brand (e.g. licensed work, clearly labeled internal mock, private design audit), **invent an original brand** aligned with the SaaS idea: product name, wordmark or simple logomark (SVG or styled text) sized to the same logo slot, favicon / app icon, OG imagery, and a cohesive palette. Do **not** reuse their trademarked logo paths, mascot art, or distinctive illustrative brand assets; use originals or functional UI icons instead. Hero or lifestyle images that center the reference brand should be replaced with **original** imagery or neutral compositions that keep the **same layout rhythm**. Note in `docs/research/LAUNCHFRAME.md` which marks and assets are **original brand** versus **layout-only** extraction.
40
+ - **Brand identity:** The reference is a **pattern** for layout, motion, and UI craft — **not** permission to ship their brand. Unless the user **explicitly** asks for a faithful copy of the reference brand (e.g. licensed work, clearly labeled internal mock, private design audit), **invent an original brand** aligned with the SaaS idea: product name, wordmark or simple logomark (SVG or styled text) sized to the same logo slot, favicon / app icon, OG imagery, and a cohesive palette. Do **not** reuse their trademarked logo paths, mascot art, or distinctive illustrative brand assets; use originals or functional UI icons instead. **Every raster slot** that is a photograph, illustration, or narrative marketing image on the reference (hero, feature mockups, social proof portraits, decorative panels, card thumbnails) must ship as **new, original imagery** grounded in the **SaaS idea** — treat the reference shot as a **composition brief** (aspect ratio, mood, subject *role*: dashboard vs lifestyle vs avatar) and recreate with product-relevant scenes, UI surrogates, logosafe crops, or **supporting sub-frames** (detail insets, secondary panels) that read as one family. Preserve **exact** framing CSS (`object-fit`, `object-position`, masks, layering). Do **not** hotlink or ship their competitor lifestyle/brand photography bytes except when the user explicitly allows it. Note in `docs/research/LAUNCHFRAME.md` which marks and assets are **original brand** versus **layout-only** extraction.
41
+ - **Functional icons & motion choreography:** Anything the reference treats as **UI iconography that is not a forbidden trademark** (chevrons, menu marks, inline pictograms, sprite symbols, repeating UI glyphs) — **lift path data / sprite refs / mask SVGs from the DOM** and reproduce **`viewBox`, stroke widths, joins, fills, `currentColor` behavior.** Do **not** swap in unrelated Lucide (or arbitrary stock SVG) guesses "that look close." **`@keyframes`**, **`transition` / `animation` longhands**, scroll-driven timelines, carousel timings, stagger delays, easing curves — **lift from live measurement + stylesheet text** per §0.3 — **omit or substitute timing only** when respecting `prefers-reduced-motion` or when the measured reference does the same. Product-themed raster replacements do **not** waive SVG or animation parity.
40
42
 
41
43
  If the user provides additional instructions (specific fidelity level, customizations, extra context), honor those over the defaults.
42
44
 
@@ -59,9 +61,9 @@ When you traverse the DOM and the Network panel, do **not** treat all nodes equa
59
61
  1. **Images (raster + video stills) — HTML, files, and CSS together** — Enumeration is not enough: the clone must match **how** each asset is mounted and styled.
60
62
  - **Markup parity:** Preserve `<picture>` / `<source>` **order**, **`media` / `type`** attributes, and **`sizes`** where the reference uses them; preserve **`srcset`** descriptor patterns (w/x qualifiers) on `<img>` or **equivalent** `next/image` `sizes` + `srcSet` (document the mapping in the spec). Copy **`loading`**, **`decoding`**, **`fetchpriority`**, **`alt`**, **`role`/`aria-*`** when they affect layout or LCP. **`width` / `height`** (or intrinsic aspect + CSS `aspect-ratio`) must stop layout shift the same way as the reference; note **`width`/`height` attributes vs CSS** if both exist.
61
63
  - **Box + painting:** Extract and reproduce **`object-fit`**, **`object-position`**, **parent `overflow`**, **clipping `border-radius`**, **masks**, **`filter`**, and **`mix-blend-mode`** on the same stacking context as the live node. **`background-image`** on the element or **`::before` / `::after`** must use the **same** cover/contain behavior, **position**, **size**, **repeat**, and **attachment** (record pseudo-elements explicitly in the spec).
62
- - **Files:** Download real bytes to `public/images/` (or videos/posters). **Provenance** in spec: URL hash or byte size so verifiers can confirm the correct asset. No “similar” stock swaps unless marked **substitute** per Scope Defaults.
63
- 2. **SVGs & iconography** — Inline `<svg>`, sprite `symbol` defs, **SVG used as masks/filters**, icon fonts (prefer path extraction). Convert to `@/components/icons.tsx` (or section-local components) with meaningful names. Prioritize crisp edges and correct `viewBox` over shrinking bundle size during emulation.
64
- 3. **Motion & animation (Chrome MCP)** — Treat this like color and spacing: **numeric fidelity**. In Chrome MCP, evaluate scripts against the live page to capture:
64
+ - **Files:** For **structural/decorative or permission-neutral** imagery (textures, gradients, generic UI chrome where no competitor brand reads), download real bytes to `public/images/` (or videos/posters). **Provenance** in spec: URL hash or byte size so verifiers can confirm the correct asset. For **brand- or product-story** photos and illustrations per Scope Defaults, **do not** pass off the reference files as yours — replace with originals saved under `public/images/` with spec lines **substitute — product-themed** (describe intent vs reference role). No unrelated stock swaps unless similarly marked.
65
+ 2. **SVGs & iconography — copy glyphs, don't improvise.** Inline `<svg>`, sprite `symbol` defs, **SVG used as masks/filters**, icon fonts (**prefer extracting vector paths**, not swapping fonts blindly). Convert to `@/components/icons.tsx` (or section-local components) with meaningful names. **Ship the reference geometry**: matching `viewBox`, path coordinates, strokes/caps/joins verify at 1× and 2× DPR beside a screenshot overlay. Replacing forbidden trademark marks is done under Brand identity with **equivalent silhouette area + optical weight**, not a random different icon shape.
66
+ 3. **Motion & animation (Chrome MCP) — copy choreography, omit nothing casually.** Treat this like color and spacing: **numeric fidelity**. If the reference animates **on load, hover, scroll, intersection, drag, carousel tick, or tab change**, capture and port it unless `prefers-reduced-motion` or an explicit exemption says otherwise — a static clone while the reference moves is wrong. In Chrome MCP, evaluate scripts against the live page to capture:
65
67
  - Full **`animation`** shorthand plus **`animation-*` longhands** (`animation-name`, `-duration`, `-delay`, `-timing-function`, `-iteration-count`, `-direction`, `-fill-mode`, `-play-state`, **`animation-timeline`** / scroll timelines)
66
68
  - Full **`transition`** shorthand plus **`transition-*` longhands**, and **`transform`** / **`will-change`** as applied during and after motion
67
69
  - **Author `@keyframes`** — walk `document.styleSheets` / `cssRules` and copy `CSSKeyframesRule` bodies **where the browser exposes them** (same-origin stylesheets). For cross-origin CSS that throws on access, use DevTools **Sources** or fetch the CSS URL and paste the `@keyframes` into the spec — do not guess intermediate keyframe percentages
@@ -94,9 +96,7 @@ Look at each section and judge its complexity. A simple banner with a heading an
94
96
 
95
97
  ### 3. Real Content, Real Assets
96
98
 
97
- Extract the actual text, images, videos, and SVGs from the live site. This is a clone, not a mockup. Use `element.textContent`, download every `<img>` and `<video>`, extract inline `<svg>` elements as React components. The only time you generate content is when something is clearly server-generated and unique per session.
98
-
99
- **Prioritize** (see §0): downloadable imagery and backgrounds first, then SVG/icon layers, then motion. If you must **fabricate** an asset, prefer screenshot-based exports or traced vectors tied to measured box sizes — avoid unrelated stock art.
99
+ Extract the **verbatim marketing copy only where it is layout boilerplate**; otherwise apply the SaaS idea. For **pixels**: extract **dimensions, layering, masks, responsive markup, and filenames/paths needed for parity**, but treat **marketing photos and illustrative brand art** per Scope Defaults — **authored originals** tied to the product (including cohesive **sub-images** where the reference uses a small secondary crop or inset), not a gallery of their stock photography. Structural assets (patterns, screenshots of generic UI motifs you rebuild) follow §0 extraction. **Functional icons (`<svg>`/sprites) and all motion choreography are copied from extraction** alongside that — originals-for-product applies to narrative **raster** slots, **not** to carte-blanche SVG or timing drift. Download every reference `<video>` poster and neutral asset you keep; extract inline `<svg>` elements as React components unless they encode trademark marks forbidden under Brand identity (replace with equivalent optical weight there). Fabricate raster/vector only when extraction is blocked label **substitute** in specs and research notes — and **avoid unrelated stock**; stay on-theme for the SaaS idea.
100
100
 
101
101
  **Layered assets matter.** A section that looks like one image is often multiple layers — a background watercolor/gradient, a foreground UI mockup PNG, an overlay icon. Inspect each container's full DOM tree and enumerate ALL `<img>` elements and background images within it, including absolutely-positioned overlays. Missing an overlay image makes the clone look empty even if the background is correct.
102
102
 
@@ -554,7 +554,7 @@ Foreman self-review is insufficient — **dispatch independent checker agents**
554
554
 
555
555
  **Minimum four verification passes** (one subagent each, or one agent run sequentially if the host limits parallelism):
556
556
 
557
- 1. **Images & media** — List every image/video poster referenced from `src/` (components, `app/`). Confirm **files exist** under `public/` with **correct paths**; compare presentation to specs: **`picture`/`source` behavior**, **`sizes` / responsive behavior**, **`object-fit` / `object-position`**, dimensions/aspect-ratio, **parent overflow and radius**, **`background-image`** and **pseudo-elements**. Flag wrong crops, missing layers, or lazy `next/image` `fill` misuse.
557
+ 1. **Raster media & icons** — List every image/video poster and **every authored SVG/component used as an icon** referenced from `src/` (components, `app/`). Confirm **files exist** under `public/` with **correct paths** where expected; compare presentation to specs: **`picture`/`source` behavior**, **`sizes` / responsive behavior**, **`object-fit` / `object-position`**, dimensions/aspect-ratio, **parent overflow and radius**, **`background-image`** and **pseudo-elements**. For SVGs/icons: **`viewBox`**, strokes/fills/`currentColor`, and sprite usage must match specs — reject opportunistic Lucide substitutions unless the spec explicitly allowed them. Flag wrong crops, missing layers, or lazy `next/image` `fill` misuse.
558
558
  2. **HTML / DOM structure** — Diff **PAGE_TOPOLOGY.md** + component specs against the React tree: **section order**, **wrapper count**, **sibling order**, scroll/sticky containers. Any flattened structure that changes stacking or scroll must be **FAIL** until fixed.
559
559
  3. **CSS parity** — Spot-check **hero, nav, first fold, footer** (and any section flagged risky) against spec CSS: tokens in **`globals.css`**, arbitrary Tailwind vs measured px, **keyframes** presence. Run **`npm run lint`** and **`npm run typecheck`** inside the verification worktree; failures = **FAIL** until green.
560
560
  4. **Motion & interaction** — Re-walk **`docs/research/BEHAVIORS.md`** and motion audit JSON: headers, carousels, scroll-driven UI, smooth-scroll libs. Phase 5 motion QA must be **confirmed**, not assumed.
@@ -566,6 +566,7 @@ Each subagent returns **`PASS` or `FAIL`**, a **bullet list** of issues with **`
566
566
  Before dispatching ANY builder agent, verify you can check every box. If you can't, go back and extract more.
567
567
 
568
568
  - [ ] **Image markup + styling** captured in spec: `picture`/`source`/`sizes`/`srcset` (or documented `next/image` mapping), `object-fit`/`object-position`, clipping parents, pseudo-element backgrounds if any
569
+ - [ ] **Icon/SVG snippets** inlined in spec where needed: dominant paths or sprite `id`s, **`viewBox`**, stroke/fill rules — enough that a builder does not guess Lucide substitutions
569
570
  - [ ] **DOM outline** included for non-trivial sections (wrappers, order)
570
571
  - [ ] Spec file written to `docs/research/components/<name>.spec.md` with ALL sections filled
571
572
  - [ ] Every CSS value in the spec is from `getComputedStyle()`, not estimated
@@ -599,6 +600,7 @@ These are lessons from previous failed clones — each one cost hours of rework:
599
600
  - **Don't forget smooth scroll libraries.** Check for Lenis (`.lenis` class), Locomotive Scroll, or similar. Default browser scrolling feels noticeably different and the user will spot it immediately.
600
601
  - **Don't collapse responsive image markup.** Dropping `<picture>` / `<source media="…">` or `sizes` so “one JPEG is enough” changes which URL loads and breaks fidelity — mirror the reference’s responsive strategy.
601
602
  - **Don't guess motion.** If `transition-duration` is 280ms with `cubic-bezier(0.4, 0, 0.2, 1)`, the clone must use those exact values from Chrome MCP — not "about 0.3s ease."
603
+ - **Don't swap reference-specific SVG/UI icons for random Lucide** (or unrelated stock glyphs) unless the spec proves geometric equivalence — extract the DOM paths/sprites instead.
602
604
  - **Don't dispatch builders without a spec file.** The spec file forces exhaustive extraction and creates an auditable artifact. Skipping it means the builder gets whatever you can fit in a prompt from memory.
603
605
 
604
606
  ## Completion
@@ -610,5 +612,5 @@ When done, report:
610
612
  - Total assets downloaded (images, videos, SVGs, fonts)
611
613
  - Build status (`npm run build` result)
612
614
  - Visual QA results (any remaining discrepancies)
613
- - **Subagent verification:** which audit passes ran (images / DOM / CSS / motion), **PASS/FAIL** each, and link or paste issue lists; unresolved items under **Known gaps**
615
+ - **Subagent verification:** which audit passes ran (raster + SVG icons / DOM / CSS / motion), **PASS/FAIL** each, and link or paste issue lists; unresolved items under **Known gaps**
614
616
  - Any known gaps or limitations
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: launchframe
3
- description: "Reverse-engineer a reference URL into this repo + SaaS landing copy — /launchframe"
3
+ description: "Pixel-perfect reverse-engineer of a reference URL into this repo, plus SaaS landing copy — the only clone slash command for this template. Invoked as /launchframe."
4
4
  invokable: true
5
5
  ---
6
6
  <!-- AUTO-GENERATED from .claude/skills/launchframe/SKILL.md — do not edit directly.
@@ -14,7 +14,7 @@ invokable: true
14
14
  1. **Reference URL(s)** — Every `http://` or `https://` token (clone each site; use `docs/research/<hostname>/` when there are multiple).
15
15
  2. **SaaS idea** — All remaining text that is not a URL (often quoted): product pitch for hero and key marketing lines.
16
16
 
17
- You are a **foreman walking the job site** — write specs per section, dispatch builders in parallel where possible, **dispatch verification subagents** after assembly to audit images / DOM / CSS / motion, merge their findings, then QA. Not a shallow inspect-then-guess flow.
17
+ You are a **foreman walking the job site** — write specs per section, dispatch builders in parallel where possible, **dispatch verification subagents** after assembly to audit raster slots **and extracted SVG/icons** / DOM / CSS / **motion choreography**, merge their findings, then QA. Not a shallow inspect-then-guess flow.
18
18
 
19
19
  ## Step 0 — Persist Launchframe inputs
20
20
 
@@ -26,7 +26,7 @@ Before reconnaissance, write or update:
26
26
 
27
27
  ## SaaS copy overlay (Phase 4 assembly and final polish)
28
28
 
29
- 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 from extracted specs. **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.
29
+ 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.
30
30
 
31
31
  ---
32
32
 
@@ -34,11 +34,12 @@ After structure and styles match the reference, apply the **SaaS idea** to hero,
34
34
 
35
35
  The target page(s) are the URL(s) you parsed in Pre-Flight. Clone exactly what's visible at each URL. Unless the user specifies otherwise, use these defaults:
36
36
 
37
- - **Fidelity level:** Pixel-perfect — exact match in colors, spacing, typography, animations, **image presentation**, **DOM structure**, and **authored CSS intent** (computed values must match after extraction)
37
+ - **Fidelity level:** Pixel-perfect — exact match in colors, spacing, typography, **SVG icon presentation** (dimensions, strokes, fills, `viewBox`), **animations** (`@keyframes`, `animation*` / `transition*`, WA API timings, scroll timelines), raster **presentation** (responsive markup + CSS painting), **DOM structure**, and **authored CSS intent** (computed values must match after extraction)
38
38
  - **In scope:** Visual layout and styling, component structure and interactions, responsive design, mock data for demo purposes
39
39
  - **Out of scope:** Real backend / database, authentication, real-time features, SEO optimization, accessibility audit
40
40
  - **Customization:** Structure and visuals — pure emulation of the reference. **Marketing copy** — apply the parsed **SaaS idea** where hero/headlines/CTAs are interchangeable (see “SaaS copy overlay” above); do not invent a different product than the user’s idea.
41
- - **Brand identity:** The reference is a **pattern** for layout, motion, and UI craft — **not** permission to ship their brand. Unless the user **explicitly** asks for a faithful copy of the reference brand (e.g. licensed work, clearly labeled internal mock, private design audit), **invent an original brand** aligned with the SaaS idea: product name, wordmark or simple logomark (SVG or styled text) sized to the same logo slot, favicon / app icon, OG imagery, and a cohesive palette. Do **not** reuse their trademarked logo paths, mascot art, or distinctive illustrative brand assets; use originals or functional UI icons instead. Hero or lifestyle images that center the reference brand should be replaced with **original** imagery or neutral compositions that keep the **same layout rhythm**. Note in `docs/research/LAUNCHFRAME.md` which marks and assets are **original brand** versus **layout-only** extraction.
41
+ - **Brand identity:** The reference is a **pattern** for layout, motion, and UI craft — **not** permission to ship their brand. Unless the user **explicitly** asks for a faithful copy of the reference brand (e.g. licensed work, clearly labeled internal mock, private design audit), **invent an original brand** aligned with the SaaS idea: product name, wordmark or simple logomark (SVG or styled text) sized to the same logo slot, favicon / app icon, OG imagery, and a cohesive palette. Do **not** reuse their trademarked logo paths, mascot art, or distinctive illustrative brand assets; use originals or functional UI icons instead. **Every raster slot** that is a photograph, illustration, or narrative marketing image on the reference (hero, feature mockups, social proof portraits, decorative panels, card thumbnails) must ship as **new, original imagery** grounded in the **SaaS idea** — treat the reference shot as a **composition brief** (aspect ratio, mood, subject *role*: dashboard vs lifestyle vs avatar) and recreate with product-relevant scenes, UI surrogates, logosafe crops, or **supporting sub-frames** (detail insets, secondary panels) that read as one family. Preserve **exact** framing CSS (`object-fit`, `object-position`, masks, layering). Do **not** hotlink or ship their competitor lifestyle/brand photography bytes except when the user explicitly allows it. Note in `docs/research/LAUNCHFRAME.md` which marks and assets are **original brand** versus **layout-only** extraction.
42
+ - **Functional icons & motion choreography:** Anything the reference treats as **UI iconography that is not a forbidden trademark** (chevrons, menu marks, inline pictograms, sprite symbols, repeating UI glyphs) — **lift path data / sprite refs / mask SVGs from the DOM** and reproduce **`viewBox`, stroke widths, joins, fills, `currentColor` behavior.** Do **not** swap in unrelated Lucide (or arbitrary stock SVG) guesses "that look close." **`@keyframes`**, **`transition` / `animation` longhands**, scroll-driven timelines, carousel timings, stagger delays, easing curves — **lift from live measurement + stylesheet text** per §0.3 — **omit or substitute timing only** when respecting `prefers-reduced-motion` or when the measured reference does the same. Product-themed raster replacements do **not** waive SVG or animation parity.
42
43
 
43
44
  If the user provides additional instructions (specific fidelity level, customizations, extra context), honor those over the defaults.
44
45
 
@@ -61,9 +62,9 @@ When you traverse the DOM and the Network panel, do **not** treat all nodes equa
61
62
  1. **Images (raster + video stills) — HTML, files, and CSS together** — Enumeration is not enough: the clone must match **how** each asset is mounted and styled.
62
63
  - **Markup parity:** Preserve `<picture>` / `<source>` **order**, **`media` / `type`** attributes, and **`sizes`** where the reference uses them; preserve **`srcset`** descriptor patterns (w/x qualifiers) on `<img>` or **equivalent** `next/image` `sizes` + `srcSet` (document the mapping in the spec). Copy **`loading`**, **`decoding`**, **`fetchpriority`**, **`alt`**, **`role`/`aria-*`** when they affect layout or LCP. **`width` / `height`** (or intrinsic aspect + CSS `aspect-ratio`) must stop layout shift the same way as the reference; note **`width`/`height` attributes vs CSS** if both exist.
63
64
  - **Box + painting:** Extract and reproduce **`object-fit`**, **`object-position`**, **parent `overflow`**, **clipping `border-radius`**, **masks**, **`filter`**, and **`mix-blend-mode`** on the same stacking context as the live node. **`background-image`** on the element or **`::before` / `::after`** must use the **same** cover/contain behavior, **position**, **size**, **repeat**, and **attachment** (record pseudo-elements explicitly in the spec).
64
- - **Files:** Download real bytes to `public/images/` (or videos/posters). **Provenance** in spec: URL hash or byte size so verifiers can confirm the correct asset. No “similar” stock swaps unless marked **substitute** per Scope Defaults.
65
- 2. **SVGs & iconography** — Inline `<svg>`, sprite `symbol` defs, **SVG used as masks/filters**, icon fonts (prefer path extraction). Convert to `@/components/icons.tsx` (or section-local components) with meaningful names. Prioritize crisp edges and correct `viewBox` over shrinking bundle size during emulation.
66
- 3. **Motion & animation (Chrome MCP)** — Treat this like color and spacing: **numeric fidelity**. In Chrome MCP, evaluate scripts against the live page to capture:
65
+ - **Files:** For **structural/decorative or permission-neutral** imagery (textures, gradients, generic UI chrome where no competitor brand reads), download real bytes to `public/images/` (or videos/posters). **Provenance** in spec: URL hash or byte size so verifiers can confirm the correct asset. For **brand- or product-story** photos and illustrations per Scope Defaults, **do not** pass off the reference files as yours — replace with originals saved under `public/images/` with spec lines **substitute — product-themed** (describe intent vs reference role). No unrelated stock swaps unless similarly marked.
66
+ 2. **SVGs & iconography — copy glyphs, don't improvise.** Inline `<svg>`, sprite `symbol` defs, **SVG used as masks/filters**, icon fonts (**prefer extracting vector paths**, not swapping fonts blindly). Convert to `@/components/icons.tsx` (or section-local components) with meaningful names. **Ship the reference geometry**: matching `viewBox`, path coordinates, strokes/caps/joins verify at 1× and 2× DPR beside a screenshot overlay. Replacing forbidden trademark marks is done under Brand identity with **equivalent silhouette area + optical weight**, not a random different icon shape.
67
+ 3. **Motion & animation (Chrome MCP) — copy choreography, omit nothing casually.** Treat this like color and spacing: **numeric fidelity**. If the reference animates **on load, hover, scroll, intersection, drag, carousel tick, or tab change**, capture and port it unless `prefers-reduced-motion` or an explicit exemption says otherwise — a static clone while the reference moves is wrong. In Chrome MCP, evaluate scripts against the live page to capture:
67
68
  - Full **`animation`** shorthand plus **`animation-*` longhands** (`animation-name`, `-duration`, `-delay`, `-timing-function`, `-iteration-count`, `-direction`, `-fill-mode`, `-play-state`, **`animation-timeline`** / scroll timelines)
68
69
  - Full **`transition`** shorthand plus **`transition-*` longhands**, and **`transform`** / **`will-change`** as applied during and after motion
69
70
  - **Author `@keyframes`** — walk `document.styleSheets` / `cssRules` and copy `CSSKeyframesRule` bodies **where the browser exposes them** (same-origin stylesheets). For cross-origin CSS that throws on access, use DevTools **Sources** or fetch the CSS URL and paste the `@keyframes` into the spec — do not guess intermediate keyframe percentages
@@ -96,9 +97,7 @@ Look at each section and judge its complexity. A simple banner with a heading an
96
97
 
97
98
  ### 3. Real Content, Real Assets
98
99
 
99
- Extract the actual text, images, videos, and SVGs from the live site. This is a clone, not a mockup. Use `element.textContent`, download every `<img>` and `<video>`, extract inline `<svg>` elements as React components. The only time you generate content is when something is clearly server-generated and unique per session.
100
-
101
- **Prioritize** (see §0): downloadable imagery and backgrounds first, then SVG/icon layers, then motion. If you must **fabricate** an asset, prefer screenshot-based exports or traced vectors tied to measured box sizes — avoid unrelated stock art.
100
+ Extract the **verbatim marketing copy only where it is layout boilerplate**; otherwise apply the SaaS idea. For **pixels**: extract **dimensions, layering, masks, responsive markup, and filenames/paths needed for parity**, but treat **marketing photos and illustrative brand art** per Scope Defaults — **authored originals** tied to the product (including cohesive **sub-images** where the reference uses a small secondary crop or inset), not a gallery of their stock photography. Structural assets (patterns, screenshots of generic UI motifs you rebuild) follow §0 extraction. **Functional icons (`<svg>`/sprites) and all motion choreography are copied from extraction** alongside that — originals-for-product applies to narrative **raster** slots, **not** to carte-blanche SVG or timing drift. Download every reference `<video>` poster and neutral asset you keep; extract inline `<svg>` elements as React components unless they encode trademark marks forbidden under Brand identity (replace with equivalent optical weight there). Fabricate raster/vector only when extraction is blocked label **substitute** in specs and research notes — and **avoid unrelated stock**; stay on-theme for the SaaS idea.
102
101
 
103
102
  **Layered assets matter.** A section that looks like one image is often multiple layers — a background watercolor/gradient, a foreground UI mockup PNG, an overlay icon. Inspect each container's full DOM tree and enumerate ALL `<img>` elements and background images within it, including absolutely-positioned overlays. Missing an overlay image makes the clone look empty even if the background is correct.
104
103
 
@@ -556,7 +555,7 @@ Foreman self-review is insufficient — **dispatch independent checker agents**
556
555
 
557
556
  **Minimum four verification passes** (one subagent each, or one agent run sequentially if the host limits parallelism):
558
557
 
559
- 1. **Images & media** — List every image/video poster referenced from `src/` (components, `app/`). Confirm **files exist** under `public/` with **correct paths**; compare presentation to specs: **`picture`/`source` behavior**, **`sizes` / responsive behavior**, **`object-fit` / `object-position`**, dimensions/aspect-ratio, **parent overflow and radius**, **`background-image`** and **pseudo-elements**. Flag wrong crops, missing layers, or lazy `next/image` `fill` misuse.
558
+ 1. **Raster media & icons** — List every image/video poster and **every authored SVG/component used as an icon** referenced from `src/` (components, `app/`). Confirm **files exist** under `public/` with **correct paths** where expected; compare presentation to specs: **`picture`/`source` behavior**, **`sizes` / responsive behavior**, **`object-fit` / `object-position`**, dimensions/aspect-ratio, **parent overflow and radius**, **`background-image`** and **pseudo-elements**. For SVGs/icons: **`viewBox`**, strokes/fills/`currentColor`, and sprite usage must match specs — reject opportunistic Lucide substitutions unless the spec explicitly allowed them. Flag wrong crops, missing layers, or lazy `next/image` `fill` misuse.
560
559
  2. **HTML / DOM structure** — Diff **PAGE_TOPOLOGY.md** + component specs against the React tree: **section order**, **wrapper count**, **sibling order**, scroll/sticky containers. Any flattened structure that changes stacking or scroll must be **FAIL** until fixed.
561
560
  3. **CSS parity** — Spot-check **hero, nav, first fold, footer** (and any section flagged risky) against spec CSS: tokens in **`globals.css`**, arbitrary Tailwind vs measured px, **keyframes** presence. Run **`npm run lint`** and **`npm run typecheck`** inside the verification worktree; failures = **FAIL** until green.
562
561
  4. **Motion & interaction** — Re-walk **`docs/research/BEHAVIORS.md`** and motion audit JSON: headers, carousels, scroll-driven UI, smooth-scroll libs. Phase 5 motion QA must be **confirmed**, not assumed.
@@ -568,6 +567,7 @@ Each subagent returns **`PASS` or `FAIL`**, a **bullet list** of issues with **`
568
567
  Before dispatching ANY builder agent, verify you can check every box. If you can't, go back and extract more.
569
568
 
570
569
  - [ ] **Image markup + styling** captured in spec: `picture`/`source`/`sizes`/`srcset` (or documented `next/image` mapping), `object-fit`/`object-position`, clipping parents, pseudo-element backgrounds if any
570
+ - [ ] **Icon/SVG snippets** inlined in spec where needed: dominant paths or sprite `id`s, **`viewBox`**, stroke/fill rules — enough that a builder does not guess Lucide substitutions
571
571
  - [ ] **DOM outline** included for non-trivial sections (wrappers, order)
572
572
  - [ ] Spec file written to `docs/research/components/<name>.spec.md` with ALL sections filled
573
573
  - [ ] Every CSS value in the spec is from `getComputedStyle()`, not estimated
@@ -601,6 +601,7 @@ These are lessons from previous failed clones — each one cost hours of rework:
601
601
  - **Don't forget smooth scroll libraries.** Check for Lenis (`.lenis` class), Locomotive Scroll, or similar. Default browser scrolling feels noticeably different and the user will spot it immediately.
602
602
  - **Don't collapse responsive image markup.** Dropping `<picture>` / `<source media="…">` or `sizes` so “one JPEG is enough” changes which URL loads and breaks fidelity — mirror the reference’s responsive strategy.
603
603
  - **Don't guess motion.** If `transition-duration` is 280ms with `cubic-bezier(0.4, 0, 0.2, 1)`, the clone must use those exact values from Chrome MCP — not "about 0.3s ease."
604
+ - **Don't swap reference-specific SVG/UI icons for random Lucide** (or unrelated stock glyphs) unless the spec proves geometric equivalence — extract the DOM paths/sprites instead.
604
605
  - **Don't dispatch builders without a spec file.** The spec file forces exhaustive extraction and creates an auditable artifact. Skipping it means the builder gets whatever you can fit in a prompt from memory.
605
606
 
606
607
  ## Completion
@@ -612,5 +613,5 @@ When done, report:
612
613
  - Total assets downloaded (images, videos, SVGs, fonts)
613
614
  - Build status (`npm run build` result)
614
615
  - Visual QA results (any remaining discrepancies)
615
- - **Subagent verification:** which audit passes ran (images / DOM / CSS / motion), **PASS/FAIL** each, and link or paste issue lists; unresolved items under **Known gaps**
616
+ - **Subagent verification:** which audit passes ran (raster + SVG icons / DOM / CSS / motion), **PASS/FAIL** each, and link or paste issue lists; unresolved items under **Known gaps**
616
617
  - Any known gaps or limitations
@@ -19,7 +19,7 @@ A reusable template for reverse-engineering any website into a clean, modern Nex
19
19
  ## Tech Stack
20
20
  - **Framework:** Next.js 16 (App Router, React 19, TypeScript strict)
21
21
  - **UI:** shadcn/ui (Radix primitives, Tailwind CSS v4, `cn()` utility)
22
- - **Icons:** Lucide React (default — will be replaced/supplemented by extracted SVGs)
22
+ - **Icons:** Lucide ships as a default only **`/launchframe` clones must lift reference SVG sprites/paths/masks first** so UI icons match the source; Lucide fills gaps only where documented equivalent
23
23
  - **Styling:** Tailwind CSS v4 with oklch design tokens
24
24
  - **Deployment:** Vercel
25
25
 
@@ -40,9 +40,9 @@ A reusable template for reverse-engineering any website into a clean, modern Nex
40
40
  ## Design Principles
41
41
  - **Pixel-perfect emulation** — match the target's spacing, colors, typography exactly
42
42
  - **No personal aesthetic changes during emulation phase** — match 1:1 first, customize later
43
- - **Real content** — use actual text and assets from the target site, not placeholders
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**: recreate each visual slot with **new images** scoped to **your product** (same framing, hierarchy, and aspect ratio — detail insets / secondary crops should echo the reference layout but show product-relevant subjects), and note originals vs substitutes in `docs/research/`
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), then **motion** (keyframes, transitions, scroll/time-driven animation, libraries). Scrape and save real assets from the DOM/network first; **create** a stand-in image or vector only when fetch/blocking prevents extraction, and label substitutes clearly in research notes so the clone stays auditable
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**
46
46
 
47
47
  ## Project Structure
48
48
  ```
@@ -68,7 +68,7 @@ scripts/ # Asset download scripts
68
68
  ## MOST IMPORTANT NOTES
69
69
  - 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.
70
70
  - After editing `AGENTS.md`, run `bash scripts/sync-agent-rules.sh` to regenerate platform-specific instruction files.
71
- - After editing `.claude/skills/launchframe/SKILL.md`, run `node scripts/sync-skills.mjs` to regenerate the `/launchframe` command for all platforms.
71
+ - After editing **any** `SKILL.md` under `.claude/skills/<skill-id>/`, run `node scripts/sync-skills.mjs` to regenerate that skill’s slash commands/workflows for **every supported platform** (discovered automatically).
72
72
 
73
73
  # Website Inspection Guide
74
74
 
@@ -9,7 +9,7 @@
9
9
  1. **Reference URL(s)** — Every `http://` or `https://` token (clone each site; use `docs/research/<hostname>/` when there are multiple).
10
10
  2. **SaaS idea** — All remaining text that is not a URL (often quoted): product pitch for hero and key marketing lines.
11
11
 
12
- You are a **foreman walking the job site** — write specs per section, dispatch builders in parallel where possible, **dispatch verification subagents** after assembly to audit images / DOM / CSS / motion, merge their findings, then QA. Not a shallow inspect-then-guess flow.
12
+ You are a **foreman walking the job site** — write specs per section, dispatch builders in parallel where possible, **dispatch verification subagents** after assembly to audit raster slots **and extracted SVG/icons** / DOM / CSS / **motion choreography**, merge their findings, then QA. Not a shallow inspect-then-guess flow.
13
13
 
14
14
  ## Step 0 — Persist Launchframe inputs
15
15
 
@@ -21,7 +21,7 @@ Before reconnaissance, write or update:
21
21
 
22
22
  ## SaaS copy overlay (Phase 4 assembly and final polish)
23
23
 
24
- 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 from extracted specs. **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
+ 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
25
 
26
26
  ---
27
27
 
@@ -29,11 +29,12 @@ After structure and styles match the reference, apply the **SaaS idea** to hero,
29
29
 
30
30
  The target page(s) are the URL(s) you parsed in Pre-Flight. Clone exactly what's visible at each URL. Unless the user specifies otherwise, use these defaults:
31
31
 
32
- - **Fidelity level:** Pixel-perfect — exact match in colors, spacing, typography, animations, **image presentation**, **DOM structure**, and **authored CSS intent** (computed values must match after extraction)
32
+ - **Fidelity level:** Pixel-perfect — exact match in colors, spacing, typography, **SVG icon presentation** (dimensions, strokes, fills, `viewBox`), **animations** (`@keyframes`, `animation*` / `transition*`, WA API timings, scroll timelines), raster **presentation** (responsive markup + CSS painting), **DOM structure**, and **authored CSS intent** (computed values must match after extraction)
33
33
  - **In scope:** Visual layout and styling, component structure and interactions, responsive design, mock data for demo purposes
34
34
  - **Out of scope:** Real backend / database, authentication, real-time features, SEO optimization, accessibility audit
35
35
  - **Customization:** Structure and visuals — pure emulation of the reference. **Marketing copy** — apply the parsed **SaaS idea** where hero/headlines/CTAs are interchangeable (see “SaaS copy overlay” above); do not invent a different product than the user’s idea.
36
- - **Brand identity:** The reference is a **pattern** for layout, motion, and UI craft — **not** permission to ship their brand. Unless the user **explicitly** asks for a faithful copy of the reference brand (e.g. licensed work, clearly labeled internal mock, private design audit), **invent an original brand** aligned with the SaaS idea: product name, wordmark or simple logomark (SVG or styled text) sized to the same logo slot, favicon / app icon, OG imagery, and a cohesive palette. Do **not** reuse their trademarked logo paths, mascot art, or distinctive illustrative brand assets; use originals or functional UI icons instead. Hero or lifestyle images that center the reference brand should be replaced with **original** imagery or neutral compositions that keep the **same layout rhythm**. Note in `docs/research/LAUNCHFRAME.md` which marks and assets are **original brand** versus **layout-only** extraction.
36
+ - **Brand identity:** The reference is a **pattern** for layout, motion, and UI craft — **not** permission to ship their brand. Unless the user **explicitly** asks for a faithful copy of the reference brand (e.g. licensed work, clearly labeled internal mock, private design audit), **invent an original brand** aligned with the SaaS idea: product name, wordmark or simple logomark (SVG or styled text) sized to the same logo slot, favicon / app icon, OG imagery, and a cohesive palette. Do **not** reuse their trademarked logo paths, mascot art, or distinctive illustrative brand assets; use originals or functional UI icons instead. **Every raster slot** that is a photograph, illustration, or narrative marketing image on the reference (hero, feature mockups, social proof portraits, decorative panels, card thumbnails) must ship as **new, original imagery** grounded in the **SaaS idea** — treat the reference shot as a **composition brief** (aspect ratio, mood, subject *role*: dashboard vs lifestyle vs avatar) and recreate with product-relevant scenes, UI surrogates, logosafe crops, or **supporting sub-frames** (detail insets, secondary panels) that read as one family. Preserve **exact** framing CSS (`object-fit`, `object-position`, masks, layering). Do **not** hotlink or ship their competitor lifestyle/brand photography bytes except when the user explicitly allows it. Note in `docs/research/LAUNCHFRAME.md` which marks and assets are **original brand** versus **layout-only** extraction.
37
+ - **Functional icons & motion choreography:** Anything the reference treats as **UI iconography that is not a forbidden trademark** (chevrons, menu marks, inline pictograms, sprite symbols, repeating UI glyphs) — **lift path data / sprite refs / mask SVGs from the DOM** and reproduce **`viewBox`, stroke widths, joins, fills, `currentColor` behavior.** Do **not** swap in unrelated Lucide (or arbitrary stock SVG) guesses "that look close." **`@keyframes`**, **`transition` / `animation` longhands**, scroll-driven timelines, carousel timings, stagger delays, easing curves — **lift from live measurement + stylesheet text** per §0.3 — **omit or substitute timing only** when respecting `prefers-reduced-motion` or when the measured reference does the same. Product-themed raster replacements do **not** waive SVG or animation parity.
37
38
 
38
39
  If the user provides additional instructions (specific fidelity level, customizations, extra context), honor those over the defaults.
39
40
 
@@ -56,9 +57,9 @@ When you traverse the DOM and the Network panel, do **not** treat all nodes equa
56
57
  1. **Images (raster + video stills) — HTML, files, and CSS together** — Enumeration is not enough: the clone must match **how** each asset is mounted and styled.
57
58
  - **Markup parity:** Preserve `<picture>` / `<source>` **order**, **`media` / `type`** attributes, and **`sizes`** where the reference uses them; preserve **`srcset`** descriptor patterns (w/x qualifiers) on `<img>` or **equivalent** `next/image` `sizes` + `srcSet` (document the mapping in the spec). Copy **`loading`**, **`decoding`**, **`fetchpriority`**, **`alt`**, **`role`/`aria-*`** when they affect layout or LCP. **`width` / `height`** (or intrinsic aspect + CSS `aspect-ratio`) must stop layout shift the same way as the reference; note **`width`/`height` attributes vs CSS** if both exist.
58
59
  - **Box + painting:** Extract and reproduce **`object-fit`**, **`object-position`**, **parent `overflow`**, **clipping `border-radius`**, **masks**, **`filter`**, and **`mix-blend-mode`** on the same stacking context as the live node. **`background-image`** on the element or **`::before` / `::after`** must use the **same** cover/contain behavior, **position**, **size**, **repeat**, and **attachment** (record pseudo-elements explicitly in the spec).
59
- - **Files:** Download real bytes to `public/images/` (or videos/posters). **Provenance** in spec: URL hash or byte size so verifiers can confirm the correct asset. No “similar” stock swaps unless marked **substitute** per Scope Defaults.
60
- 2. **SVGs & iconography** — Inline `<svg>`, sprite `symbol` defs, **SVG used as masks/filters**, icon fonts (prefer path extraction). Convert to `@/components/icons.tsx` (or section-local components) with meaningful names. Prioritize crisp edges and correct `viewBox` over shrinking bundle size during emulation.
61
- 3. **Motion & animation (Chrome MCP)** — Treat this like color and spacing: **numeric fidelity**. In Chrome MCP, evaluate scripts against the live page to capture:
60
+ - **Files:** For **structural/decorative or permission-neutral** imagery (textures, gradients, generic UI chrome where no competitor brand reads), download real bytes to `public/images/` (or videos/posters). **Provenance** in spec: URL hash or byte size so verifiers can confirm the correct asset. For **brand- or product-story** photos and illustrations per Scope Defaults, **do not** pass off the reference files as yours — replace with originals saved under `public/images/` with spec lines **substitute — product-themed** (describe intent vs reference role). No unrelated stock swaps unless similarly marked.
61
+ 2. **SVGs & iconography — copy glyphs, don't improvise.** Inline `<svg>`, sprite `symbol` defs, **SVG used as masks/filters**, icon fonts (**prefer extracting vector paths**, not swapping fonts blindly). Convert to `@/components/icons.tsx` (or section-local components) with meaningful names. **Ship the reference geometry**: matching `viewBox`, path coordinates, strokes/caps/joins verify at 1× and 2× DPR beside a screenshot overlay. Replacing forbidden trademark marks is done under Brand identity with **equivalent silhouette area + optical weight**, not a random different icon shape.
62
+ 3. **Motion & animation (Chrome MCP) — copy choreography, omit nothing casually.** Treat this like color and spacing: **numeric fidelity**. If the reference animates **on load, hover, scroll, intersection, drag, carousel tick, or tab change**, capture and port it unless `prefers-reduced-motion` or an explicit exemption says otherwise — a static clone while the reference moves is wrong. In Chrome MCP, evaluate scripts against the live page to capture:
62
63
  - Full **`animation`** shorthand plus **`animation-*` longhands** (`animation-name`, `-duration`, `-delay`, `-timing-function`, `-iteration-count`, `-direction`, `-fill-mode`, `-play-state`, **`animation-timeline`** / scroll timelines)
63
64
  - Full **`transition`** shorthand plus **`transition-*` longhands**, and **`transform`** / **`will-change`** as applied during and after motion
64
65
  - **Author `@keyframes`** — walk `document.styleSheets` / `cssRules` and copy `CSSKeyframesRule` bodies **where the browser exposes them** (same-origin stylesheets). For cross-origin CSS that throws on access, use DevTools **Sources** or fetch the CSS URL and paste the `@keyframes` into the spec — do not guess intermediate keyframe percentages
@@ -91,9 +92,7 @@ Look at each section and judge its complexity. A simple banner with a heading an
91
92
 
92
93
  ### 3. Real Content, Real Assets
93
94
 
94
- Extract the actual text, images, videos, and SVGs from the live site. This is a clone, not a mockup. Use `element.textContent`, download every `<img>` and `<video>`, extract inline `<svg>` elements as React components. The only time you generate content is when something is clearly server-generated and unique per session.
95
-
96
- **Prioritize** (see §0): downloadable imagery and backgrounds first, then SVG/icon layers, then motion. If you must **fabricate** an asset, prefer screenshot-based exports or traced vectors tied to measured box sizes — avoid unrelated stock art.
95
+ Extract the **verbatim marketing copy only where it is layout boilerplate**; otherwise apply the SaaS idea. For **pixels**: extract **dimensions, layering, masks, responsive markup, and filenames/paths needed for parity**, but treat **marketing photos and illustrative brand art** per Scope Defaults — **authored originals** tied to the product (including cohesive **sub-images** where the reference uses a small secondary crop or inset), not a gallery of their stock photography. Structural assets (patterns, screenshots of generic UI motifs you rebuild) follow §0 extraction. **Functional icons (`<svg>`/sprites) and all motion choreography are copied from extraction** alongside that — originals-for-product applies to narrative **raster** slots, **not** to carte-blanche SVG or timing drift. Download every reference `<video>` poster and neutral asset you keep; extract inline `<svg>` elements as React components unless they encode trademark marks forbidden under Brand identity (replace with equivalent optical weight there). Fabricate raster/vector only when extraction is blocked label **substitute** in specs and research notes — and **avoid unrelated stock**; stay on-theme for the SaaS idea.
97
96
 
98
97
  **Layered assets matter.** A section that looks like one image is often multiple layers — a background watercolor/gradient, a foreground UI mockup PNG, an overlay icon. Inspect each container's full DOM tree and enumerate ALL `<img>` elements and background images within it, including absolutely-positioned overlays. Missing an overlay image makes the clone look empty even if the background is correct.
99
98
 
@@ -551,7 +550,7 @@ Foreman self-review is insufficient — **dispatch independent checker agents**
551
550
 
552
551
  **Minimum four verification passes** (one subagent each, or one agent run sequentially if the host limits parallelism):
553
552
 
554
- 1. **Images & media** — List every image/video poster referenced from `src/` (components, `app/`). Confirm **files exist** under `public/` with **correct paths**; compare presentation to specs: **`picture`/`source` behavior**, **`sizes` / responsive behavior**, **`object-fit` / `object-position`**, dimensions/aspect-ratio, **parent overflow and radius**, **`background-image`** and **pseudo-elements**. Flag wrong crops, missing layers, or lazy `next/image` `fill` misuse.
553
+ 1. **Raster media & icons** — List every image/video poster and **every authored SVG/component used as an icon** referenced from `src/` (components, `app/`). Confirm **files exist** under `public/` with **correct paths** where expected; compare presentation to specs: **`picture`/`source` behavior**, **`sizes` / responsive behavior**, **`object-fit` / `object-position`**, dimensions/aspect-ratio, **parent overflow and radius**, **`background-image`** and **pseudo-elements**. For SVGs/icons: **`viewBox`**, strokes/fills/`currentColor`, and sprite usage must match specs — reject opportunistic Lucide substitutions unless the spec explicitly allowed them. Flag wrong crops, missing layers, or lazy `next/image` `fill` misuse.
555
554
  2. **HTML / DOM structure** — Diff **PAGE_TOPOLOGY.md** + component specs against the React tree: **section order**, **wrapper count**, **sibling order**, scroll/sticky containers. Any flattened structure that changes stacking or scroll must be **FAIL** until fixed.
556
555
  3. **CSS parity** — Spot-check **hero, nav, first fold, footer** (and any section flagged risky) against spec CSS: tokens in **`globals.css`**, arbitrary Tailwind vs measured px, **keyframes** presence. Run **`npm run lint`** and **`npm run typecheck`** inside the verification worktree; failures = **FAIL** until green.
557
556
  4. **Motion & interaction** — Re-walk **`docs/research/BEHAVIORS.md`** and motion audit JSON: headers, carousels, scroll-driven UI, smooth-scroll libs. Phase 5 motion QA must be **confirmed**, not assumed.
@@ -563,6 +562,7 @@ Each subagent returns **`PASS` or `FAIL`**, a **bullet list** of issues with **`
563
562
  Before dispatching ANY builder agent, verify you can check every box. If you can't, go back and extract more.
564
563
 
565
564
  - [ ] **Image markup + styling** captured in spec: `picture`/`source`/`sizes`/`srcset` (or documented `next/image` mapping), `object-fit`/`object-position`, clipping parents, pseudo-element backgrounds if any
565
+ - [ ] **Icon/SVG snippets** inlined in spec where needed: dominant paths or sprite `id`s, **`viewBox`**, stroke/fill rules — enough that a builder does not guess Lucide substitutions
566
566
  - [ ] **DOM outline** included for non-trivial sections (wrappers, order)
567
567
  - [ ] Spec file written to `docs/research/components/<name>.spec.md` with ALL sections filled
568
568
  - [ ] Every CSS value in the spec is from `getComputedStyle()`, not estimated
@@ -596,6 +596,7 @@ These are lessons from previous failed clones — each one cost hours of rework:
596
596
  - **Don't forget smooth scroll libraries.** Check for Lenis (`.lenis` class), Locomotive Scroll, or similar. Default browser scrolling feels noticeably different and the user will spot it immediately.
597
597
  - **Don't collapse responsive image markup.** Dropping `<picture>` / `<source media="…">` or `sizes` so “one JPEG is enough” changes which URL loads and breaks fidelity — mirror the reference’s responsive strategy.
598
598
  - **Don't guess motion.** If `transition-duration` is 280ms with `cubic-bezier(0.4, 0, 0.2, 1)`, the clone must use those exact values from Chrome MCP — not "about 0.3s ease."
599
+ - **Don't swap reference-specific SVG/UI icons for random Lucide** (or unrelated stock glyphs) unless the spec proves geometric equivalence — extract the DOM paths/sprites instead.
599
600
  - **Don't dispatch builders without a spec file.** The spec file forces exhaustive extraction and creates an auditable artifact. Skipping it means the builder gets whatever you can fit in a prompt from memory.
600
601
 
601
602
  ## Completion
@@ -607,5 +608,5 @@ When done, report:
607
608
  - Total assets downloaded (images, videos, SVGs, fonts)
608
609
  - Build status (`npm run build` result)
609
610
  - Visual QA results (any remaining discrepancies)
610
- - **Subagent verification:** which audit passes ran (images / DOM / CSS / motion), **PASS/FAIL** each, and link or paste issue lists; unresolved items under **Known gaps**
611
+ - **Subagent verification:** which audit passes ran (raster + SVG icons / DOM / CSS / motion), **PASS/FAIL** each, and link or paste issue lists; unresolved items under **Known gaps**
611
612
  - Any known gaps or limitations
@@ -1,7 +1,7 @@
1
1
  # AUTO-GENERATED from .claude/skills/launchframe/SKILL.md
2
2
  # Run `node scripts/sync-skills.mjs` to regenerate.
3
3
 
4
- description = "Reverse-engineer a reference URL into this repo + SaaS landing copy — /launchframe"
4
+ description = "Pixel-perfect reverse-engineer of a reference URL into this repo, plus SaaS landing copy — the only clone slash command for this template. Invoked as /launchframe."
5
5
 
6
6
  [prompt]
7
7
  text = '''
@@ -13,7 +13,7 @@ text = '''
13
13
  1. **Reference URL(s)** — Every `http://` or `https://` token (clone each site; use `docs/research/<hostname>/` when there are multiple).
14
14
  2. **SaaS idea** — All remaining text that is not a URL (often quoted): product pitch for hero and key marketing lines.
15
15
 
16
- You are a **foreman walking the job site** — write specs per section, dispatch builders in parallel where possible, **dispatch verification subagents** after assembly to audit images / DOM / CSS / motion, merge their findings, then QA. Not a shallow inspect-then-guess flow.
16
+ You are a **foreman walking the job site** — write specs per section, dispatch builders in parallel where possible, **dispatch verification subagents** after assembly to audit raster slots **and extracted SVG/icons** / DOM / CSS / **motion choreography**, merge their findings, then QA. Not a shallow inspect-then-guess flow.
17
17
 
18
18
  ## Step 0 — Persist Launchframe inputs
19
19
 
@@ -25,7 +25,7 @@ Before reconnaissance, write or update:
25
25
 
26
26
  ## SaaS copy overlay (Phase 4 assembly and final polish)
27
27
 
28
- 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 from extracted specs. **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.
28
+ 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.
29
29
 
30
30
  ---
31
31
 
@@ -33,11 +33,12 @@ After structure and styles match the reference, apply the **SaaS idea** to hero,
33
33
 
34
34
  The target page(s) are the URL(s) you parsed in Pre-Flight. Clone exactly what's visible at each URL. Unless the user specifies otherwise, use these defaults:
35
35
 
36
- - **Fidelity level:** Pixel-perfect — exact match in colors, spacing, typography, animations, **image presentation**, **DOM structure**, and **authored CSS intent** (computed values must match after extraction)
36
+ - **Fidelity level:** Pixel-perfect — exact match in colors, spacing, typography, **SVG icon presentation** (dimensions, strokes, fills, `viewBox`), **animations** (`@keyframes`, `animation*` / `transition*`, WA API timings, scroll timelines), raster **presentation** (responsive markup + CSS painting), **DOM structure**, and **authored CSS intent** (computed values must match after extraction)
37
37
  - **In scope:** Visual layout and styling, component structure and interactions, responsive design, mock data for demo purposes
38
38
  - **Out of scope:** Real backend / database, authentication, real-time features, SEO optimization, accessibility audit
39
39
  - **Customization:** Structure and visuals — pure emulation of the reference. **Marketing copy** — apply the parsed **SaaS idea** where hero/headlines/CTAs are interchangeable (see “SaaS copy overlay” above); do not invent a different product than the user’s idea.
40
- - **Brand identity:** The reference is a **pattern** for layout, motion, and UI craft — **not** permission to ship their brand. Unless the user **explicitly** asks for a faithful copy of the reference brand (e.g. licensed work, clearly labeled internal mock, private design audit), **invent an original brand** aligned with the SaaS idea: product name, wordmark or simple logomark (SVG or styled text) sized to the same logo slot, favicon / app icon, OG imagery, and a cohesive palette. Do **not** reuse their trademarked logo paths, mascot art, or distinctive illustrative brand assets; use originals or functional UI icons instead. Hero or lifestyle images that center the reference brand should be replaced with **original** imagery or neutral compositions that keep the **same layout rhythm**. Note in `docs/research/LAUNCHFRAME.md` which marks and assets are **original brand** versus **layout-only** extraction.
40
+ - **Brand identity:** The reference is a **pattern** for layout, motion, and UI craft — **not** permission to ship their brand. Unless the user **explicitly** asks for a faithful copy of the reference brand (e.g. licensed work, clearly labeled internal mock, private design audit), **invent an original brand** aligned with the SaaS idea: product name, wordmark or simple logomark (SVG or styled text) sized to the same logo slot, favicon / app icon, OG imagery, and a cohesive palette. Do **not** reuse their trademarked logo paths, mascot art, or distinctive illustrative brand assets; use originals or functional UI icons instead. **Every raster slot** that is a photograph, illustration, or narrative marketing image on the reference (hero, feature mockups, social proof portraits, decorative panels, card thumbnails) must ship as **new, original imagery** grounded in the **SaaS idea** — treat the reference shot as a **composition brief** (aspect ratio, mood, subject *role*: dashboard vs lifestyle vs avatar) and recreate with product-relevant scenes, UI surrogates, logosafe crops, or **supporting sub-frames** (detail insets, secondary panels) that read as one family. Preserve **exact** framing CSS (`object-fit`, `object-position`, masks, layering). Do **not** hotlink or ship their competitor lifestyle/brand photography bytes except when the user explicitly allows it. Note in `docs/research/LAUNCHFRAME.md` which marks and assets are **original brand** versus **layout-only** extraction.
41
+ - **Functional icons & motion choreography:** Anything the reference treats as **UI iconography that is not a forbidden trademark** (chevrons, menu marks, inline pictograms, sprite symbols, repeating UI glyphs) — **lift path data / sprite refs / mask SVGs from the DOM** and reproduce **`viewBox`, stroke widths, joins, fills, `currentColor` behavior.** Do **not** swap in unrelated Lucide (or arbitrary stock SVG) guesses "that look close." **`@keyframes`**, **`transition` / `animation` longhands**, scroll-driven timelines, carousel timings, stagger delays, easing curves — **lift from live measurement + stylesheet text** per §0.3 — **omit or substitute timing only** when respecting `prefers-reduced-motion` or when the measured reference does the same. Product-themed raster replacements do **not** waive SVG or animation parity.
41
42
 
42
43
  If the user provides additional instructions (specific fidelity level, customizations, extra context), honor those over the defaults.
43
44
 
@@ -60,9 +61,9 @@ When you traverse the DOM and the Network panel, do **not** treat all nodes equa
60
61
  1. **Images (raster + video stills) — HTML, files, and CSS together** — Enumeration is not enough: the clone must match **how** each asset is mounted and styled.
61
62
  - **Markup parity:** Preserve `<picture>` / `<source>` **order**, **`media` / `type`** attributes, and **`sizes`** where the reference uses them; preserve **`srcset`** descriptor patterns (w/x qualifiers) on `<img>` or **equivalent** `next/image` `sizes` + `srcSet` (document the mapping in the spec). Copy **`loading`**, **`decoding`**, **`fetchpriority`**, **`alt`**, **`role`/`aria-*`** when they affect layout or LCP. **`width` / `height`** (or intrinsic aspect + CSS `aspect-ratio`) must stop layout shift the same way as the reference; note **`width`/`height` attributes vs CSS** if both exist.
62
63
  - **Box + painting:** Extract and reproduce **`object-fit`**, **`object-position`**, **parent `overflow`**, **clipping `border-radius`**, **masks**, **`filter`**, and **`mix-blend-mode`** on the same stacking context as the live node. **`background-image`** on the element or **`::before` / `::after`** must use the **same** cover/contain behavior, **position**, **size**, **repeat**, and **attachment** (record pseudo-elements explicitly in the spec).
63
- - **Files:** Download real bytes to `public/images/` (or videos/posters). **Provenance** in spec: URL hash or byte size so verifiers can confirm the correct asset. No “similar” stock swaps unless marked **substitute** per Scope Defaults.
64
- 2. **SVGs & iconography** — Inline `<svg>`, sprite `symbol` defs, **SVG used as masks/filters**, icon fonts (prefer path extraction). Convert to `@/components/icons.tsx` (or section-local components) with meaningful names. Prioritize crisp edges and correct `viewBox` over shrinking bundle size during emulation.
65
- 3. **Motion & animation (Chrome MCP)** — Treat this like color and spacing: **numeric fidelity**. In Chrome MCP, evaluate scripts against the live page to capture:
64
+ - **Files:** For **structural/decorative or permission-neutral** imagery (textures, gradients, generic UI chrome where no competitor brand reads), download real bytes to `public/images/` (or videos/posters). **Provenance** in spec: URL hash or byte size so verifiers can confirm the correct asset. For **brand- or product-story** photos and illustrations per Scope Defaults, **do not** pass off the reference files as yours — replace with originals saved under `public/images/` with spec lines **substitute — product-themed** (describe intent vs reference role). No unrelated stock swaps unless similarly marked.
65
+ 2. **SVGs & iconography — copy glyphs, don't improvise.** Inline `<svg>`, sprite `symbol` defs, **SVG used as masks/filters**, icon fonts (**prefer extracting vector paths**, not swapping fonts blindly). Convert to `@/components/icons.tsx` (or section-local components) with meaningful names. **Ship the reference geometry**: matching `viewBox`, path coordinates, strokes/caps/joins verify at 1× and 2× DPR beside a screenshot overlay. Replacing forbidden trademark marks is done under Brand identity with **equivalent silhouette area + optical weight**, not a random different icon shape.
66
+ 3. **Motion & animation (Chrome MCP) — copy choreography, omit nothing casually.** Treat this like color and spacing: **numeric fidelity**. If the reference animates **on load, hover, scroll, intersection, drag, carousel tick, or tab change**, capture and port it unless `prefers-reduced-motion` or an explicit exemption says otherwise — a static clone while the reference moves is wrong. In Chrome MCP, evaluate scripts against the live page to capture:
66
67
  - Full **`animation`** shorthand plus **`animation-*` longhands** (`animation-name`, `-duration`, `-delay`, `-timing-function`, `-iteration-count`, `-direction`, `-fill-mode`, `-play-state`, **`animation-timeline`** / scroll timelines)
67
68
  - Full **`transition`** shorthand plus **`transition-*` longhands**, and **`transform`** / **`will-change`** as applied during and after motion
68
69
  - **Author `@keyframes`** — walk `document.styleSheets` / `cssRules` and copy `CSSKeyframesRule` bodies **where the browser exposes them** (same-origin stylesheets). For cross-origin CSS that throws on access, use DevTools **Sources** or fetch the CSS URL and paste the `@keyframes` into the spec — do not guess intermediate keyframe percentages
@@ -95,9 +96,7 @@ Look at each section and judge its complexity. A simple banner with a heading an
95
96
 
96
97
  ### 3. Real Content, Real Assets
97
98
 
98
- Extract the actual text, images, videos, and SVGs from the live site. This is a clone, not a mockup. Use `element.textContent`, download every `<img>` and `<video>`, extract inline `<svg>` elements as React components. The only time you generate content is when something is clearly server-generated and unique per session.
99
-
100
- **Prioritize** (see §0): downloadable imagery and backgrounds first, then SVG/icon layers, then motion. If you must **fabricate** an asset, prefer screenshot-based exports or traced vectors tied to measured box sizes — avoid unrelated stock art.
99
+ Extract the **verbatim marketing copy only where it is layout boilerplate**; otherwise apply the SaaS idea. For **pixels**: extract **dimensions, layering, masks, responsive markup, and filenames/paths needed for parity**, but treat **marketing photos and illustrative brand art** per Scope Defaults — **authored originals** tied to the product (including cohesive **sub-images** where the reference uses a small secondary crop or inset), not a gallery of their stock photography. Structural assets (patterns, screenshots of generic UI motifs you rebuild) follow §0 extraction. **Functional icons (`<svg>`/sprites) and all motion choreography are copied from extraction** alongside that — originals-for-product applies to narrative **raster** slots, **not** to carte-blanche SVG or timing drift. Download every reference `<video>` poster and neutral asset you keep; extract inline `<svg>` elements as React components unless they encode trademark marks forbidden under Brand identity (replace with equivalent optical weight there). Fabricate raster/vector only when extraction is blocked label **substitute** in specs and research notes — and **avoid unrelated stock**; stay on-theme for the SaaS idea.
101
100
 
102
101
  **Layered assets matter.** A section that looks like one image is often multiple layers — a background watercolor/gradient, a foreground UI mockup PNG, an overlay icon. Inspect each container's full DOM tree and enumerate ALL `<img>` elements and background images within it, including absolutely-positioned overlays. Missing an overlay image makes the clone look empty even if the background is correct.
103
102
 
@@ -555,7 +554,7 @@ Foreman self-review is insufficient — **dispatch independent checker agents**
555
554
 
556
555
  **Minimum four verification passes** (one subagent each, or one agent run sequentially if the host limits parallelism):
557
556
 
558
- 1. **Images & media** — List every image/video poster referenced from `src/` (components, `app/`). Confirm **files exist** under `public/` with **correct paths**; compare presentation to specs: **`picture`/`source` behavior**, **`sizes` / responsive behavior**, **`object-fit` / `object-position`**, dimensions/aspect-ratio, **parent overflow and radius**, **`background-image`** and **pseudo-elements**. Flag wrong crops, missing layers, or lazy `next/image` `fill` misuse.
557
+ 1. **Raster media & icons** — List every image/video poster and **every authored SVG/component used as an icon** referenced from `src/` (components, `app/`). Confirm **files exist** under `public/` with **correct paths** where expected; compare presentation to specs: **`picture`/`source` behavior**, **`sizes` / responsive behavior**, **`object-fit` / `object-position`**, dimensions/aspect-ratio, **parent overflow and radius**, **`background-image`** and **pseudo-elements**. For SVGs/icons: **`viewBox`**, strokes/fills/`currentColor`, and sprite usage must match specs — reject opportunistic Lucide substitutions unless the spec explicitly allowed them. Flag wrong crops, missing layers, or lazy `next/image` `fill` misuse.
559
558
  2. **HTML / DOM structure** — Diff **PAGE_TOPOLOGY.md** + component specs against the React tree: **section order**, **wrapper count**, **sibling order**, scroll/sticky containers. Any flattened structure that changes stacking or scroll must be **FAIL** until fixed.
560
559
  3. **CSS parity** — Spot-check **hero, nav, first fold, footer** (and any section flagged risky) against spec CSS: tokens in **`globals.css`**, arbitrary Tailwind vs measured px, **keyframes** presence. Run **`npm run lint`** and **`npm run typecheck`** inside the verification worktree; failures = **FAIL** until green.
561
560
  4. **Motion & interaction** — Re-walk **`docs/research/BEHAVIORS.md`** and motion audit JSON: headers, carousels, scroll-driven UI, smooth-scroll libs. Phase 5 motion QA must be **confirmed**, not assumed.
@@ -567,6 +566,7 @@ Each subagent returns **`PASS` or `FAIL`**, a **bullet list** of issues with **`
567
566
  Before dispatching ANY builder agent, verify you can check every box. If you can't, go back and extract more.
568
567
 
569
568
  - [ ] **Image markup + styling** captured in spec: `picture`/`source`/`sizes`/`srcset` (or documented `next/image` mapping), `object-fit`/`object-position`, clipping parents, pseudo-element backgrounds if any
569
+ - [ ] **Icon/SVG snippets** inlined in spec where needed: dominant paths or sprite `id`s, **`viewBox`**, stroke/fill rules — enough that a builder does not guess Lucide substitutions
570
570
  - [ ] **DOM outline** included for non-trivial sections (wrappers, order)
571
571
  - [ ] Spec file written to `docs/research/components/<name>.spec.md` with ALL sections filled
572
572
  - [ ] Every CSS value in the spec is from `getComputedStyle()`, not estimated
@@ -600,6 +600,7 @@ These are lessons from previous failed clones — each one cost hours of rework:
600
600
  - **Don't forget smooth scroll libraries.** Check for Lenis (`.lenis` class), Locomotive Scroll, or similar. Default browser scrolling feels noticeably different and the user will spot it immediately.
601
601
  - **Don't collapse responsive image markup.** Dropping `<picture>` / `<source media="…">` or `sizes` so “one JPEG is enough” changes which URL loads and breaks fidelity — mirror the reference’s responsive strategy.
602
602
  - **Don't guess motion.** If `transition-duration` is 280ms with `cubic-bezier(0.4, 0, 0.2, 1)`, the clone must use those exact values from Chrome MCP — not "about 0.3s ease."
603
+ - **Don't swap reference-specific SVG/UI icons for random Lucide** (or unrelated stock glyphs) unless the spec proves geometric equivalence — extract the DOM paths/sprites instead.
603
604
  - **Don't dispatch builders without a spec file.** The spec file forces exhaustive extraction and creates an auditable artifact. Skipping it means the builder gets whatever you can fit in a prompt from memory.
604
605
 
605
606
  ## Completion
@@ -611,7 +612,7 @@ When done, report:
611
612
  - Total assets downloaded (images, videos, SVGs, fonts)
612
613
  - Build status (`npm run build` result)
613
614
  - Visual QA results (any remaining discrepancies)
614
- - **Subagent verification:** which audit passes ran (images / DOM / CSS / motion), **PASS/FAIL** each, and link or paste issue lists; unresolved items under **Known gaps**
615
+ - **Subagent verification:** which audit passes ran (raster + SVG icons / DOM / CSS / motion), **PASS/FAIL** each, and link or paste issue lists; unresolved items under **Known gaps**
615
616
  - Any known gaps or limitations
616
617
 
617
618
  '''
@@ -15,7 +15,7 @@ A reusable template for reverse-engineering any website into a clean, modern Nex
15
15
  ## Tech Stack
16
16
  - **Framework:** Next.js 16 (App Router, React 19, TypeScript strict)
17
17
  - **UI:** shadcn/ui (Radix primitives, Tailwind CSS v4, `cn()` utility)
18
- - **Icons:** Lucide React (default — will be replaced/supplemented by extracted SVGs)
18
+ - **Icons:** Lucide ships as a default only **`/launchframe` clones must lift reference SVG sprites/paths/masks first** so UI icons match the source; Lucide fills gaps only where documented equivalent
19
19
  - **Styling:** Tailwind CSS v4 with oklch design tokens
20
20
  - **Deployment:** Vercel
21
21
 
@@ -36,9 +36,9 @@ A reusable template for reverse-engineering any website into a clean, modern Nex
36
36
  ## Design Principles
37
37
  - **Pixel-perfect emulation** — match the target's spacing, colors, typography exactly
38
38
  - **No personal aesthetic changes during emulation phase** — match 1:1 first, customize later
39
- - **Real content** — use actual text and assets from the target site, not placeholders
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**: recreate each visual slot with **new images** scoped to **your product** (same framing, hierarchy, and aspect ratio — detail insets / secondary crops should echo the reference layout but show product-relevant subjects), and note originals vs substitutes in `docs/research/`
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), then **motion** (keyframes, transitions, scroll/time-driven animation, libraries). Scrape and save real assets from the DOM/network first; **create** a stand-in image or vector only when fetch/blocking prevents extraction, and label substitutes clearly in research notes so the clone stays auditable
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**
42
42
 
43
43
  ## Project Structure
44
44
  ```
@@ -64,7 +64,7 @@ scripts/ # Asset download scripts
64
64
  ## MOST IMPORTANT NOTES
65
65
  - 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.
66
66
  - After editing `AGENTS.md`, run `bash scripts/sync-agent-rules.sh` to regenerate platform-specific instruction files.
67
- - After editing `.claude/skills/launchframe/SKILL.md`, run `node scripts/sync-skills.mjs` to regenerate the `/launchframe` command for all platforms.
67
+ - After editing **any** `SKILL.md` under `.claude/skills/<skill-id>/`, run `node scripts/sync-skills.mjs` to regenerate that skill’s slash commands/workflows for **every supported platform** (discovered automatically).
68
68
 
69
69
  # Website Inspection Guide
70
70