Migrated from design-system-swarm with fresh git history.
Old project history preserved in /home/overbits/apps/design-system-swarm
Core components:
- MCP Server (Python FastAPI with mcp 1.23.1)
- Claude Plugin (agents, commands, skills, strategies, hooks, core)
- DSS Backend (dss-mvp1 - token translation, Figma sync)
- Admin UI (Node.js/React)
- Server (Node.js/Express)
- Storybook integration (dss-mvp1/.storybook)
Self-contained configuration:
- All paths relative or use DSS_BASE_PATH=/home/overbits/dss
- PYTHONPATH configured for dss-mvp1 and dss-claude-plugin
- .env file with all configuration
- Claude plugin uses ${CLAUDE_PLUGIN_ROOT} for portability
Migration completed: $(date)
🤖 Clean migration with full functionality preserved
14 KiB
DSS MCP Plugin - Strategic Analysis & Architecture Review
Date: December 9, 2024 Phase: Post-Phase 1 Implementation (Storybook Integration Complete) Purpose: Deep thinking on architecture alignment, workflow validation, and next steps
Executive Summary
After completing Phase 1 (Storybook Integration) via Zen Swarm methodology, a deep architectural review reveals critical insights that should inform our path forward:
###🔍 Key Findings:
- Translation Dictionaries are NOT implemented in DSS Python core (only documented in principles)
- "Skins" concept may be misaligned with actual DSS architecture
- Phase 2/3 implementation plan needs refinement based on what's actually in the codebase
- Workflow validation is critical before proceeding to Phase 2
1. Current Architecture State
DSS Python Core (dss-mvp1/dss/)
dss/
├── ✅ storybook/ # Scanner, generator, theme (MCP Phase 1 COMPLETE)
│ ├── scanner.py # StorybookScanner - scan existing stories
│ ├── generator.py # StoryGenerator - generate CSF3/CSF2/MDX stories
│ ├── theme.py # ThemeGenerator - create Storybook themes
│ └── config.py # Configuration utilities
│
├── ✅ themes/ # Default light/dark themes (FULLY IMPLEMENTED)
│ └── default_themes.py # get_default_light_theme(), get_default_dark_theme()
│
├── ✅ ingest/ # Multi-source token extraction (COMPLETE)
│ ├── css.py # CSSTokenSource
│ ├── scss.py # SCSSTokenSource
│ ├── tailwind.py # TailwindTokenSource
│ ├── json_tokens.py # JSONTokenSource
│ └── merge.py # TokenMerger
│
├── ✅ tools/ # External tool integrations
│ ├── figma.py # FigmaWrapper (MCP tools exist)
│ ├── shadcn.py # ShadcnWrapper (no MCP tools yet)
│ └── style_dictionary.py # StyleDictionaryWrapper (no MCP tools yet)
│
├── ✅ analyze/ # Code analysis and scanning
│ ├── scanner.py # ProjectScanner
│ ├── react.py # ReactAnalyzer
│ ├── quick_wins.py # QuickWinFinder
│ └── styles.py # StyleAnalyzer
│
├── ✅ export_import/ # Project export/import
│ ├── exporter.py # Export project data
│ ├── importer.py # Import project data
│ └── merger.py # Merge strategies
│
├── ✅ models/ # Data structures
│ ├── theme.py # Theme, DesignToken, TokenCategory
│ ├── component.py # Component, ComponentVariant
│ └── project.py # Project, ProjectMetadata
│
├── ❌ translations/ # MISSING - Not implemented!
│ └── (no files) # Translation dictionaries are documented but not coded
│
└── ✅ storage/ # SQLite persistence
└── database.py # get_connection(), Project/Token storage
MCP Plugin Layer (tools/dss_mcp/)
tools/dss_mcp/
├── server.py # FastAPI + SSE server
├── handler.py # Unified tool router
├── integrations/
│ ├── base.py # BaseIntegration, CircuitBreaker
│ ├── figma.py # ✅ 5 Figma tools (COMPLETE)
│ └── storybook.py # ✅ 5 Storybook tools (Phase 1 COMPLETE)
├── tools/
│ ├── project_tools.py # ✅ 7 project management tools
│ ├── workflow_tools.py # ✅ Workflow orchestration
│ └── debug_tools.py # ✅ Debug utilities
└── context/
└── project_context.py # Project context management
2. Critical Discovery: Translation Dictionaries Don't Exist
What the Principles Document Says:
From DSS_PRINCIPLES.md:
project-acme/
├── .dss/
│ ├── config.json
│ └── translations/
│ ├── figma.json # Figma → DSS mappings
│ ├── legacy-css.json # Legacy CSS → DSS mappings
│ └── custom.json # Custom props specific to ACME
What Actually Exists:
NOTHING. There is no Python module for:
- Reading translation dictionaries
- Writing translation dictionaries
- Applying translation dictionaries
- Validating translation dictionaries
- Merging custom props
Impact: Phase 2 "Skin Management" tools cannot be implemented as planned because the underlying Python functionality doesn't exist.
3. The "Skin" vs "Theme" Confusion
What the Implementation Plan Assumes:
Phase 2: Skin/Theme Management
theme_list_skins- List available skinstheme_get_skin- Get skin detailstheme_create_skin- Create new skintheme_apply_skin- Apply skin to projecttheme_export_tokens- Export tokens
Assumption: "Skins" are first-class objects stored somewhere.
What the Codebase Actually Has:
Themes: Only 2 base themes exist:
get_default_light_theme()- ReturnsThemeobjectget_default_dark_theme()- ReturnsThemeobject
No "Skins": The concept of client-specific "skins" is NOT implemented.
What "Skins" SHOULD Be (Based on Principles):
A "skin" is:
- Base Theme (light or dark)
- + Translation Dictionary (legacy → DSS mappings)
- + Custom Props (client-specific extensions)
Reality: Without translation dictionary implementation, "skins" cannot be created.
4. Workflow Validation Analysis
Target Workflow 1: Import from Figma ✅
┌──────────────────────────────────────────────────┐
│ WORKFLOW 1: Import from Figma │
├──────────────────────────────────────────────────┤
│ 1. figma_fetch_file(fileKey) ✅ Works │
│ 2. figma_extract_tokens(fileId) ✅ Works │
│ 3. figma_import_components(fileId) ✅ Works │
│ 4. Store tokens in database ✅ Works │
└──────────────────────────────────────────────────┘
Status: FULLY FUNCTIONAL
Gaps: None
Target Workflow 2: Load Skins into Storybook 🟡
┌──────────────────────────────────────────────────┐
│ WORKFLOW 2: Load Skins into Storybook │
├──────────────────────────────────────────────────┤
│ 1. storybook_scan(projectId) ✅ Phase 1│
│ 2. Get client "skin" configuration ❌ BLOCKED│
│ → No translation dictionary support │
│ 3. Merge base theme + custom props ❌ BLOCKED│
│ → No merge logic exists │
│ 4. storybook_generate_theme(tokens) ✅ Phase 1│
│ 5. Load Storybook with theme ✅ Phase 1│
└──────────────────────────────────────────────────┘
Status: 60% FUNCTIONAL
Gaps: Translation dictionary system, custom props merger
Current Capability: Can generate Storybook theme from base DSS theme Missing: Cannot apply client-specific customizations
Target Workflow 3: Apply Design to Project ❌
┌──────────────────────────────────────────────────┐
│ WORKFLOW 3: Apply Design to Project │
├──────────────────────────────────────────────────┤
│ 1. Load project configuration ❌ BLOCKED│
│ → No translation dictionary support │
│ 2. Resolve tokens (DSS + custom) ❌ BLOCKED│
│ → No token resolution logic │
│ 3. Generate output files (CSS/SCSS) 🟡 PARTIAL│
│ → style-dictionary exists but no MCP tools │
│ 4. Update component imports ❌ BLOCKED│
│ → No component rewrite logic │
│ 5. Validate application ❌ BLOCKED│
│ → No validation against translations │
└──────────────────────────────────────────────────┘
Status: 10% FUNCTIONAL
Gaps: Complete translation dictionary system, token resolution, code generation
5. What Needs to Be Built
Foundation Layer (Critical - Build First)
Translation Dictionary System - NOT IMPLEMENTED
# Needs to be created in dss-mvp1/dss/translations/
dss/translations/
├── __init__.py
├── dictionary.py # TranslationDictionary class
├── mapping.py # TokenMapping, ComponentMapping
├── loader.py # Load from .dss/translations/*.json
├── writer.py # Write dictionary files
├── merger.py # Merge base theme + custom props
├── validator.py # Validate dictionary schema
└── resolver.py # Resolve token paths (e.g., "color.primary.500")
Core Functionality:
- Load translation dictionaries from project .dss/translations/
- Parse mappings: { "--brand-blue": "color.primary.500" }
- Resolve token references
- Merge custom props into base theme
- Validate mappings against DSS canonical structure
- Write/update dictionary files
Without this, Phase 2 and Phase 3 cannot be completed.
Phase 2 (Depends on Translation Dictionary System)
Skin/Theme Management - Should be renamed to "Project Theme Configuration"
Tools should actually do:
theme_list_themes- List available base themes (light/dark)theme_get_config- Get project's theme configuration (.dss/config.json)theme_set_base- Set project's base theme (light/dark)theme_add_custom_prop- Add custom token to project (.dss/translations/custom.json)theme_export_resolved- Export fully resolved tokens (base + custom + translations)
Phase 3 (Depends on Both Above)
Design Application - Generate output files
Tools need:
design_resolve_tokens- Resolve all tokens for project (DSS + translations + custom)design_generate_css- Generate CSS variables filedesign_generate_scss- Generate SCSS variables filedesign_update_imports- Rewrite component importsdesign_validate- Validate that all tokens are mapped
6. Strategic Options
Option A: Build Translation Dictionary System First ⭐ RECOMMENDED
Approach:
- Pause MCP tool development
- Build
dss.translationsPython module (foundation layer) - Test translation dictionary loading/merging
- Then resume MCP tool implementation with correct architecture
Pros:
- Aligns with DSS core principles
- Enables real workflows
- Solid foundation for Phase 2/3
Cons:
- Delays MCP completion by 2-3 days
- Requires core DSS architecture work
Option B: Simplified Phase 2 (No Translation Dictionaries)
Approach:
- Implement Phase 2 tools WITHOUT translation dictionary support
- Tools only work with base themes
- Custom props come later
Pros:
- Faster MCP completion
- Some functionality better than none
Cons:
- Doesn't align with DSS principles
- Will need refactoring later
- Can't achieve target workflows
Option C: Skip to Phase 3 (Code Generation Only)
Approach:
- Skip Phase 2 entirely
- Implement Phase 3 code generation tools
- Generate CSS/SCSS from base themes only
Pros:
- Tangible output (actual CSS files)
- Tests style-dictionary integration
Cons:
- Still blocked by translation dictionary gap
- Workflows incomplete
7. Recommendations
Immediate Actions:
-
Validate Phase 1 with Simple Test
- Test storybook_scan on dss-mvp1 project
- Test storybook_generate_theme with base light theme
- Confirm tools actually work end-to-end
-
Decide on Translation Dictionary Architecture
- Should it be Python module or keep as JSON-only?
- Who owns the schema validation?
- How do custom props extend base themes?
-
Refine Phase 2/3 Plan
- Update tool definitions based on actual DSS architecture
- Remove "skin" terminology, use "project theme configuration"
- Add translation dictionary tools if we build that module
Long-term Strategy:
Path 1: Minimal MCP (Fast)
- Complete Phase 2/3 without translation dictionaries
- Basic theme application only
- Good for demo, limited for production
Path 2: Complete DSS (Correct) ⭐ RECOMMENDED
- Build translation dictionary foundation
- Implement Phase 2/3 properly aligned with principles
- Full workflow support, production-ready
8. Questions for Architectural Decision
-
Should we build the translation dictionary Python module?
- If yes: Who implements it? (Core team vs. MCP team)
- If no: How do we achieve the documented DSS principles?
-
What is the actual definition of a "skin"?
- Is it base theme + translation dictionary?
- Or is it just a preset of custom props?
- Should we rename to avoid confusion?
-
Can we ship Phase 1 alone as MVP?
- Figma import + Storybook generation works
- Workflow 1 is complete
- Is that enough value?
-
Should Phases 2/3 wait for translation dictionary implementation?
- Or build simplified versions now?
- Trade-offs between speed and correctness?
9. Conclusion
We're at a critical architectural decision point.
Phase 1 (Storybook) is production-ready, but Phases 2-3 cannot be properly implemented without the translation dictionary foundation layer that's documented in principles but not coded.
Two Paths Forward:
-
Fast Path: Complete MCP with simplified tools (no translation dictionaries)
- Timeline: 2-3 days
- Result: Partial workflow support, will need refactoring
-
Correct Path: Build translation dictionary system first, then complete MCP
- Timeline: 5-7 days
- Result: Full workflow support, aligned with DSS principles
My Recommendation: Choose the Correct Path. Build the foundation right.
Next Step: User decision on which path to take.