Loading...
Loading...
AI-powered design-to-code engine that generates production-ready UI components from natural language using Claude API
npx skill4agent add aradotso/design-skills claude-design-system-hooksSkill by ara.so — Design Skills collection.
# Requires Node.js 18.x or higher
node --version # should be >= 18.0.0
# Requires npm 10.x or higher
npm --version # should be >= 10.0.0# Clone the repository
git clone https://github.com/BharathKumarSuresh/claude-design-system-hooks.git
cd claude-design-system-hooks
# Install core dependencies
npm install @claude-design/core @claude-design/cli
# Configure with your Claude API key
claude-design configure --api-key $CLAUDE_API_KEY
# Verify installation
claude-design --version# Pull official image
docker pull claude-design-engine:2026-stable
# Run containerized
docker run -p 3000:3000 \
-e CLAUDE_API_KEY=$CLAUDE_API_KEY \
claude-design-engine:2026-stable.claude-design.json{
"profile": {
"name": "my-design-profile",
"version": "2026.3",
"preferences": {
"framework": "react",
"version": "18.x",
"styling": "tailwind",
"component_library": "shadcn-ui",
"responsive_breakpoints": ["sm", "md", "lg", "xl", "2xl"],
"accessibility_level": "wcag_22_aa",
"code_style": "typescript_strict"
},
"design_tokens": {
"primary": "#6366f1",
"secondary": "#8b5cf6",
"accent": "#f59e0b",
"neutral": "#64748b",
"spacing_scale": [4, 8, 12, 16, 24, 32, 48, 64, 96],
"border_radius": {
"sm": 4,
"md": 8,
"lg": 12,
"xl": 16
}
},
"plugins": [
{
"name": "a11y-auditor",
"enabled": true,
"config": {
"strict_mode": true,
"auto_fix": false
}
}
]
}
}# Required
export CLAUDE_API_KEY="your-claude-api-key"
# Optional - for hybrid AI workflows
export OPENAI_API_KEY="your-openai-api-key"
# Optional - configure output directory
export CLAUDE_DESIGN_OUTPUT_DIR="./generated-components"# Start conversational design session
claude-design interact --profile my-design-profile
# With custom framework
claude-design interact --framework vue --styling scss
# With accessibility constraints
claude-design interact --accessibility wcag-22-aaa# Generate from YAML specification
claude-design generate \
--input ./design-specs/dashboard.yaml \
--output ./src/components \
--framework react \
--styling tailwind \
--include-tests \
--include-stories
# Generate from Figma export
claude-design generate \
--input ./figma-export.json \
--output ./components \
--framework angular \
--accessibility wcag-22-aa
# Generate entire design system
claude-design generate \
--input ./design-system-spec.yaml \
--output ./design-system \
--framework react \
--include-tokens \
--include-docs \
--verbose# Generate single component
claude-design component create \
--name ProductCard \
--description "Card displaying product image, title, price, and add-to-cart button" \
--framework react \
--output ./src/components/ProductCard
# Generate with props specification
claude-design component create \
--name DataTable \
--props-file ./specs/datatable-props.json \
--framework vue \
--with-types# Extract tokens from image/mockup
claude-design tokens extract \
--input ./mockups/homepage.png \
--output ./tokens/design-tokens.json
# Generate CSS/SCSS variables from tokens
claude-design tokens generate \
--input ./tokens/design-tokens.json \
--format css-variables \
--output ./styles/tokens.css
# Validate token consistency
claude-design tokens validate ./tokens/*.json# List available plugins
claude-design plugins list
# Install plugin
claude-design plugins install @claude-design/figma-sync
# Configure plugin
claude-design plugins configure figma-sync \
--token $FIGMA_TOKEN \
--sync-mode bidirectional
# Browse marketplace
claude-design marketplace browse --category animation
# Install community skill
claude-design marketplace install @community/lottie-animator// In your Node.js script or AI agent workflow
const { ClaudeDesign } = require('@claude-design/core');
const designer = new ClaudeDesign({
apiKey: process.env.CLAUDE_API_KEY,
framework: 'react',
styling: 'tailwind'
});
async function generateLoginForm() {
const result = await designer.generate({
prompt: `Create a modern login form with:
- Email and password fields
- Remember me checkbox
- Forgot password link
- Social login buttons (Google, GitHub)
- Dark theme with purple accent
- Fully accessible with keyboard navigation`,
options: {
includeTests: true,
includeStorybook: true,
accessibility: 'wcag-22-aa'
}
});
console.log('Generated files:', result.files);
// Writes to ./src/components/LoginForm/
await result.save('./src/components/LoginForm');
}
generateLoginForm();# design-system-spec.yaml
system:
name: "Corporate Design System"
version: "1.0.0"
framework: "react"
styling: "tailwind"
tokens:
colors:
primary: "#0066cc"
secondary: "#6b7280"
accent: "#f59e0b"
success: "#10b981"
error: "#ef4444"
warning: "#f59e0b"
typography:
scale: "major-third"
base_size: 16
fonts:
heading: "Inter, sans-serif"
body: "Inter, sans-serif"
mono: "Fira Code, monospace"
spacing:
unit: 4
scale: [1, 2, 3, 4, 6, 8, 12, 16, 24, 32]
breakpoints:
sm: 640
md: 768
lg: 1024
xl: 1280
"2xl": 1536
components:
- name: "Button"
variants: ["primary", "secondary", "outline", "ghost"]
sizes: ["sm", "md", "lg"]
states: ["default", "hover", "active", "disabled"]
- name: "Card"
props:
- name: "variant"
type: "string"
values: ["default", "bordered", "elevated"]
- name: "padding"
type: "spacing"
default: 4
- name: "Modal"
features: ["backdrop", "close-button", "keyboard-escape"]
accessibility: "wcag-22-aa"
pages:
- name: "Dashboard"
layout: "sidebar-content"
components: ["StatCard", "DataTable", "ChartWidget"]# Generate entire system
claude-design generate \
--input design-system-spec.yaml \
--output ./design-system \
--include-docs \
--include-storybook// advanced-usage.ts
import { ClaudeDesign, DesignConfig } from '@claude-design/core';
import { FigmaSyncPlugin } from '@claude-design/figma-sync';
import { A11yAuditor } from '@claude-design/a11y-auditor';
const config: DesignConfig = {
apiKey: process.env.CLAUDE_API_KEY,
framework: 'react',
typescript: true,
styling: 'tailwind',
plugins: [
new FigmaSyncPlugin({
token: process.env.FIGMA_TOKEN,
fileKey: 'abc123def456'
}),
new A11yAuditor({
strictMode: true,
level: 'wcag-22-aaa'
})
]
};
const designer = new ClaudeDesign(config);
async function buildNavigationComponent() {
// Generate component from description
const nav = await designer.component.create({
name: 'MainNavigation',
description: `
Responsive navigation bar with:
- Logo on left
- Menu items in center
- User profile dropdown on right
- Mobile hamburger menu
- Sticky header on scroll
`,
responsive: true,
a11y: {
ariaLabels: true,
keyboardNav: true,
screenReader: true
}
});
// Audit accessibility
const auditResults = await designer.audit.a11y(nav.code);
console.log('Accessibility score:', auditResults.score);
// Generate tests
const tests = await designer.tests.generate(nav.code, {
framework: 'jest',
coverage: 'full'
});
// Save all artifacts
await nav.save('./src/components/MainNavigation', {
includeTests: true,
includeStorybook: true,
includeTypes: true
});
}
buildNavigationComponent();const { TokenExtractor } = require('@claude-design/core');
async function extractFromMockup() {
const extractor = new TokenExtractor({
apiKey: process.env.CLAUDE_API_KEY
});
// Extract from image
const tokens = await extractor.fromImage('./mockups/homepage.png', {
extractColors: true,
extractTypography: true,
extractSpacing: true,
extractBorderRadius: true
});
console.log('Extracted tokens:', tokens);
/*
{
colors: {
primary: { hex: '#6366f1', name: 'Indigo' },
secondary: { hex: '#8b5cf6', name: 'Purple' },
accent: { hex: '#f59e0b', name: 'Amber' }
},
typography: {
headings: { family: 'Inter', weight: 700, scale: [32, 24, 20] },
body: { family: 'Inter', weight: 400, size: 16 }
},
spacing: [4, 8, 12, 16, 24, 32, 48],
borderRadius: { sm: 4, md: 8, lg: 12 }
}
*/
// Generate CSS variables
const css = await extractor.toCSS(tokens);
await fs.writeFile('./styles/tokens.css', css);
// Generate Tailwind config
const tailwindConfig = await extractor.toTailwind(tokens);
await fs.writeFile('./tailwind.config.js', tailwindConfig);
}
extractFromMockup();const { ClaudeDesign } = require('@claude-design/core');
async function generateForAllFrameworks() {
const designer = new ClaudeDesign({
apiKey: process.env.CLAUDE_API_KEY
});
const description = `
Product card with image, title, price, rating stars,
and add-to-cart button. Include hover effects.
`;
// Generate React version
const reactComponent = await designer.generate({
prompt: description,
framework: 'react',
styling: 'tailwind',
typescript: true
});
await reactComponent.save('./output/react/ProductCard');
// Generate Vue version
const vueComponent = await designer.generate({
prompt: description,
framework: 'vue',
styling: 'scss',
composition: true
});
await vueComponent.save('./output/vue/ProductCard');
// Generate Angular version
const angularComponent = await designer.generate({
prompt: description,
framework: 'angular',
styling: 'scss',
standalone: true
});
await angularComponent.save('./output/angular/ProductCard');
// Generate vanilla HTML/CSS
const vanillaComponent = await designer.generate({
prompt: description,
framework: 'html',
styling: 'css',
modern: true
});
await vanillaComponent.save('./output/vanilla/ProductCard');
}
generateForAllFrameworks();# Start interactive session
claude-design interact --framework react --styling tailwind
# Example conversation:
# You: "Create a landing page for a SaaS product"
# Claude: [generates hero section, features grid, pricing table, CTA]
# You: "Make it dark theme with purple accent"
# Claude: [updates color scheme]
# You: "Add testimonials section"
# Claude: [adds testimonial carousel]
# Export when satisfied
# Files saved to ./generated-components/# Step 1: Extract tokens from existing design
claude-design tokens extract \
--input ./current-app/styles \
--output ./tokens/legacy-tokens.json
# Step 2: Generate new design system
claude-design generate \
--input ./specs/new-design-system.yaml \
--tokens ./tokens/legacy-tokens.json \
--output ./new-design-system
# Step 3: Create migration guide
claude-design docs migration \
--from ./tokens/legacy-tokens.json \
--to ./new-design-system/tokens.json \
--output ./MIGRATION.md# .github/workflows/design-system.yml
name: Generate Design System
on:
push:
paths:
- 'design-specs/**'
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install Claude Design
run: |
npm install -g @claude-design/cli
claude-design configure --api-key ${{ secrets.CLAUDE_API_KEY }}
- name: Generate Components
run: |
claude-design generate \
--input ./design-specs/components.yaml \
--output ./src/components \
--framework react \
--include-tests \
--include-stories
- name: Audit Accessibility
run: |
claude-design audit a11y ./src/components \
--level wcag-22-aa \
--fail-on-warnings
- name: Commit Changes
run: |
git config user.name "Claude Design Bot"
git add src/components
git commit -m "chore: regenerate design system"
git push# Check current rate limit status
claude-design status --api-limits
# Configure request throttling
claude-design configure \
--rate-limit 10 \
--rate-limit-window 60000# Specify exact framework version
claude-design generate \
--framework react@18.2.0 \
--input ./spec.yaml
# Update framework adapters
npm update @claude-design/react-adapter// Enable auto-fix mode
const designer = new ClaudeDesign({
apiKey: process.env.CLAUDE_API_KEY,
plugins: [
new A11yAuditor({
autoFix: true, // Automatically fix common issues
strictMode: false // Use warnings instead of errors
})
]
});
// Generate with explicit a11y requirements
const component = await designer.generate({
prompt: 'Login form',
accessibility: {
level: 'wcag-22-aa',
requirements: [
'keyboard-navigation',
'screen-reader-labels',
'color-contrast-4.5:1',
'focus-indicators'
]
}
});# Validate token file structure
claude-design tokens validate ./tokens/design-tokens.json
# Regenerate CSS variables
claude-design tokens generate \
--input ./tokens/design-tokens.json \
--format css-variables \
--output ./styles/tokens.css \
--force
# Verify token references in generated code
claude-design audit tokens ./src/components# List active plugins
claude-design plugins list --active
# Disable conflicting plugin
claude-design plugins disable @community/conflicting-plugin
# Reset plugin configuration
claude-design plugins reset --all
# Reinstall core plugins
npm install @claude-design/figma-sync@latest# Enable verbose logging
claude-design generate \
--input ./spec.yaml \
--verbose \
--debug \
--log-file ./debug.log
# Check system diagnostics
claude-design diagnostics --full{
"subagents": [
{
"id": "color-theorist",
"priority": 1,
"specialties": ["color_harmony", "contrast_ratios"],
"model": "claude-sonnet-4"
},
{
"id": "layout-architect",
"priority": 2,
"specialties": ["grid_systems", "responsive_design"],
"model": "claude-sonnet-4"
},
{
"id": "typography-curator",
"priority": 3,
"specialties": ["font_pairing", "readability"],
"model": "claude-haiku-3.5"
}
]
}# Configure Claude as primary, OpenAI as fallback
claude-design configure \
--ai-provider hybrid \
--primary claude \
--claude-key $CLAUDE_API_KEY \
--openai-key $OPENAI_API_KEY \
--fallback-on-rate-limit true