# DSS Claude Plugin Design System Swarm (DSS) integration for Claude Code - A comprehensive plugin for analyzing, extracting, and generating design system tokens and components. ## Overview The DSS Claude Plugin brings the power of DSS directly into Claude Code, enabling: - **Project Analysis**: Scan codebases for design patterns and tokenization opportunities - **Token Extraction**: Extract design tokens from CSS, SCSS, Tailwind, and JSON - **Theme Generation**: Generate theme files using style-dictionary - **Component Auditing**: Audit components for design system adoption - **Storybook Integration**: Set up and configure Storybook - **Figma Sync**: Import tokens directly from Figma files - **Quick Wins**: Find low-effort, high-impact improvements ## Installation ### Local Development Setup For local machines with GUI (desktop/laptop): ```bash # 1. Clone the repository git clone https://github.com/overbits/dss.git cd dss # 2. Run the setup script ./setup.sh # 3. Install the plugin in Claude Code claude /plugin install ./dss-claude-plugin ``` Or manually: ```bash # 1. Create and activate virtual environment python3 -m venv .venv source .venv/bin/activate # 2. Install dependencies pip install -r requirements.txt playwright install chromium # 3. Install the plugin claude /plugin install ./dss-claude-plugin ``` ### Remote/Headless Server Setup For remote servers, VPS, Docker, or CI/CD environments: ```bash # 1. Clone the repository git clone https://github.com/overbits/dss.git cd dss # 2. Install dependencies (headless mode) pip install -r requirements.txt playwright install chromium --with-deps # Installs system dependencies # 3. Install the plugin in Claude Code claude /plugin install ./dss-claude-plugin ``` **Docker Setup:** ```dockerfile FROM python:3.10-slim # Install system dependencies for Playwright RUN apt-get update && apt-get install -y \ libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 \ libcups2 libdrm2 libxkbcommon0 libxcomposite1 \ libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2 WORKDIR /app COPY . . RUN pip install -r requirements.txt RUN playwright install chromium # DSS MCP server runs on stdio CMD ["python3", "dss-claude-plugin/servers/dss-mcp-server.py"] ``` ### Claude Code Configuration After installing the plugin, Claude Code automatically configures the MCP server. The configuration is stored in `.mcp.json`: ```json { "mcpServers": { "dss": { "command": "python3", "args": ["${CLAUDE_PLUGIN_ROOT}/servers/dss-mcp-server.py"], "env": { "PYTHONPATH": "/path/to/dss/dss-mvp1", "DSS_HOME": "~/.dss" } } } } ``` ### Connecting Local Claude Code to Remote Server You can run Claude Code locally while connecting to a DSS MCP server running on a remote machine. #### Option 1: SSH Tunnel (Recommended) Create an SSH tunnel to forward the remote MCP server: ```bash # On local machine - tunnel remote MCP server ssh -L 9222:localhost:9222 -L 3456:localhost:3456 user@remote-server ``` This forwards: - Port 9222: Chrome DevTools Protocol - Port 3456: Your web application Then use `devtools_connect(port=9222)` as if it were local. #### Option 2: Remote MCP via SSH Configure Claude Code to run the MCP server over SSH. Add to your local `~/.claude/settings.json` or project `.mcp.json`: ```json { "mcpServers": { "dss-remote": { "command": "ssh", "args": [ "user@remote-server", "python3", "/home/user/dss/dss-claude-plugin/servers/dss-mcp-server.py" ], "env": { "PYTHONPATH": "/home/user/dss/dss-mvp1" }, "description": "Remote DSS MCP server via SSH" } } } ``` #### Option 3: HTTP Proxy (Advanced) For shared team access, run the MCP server behind an HTTP proxy: ```bash # On remote server - start MCP with HTTP transport # (Requires mcp-proxy or similar) python3 -m mcp.server.http --port 8080 dss-claude-plugin/servers/dss-mcp-server.py ``` Then configure Claude Code to connect via HTTP: ```json { "mcpServers": { "dss-remote": { "url": "http://remote-server:8080", "transport": "http" } } } ``` #### Option 4: VS Code Remote / SSH Workspace If using Claude Code in VS Code with Remote SSH extension: 1. Connect VS Code to remote server via Remote SSH 2. Install Claude Code extension in remote context 3. DSS plugin runs natively on remote - no tunneling needed ### Verify Installation ```bash # Check DSS tools are available claude --list-tools | grep dss # Check DevTools are available (requires Playwright) claude --list-tools | grep devtools # Test the MCP server directly echo '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}' | python3 dss-claude-plugin/servers/dss-mcp-server.py ``` ## Requirements - Claude Code >= 1.0.0 - Python 3.10+ - Node.js 18+ (for style-dictionary) - DSS MVP1 installed at `/path/to/dss/dss-mvp1` ### Python Dependencies ```bash pip install mcp pydantic pydantic-settings playwright aiohttp playwright install chromium ``` Or run the full setup: ```bash ./setup.sh ``` ### Optional: Figma Integration Set your Figma personal access token: ```bash export FIGMA_TOKEN=your-figma-token ``` ## Commands | Command | Description | |---------|-------------| | `/dss-analyze [path]` | Analyze project for design system patterns | | `/dss-extract [path] [sources]` | Extract design tokens | | `/dss-generate [name]` | Generate theme files | | `/dss-audit [path]` | Audit components for DS adoption | | `/dss-storybook [path]` | Storybook setup and configuration | | `/dss-figma ` | Sync tokens from Figma | | `/dss-quick-wins [path]` | Find quick win opportunities | ## Skills The plugin includes 7 procedural skills: 1. **design-system-analysis** - Comprehensive codebase analysis 2. **token-extraction** - Multi-source token extraction 3. **theme-generation** - Style-dictionary theme generation 4. **component-audit** - React component auditing 5. **storybook-integration** - Storybook setup and stories 6. **figma-sync** - Figma API integration 7. **quick-wins** - Quick win identification ## Agents Two specialized agents for complex tasks: ### DSS Architect Planning and designing design system implementations. ``` "Help me plan a design system for our React application" ``` ### DSS Migrator Migrating existing codebases to design systems. ``` "Help me migrate our button components to use design tokens" ``` ## MCP Tools The plugin exposes DSS tools and Chrome DevTools tools: ### DSS Tools | Tool | Description | |------|-------------| | `dss_analyze_project` | Full project analysis | | `dss_extract_tokens` | Extract tokens from sources | | `dss_generate_theme` | Generate theme files | | `dss_list_themes` | List available themes | | `dss_get_status` | Get DSS system status | | `dss_audit_components` | Component audit | | `dss_setup_storybook` | Storybook configuration | | `dss_sync_figma` | Figma token sync | | `dss_find_quick_wins` | Quick win analysis | | `dss_transform_tokens` | Token format transformation | ### Chrome DevTools Tools | Tool | Description | |------|-------------| | `devtools_launch` | Launch headless Chromium (for remote/headless servers) | | `devtools_connect` | Connect to running Chrome with CDP (port 9222) | | `devtools_disconnect` | Disconnect and clean up resources | | `devtools_list_pages` | List all browser tabs/pages | | `devtools_select_page` | Select active page for operations | | `devtools_goto` | Navigate to a URL | | `devtools_console_logs` | Get captured console messages | | `devtools_network_requests` | Get captured network activity | | `devtools_evaluate` | Execute JavaScript in page context | | `devtools_query_dom` | Query DOM elements with CSS selector | | `devtools_screenshot` | Capture page/element screenshots (base64 PNG) | | `devtools_performance` | Get Core Web Vitals and performance metrics | ## Hooks The plugin includes hooks for automation: - **PreToolUse**: Validates Figma token before sync - **PostToolUse**: Logs completion of major operations ## Usage Examples ### Analyze a Project ``` /dss-analyze /path/to/project ``` Returns comprehensive analysis including: - File counts and types - Style patterns discovered - Component analysis - Recommendations ### Extract and Generate Tokens ``` /dss-extract /path/to/styles css,scss /dss-generate css my-theme ``` ### Audit Components ``` /dss-audit /path/to/components ``` Identifies: - Hardcoded values - Consolidation opportunities - Refactoring suggestions ### Sync from Figma ``` /dss-figma abc123xyz456 ``` Extracts: - Colors from fill styles - Typography from text styles - Spacing from auto-layout - Effects and shadows ## Chrome DevTools Integration The plugin includes Chrome DevTools Protocol (CDP) integration for browser debugging, console capture, network monitoring, and performance analysis. ### Remote/Headless Server Setup For remote or headless servers (no GUI), use the `devtools_launch` tool to spawn a headless Chromium instance: ```python # 1. Launch headless browser and navigate to your app devtools_launch(url="http://localhost:3456") # 2. Get console logs devtools_console_logs() # 3. Navigate to another page devtools_goto(url="http://localhost:3456/dashboard") # 4. Capture screenshot devtools_screenshot(full_page=True) # 5. Get performance metrics devtools_performance() # 6. Execute JavaScript devtools_evaluate(expression="document.title") # 7. Query DOM devtools_query_dom(selector=".error-message") # 8. Clean up devtools_disconnect() ``` ### Local Desktop Setup For local development with Chrome GUI, launch Chrome with remote debugging enabled: ```bash # Linux google-chrome --remote-debugging-port=9222 # macOS /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 # Windows "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 ``` Then connect using the `devtools_connect` tool: ```python # 1. Connect to running Chrome devtools_connect(port=9222) # 2. List available tabs devtools_list_pages() # 3. Select a tab devtools_select_page(page_id="...") # 4. Capture console logs, network, etc. devtools_console_logs() devtools_network_requests() # 5. Disconnect when done devtools_disconnect() ``` ### DevTools Configuration The MCP server includes configurable limits: ```python DEVTOOLS_CONSOLE_MAX_ENTRIES = 1000 # Max console messages stored DEVTOOLS_NETWORK_MAX_ENTRIES = 500 # Max network requests stored DEVTOOLS_CONNECTION_TIMEOUT_MS = 30000 # Connection timeout (30s) ``` ### Common Use Cases **Debug Console Errors:** ```python devtools_launch(url="http://localhost:3000") devtools_console_logs(level="error") ``` **Monitor Network Requests:** ```python devtools_launch(url="http://localhost:3000") devtools_network_requests(filter_url="api/") ``` **Performance Analysis:** ```python devtools_launch(url="http://localhost:3000") devtools_performance() # Returns: FCP, LCP, TTFB, DOM metrics ``` **Visual Regression Testing:** ```python devtools_launch(url="http://localhost:3000") devtools_screenshot(full_page=True) # Returns: base64 PNG image ``` ## Architecture ``` dss-claude-plugin/ ├── .claude-plugin/ │ └── plugin.json # Plugin metadata ├── commands/ # 7 slash commands ├── skills/ # 7 procedural skills ├── agents/ # 2 specialized agents ├── hooks/ │ └── hooks.json # Event hooks ├── servers/ │ └── dss-mcp-server.py # Python MCP server ├── .mcp.json # MCP configuration └── README.md ``` ## Configuration ### Environment Variables | Variable | Description | |----------|-------------| | `FIGMA_TOKEN` | Figma personal access token | | `DSS_HOME` | DSS home directory (default: ~/.dss) | | `PYTHONPATH` | Path to DSS MVP1 modules | ### Timeouts The MCP server includes configurable timeouts: ```python TIMEOUT_CONFIG = { "analyze": 60, # Large project scanning "extract": 30, # Token extraction "generate": 30, # Theme generation "figma_api": 15, # Figma API calls "storybook": 60, # Storybook operations "devtools_connect": 20, # DevTools CDP connection "devtools_default": 10, # DevTools operations } ``` ## Development ### Running the MCP Server Directly ```bash cd /home/overbits/dss/dss-claude-plugin python3 servers/dss-mcp-server.py ``` ### Testing ```bash # Test MCP server echo '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}' | python3 servers/dss-mcp-server.py ``` ## Troubleshooting ### DSS Modules Not Found Ensure PYTHONPATH is set correctly: ```bash export PYTHONPATH=/home/overbits/dss/dss-mvp1 ``` ### Figma Sync Fails 1. Check FIGMA_TOKEN is set 2. Verify file key is correct 3. Check API rate limits ### Slow Analysis For large projects, analysis may take longer. The timeout is set to 60 seconds by default. ### DevTools Launch Fails 1. Ensure Playwright is installed: `pip install playwright` 2. Install Chromium browser: `playwright install chromium` 3. On Docker/remote: ensure `--no-sandbox` flag is used (handled automatically) ### DevTools Connect Fails 1. Ensure Chrome is running with: `--remote-debugging-port=9222` 2. Check the port is not blocked by firewall 3. Verify connection: `curl http://localhost:9222/json` ### DevTools Playwright Not Available The server gracefully degrades if Playwright isn't installed. DevTools tools will not appear in the tool list. Install with: ```bash pip install playwright aiohttp playwright install chromium ``` ## License MIT License - See LICENSE file for details. ## Author overbits - https://overbits.luz.uy ## Links - [DSS Homepage](https://dss.overbits.luz.uy) - [Model Context Protocol](https://modelcontextprotocol.io) - [Claude Code](https://claude.ai/code) - [Style Dictionary](https://amzn.github.io/style-dictionary)