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
396 lines
14 KiB
Markdown
396 lines
14 KiB
Markdown
# 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:
|
|
|
|
1. **Translation Dictionaries are NOT implemented** in DSS Python core (only documented in principles)
|
|
2. **"Skins" concept may be misaligned** with actual DSS architecture
|
|
3. **Phase 2/3 implementation plan needs refinement** based on what's actually in the codebase
|
|
4. **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 skins
|
|
- `theme_get_skin` - Get skin details
|
|
- `theme_create_skin` - Create new skin
|
|
- `theme_apply_skin` - Apply skin to project
|
|
- `theme_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()` - Returns `Theme` object
|
|
- `get_default_dark_theme()` - Returns `Theme` object
|
|
|
|
**No "Skins":** The concept of client-specific "skins" is NOT implemented.
|
|
|
|
### What "Skins" SHOULD Be (Based on Principles):
|
|
|
|
A "skin" is:
|
|
1. **Base Theme** (light or dark)
|
|
2. **+ Translation Dictionary** (legacy → DSS mappings)
|
|
3. **+ 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
|
|
|
|
```python
|
|
# 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:
|
|
1. `theme_list_themes` - List available base themes (light/dark)
|
|
2. `theme_get_config` - Get project's theme configuration (.dss/config.json)
|
|
3. `theme_set_base` - Set project's base theme (light/dark)
|
|
4. `theme_add_custom_prop` - Add custom token to project (.dss/translations/custom.json)
|
|
5. `theme_export_resolved` - Export fully resolved tokens (base + custom + translations)
|
|
|
|
### Phase 3 (Depends on Both Above)
|
|
|
|
**Design Application** - Generate output files
|
|
|
|
Tools need:
|
|
1. `design_resolve_tokens` - Resolve all tokens for project (DSS + translations + custom)
|
|
2. `design_generate_css` - Generate CSS variables file
|
|
3. `design_generate_scss` - Generate SCSS variables file
|
|
4. `design_update_imports` - Rewrite component imports
|
|
5. `design_validate` - Validate that all tokens are mapped
|
|
|
|
---
|
|
|
|
## 6. Strategic Options
|
|
|
|
### Option A: Build Translation Dictionary System First ⭐ RECOMMENDED
|
|
|
|
**Approach:**
|
|
1. Pause MCP tool development
|
|
2. Build `dss.translations` Python module (foundation layer)
|
|
3. Test translation dictionary loading/merging
|
|
4. 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:**
|
|
1. Implement Phase 2 tools WITHOUT translation dictionary support
|
|
2. Tools only work with base themes
|
|
3. 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:**
|
|
1. Skip Phase 2 entirely
|
|
2. Implement Phase 3 code generation tools
|
|
3. 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:
|
|
|
|
1. **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
|
|
|
|
2. **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?
|
|
|
|
3. **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
|
|
|
|
1. **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?
|
|
|
|
2. **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?
|
|
|
|
3. **Can we ship Phase 1 alone as MVP?**
|
|
- Figma import + Storybook generation works
|
|
- Workflow 1 is complete
|
|
- Is that enough value?
|
|
|
|
4. **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:**
|
|
|
|
1. **Fast Path:** Complete MCP with simplified tools (no translation dictionaries)
|
|
- Timeline: 2-3 days
|
|
- Result: Partial workflow support, will need refactoring
|
|
|
|
2. **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.
|