// Complete Design System Reverse Engineering (DSRE) + Functional Cloning CLI - Extract visual design (tokens, assets) AND functional behavior (workflows, state machines, business rules) from any web application
| name | design-system-cli |
| description | Complete Design System Reverse Engineering (DSRE) + Functional Cloning CLI - Extract visual design (tokens, assets) AND functional behavior (workflows, state machines, business rules) from any web application |
| license | MIT |
| allowed-tools | ["Read","Write","Edit","Bash","Grep","Glob"] |
Complete reverse engineering toolkit for cloning BOTH the visual design AND functional behavior of web applications.
The design-system-cli provides two complementary capabilities:
Result: Clone BOTH the look AND behavior of any web application
Command: ds pipeline --url <url> --framework <framework>
Frameworks Supported:
react-tailwind - Tailwind CSS config for Reactvue-tailwind - Tailwind CSS config for Vuereact-mui - Material-UI theme for Reactangular-material - Angular Material themecss-variables - Plain CSS custom propertiesOutput Files:
raw-tokens.json - Raw extracted tokensnormalized-tokens.json - Normalized design system<framework>.config.js - Framework-specific configExample:
ds pipeline --url https://labs.google/aifuturesfund/ --framework react-tailwind
Command: ds pipeline --url <url> --assets-out <path>
Extracts:
<img> tags) with dimensions, alt text, aspect ratio<video> tags) with dimensions, controls, autoplay stateAsset Metadata:
id: Unique identifier (img-1, video-1, svg-1, bg-1)type: image | video | icon | illustration | animationrole: hero | thumbnail | avatar | background | decoration | contentsrc: Asset URLalt: Alternative text (images only)aspectRatio: Width:height ratio (16:9, 1:1, etc.)dominantColors: Array of prominent colorsdimensions: {width, height} in pixelsOutput:
{
"page": "https://example.com",
"capturedAt": "2025-11-19T13:18:46.363Z",
"assets": [
{
"id": "img-1",
"type": "image",
"role": "hero",
"src": "https://example.com/hero.webp",
"alt": "Hero image description",
"aspectRatio": "16:9",
"dominantColors": ["#1a73e8", "#ffffff"],
"dimensions": {"width": 1920, "height": 1080}
}
]
}
Command: ds assets-prompts --assets <assets.json> --out <asset-prompts.json>
Generates LLM-ready prompts for image recreation via fal-ai models:
Output Format:
{
"page": "https://example.com",
"items": [
{
"id": "img-1",
"type": "image",
"target_model": "fal-ai/image",
"prompt": "TODO: describe hero for https://example.com",
"negative_prompt": "text, watermark, logos, UI chrome",
"guidance": {
"aspect_ratio": "16:9",
"color_palette": ["#1a73e8", "#ffffff"],
"style_notes": "role: hero",
"role": "hero"
}
}
]
}
Workflow:
ds pipeline --assets-out assets.jsonds assets-prompts --assets assets.json --out asset-prompts.jsonCommand: ds figma --tokens <normalized-tokens.json> --out <figma-plugin/>
Generates a ready-to-use Figma plugin with:
Plugin Usage:
ds figma --tokens normalized-tokens.jsonClone the behavior and workflows of applications, not just the visual design.
Command: ds trace --url <url> --out trace.json --duration <ms>
Captures:
Output: trace.json with complete interaction history
Example:
ds trace --url https://gradual.com --out gradual-trace.json --duration 30000
Use Cases:
Command: ds flows --trace <trace.json> --out-screens <screens.json> --out-flows <flows.json>
Extracts:
Outputs:
screens.json - Unique screens with metadataflows.json - User journeys with step-by-step actionsExample:
ds flows --trace gradual-trace.json --out-screens screens.json --out-flows flows.json
Use Cases:
Command: ds entities --trace <trace.json> --out entities.json
Infers:
Output: entities.json with complete data model
Example:
ds entities --trace gradual-trace.json --out entities.json
Use Cases:
Command: ds rules --trace <trace.json> --flows <flows.json> --entities <entities.json> --out rules.json
Extracts:
Output: rules.json with complete rule system
Example:
ds rules \
--trace gradual-trace.json \
--flows flows.json \
--entities entities.json \
--out rules.json
Rule Types:
Command: ds fx-codegen --screens <screens.json> --flows <flows.json> --entities <entities.json> --rules <rules.json> --out <dir>
Generates:
Output: Working Next.js application
Example:
ds fx-codegen \
--screens screens.json \
--flows flows.json \
--entities entities.json \
--rules rules.json \
--out apps/gradual-clone
Generated Structure:
apps/gradual-clone/
├── app/
│ ├── layout.tsx # App shell with navigation
│ ├── [entity]s/
│ │ ├── page.tsx # List page
│ │ └── [id]/page.tsx # Detail page
├── lib/
│ ├── types.ts # TypeScript types from entities
│ └── api/
│ └── [entity]s.ts # CRUD API clients
├── package.json # Next.js 14 dependencies
└── README.md # Functionality spec
Goal: Clone an entire SaaS application (like Gradual, Linear, or Notion)
# Step 1: Record user interactions (30 seconds)
ds trace --url https://gradual.com --out gradual-trace.json --duration 30000
# Step 2: Extract screens and user flows
ds flows --trace gradual-trace.json --out-screens gradual-screens.json --out-flows gradual-flows.json
# Step 3: Infer data models from API calls
ds entities --trace gradual-trace.json --out gradual-entities.json
# Step 4: Extract business rules and state machines
ds rules \
--trace gradual-trace.json \
--flows gradual-flows.json \
--entities gradual-entities.json \
--out gradual-rules.json
# Step 5: Generate working Next.js application
ds fx-codegen \
--screens gradual-screens.json \
--flows gradual-flows.json \
--entities gradual-entities.json \
--rules gradual-rules.json \
--out apps/gradual-clone
# Step 6: Run the cloned application
cd apps/gradual-clone
npm install
npm run dev # http://localhost:3000
Result: Complete working application with:
Goal: Clone BOTH the look AND behavior of an application
# Part A: Visual Cloning
ds pipeline --url https://example.com --framework react-tailwind --assets-out assets.json
ds assets-prompts --assets assets.json --out asset-prompts.json
# Part B: Functional Cloning
ds trace --url https://example.com --out trace.json --duration 30000
ds flows --trace trace.json --out-screens screens.json --out-flows flows.json
ds entities --trace trace.json --out entities.json
ds rules --trace trace.json --flows flows.json --entities entities.json --out rules.json
ds fx-codegen --screens screens.json --flows flows.json --entities entities.json --rules rules.json --out apps/full-clone
# Part C: Merge Results
# Copy visual assets into functional app
cp -r design-system/* apps/full-clone/
# Use generated Tailwind config
cp tailwind.config.js apps/full-clone/
# Run complete clone
cd apps/full-clone
npm install
npm run dev
Result: Pixel-perfect visual clone with complete functional behavior
# Extract everything from a website
ds pipeline --url https://example.com --framework react-tailwind --assets-out assets.json
# Generate asset recreation prompts
ds assets-prompts --assets assets.json --out asset-prompts.json
# Generate Figma plugin
ds figma --tokens normalized-tokens.json --out figma-plugin/
# Record and clone key user journeys
ds trace --url https://linear.app --out linear-trace.json
ds flows --trace linear-trace.json --out-screens screens.json --out-flows flows.json
ds fx-codegen --screens screens.json --flows flows.json --entities entities.json --rules rules.json --out apps/linear-clone
Use Cases:
# Record enterprise application behavior
ds trace --url https://sap-system.company.com --out sap-trace.json
ds flows --trace sap-trace.json --out-screens sap-screens.json --out-flows sap-flows.json
ds entities --trace sap-trace.json --out sap-entities.json
Use Cases:
# Capture all API calls and payloads
ds trace --url https://api-driven-app.com --out api-trace.json
ds entities --trace api-trace.json --out api-entities.json
Use Cases:
# 1. Extract visual assets with metadata
ds pipeline --url https://example.com --assets-out assets.json
# 2. Generate LLM-ready prompts
ds assets-prompts --assets assets.json --out asset-prompts.json
# 3. Review asset-prompts.json and enhance TODO prompts with descriptions
# Example: Change "TODO: describe hero for https://example.com"
# To: "Modern abstract geometric pattern in blue and white, minimalist design, hero banner"
# 4. Use enhanced prompts with fal-ai for image generation
# 5. Replace original assets with AI-generated versions in your codebase
# Extract design tokens without assets
ds extract --url https://example.com --out raw-tokens.json
ds normalize --raw raw-tokens.json --out normalized-tokens.json
ds codegen --normalized normalized-tokens.json --framework react-tailwind
Visual Cloning:
Functional Cloning:
tailwind.config.*, theme.*, tokens.**.design.jsonassets.json, asset-prompts.jsontrace.json, flows.json, entities.json, rules.jsonscreens.jsonVisual Operations:
extract - Extract raw design tokens from websitenormalize - Normalize tokens to standard formatgenerate - Generate framework-specific configsanalyze - Analyze design system consistencyrecreate - Recreate page with extracted design systemregenerate_assets - Regenerate visual assets with AIcreate_prompts - Create LLM-ready asset promptsFunctional Operations:
trace - Record user interactions and network callsextract_flows - Extract screens and user journeysinfer_entities - Infer data models from API callsextract_rules - Extract business rules and state machinesgenerate_app - Generate functional Next.js applicationclone_behavior - Clone application workflowsdocument_system - Document legacy application behaviorVisual Cloning:
/build + design-system-cli → Extract and generate configs/analyze + design-system-cli → Analyze design consistency/improve + design-system-cli → Enhance design system/design + design-system-cli → Design system workflowsFunctional Cloning:
/analyze + design-system-cli → Analyze application workflows/document + design-system-cli → Document application behavior/build + design-system-cli → Generate functional clone/troubleshoot + design-system-cli → Debug workflow extractionComplete schema documentation: docs/asset_context_schema.md
Core Types:
Asset: Individual visual asset with metadataAssetContext: Complete collection of assets from a pageAssetPromptEntry: LLM-ready prompt for asset recreationAssetPromptsFile: Collection of prompts for all assetsAsset Roles (auto-detected):
hero: Large prominent images in header/hero sectionsthumbnail: Small preview images in grids/listsavatar: Profile pictures and user avatarsbackground: Background images and patternsdecoration: Icons, illustrations, SVG graphicscontent: Main content images and mediaMonorepo Structure:
packages/
# Visual Cloning (Phases 1-8)
├── core/ # Shared TypeScript interfaces
├── extractor/ # Playwright-based token and asset extraction
├── normalizer/ # Token normalization and standardization
├── codegen/ # Framework config generation + asset prompt generation
├── figma-bridge/ # Figma plugin generation
# Functional Cloning (Phases 9-12)
├── functional-trace/ # User interaction and network recording
├── functional-flows/ # Screen and flow extraction
├── functional-entities/ # Data model inference from APIs
├── functional-rules/ # Business rules and state machine extraction
└── functional-codegen/ # Next.js application scaffold generation
Complete Processing Pipeline:
VISUAL CLONING:
Website → Playwright → Raw Extraction → Normalization → Code Generation
↓
Assets.json → Asset Prompts → fal-ai → Regenerated Assets
FUNCTIONAL CLONING:
Website → User Interaction → Trace Recording → Flow Extraction
↓
Entity Inference → Rules Extraction
↓
Next.js App Generation
COMBINED:
Visual Design System + Functional Application = Complete Clone
ds pipeline --url https://labs.google/aifuturesfund/ --framework react-tailwind --assets-out assets.json
Output:
tailwind.config.js with extracted color palette, typography, spacingassets.json with 92 visual assets (images, videos, SVGs)ds assets-prompts --assets assets.json --out asset-prompts.json
Output:
asset-prompts.json with 92 LLM-ready prompts for fal-ai# Extract design system and assets
ds pipeline --url https://carbondesi
gnsystem.com --framework react-tailwind --assets-out carbon-assets.json
# Generate asset prompts
ds assets-prompts --assets carbon-assets.json --out carbon-prompts.json
# Generate Figma plugin
ds figma --tokens normalized-tokens.json --out figma-plugin/
# Result:
# - tailwind.config.js (design tokens)
# - carbon-assets.json (92 assets with metadata)
# - carbon-prompts.json (LLM-ready recreation prompts)
# - figma-plugin/ (ready-to-use Figma plugin)
Asset Extraction:
Prompt Generation:
Token Extraction:
E2E Test:
# Full pipeline test with real website
node bin/ds pipeline --url https://labs.google/aifuturesfund/ --framework react-tailwind --assets-out test-assets.json
# Verify outputs
ls -lh tailwind.config.js test-assets.json
# Generate and verify prompts
node bin/ds assets-prompts --assets test-assets.json --out test-prompts.json
ls -lh test-prompts.json
README.md - Project overview and getting starteddocs/asset_context_schema.md - Complete asset schema documentationSKILL.md - This file (SuperClaude integration guide)When enhancing this skill:
docs/