| name | claude-design-studio-ui-generator |
| description | AI-powered UI/UX generator with dual-brain architecture (Claude + OpenAI), sub-agent workflow, and design-to-code translation |
| triggers | ["generate a UI component with design","create a styled React component","design a responsive interface","convert this code to a visual design","build a component with Claude Design AI","generate UI with accessibility checks","create a design-infused component","visualize this API as a user interface"] |
Claude Design Studio UI Generator
Skill by ara.so — Design Skills collection.
Overview
Claude-Code-Design-AI (Claude Design Studio) is a dual-brain AI system that bridges code logic and visual design. It orchestrates Claude API for nuanced design reasoning and OpenAI API for rapid code generation, producing production-ready UI components with integrated styling, animations, and accessibility compliance.
Key capabilities:
- Generate UI components from natural language descriptions
- Translate raw code/APIs into visual interfaces
- Multi-agent architecture (Alpha=logic, Omega=design, Sigma=QA, Theta=optimization)
- Built-in hooks system for validation and post-processing
- Design system harmonization (Material UI, Tailwind, custom)
- Marketplace with installable skills and plugins
Installation
Prerequisites
- Node.js v18+ or Bun runtime
- Claude API key and/or OpenAI API key
- 512MB RAM minimum
git clone https://github.com/larajuniorlara/Claude-Design-Studio.git
cd Claude-Design-Studio
npm install
bun install
npx claude-design init
export CLAUDE_API_KEY="your-claude-api-key"
export OPENAI_API_KEY="your-openai-api-key"
Core API Usage
JavaScript/TypeScript API
import { ClaudeDesign } from 'claude-code-design-ai';
const designer = new ClaudeDesign({
claudeApiKey: process.env.CLAUDE_API_KEY,
openaiApiKey: process.env.OPENAI_API_KEY,
primaryRouter: 'claude',
fallback: 'openai'
});
const component = await designer.generateUI({
description: "pricing table with three tiers",
framework: "react",
style: {
theme: "minimalist",
primaryColor: "#FF6B35",
effect: "glassmorphism"
},
constraints: {
responsive: true,
accessibility: "WCAG-AA",
animations: "subtle"
}
});
console.log(component.code);
console.log(component.styles);
console.log(component.assets);
Generate from Existing Data
const products = [
{ id: 1, name: "Laptop Pro", price: 1299, rating: 4.5 },
{ id: 2, name: "Wireless Mouse", price: 29, rating: 4.8 }
];
const productGallery = await designer.generateUI({
data: products,
componentType: "grid",
desiredStyle: "card-based with hover effects",
framework: "vue",
constraints: {
responsive: true,
darkMode: true,
animations: "smooth transitions"
}
});
Code-to-Canvas Translation
const apiCode = `
async function fetchUserStats(userId) {
const response = await fetch(\`/api/users/\${userId}/stats\`);
return response.json();
}
`;
const visualization = await designer.visualizeCode({
code: apiCode,
targetFormat: "dashboard-widget",
includeWireframe: true,
style: "modern-dashboard"
});
console.log(visualization.componentCode);
console.log(visualization.wireframe);
console.log(visualization.suggestions);
CLI Commands
Interactive Console
npx claude-design console --profile myproject.yml
> generate component "User Profile Card" with avatar and stats
> visualize codebase
> optimize design consistency
> export component library
One-off Generation
npx claude-design generate \
--type "modal" \
--description "confirmation dialog with two buttons" \
--framework "react" \
--style "material-ui" \
--output "./components/ConfirmDialog.jsx"
npx claude-design translate \
--input "./src/api/userService.js" \
--output-type "dashboard" \
--framework "svelte"
npx claude-design skill apply \
--skill "claude-code-skill-data-visualization" \
--data "./data/sales.json" \
--output "./components"
Configuration
Profile File (.claude-design-profile.yml)
project:
name: "E-Commerce Platform"
version: "2026.1"
design_system: "tailwind"
preferences:
primary_color: "#3B82F6"
secondary_color: "#10B981"
font_family: "Inter, system-ui, sans-serif"
border_radius: "0.5rem"
animation_style: "spring"
sub_agents:
enabled: true
alpha:
language_preference: "TypeScript"
strict_mode: true
omega:
design_principle: "atomic"
color_theory: "complementary"
sigma:
accessibility_level: "WCAG-AAA"
performance_budget: "mobile-first"
theta:
optimize_images: true
minify_css: true
tree_shake: true
api_routing:
primary: "claude"
fallback: "openai"
timeout: 30000
retry_attempts: 3
hooks:
- type: "before_generation"
action: "validate_input_schema"
- type: "after_generation"
action: "run_lighthouse_audit"
- type: "after_generation"
action: "check_accessibility"
marketplace:
auto_update: true
installed_plugins:
- "claude-code-plugin-responsive-grid"
- "claude-code-plugin-dark-mode-toggle"
skills:
- "claude-code-skill-accordion"
- "claude-code-skill-data-table"
- "claude-code-skill-modal"
Programmatic Configuration
const designer = new ClaudeDesign({
profile: {
project: {
name: "My App",
designSystem: "custom"
},
preferences: {
primaryColor: "#667eea",
fontFamily: "Poppins"
},
subAgents: {
enabled: true,
alpha: { languagePreference: "TypeScript" },
omega: { designPrinciple: "material" }
}
},
claudeApiKey: process.env.CLAUDE_API_KEY,
openaiApiKey: process.env.OPENAI_API_KEY
});
Common Patterns
Pattern 1: Design System Harmonization
const designer = new ClaudeDesign({
profile: {
designSystem: "material_ui_v5"
}
});
const button = await designer.generateUI({
description: "primary action button",
ensureHarmony: true
});
Pattern 2: Skill Stacking
const dashboard = await designer.composeFromSkills({
skills: [
{ name: "claude-code-skill-data-table", config: { sortable: true } },
{ name: "claude-code-skill-chart", config: { type: "line" } },
{ name: "claude-code-skill-filter-bar", config: { filters: ["date", "category"] } }
],
layout: "two-column",
framework: "react"
});
Pattern 3: Responsive Generation
const hero = await designer.generateUI({
description: "hero section with background image and CTA",
responsive: {
breakpoints: {
mobile: 320,
tablet: 768,
desktop: 1024,
wide: 1440
},
strategy: "mobile-first"
}
});
Pattern 4: Sub-Agent Workflow
const result = await designer.runWorkflow({
agents: ["alpha", "omega", "sigma"],
input: {
description: "user authentication form",
requirements: {
logic: "email validation, password strength",
design: "modern, accessible",
validation: "security best practices"
}
}
});
Pattern 5: Hooks for Quality Control
const designer = new ClaudeDesign({
hooks: [
{
type: "after_generation",
action: async (component) => {
const contrastRatio = calculateContrast(
component.styles.textColor,
component.styles.backgroundColor
);
if (contrastRatio < 4.5) {
throw new Error("Insufficient color contrast");
}
}
}
]
});
const card = await designer.generateUI({
description: "info card"
});
Framework-Specific Examples
React with TypeScript
import { ClaudeDesign, ComponentConfig } from 'claude-code-design-ai';
const designer = new ClaudeDesign({
claudeApiKey: process.env.CLAUDE_API_KEY
});
const config: ComponentConfig = {
description: "user notification toast",
framework: "react",
language: "typescript",
style: {
theme: "dark",
animations: "slide-in-right"
}
};
const toast = await designer.generateUI(config);
Vue 3 Composition API
const modal = await designer.generateUI({
description: "confirmation modal with cancel and confirm actions",
framework: "vue",
vueVersion: 3,
compositionApi: true,
constraints: {
accessibility: "keyboard-navigable",
teleport: true
}
});
Svelte
const chart = await designer.generateUI({
description: "animated bar chart",
framework: "svelte",
data: salesData,
constraints: {
reactive: true,
animations: "smooth"
}
});
Plugin System
Installing Plugins
npx claude-design plugin install claude-code-plugin-responsive-grid
npx claude-design plugin install ./plugins/my-custom-plugin.js
Creating Custom Plugins
module.exports = {
name: "gradient-enhancer",
version: "1.0.0",
transform: (component, options) => {
if (options.gradientStyle === "cosmic") {
component.styles.background =
"linear-gradient(135deg, #667eea 0%, #764ba2 100%)";
}
return component;
},
hooks: {
afterGeneration: (component) => {
console.log("Gradient plugin applied");
}
}
};
const designer = new ClaudeDesign({
plugins: [
require('./my-gradient-plugin.js')
]
});
const hero = await designer.generateUI({
description: "hero section",
pluginOptions: {
gradientEnhancer: { gradientStyle: "cosmic" }
}
});
Skills System
Using Pre-built Skills
const faq = await designer.applySkill({
skillName: "claude-code-skill-accordion",
data: [
{ question: "What is this?", answer: "An FAQ item" },
{ question: "How does it work?", answer: "Magic" }
],
options: {
multipleOpen: false,
animated: true
}
});
Creating Custom Skills
name: custom-pricing-table
version: 1.0.0
description: Generate pricing tables with tier comparison
parameters:
- name: tiers
type: array
required: true
- name: highlightTier
type: number
default: 1
template:
framework: react
pattern: |
Grid layout with {tiers.length} columns
Highlight tier {highlightTier} with accent color
Include feature comparison checkmarks
Add CTA button for each tier
npx claude-design skill install ./my-skill.yml
API Routing and Fallback
const designer = new ClaudeDesign({
apiRouting: {
rules: [
{
condition: (task) => task.complexity > 0.7,
route: "claude"
},
{
condition: (task) => task.type === "css-generation",
route: "openai"
}
],
fallback: "openai",
timeout: 30000
}
});
const complexComponent = await designer.generateUI({
description: "interactive data visualization with animations"
});
const simpleButton = await designer.generateUI({
description: "primary button"
});
Troubleshooting
API Key Issues
const designer = new ClaudeDesign({
claudeApiKey: process.env.CLAUDE_API_KEY,
debug: true
});
try {
await designer.generateUI({ description: "test button" });
} catch (error) {
if (error.code === 'INVALID_API_KEY') {
console.error('Check your CLAUDE_API_KEY environment variable');
}
}
Design System Conflicts
const designer = new ClaudeDesign({
profile: {
designSystem: "custom",
customTokens: {
colors: {
primary: "#your-brand-color"
},
spacing: {
unit: 8
}
}
},
strictMode: true
});
Performance Optimization
export CLAUDE_DESIGN_CACHE=true
npx claude-design console --enable-theta
const component = await designer.generateUI({
description: "image gallery",
optimize: {
images: true,
css: "minify",
bundle: "tree-shake"
}
});
Accessibility Validation Failures
const result = await designer.generateUI({
description: "login form",
accessibility: {
level: "WCAG-AAA",
verbose: true
}
});
if (result.accessibilityReport.errors.length > 0) {
console.log("Accessibility issues:", result.accessibilityReport.errors);
const fixed = await designer.fixAccessibility(result.component);
}
Sub-Agent Not Responding
npx claude-design status
npx claude-design agent restart omega
npx claude-design agent reset-all
Environment Variables
CLAUDE_API_KEY=your-claude-api-key
OPENAI_API_KEY=your-openai-api-key
CLAUDE_DESIGN_PROFILE=/path/to/profile.yml
CLAUDE_DESIGN_CACHE=true
CLAUDE_DESIGN_DEBUG=false
CLAUDE_DESIGN_TIMEOUT=30000
CLAUDE_DESIGN_OUTPUT_DIR=./generated
Integration Examples
With Next.js
import { ClaudeDesign } from 'claude-code-design-ai';
const designer = new ClaudeDesign({
claudeApiKey: process.env.CLAUDE_API_KEY
});
export default async function handler(req, res) {
const { description, style } = req.body;
const component = await designer.generateUI({
description,
framework: "react",
style,
ssr: true
});
res.status(200).json({ component });
}
With Vite
import { defineConfig } from 'vite';
import claudeDesignPlugin from 'claude-code-design-ai/vite-plugin';
export default defineConfig({
plugins: [
claudeDesignPlugin({
profile: './design-profile.yml',
watch: true
})
]
});
With CI/CD
name: Design Consistency Check
on: [pull_request]
jobs:
design-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check design consistency
run: |
npx claude-design validate --profile ./design-profile.yml
npx claude-design audit --accessibility WCAG-AA
env:
CLAUDE_API_KEY: ${{ secrets.CLAUDE_API_KEY }}
Best Practices
- Always use environment variables for API keys
- Define a design profile for consistency across generated components
- Enable sub-agents for complex UI generation
- Use hooks for automated quality checks
- Leverage skills for common patterns instead of describing from scratch
- Set accessibility level in profile (minimum WCAG-AA)
- Enable caching in production for faster subsequent generations
- Use framework-specific options (e.g.,
ssr: true for Next.js)