prototype-to-production
Convert design prototypes (HTML, CSS, Figma exports) into production-ready components. Analyzes prototype structure, extracts design tokens, identifies reusable patterns, and generates typed React components. Adapts to existing project tech stack with React + TypeScript as default.
When & Why to Use This Skill
The Prototype to Production skill streamlines the frontend development lifecycle by automatically converting design prototypes—including HTML, CSS, and Figma exports—into production-ready React and TypeScript components. By leveraging Atomic Design principles and intelligent pattern recognition, it extracts design tokens and generates accessible, maintainable code that seamlessly integrates into existing tech stacks, significantly reducing manual UI implementation effort.
Use Cases
- Rapidly convert static HTML/CSS prototypes into modular, reusable React components to accelerate project bootstrapping.
- Transform Figma design exports into type-safe TypeScript code while maintaining strict adherence to Tailwind CSS or CSS-in-JS styling conventions.
- Automate the extraction of design tokens (colors, spacing, typography) from UI mockups to ensure visual consistency across a design system.
- Bridge the gap between design iterations and production code by productionizing proof-of-concept UIs with built-in accessibility (ARIA) and industry best practices.
| name | prototype-to-production |
|---|---|
| description | Convert design prototypes (HTML, CSS, Figma exports) into production-ready components. Analyzes prototype structure, extracts design tokens, identifies reusable patterns, and generates typed React components. Adapts to existing project tech stack with React + TypeScript as default. |
| version | 1.0.0 |
| category | Design & Frontend |
| agents | [frontend-ui-developer, rapid-ui-designer, code-quality-reviewer] |
| keywords | [prototype, production, components, design, HTML, CSS, Figma, React, TypeScript, conversion, design-tokens, atomic-design] |
Prototype to Production Skill
Convert design prototypes into production-ready, typed components by analyzing structure, extracting patterns, and generating clean code.
When to Use
- Converting HTML prototypes to React components
- Transforming super-design outputs (
.superdesign/design_iterations/*.html) to production code - Breaking down Figma exports into reusable components
- Extracting design tokens from prototype CSS/inline styles
- Productionizing a mockup or proof-of-concept UI
Conversion Workflow
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Analyze │──▶│ Detect │──▶│ Decompose │──▶│ Generate │
│ Input │ │ Tech Stack │ │ Components │ │ Code │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
▼ ▼ ▼ ▼
Identify type package.json Atomic design TypeScript
& structure scan + patterns methodology components
Step 1: Analyze Input
Detect prototype type and structure:
| Input Type | Detection Method | Key Patterns |
|---|---|---|
| Super-design | Path: .superdesign/design_iterations/*.html |
Flowbite, Tailwind CDN, theme CSS references |
| Generic HTML | Any .html file |
Standard HTML structure, inline/external CSS |
| Figma Export | Figma-specific class names | figma-, absolute positioning, frame naming |
Super-design analysis:
Read prototype file → Extract theme CSS reference →
Identify component regions (header, main, footer) →
Map flowbite components to equivalents
Step 2: Detect Project Tech Stack
Scan target project to determine output format:
Check
package.jsonfor frameworks:react/react-dom→ React componentsvue→ Vue SFCssvelte→ Svelte components@angular/core→ Angular components
Check for TypeScript:
tsconfig.jsonexists → TypeScript outputtypescriptin dependencies → TypeScript output
Check styling approach:
tailwindcss→ Tailwind classesstyled-components/@emotion/react→ CSS-in-JS- CSS/SCSS files → Separate stylesheets
Default: React + TypeScript + Tailwind CSS
Step 3: Component Decomposition
Apply atomic design methodology:
┌─────────────────────────────────────────────────────────┐
│ ORGANISMS (Complex compositions) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ MOLECULES (Simple compositions) │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ ATOMS (Primitive elements) │ │ │
│ │ │ Button, Input, Label, Icon, Badge, Avatar │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ FormField, SearchBar, Card, MenuItem │ │
│ └─────────────────────────────────────────────────────┘ │
│ Header, Sidebar, ProductGrid, CommentThread │
└─────────────────────────────────────────────────────────┘
Component identification checklist:
- Repeated patterns (2+ occurrences = extract)
- Logical groupings (header, nav, content sections)
- Interactive elements (buttons, forms, modals)
- Data display patterns (cards, lists, tables)
Step 4: Extract Design Tokens
Extract from prototype CSS/styles:
{
"colors": {
"primary": "extracted-from-buttons",
"secondary": "extracted-from-secondary-elements",
"background": "extracted-from-body/container",
"text": "extracted-from-body-text"
},
"typography": {
"fontFamily": "extracted-from-font-family",
"fontSize": { "base": "16px", "lg": "18px", "xl": "20px" }
},
"spacing": {
"derived-from-padding-margin-patterns": true
},
"borderRadius": "extracted-from-rounded-elements"
}
See
templates/design-tokens-extract.jsonfor full template
Step 5: Generate Components
For each identified component:
- Create TypeScript interface for props
- Apply forwardRef pattern for DOM access
- Include accessibility attributes
- Use project's styling approach
- Add JSDoc documentation
See
templates/component-base.tsxandtemplates/component-with-variants.tsx
Step 6: Integration Guidance
Provide clear instructions for:
- File placement in project structure
- Import statements needed
- Peer dependencies (if any)
- Usage examples
Component Output Standards
TypeScript Props Interface
interface ComponentProps {
/** Primary variant for emphasis */
variant?: 'primary' | 'secondary' | 'outline';
/** Size affects padding and font-size */
size?: 'sm' | 'md' | 'lg';
/** Disables interaction */
disabled?: boolean;
/** Additional CSS classes */
className?: string;
/** Content */
children: React.ReactNode;
}
Accessibility Requirements
Every component must include:
- Semantic HTML elements (use
<button>not<div>) - Keyboard navigation support
- ARIA attributes where needed
- Focus management
Naming Conventions
| Type | Convention | Example |
|---|---|---|
| Components | PascalCase | ProductCard.tsx |
| Props types | PascalCase + Props | ProductCardProps |
| CSS classes | kebab-case | product-card-container |
| Design tokens | camelCase | primaryColor |
Conversion Patterns Reference
See
references/conversion-patterns.mdfor comprehensive HTML → React patterns
Quick Reference
| HTML Pattern | React Equivalent |
|---|---|
class="..." |
className="..." |
onclick="..." |
onClick={handler} |
for="..." |
htmlFor="..." |
<input value=""> |
<input value="" onChange={...}> |
| Inline styles | Tailwind classes or styled objects |
Templates Reference
| Template | Purpose |
|---|---|
component-base.tsx |
Basic component with types and accessibility |
component-with-variants.tsx |
Component with variant/size system |
design-tokens-extract.json |
Token extraction structure |
Example Conversion
Input (super-design HTML):
<button class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700">
Submit
</button>
Output (React + TypeScript):
interface ButtonProps {
variant?: 'primary' | 'secondary';
children: React.ReactNode;
onClick?: () => void;
}
export const Button = ({ variant = 'primary', children, onClick }: ButtonProps) => {
return (
<button
className={cn(
'px-4 py-2 rounded-lg transition-colors',
variant === 'primary' && 'bg-blue-600 text-white hover:bg-blue-700'
)}
onClick={onClick}
>
{children}
</button>
);
};
Integration with Super-Design
When converting super-design outputs:
- Read the theme CSS file referenced in the HTML
- Map theme variables to design tokens
- Preserve animations defined in the prototype
- Maintain responsive breakpoints from Tailwind classes
Super-design folder structure:
.superdesign/
└── design_iterations/
├── theme_1.css # Theme tokens
├── chat_ui_1.html # Prototype iteration 1
└── chat_ui_2.html # Prototype iteration 2