원클릭으로
clone-app
Reverse-engineer and rebuild mobile, desktop, or web apps as pixel-perfect Next.js clones from screenshots or a URL.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Reverse-engineer and rebuild mobile, desktop, or web apps as pixel-perfect Next.js clones from screenshots or a URL.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when a conversation is getting long, drifting, juggling multiple tasks, re-pasting the same files, or showing stale/confused context — and at the start of any new task. Triggers: long thread, context bloat, topic switch, repeated file uploads, 'why is it forgetting', degraded answers, finished one task and starting another.
Use when a user wants to deconstruct a complex problem, business challenge, product decision, strategy question, career crossroads, or stuck situation by stripping assumptions, identifying first principles, rebuilding options from foundational truths, and choosing one high-leverage action.
Audit role-based access control and permission drift across product surfaces.
Add a new feature to an existing @fabrk/* package following monorepo conventions
Build or rebuild the ADR index and dependency graph in AgentDB
Query AgentDB with semantic routing, hierarchical recall, causal graphs, and context synthesis
| name | clone-app |
| description | Reverse-engineer and rebuild mobile, desktop, or web apps as pixel-perfect Next.js clones from screenshots or a URL. |
| argument-hint | <screenshots-folder | url> [ios|android|desktop|web] |
| user-invocable | true |
You are about to reverse-engineer $ARGUMENTS into a pixel-perfect Next.js clone.
App cloning differs fundamentally from website cloning: there is no live DOM to inspect. Extraction is vision-based — you analyze screenshots to infer design tokens, component structure, and interaction patterns. Be meticulous. A screenshot is the only ground truth you have.
Parse $ARGUMENTS as:
~/screenshots/myapp/) — the primary input for native apps/clone-website but with mobile viewport emphasisios, android, desktop, or web (affects layout patterns to apply)If screenshots are provided, read every image in the folder before doing anything else. If a URL is provided and no browser MCP is available, ask the user to provide screenshots instead.
npm run build.docs/research/, docs/research/screens/, docs/research/components/, docs/design-references/.You have no getComputedStyle(). Every design decision — colors, spacing, typography, corner radius — must be inferred from the screenshots and committed to spec files. "It looks like 16px padding" is your extraction. Be precise about what you observe and what you're inferring vs. what you know exactly.
Before touching any individual screen, identify the persistent shell:
The shell is built once, shared everywhere. It goes first.
Map every screenshot to a named screen. Document the flow between them (what tap/click leads to what). This is your routing plan for the Next.js app.
For each screen/component, analyze the screenshot and extract:
Document every inferred value with a confidence note: (exact), (estimated), or (inferred from context).
You can infer interaction patterns even without live behavior:
> chevron → tap to navigate to detail viewDocument each inferred interaction in the screen spec. Build the web equivalent: tap → click, swipe → keyboard shortcut or button, pull-to-refresh → refresh button.
Read all screenshots. For each one:
HomeScreen, DetailScreen, ProfileScreen, SettingsScreen, etc.Save the full inventory to docs/research/SCREEN_INVENTORY.md:
# Screen Inventory
## App Shell
- Navigation pattern: [ios-nav-bar | android-top-bar | bottom-tabs | sidebar | none]
- Tab bar screens: [list of tab names if visible]
- Persistent header: [description]
## Screens
### HomeScreen (screenshot: home.png)
- Type: list
- Shell: nav bar (title: "Home"), bottom tab bar (4 tabs: Home, Search, Inbox, Profile)
- State: logged-in, has content
- Flow: tapping a list item → DetailScreen
### DetailScreen (screenshot: detail.png)
- Type: detail
- Shell: nav bar (back button, title, share button)
- State: content loaded
- Flow: back → HomeScreen
[... etc for every screenshot ...]
From the full screenshot set, extract the app's design language. Save to docs/research/DESIGN_TOKENS.md.
Analyze the screenshots and document:
## Colors
- Background (primary): #FFFFFF (estimated — main screen bg)
- Background (secondary): #F2F2F7 (estimated — grouped list bg, iOS gray)
- Text (primary): #000000 (estimated — main content text)
- Text (secondary): #8E8E93 (estimated — subtitles, captions)
- Accent (primary): #007AFF (estimated — buttons, links, active tabs)
- Destructive: #FF3B30 (estimated — delete, error states)
- Border/separator: #C6C6C8 (estimated — list row separators)
- Nav bar background: #F9F9F9 or blur (if frosted glass effect)
Map these to globals.css CSS custom properties and update :root and .dark.
## Typography
- Display/Hero: ~34px bold (title screens)
- Headline: ~28px bold (screen titles in nav bar)
- Title 1: ~22px bold (section headers)
- Title 2: ~20px semibold
- Body: ~17px regular (main content)
- Callout: ~16px regular
- Subheadline: ~15px regular
- Caption: ~13px regular (secondary info, timestamps)
- Footnote: ~12px regular (fine print)
Font family: [system-ui for iOS/Android clones unless a custom font is clearly visible]
## Spacing
- XS: 4px (icon-to-text gaps)
- SM: 8px (component padding)
- MD: 16px (standard content padding)
- LG: 24px (section gaps)
- XL: 32px (screen-level padding)
- List row height: ~44px (iOS standard) or ~56px (Material Design standard)
- Tab bar height: ~83px (iOS with home indicator) or ~56px (Android)
- Nav bar height: ~44px + status bar
- Card corner radius: [estimated from screenshots]
From all screenshots, list every distinct UI component you observe:
For each screen + each distinct component, write a spec and dispatch a builder.
Map each app screen to a Next.js route:
HomeScreen → src/app/page.tsxDetailScreen → src/app/[id]/page.tsxProfileScreen → src/app/profile/page.tsxSettingsScreen → src/app/settings/page.tsxsrc/app/layout.tsx (persistent nav, tab bar)<Dialog>)Before any screen, build the shell. This is always the first builder dispatch:
src/app/layout.tsx or src/components/AppShell.tsxThe shell builder receives:
# [ScreenName] Specification
## Overview
- **Route:** `src/app/[route]/page.tsx`
- **Screenshot:** `docs/design-references/[filename]`
- **Type:** list | detail | form | modal | onboarding | settings
- **Shell:** uses AppShell (nav bar title: "[title]", back button: [yes/no], right actions: [list])
## Layout
[Describe the visual layout top to bottom: what's in the safe area, what's in the content area, how it scrolls]
## Components Used
[List every component visible: list rows, cards, section headers, buttons, etc.]
## Design Values (extracted from screenshot)
- Background: [color]
- Content padding: [estimated value]
- Item spacing: [estimated value]
- [any other values specific to this screen]
## Component Specs
### [ComponentName] (e.g., "User List Row")
- Height: ~44px (estimated)
- Layout: leading avatar (40px circle) | title + subtitle stack | trailing chevron
- Title: [font size] [weight] [color]
- Subtitle: [font size] [weight] [color]
- Separator: 1px solid [color], inset 72px from left
- Hover/tap state: background tint [color]
- Web equivalent: `<button>` or `<Link>` with full-width row layout
### [Another component...]
## Interaction Model
- Scroll: [vertical list scroll | no scroll | horizontal scroll]
- Tappable elements: [list with what each tap does]
- Navigation: [where taps navigate]
- Web equivalents: [how each native gesture maps to web]
## Content (verbatim from screenshots)
[All visible text, copy-pasted exactly as it appears]
## Mobile Responsive
- This screen is designed for mobile. Tablet (768px+): [how it should adapt — wider content area, potential 2-column list]
- Desktop (1024px+): [how it should adapt — sidebar for list, main for detail, etc.]
Each builder receives:
cn(), Tailwind v4 utilities, shadcn primitivesnpx tsc --noEmit before finishingmd: and lg: variantsBuild order:
globals.css (do this yourself, no dispatch)src/app/layout.tsx or src/components/AppShell.tsxWire up the Next.js app:
<Link> for tab bar navigation, next/navigation for programmatic navsrc/data/ to populate lists and detail views with realistic content from the screenshotsusePathname()useRouter().back()npm run build passes cleanCompare each screenshot against the rendered Next.js route:
Only after this QA pass is the clone complete.
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', sans-serifenv(safe-area-inset-top) — use pt-safe equivalentfont-family: 'Google Sans', Roboto, sans-serifWhen done, report: