aios-core
Version:
Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework
673 lines (518 loc) • 16.2 kB
Markdown
# Design System Artifact Scanner
> **Task ID:** ux-ds-scan-artifact
> **Agent:** UX-Design Expert
> **Phase:** Universal (works with any phase)
> **Interactive:** Yes (elicit=true)
## Execution Modes
**Choose your execution mode:**
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
- Autonomous decision making with logging
- Minimal user interaction
- **Best for:** Simple, deterministic tasks
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
- Explicit decision checkpoints
- Educational explanations
- **Best for:** Learning, complex decisions
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
- Task analysis phase (identify all ambiguities)
- Zero ambiguity execution
- **Best for:** Ambiguous requirements, critical work
**Parameter:** `mode` (optional, default: `interactive`)
## Task Definition (AIOS Task Format V1.0)
```yaml
task: uxDsScanArtifact()
responsável: Uma (Empathizer)
responsavel_type: Agente
atomic_layer: Strategy
**Entrada:**
- campo: task
tipo: string
origem: User Input
obrigatório: true
validação: Must be registered task
- campo: parameters
tipo: object
origem: User Input
obrigatório: false
validação: Valid task parameters
- campo: mode
tipo: string
origem: User Input
obrigatório: false
validação: yolo|interactive|pre-flight
**Saída:**
- campo: execution_result
tipo: object
destino: Memory
persistido: false
- campo: logs
tipo: array
destino: File (.ai/logs/*)
persistido: true
- campo: state
tipo: object
destino: State management
persistido: true
```
## Pre-Conditions
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
**Checklist:**
```yaml
pre-conditions:
- [ ] Task is registered; required parameters provided; dependencies met
tipo: pre-condition
blocker: true
validação: |
Check task is registered; required parameters provided; dependencies met
error_message: "Pre-condition failed: Task is registered; required parameters provided; dependencies met"
```
## Post-Conditions
**Purpose:** Validate execution success AFTER task completes
**Checklist:**
```yaml
post-conditions:
- [ ] Task completed; exit code 0; expected outputs created
tipo: post-condition
blocker: true
validação: |
Verify task completed; exit code 0; expected outputs created
error_message: "Post-condition failed: Task completed; exit code 0; expected outputs created"
```
## Acceptance Criteria
**Purpose:** Definitive pass/fail criteria for task completion
**Checklist:**
```yaml
acceptance-criteria:
- [ ] Task completed as expected; side effects documented
tipo: acceptance-criterion
blocker: true
validação: |
Assert task completed as expected; side effects documented
error_message: "Acceptance criterion not met: Task completed as expected; side effects documented"
```
## Tools
**External/shared resources used by this task:**
- **Tool:** task-runner
- **Purpose:** Task execution and orchestration
- **Source:** .aios-core/core/task-runner.js
- **Tool:** logger
- **Purpose:** Execution logging and error tracking
- **Source:** .aios-core/utils/logger.js
## Scripts
**Agent-specific code for this task:**
- **Script:** execute-task.js
- **Purpose:** Generic task execution wrapper
- **Language:** JavaScript
- **Location:** .aios-core/scripts/execute-task.js
## Error Handling
**Strategy:** retry
**Common Errors:**
1. **Error:** Task Not Found
- **Cause:** Specified task not registered in system
- **Resolution:** Verify task name and registration
- **Recovery:** List available tasks, suggest similar
2. **Error:** Invalid Parameters
- **Cause:** Task parameters do not match expected schema
- **Resolution:** Validate parameters against task definition
- **Recovery:** Provide parameter template, reject execution
3. **Error:** Execution Timeout
- **Cause:** Task exceeds maximum execution time
- **Resolution:** Optimize task or increase timeout
- **Recovery:** Kill task, cleanup resources, log state
## Performance
**Expected Metrics:**
```yaml
duration_expected: 5-20 min (estimated)
cost_estimated: $0.003-0.015
token_usage: ~2,000-8,000 tokens
```
**Optimization Notes:**
- Iterative analysis with depth limits; cache intermediate results; batch similar operations
## Metadata
```yaml
story: N/A
version: 1.0.0
dependencies:
- N/A
tags:
- automation
- workflow
updated_at: 2025-11-17
```
## 📋 Description
Analyze HTML/React artifacts (files, screenshots, or live URLs) to extract design patterns, components, and design tokens. Automatically detect atoms, molecules, organisms following Atomic Design methodology. Generate component build suggestions and design system recommendations.
## 🎯 Objectives
- Scan existing UI artifacts for design patterns
- Extract components at atomic, molecular, and organism levels
- Identify design tokens (colors, typography, spacing, etc.)
- Generate component build recommendations
- Provide design system migration path
## 📊 Supported Artifact Types
### Type 1: HTML Files
**Format:** .html, .htm
**Analysis:** Parse DOM, extract styles, identify components
**Speed:** Fast (< 5 seconds)
### Type 2: React Components
**Format:** .jsx, .tsx, .js with JSX
**Analysis:** AST parsing, prop extraction, component structure
**Speed:** Fast (< 10 seconds)
### Type 3: Screenshots
**Format:** .png, .jpg, .jpeg
**Analysis:** Visual pattern recognition (requires AI vision)
**Speed:** Moderate (10-30 seconds)
### Type 4: Live URLs
**Format:** https://example.com
**Analysis:** Fetch + parse, full DOM analysis
**Speed:** Moderate (15-45 seconds depending on page)
## 🔄 Workflow
### Step 1: Specify Artifact
**Interactive Elicitation:**
```
What type of artifact do you want to scan?
1. HTML file (local path)
2. React component file (.jsx/.tsx)
3. Screenshot image (.png/.jpg)
4. Live website URL
Your selection: _____
Provide the path or URL:
Your input: _____
```
### Step 2: Scan & Parse Artifact
**HTML/React Parsing:**
1. Load file content
2. Parse DOM/AST structure
3. Extract all elements with attributes
4. Identify unique patterns
5. Group similar elements
**Screenshot Analysis:**
1. Load image
2. Detect UI regions (header, content, footer)
3. Identify buttons, inputs, cards, etc.
4. Extract color palette
5. Measure spacing patterns
**Live URL Fetching:**
1. Fetch page HTML
2. Download inline styles
3. Parse external CSS (if accessible)
4. Extract computed styles
5. Identify interactive components
### Step 3: Extract Design Tokens
**Color Tokens:**
```
colors:
primary:
- "#3B82F6" (used 42 times)
- "#2563EB" (used 18 times)
secondary:
- "#10B981" (used 23 times)
neutral:
- "#F3F4F6" (used 67 times - backgrounds)
- "#6B7280" (used 45 times - text)
- "#1F2937" (used 38 times - headings)
accent:
- "#F59E0B" (used 12 times)
```
**Typography Tokens:**
```
typography:
fontFamilies:
- "Inter, sans-serif" (primary)
- "JetBrains Mono, monospace" (code)
fontSizes:
- 12px (labels, captions)
- 14px (body text) ← most common
- 16px (default)
- 20px (h3)
- 24px (h2)
- 32px (h1)
fontWeights:
- 400 (regular)
- 500 (medium)
- 600 (semibold)
- 700 (bold)
```
**Spacing Tokens:**
```
spacing:
scale: [4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px]
common_patterns:
- Buttons: 8px vertical, 16px horizontal padding
- Cards: 16px padding, 16px gap between
- Sections: 32px vertical spacing
- Page margins: 24px mobile, 48px desktop
```
**Border Radius Tokens:**
```
borderRadius:
- 0px (sharp edges - 15% of components)
- 4px (slight rounding - 60% of components) ← default
- 8px (rounded - 20% of components)
- 9999px (fully rounded - 5% of components)
```
**Shadow Tokens:**
```
shadows:
- none (flat design)
- sm: "0 1px 2px rgba(0,0,0,0.05)"
- md: "0 4px 6px rgba(0,0,0,0.1)" ← most common
- lg: "0 10px 15px rgba(0,0,0,0.1)"
```
### Step 4: Identify Components (Atomic Design)
**Atoms (Fundamental Building Blocks):**
```
atoms:
- Button
variants: [primary, secondary, outline, ghost]
count: 47 instances
styles: {padding: 8px 16px, borderRadius: 4px, ...}
- Input
types: [text, email, password, number, search]
count: 23 instances
styles: {height: 40px, border: 1px solid #D1D5DB, ...}
- Label
count: 31 instances
styles: {fontSize: 14px, fontWeight: 500, ...}
- Icon
set: [check, x, chevron-down, search, user, settings]
count: 89 instances
size: 16px, 20px, 24px
- Badge
count: 12 instances
variants: [success, warning, error, info]
```
**Molecules (Simple Combinations):**
```
molecules:
- FormField (Label + Input + Helper Text)
count: 18 instances
pattern: Vertical stack with 4px gap
- SearchBar (Input + Icon + Optional Button)
count: 3 instances
pattern: Horizontal flex with icon prefix
- Card (Border + Padding + Shadow)
count: 24 instances
pattern: 16px padding, 8px borderRadius, md shadow
- NavItem (Icon + Label + Optional Badge)
count: 8 instances (in navigation)
pattern: Horizontal flex, 12px gap
- StatDisplay (Label + Number + Trend Icon)
count: 6 instances (dashboard)
pattern: Vertical stack, number emphasized
```
**Organisms (Complex Sections):**
```
organisms:
- Header (Logo + Navigation + Search + Profile)
count: 1 instance (global)
complexity: HIGH
- ProductCard (Image + Title + Description + Price + CTA)
count: 16 instances (grid)
complexity: MEDIUM
- DataTable (Headers + Rows + Pagination + Actions)
count: 2 instances
complexity: HIGH
- Modal (Overlay + Header + Body + Footer + Close)
count: 3 instances (login, confirm, settings)
complexity: MEDIUM
- Form (Multiple Fields + Validation + Submit)
count: 4 instances
complexity: MEDIUM
```
### Step 5: Calculate Pattern Redundancy
**Redundancy Analysis:**
```
Pattern: Buttons
----
Total instances: 47
Unique variations: 12 (based on style clustering)
Optimal set: 3 (primary, secondary, outline)
Reduction: 75% (12 → 3)
Maintenance savings: 37.5 hours/month → 9.4 hours/month
Pattern: Colors
----
Total colors: 89 hex values
After clustering (5% HSL threshold): 18 distinct colors
Optimal token set: 12 tokens
Reduction: 86.5% (89 → 12)
Pattern: Spacing Values
----
Total unique values: 47 px values
After normalization to 4px scale: 12 values
Optimal set: 8 tokens (4, 8, 12, 16, 24, 32, 48, 64)
Reduction: 74.5% (47 → 12)
```
### Step 6: Generate Build Recommendations
**Component Priority Matrix:**
```
Priority: HIGH (Build First)
- Button (47 instances - most used)
- Input (23 instances - forms critical)
- Card (24 instances - content display)
Priority: MEDIUM (Build Second)
- FormField molecule (18 instances)
- Badge (12 instances - status display)
- Modal (3 instances but high complexity)
Priority: LOW (Build Last or Skip)
- Custom widgets (1-2 instances)
- Page-specific components
- One-off patterns
```
**Build Order Recommendation:**
```
Phase 1: Core Atoms (Week 1)
1. Button (all 4 variants)
2. Input (all 5 types)
3. Label
4. Icon set (12 icons)
Phase 2: Common Molecules (Week 2)
5. FormField (Label + Input + Helper)
6. Card
7. Badge
8. SearchBar
Phase 3: Complex Organisms (Week 3)
9. Header
10. Form (with validation)
11. Modal
12. DataTable
Phase 4: Page Templates (Week 4)
13. Dashboard template
14. Form page template
15. Detail page template
```
## 📤 Outputs
All artifacts saved to: `outputs/design-system/{project}/scan/`
### Required Files:
1. **scan-summary.md** - High-level findings
2. **design-tokens.yaml** - Extracted tokens (colors, typography, spacing)
3. **component-inventory.md** - List of components (Atomic Design)
4. **redundancy-analysis.md** - Pattern redundancy calculations
5. **build-recommendations.md** - Priority matrix and build order
### Optional Files:
6. **screenshots/** - Visual comparisons of patterns
7. **extracted-styles.css** - All CSS extracted from artifact
8. **comparison-matrix.xlsx** - Side-by-side pattern comparisons
## ✅ Success Criteria
- [ ] Artifact successfully scanned and parsed
- [ ] Design tokens extracted (colors, typography, spacing, etc.)
- [ ] Components identified at atomic, molecular, organism levels
- [ ] Pattern redundancy calculated with reduction percentages
- [ ] Build recommendations prioritized (HIGH/MEDIUM/LOW)
- [ ] Build order phases defined (1-4 weeks)
- [ ] All outputs saved to `outputs/design-system/{project}/scan/`
- [ ] `.state.yaml` updated with scan results
## 🔄 Integration with Other Tasks
**Works with any phase:**
- `*research` - Scan competitor sites for UX patterns
- `*wireframe` - Scan existing app to inventory current components
- `*audit` - Complement full codebase audit with specific artifact focus
- `*consolidate` - Use scan to inform consolidation decisions
- `*build` - Use component inventory to guide what to build
**State Management:**
Updates `.state.yaml` with:
- `artifact_scanned: {type, path}`
- `tokens_extracted: {colors, typography, spacing}`
- `components_found: [list of components]`
- `redundancy_metrics: {buttons, colors, spacing}`
- `scan_date: [ISO date]`
## 📚 Token Extraction Algorithms
### Color Clustering (HSL-based, 5% threshold)
```
Algorithm:
1. Extract all hex colors from artifact
2. Convert to HSL (Hue, Saturation, Lightness)
3. Cluster colors within 5% HSL distance
4. Select most-used color from each cluster as token
5. Name tokens by category (primary, secondary, neutral, accent)
```
### Spacing Normalization (4px base)
```
Algorithm:
1. Extract all px values from padding, margin, gap
2. Round to nearest 4px multiple
3. Count frequency of each value
4. Select top 8 most-used values as tokens
5. Name tokens: xs, sm, md, lg, xl, 2xl, 3xl
```
### Component Similarity Detection
```
Algorithm:
1. Extract element structure (tag + classes + children)
2. Extract styles (computed CSS)
3. Calculate similarity score (0-100%)
4. Group components with >85% similarity
5. Identify most common variant as base
```
## ⚠️ Limitations
### HTML/React Files:
- ✅ Can parse structure and styles
- ✅ Can extract inline and CSS classes
- ❌ Cannot see rendered visual (no browser)
- ❌ Cannot detect dynamic behavior
### Screenshots:
- ✅ Can see visual appearance
- ✅ Can detect colors and spacing
- ❌ Cannot extract code structure
- ❌ Cannot identify interactive states (hover, focus)
### Live URLs:
- ✅ Can fetch full page HTML
- ✅ Can extract all styles
- ❌ May be blocked by CORS/auth
- ❌ Cannot access private pages without login
## 🎯 Example Output
**Example: Scan Result for Dashboard**
```markdown
# Scan Summary: Dashboard Page
**Artifact:** https://example.com/dashboard
**Scanned:** 2025-11-12 14:35
**Page Complexity:** MEDIUM (47 components, 3 levels deep)
## Design Tokens Extracted
- **Colors:** 18 distinct colors → 12 tokens recommended
- **Typography:** 6 font sizes, 4 weights → Well-structured
- **Spacing:** 47 values → Normalize to 8 tokens
- **Border Radius:** 3 values (0px, 4px, 8px) → Already optimal
## Components Found (Atomic Design)
### Atoms (8 types, 147 instances)
- Button (47), Input (23), Label (31), Icon (89), Badge (12), ...
### Molecules (5 types, 42 instances)
- FormField (18), Card (24), SearchBar (3), NavItem (8), ...
### Organisms (4 types, 7 instances)
- Header (1), Form (4), Modal (3), DataTable (2)
## Redundancy Analysis
- **Buttons:** 75% reduction possible (12 variants → 3)
- **Colors:** 86.5% reduction possible (89 → 12)
- **Spacing:** 74.5% reduction possible (47 → 12)
## Build Recommendations
**Phase 1 (Week 1):** Button, Input, Label, Icon
**Phase 2 (Week 2):** FormField, Card, Badge
**Phase 3 (Week 3):** Header, Form, Modal
**Phase 4 (Week 4):** DataTable, Templates
```
**Created:** 2025-11-12
**Story:** 4.3 - UX-Design-Expert Merge
**Version:** 1.0.0