Clone any website with one command using AI coding agents
<!-- BEGIN:nextjs-agent-rules -->
# This is NOT the Next.js you know
This version has breaking changes โ APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.
This block is written and re-added by `next dev` โ verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
<!-- END:nextjs-agent-rules -->
# Website Reverse-Engineer Template
## What This Is
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 โ just run `/clone-website <url1> [<url2> ...]`.
## Tech Stack
- **Framework:** Next.js 16 (App Router, React 19, TypeScript strict)
- **UI:** shadcn/ui (Base UI primitives, Tailwind CSS v4, `cn()` utility)
- **Icons:** Lucide React (default โ will be replaced/supplemented by extracted SVGs)
- **Styling:** Tailwind CSS v4 with oklch design tokens
- **Deployment:** Vercel
## Commands
- `npm run dev` โ Start dev server
- `npm run build` โ Production build
- `npm run lint` โ ESLint check
- `npm run typecheck` โ TypeScript check
- `npm run check` โ Run lint + typecheck + build
## Code Style
- TypeScript strict mode, no `any`
- Named exports, PascalCase components, camelCase utils
- Tailwind utilities or scoped CSS; avoid inline styles unless behavior needs dynamic values
- 2-space indentation
- Responsive: mobile-first
## Design Principles
- **Pixel-perfect emulation** โ match the target's spacing, colors, typography exactly
- **No personal aesthetic changes during emulation phase** โ match 1:1 first, customize later
- **Real content** โ use actual text and assets from the target site, not placeholders
- **Beauty-first** โ every pixel matters
## Project Structure
```
src/
app/ # Next.js routes
components/ # React components
ui/ # shadcn/ui primitives
sites/<site>/ # Source-specific components, including extracted SVGs
lib/
utils.ts # cn() utility (shadcn)
types/ # TypeScript interfaces
hooks/ # Custom React hooks
public/
sites/<site>/ # Source-specific images, fonts, video, and other assets
docs/
research/<site>/ # Page brief, asset map, and inspection evidence
design-references/ # Screenshots and visual references
scripts/ # Asset download scripts
.agents/
skills/
clone-website/ # Canonical cross-agent cloning workflow
.claude/
commands/
clone-website.md # Thin Claude Code invocation bridge
```
## Agent Workflow
- Edit `.agents/skills/clone-website/` for cloning-workflow changes. It is the canonical skill used by Codex, Cursor, and OpenCode.
- Keep `.claude/commands/clone-website.md` as a thin Claude Code bridge to the canonical skill; do not duplicate the workflow there.