aios-core
Version:
Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework
463 lines (351 loc) • 13 kB
Markdown
# Setup Design System Structure
> Task ID: atlas-setup-design-system
> Agent: Atlas (Design System Builder)
> Version: 1.0.0
## 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: setupDesignSystem()
responsável: Uma (Empathizer)
responsavel_type: Agente
atomic_layer: Config
**Entrada:**
- campo: project_path
tipo: string
origem: User Input
obrigatório: true
validação: Valid directory path
- campo: options
tipo: object
origem: User Input
obrigatório: false
validação: Initialization options
**Saída:**
- campo: initialized_project
tipo: string
destino: File system
persistido: true
- campo: config_created
tipo: boolean
destino: Return value
persistido: false
```
## Pre-Conditions
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
**Checklist:**
```yaml
pre-conditions:
- [ ] Directory is empty or force flag set; config valid
tipo: pre-condition
blocker: true
validação: |
Check directory is empty or force flag set; config valid
error_message: "Pre-condition failed: Directory is empty or force flag set; config valid"
```
## Post-Conditions
**Purpose:** Validate execution success AFTER task completes
**Checklist:**
```yaml
post-conditions:
- [ ] Project initialized; config files created; structure valid
tipo: post-condition
blocker: true
validação: |
Verify project initialized; config files created; structure valid
error_message: "Post-condition failed: Project initialized; config files created; structure valid"
```
## Acceptance Criteria
**Purpose:** Definitive pass/fail criteria for task completion
**Checklist:**
```yaml
acceptance-criteria:
- [ ] Project structure correct; all config files valid
tipo: acceptance-criterion
blocker: true
validação: |
Assert project structure correct; all config files valid
error_message: "Acceptance criterion not met: Project structure correct; all config files valid"
```
## Tools
**External/shared resources used by this task:**
- **Tool:** project-scaffolder
- **Purpose:** Generate project structure and config
- **Source:** .aios-core/scripts/project-scaffolder.js
- **Tool:** config-manager
- **Purpose:** Initialize configuration files
- **Source:** .aios-core/utils/config-manager.js
## Scripts
**Agent-specific code for this task:**
- **Script:** init-project.js
- **Purpose:** Project initialization workflow
- **Language:** JavaScript
- **Location:** .aios-core/scripts/init-project.js
## Error Handling
**Strategy:** retry
**Common Errors:**
1. **Error:** Directory Not Empty
- **Cause:** Target directory already contains files
- **Resolution:** Use force flag or choose empty directory
- **Recovery:** Prompt for confirmation, merge or abort
2. **Error:** Initialization Failed
- **Cause:** Error creating project structure
- **Resolution:** Check permissions and disk space
- **Recovery:** Cleanup partial initialization, log error
## Performance
**Expected Metrics:**
```yaml
duration_expected: 2-10 min (estimated)
cost_estimated: $0.001-0.008
token_usage: ~800-2,500 tokens
```
**Optimization Notes:**
- Validate configuration early; use atomic writes; implement rollback checkpoints
## Metadata
```yaml
story: N/A
version: 1.0.0
dependencies:
- N/A
tags:
- automation
- workflow
updated_at: 2025-11-17
```
## Description
Initialize design system structure for greenfield or brownfield projects. Load tokens from Brad's .state.yaml or manual input, configure Tailwind v4 (`@theme`), bootstrap Shadcn utilities, and prepare Atlas for component generation.
## Prerequisites
- Node.js and npm installed (for React/TypeScript components)
- Either: Brad's .state.yaml with tokens OR manual token files
- Project has package.json (or Atlas will create one)
## Workflow
### Interactive Elicitation
This task uses interactive elicitation to configure setup.
1. **Detect Starting Point**
- Check for Brad's .state.yaml (brownfield from audit)
- If not found, ask for greenfield setup
- Confirm which approach to use
2. **Load or Create Tokens**
- Brownfield: Load tokens from Brad's state
- Greenfield: Ask for tokens.yaml location or create template
- Validate token schema
3. **Configure Project Structure**
- Ask for component output directory (default: `src/components/ui`)
- Confirm Tailwind v4 entry file (`app.css`) and token sources
- Decide on Radix/Slot usage, Shadcn component seeding
- Test framework (Jest/Vitest) + Storybook (yes/no)
### Steps
1. **Detect Brad's State**
- Search for .state.yaml in outputs/design-system/
- If found, validate tokenization phase completed
- If not found, prepare greenfield setup
- Validation: Starting point identified
2. **Load Token Data**
- Brownfield: Read token locations from .state.yaml
- Greenfield: Prompt for tokens.yaml location
- Parse and validate token schema
- Check for required token categories (color, spacing, typography)
- Validation: Tokens loaded and valid
3. **Create Directory Structure**
- Create `components/ui/` (atoms/molecules), `components/composite/`, `components/layout/`
- Create `lib/` for utilities (`utils.ts`, `cn`, helpers)
- Create `tokens/` directory (YAML, JSON, DTCG, platform exports)
- Create `docs/` (component docs, design guidelines)
- Create `__tests__/` for shared testing utilities
- Validation: Directory structure aligns with Atomic Design + Shadcn conventions
4. **Copy Token Files**
- Copy tokens.yaml + tokens.dtcg.json + companion exports into `tokens/`
- Generate tokens/index.ts for centralized imports
- Ensure dark mode + semantic aliases available
- Validation: Tokens accessible in project (TS + runtime)
5. **Initialize Package Dependencies**
- Check for React, TypeScript, and Tailwind packages
- Install `class-variance-authority`, `tailwind-merge`, `@radix-ui/react-slot`, `lucide-react`
- Add testing (`@testing-library/react`, `@testing-library/jest-dom`, `jest-axe`)
- Install Storybook 8 (if requested)
- Validation: `npm install` (or pnpm) completes without errors
6. **Create Configuration Files**
- Generate/merge `tsconfig.json`, `jest.config.js`, `.storybook/` configs
- Create `app.css` (or `globals.css`) with `@import "tailwindcss";` and `@theme` definitions
- Add `.cursorrules`, ESLint, Prettier configs aligned with Tailwind v4
- Create `design-system.config.yaml` for Atlas settings
- Validation: Configuration files valid and documented
7. **Generate Token Index**
- Create tokens/index.ts exporting typed getters (core/semantic/component)
- Provide helper functions for CSS variable access, `theme` helper for Tailwind
- Validation: `import { tokens } from '@/tokens'` works across components
8. **Create Base Styles**
- Populate `app.css` with `@theme`, `@layer base/components/utilities`
- Add reset (modern-normalize), focus-visible, typography defaults
- Implement `[data-theme="dark"]` overrides and container queries
- Validation: Running Tailwind build yields expected utilities without warnings
9. **Initialize State Tracking**
- Create or update `.state.yaml` for Atlas
- Record setup configuration (directories, tooling, dependencies)
- Capture Tailwind version, token coverage, shadcn components installed
- Set phase to "setup_complete"
- Validation: State file created
10. **Generate Setup Report**
- Create setup-summary.md
- List all created files and directories
- Document next steps (build components)
- Validation: Setup documented
## Output
- **components/** directory structure (ui/, composite/, layout/)
- **tokens/** with YAML + JSON + DTCG exports
- **app.css** (or globals.css) with Tailwind `@theme` and base styles
- **lib/utils.ts** with `cn` helper + shared utilities
- **setup-summary.md** with configuration details
- **.state.yaml** updated with Atlas setup data (tailwind/shadcn metadata)
### Output Format
```yaml
# .state.yaml Atlas setup section
atlas_setup:
completed_at: "2025-10-27T15:00:00Z"
starting_point: "brownfield" # or "greenfield"
configuration:
component_directory: "src/components/ui"
css_approach: "tailwind_v4"
test_framework: "jest"
storybook_enabled: true
shadcn_enabled: true
tokens_loaded:
source: "Brad tokenization"
categories:
- color (12 tokens)
- spacing (7 tokens)
- typography (10 tokens)
- radius (4 tokens)
- shadow (3 tokens)
total_tokens: 36
validation: "passed"
directory_structure:
- components/ui/
- components/composite/
- components/layout/
- tokens/
- lib/
- docs/
- __tests__/
dependencies_added:
- "@testing-library/react"
- "@testing-library/jest-dom"
- "@storybook/react"
- "class-variance-authority"
- "tailwind-merge"
- "@radix-ui/react-slot"
phase: "setup_complete"
ready_for: "component_building"
```
## Success Criteria
- [ ] Directory structure follows Atomic Design principles
- [ ] Tokens (YAML + DTCG) loaded and validated successfully
- [ ] Tailwind v4 `@theme` + layers configured and build succeeds
- [ ] Package dependencies installed (React, Tailwind, cva, tailwind-merge, Radix)
- [ ] Configuration files valid (tsconfig, jest, Storybook, .cursorrules)
- [ ] Base styles created with tokens + dark mode parity
- [ ] State tracking initialized (tooling, benchmarks, component paths)
- [ ] Setup documented clearly (setup-summary.md)
## Error Handling
- **No tokens found**: Offer to create token template or prompt for manual input
- **Invalid token schema**: Report specific errors, suggest fixes
- **Missing dependencies**: Auto-install with npm or prompt user
- **Directory exists**: Ask to overwrite or use different location
- **Invalid project structure**: Warn user, continue with compatible setup
## Security Considerations
- Validate token file paths (no directory traversal)
- Sanitize directory names
- Don't execute code during setup
- Validate package.json before modifying
## Examples
### Example 1: Brownfield Setup (From Brad)
```bash
```
Output:
```
🏗️ Atlas: Setting up design system structure...
✓ Detected Brad's state: outputs/design-system/my-app/.state.yaml
✓ Loading tokens from Brad's tokenization...
- 12 color tokens (OKLCH)
- 7 spacing tokens
- 10 typography tokens
- 6 component mappings
- Total: 36 tokens validated
📁 Creating directory structure...
✓ src/components/ui/
✓ src/components/composite/
✓ src/lib/utils.ts
✓ tokens/ (yaml/json/dtcg)
📦 Installing dependencies...
✓ class-variance-authority
✓ tailwind-merge
✓ @radix-ui/react-slot
✓ @testing-library/react + jest-axe
✓ @storybook/react (optional)
⚙️ Generating configuration...
✓ tokens/index.ts (typed exports)
✓ app.css with @theme + dark mode
✓ jest.config.js / storybook-main.ts
✓ .cursorrules (Tailwind v4 + Shadcn patterns)
✅ Setup complete!
Next steps:
1. Bootstrap Shadcn library: *bootstrap-shadcn
2. Build components: *build button
3. Generate docs:
Atlas says: "Foundation is solid. Ready to build."
```
### Example 2: Greenfield Setup
```bash
```
Output:
```
🏗️ Atlas: No Brad state found. Starting greenfield setup...
? Token source:
1. I have tokens.yaml
2. Create token template
3. Manual input
User selects 1
? Path to tokens.yaml: ./tokens/tokens.yaml
✓ Tokens loaded and validated (24 tokens)
? Component directory: src/components/ui
? Tailwind entry file: src/app/app.css
? Bootstrap Shadcn starter kit? Yes
? Enable Storybook? Yes
[...setup continues...]
```
## Notes
- Brownfield setup is faster (tokens from Brad)
- Greenfield requires manual token creation or import
- Atomic Design + Shadcn structure (ui/, composite/, layout/)
- All styling must use tokens/Tailwind utilities (no CSS modules)
- Storybook 8 recommended for visual QA
- `class-variance-authority`, `tailwind-merge`, Radix Slot installed by default
- Atlas automatically creates TypeScript types for tokens
- Base styles include CSS reset and token variables
- Setup can be re-run safely (asks before overwriting)
- Next step after setup: *build {pattern} to generate components