| name | anydesign-analyzer |
| description | Analyze images, websites, and Figma files to generate structured design.md with DTCG tokens, component inventory, and reconstruction notes |
| triggers | ["analyze this design and create a design.md","extract design tokens from this website","generate a design system from this screenshot","pull the color palette and typography from this image","create a design brief from this Figma file","analyze this landing page and document the design system","extract CSS variables and create design tokens","generate WCAG contrast report for these colors"] |
anydesign-analyzer
Skill by ara.so — Design Skills collection.
anydesign is a Claude skill that analyzes visual sources (images, websites, Figma files) and produces structured design.md files with DTCG-compliant design tokens, component inventories, and reconstruction notes. The output is portable across all AI builders (v0, Lovable, Cursor, Bolt, Claude Code) and design tools.
What it produces
Every analysis generates three artifacts:
design.md — 7-section structured document (TL;DR, visual identity, design system, components, layout, reconstruction notes, open questions)
design-tokens.json — W3C DTCG format tokens ($value / $type)
design-a11y.md (optional) — WCAG 2.1 contrast report
All inferences include confidence levels: ✅ high / ⚠️ medium / ❓ low
Installation
1. Clone and install the skill
git clone https://github.com/uxKero/anydesign.git
cp -r anydesign ~/.claude/skills/
cp -r anydesign /path/to/project/.claude/skills/
2. Install Python dependencies
cd anydesign
pip install -r requirements.txt
playwright install chromium
3. (Optional) Connect Figma MCP
For Figma file analysis, connect the Figma MCP in Claude settings (Settings → Connectors). The skill uses these tools when available:
get_metadata
get_variable_defs
get_design_context
get_screenshot
Core workflows
Analyze a website
"Analyze https://vercel.com and create a design.md with full token extraction"
Analyze an uploaded image
"Extract the design system from this landing page screenshot"
Analyze a Figma file
"Analyze this Figma file and check token consistency"
Standalone CLI scripts
All scripts in scripts/ work independently of Claude:
Extract CSS variables from any URL
python scripts/extract_css_vars.py https://vercel.com/ --pretty
python scripts/extract_css_vars.py https://example.com/ --output tokens.json
Capture multi-viewport screenshots
python scripts/capture_site.py https://your-site.com --output screenshot.png
python scripts/capture_site.py https://your-site.com \
--viewports desktop,tablet,mobile \
--output captures/
Extract dominant colors from image
python scripts/extract_colors.py screenshot.png --count 5
python scripts/extract_colors.py image.png --format hex
python scripts/extract_colors.py image.png --output colors.json
Check WCAG contrast
python scripts/check_contrast.py --pair "#111,#FFF"
python scripts/check_contrast.py \
--pair "#111,#FFF" \
--pair "#3B82F6,#FFF" \
--pair "#EF4444,#FFF"
python scripts/check_contrast.py --pairs-file colors.txt
python scripts/check_contrast.py --pair "#111,#FFF" --output contrast-report.md
Validate a design.md
python scripts/lint_design_md.py path/to/design.md
Audit tokens against live site
python scripts/verify_design.py path/to/design-tokens.json https://vercel.com/
Export for Claude Design
python scripts/export_for_claude_design.py path/to/design.md --out my-brand/
Environment setup
playwright install chromium
design.md structure
Every generated design.md follows this 7-section format:
---
title: Design System — [Project Name]
source: [URL or file path]
analyzed_at: [ISO timestamp]
confidence_legend: "✅ high / ⚠️ medium / ❓ low"
---
## 1. TL;DR
Three-sentence summary for AI builders and designers
## 2. Visual Identity
Brand personality, color philosophy, typography strategy
## 3. Design System (Tokens)
Colors, typography, spacing, radii, shadows, borders
All with confidence markers and {token.refs}
## 4. Component Inventory
Buttons, inputs, cards, navigation — structured by category
## 5. Layout & Composition
Grid systems, breakpoints, content hierarchy
## 6. Reconstruction Notes
Step-by-step guidance for rebuilding this design
## 7. Open Questions
What requires clarification or additional references
design-tokens.json format
Tokens follow W3C DTCG specification:
{
"color": {
"primary": {
"$value": "#3b82f6",
"$type": "color",
"confidence": "high",
"source": "CSS var(--color-primary)"
},
"background": {
"$value": "#ffffff",
"$type": "color",
"confidence": "high"
}
},
"spacing": {
"unit": {
"$value": "4px",
"$type": "dimension",
"confidence": "medium"
Real-world examples
Example 1: Analyze Vercel landing page
"Analyze https://vercel.com and extract the complete design system"
Example 2: Generate v0 brief from screenshot
"Create a design.md I can paste into v0 to build this landing page"
Example 3: Extract tokens for Style Dictionary
python scripts/extract_css_vars.py https://your-brand.com/ --output raw-tokens.json
{
"source": ["design-tokens.json"],
"platforms": {
"css": {
"transformGroup": "css",
"buildPath": "build/css/",
"files": [{
"destination": "variables.css",
"format": "css/variables"
}]
}
}
}
Example 4: Audit brand consistency
python scripts/verify_design.py design-tokens.json https://your-brand.com/
Using output with AI builders
| Tool | How to consume |
|---|
| v0 | Paste entire design.md as project brief |
| Lovable | Paste design.md, iterate visually |
| Cursor/Windsurf | Add design.md to context, ask for components |
| Claude Code | Provide both design.md + design-tokens.json |
| Bolt | Paste design.md as prompt |
| Style Dictionary | Import design-tokens.json directly |
| Figma Variables | Import design-tokens.json (DTCG format) |
| Tokens Studio | Import design-tokens.json |
Common patterns
Pattern 1: Full website capture and tokenization
python scripts/capture_site.py https://example.com \
--viewports desktop,tablet,mobile \
--scroll \
--output captures/
python scripts/extract_css_vars.py https://example.com --output raw-tokens.json
"Using these screenshots and raw-tokens.json, create a complete design.md"
python scripts/lint_design_md.py design.md
python scripts/check_contrast.py --pairs-file design-tokens.json
Pattern 2: Figma to code workflow
"Analyze [Figma file URL], check for token consistency, and generate design.md"
"Build this using the attached design.md"
Pattern 3: Brand asset bundle for Claude Design
"Analyze our brand homepage and create design.md"
python scripts/export_for_claude_design.py design.md --out brand-bundle/
Troubleshooting
Issue: CSS extraction returns empty
Cause: Site uses inline styles or CSS-in-JS, not CSS custom properties.
Solution:
curl -s https://example.com | grep -o "var(--[^)]*)" | head -5
"Analyze this screenshot and infer the design system"
Issue: Playwright screenshot fails
Cause: Chromium not installed or site blocks automation.
Solution:
playwright install chromium
python scripts/capture_site.py https://example.com \
--user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"
Issue: Token references don't resolve in design.md
Cause: Circular references or malformed {token.ref} syntax.
Solution:
python scripts/lint_design_md.py design.md
Issue: Figma MCP tools not available
Cause: MCP not connected or insufficient permissions.
Solution:
- Open Claude settings → Connectors
- Verify Figma MCP is enabled
- Check Figma file permissions (must have view access)
- Retry analysis
Issue: Contrast report shows all failures
Cause: Background color not correctly identified.
Solution:
python scripts/check_contrast.py \
--pair "#3B82F6,#FFFFFF" \
--background "#FFFFFF"
Advanced usage
Custom token extraction with filters
import sys
sys.path.append('scripts')
from extract_css_vars import extract_css_variables
url = "https://example.com"
tokens = extract_css_variables(url)
color_tokens = {
k: v for k, v in tokens.items()
if k.startswith('--color-') or '#' in v
}
dtcg = {
"color": {
k.replace('--color-', ''): {
"$value": v,
"$type": "color"
}
for k, v in color_tokens.items()
}
}
Batch processing multiple sites
while read url; do
domain=$(echo $url | sed 's|https://||' | sed 's|/.*||')
mkdir -p "output/$domain"
python scripts/extract_css_vars.py "$url" \
--output "output/$domain/tokens.json"
python scripts/capture_site.py "$url" \
--output "output/$domain/screenshot.png"
done < sites.txt
"For each folder in output/, create a design.md using the tokens.json and screenshot.png"
Integration with CI/CD
name: Design Token Audit
on:
schedule:
- cron: '0 0 * * 0'
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install -r requirements.txt
playwright install chromium
- name: Audit tokens
run: |
python scripts/verify_design.py \
design-tokens.json \
https://production-site.com/ \
--output audit-report.md
- name: Create issue if drift detected
if: failure()
uses: actions/github-script@v6
with:
script: |
github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: 'Design token drift detected',
body: require('fs').readFileSync('audit-report.md', 'utf8')
})
Project structure reference
anydesign/
├── scripts/
│ ├── extract_css_vars.py # CSS custom property extraction
│ ├── capture_site.py # Multi-viewport screenshots
│ ├── extract_colors.py # Dominant color extraction
│ ├── check_contrast.py # WCAG contrast checker
│ ├── lint_design_md.py # design.md validator
│ ├── verify_design.py # Token drift auditor
│ └── export_for_claude_design.py # Claude Design bundle generator
├── examples/
│ ├── vercel-landing/ # Real production example
│ └── landing-example/ # Synthetic demo
├── requirements.txt
└── SKILL.md # This file
Additional resources