# Design Iteration Workflow ## Overview A structured 4-stage workflow for creating and iterating on UI designs. This process ensures thoughtful design decisions with user approval at each stage. ## Quick Reference **Stages**: Layout → Theme → Animation → Implementation **Approval**: Required between each stage **Output**: Single HTML file per design iteration **Location**: `design_iterations/` folder --- ## When to Use This Workflow ### Delegate to OpenFrontendSpecialist When: **✅ STRONGLY RECOMMENDED** to delegate for: - **New UI/UX design work** - Landing pages, dashboards, app interfaces - **Design system creation** - Component libraries, theme systems, style guides - **Complex layouts** - Multi-column grids, responsive designs, intricate structures - **Visual polish** - Animations, transitions, micro-interactions - **Brand-focused work** - Marketing pages, product showcases, hero sections - **Accessibility-critical UI** - Forms, navigation, interactive components **Why delegate?** - OpenFrontendSpecialist follows the 4-stage design workflow (Layout → Theme → Animation → Implementation) - Ensures thoughtful design decisions with approval gates - Produces polished, accessible, production-ready UI - Handles responsive design, OKLCH colors, semantic HTML - Creates single-file HTML prototypes for quick iteration ### Execute Directly When: **⚠️ Simple cases only**: - Minor text/content updates to existing UI - Small CSS tweaks (colors, spacing, fonts) - Adding simple utility classes - Updating existing component props - Bug fixes in existing UI code ### Delegation Pattern ```javascript // For UI design work task( subagent_type="OpenFrontendSpecialist", description="Design {feature} UI", prompt="Design a {feature} following the 4-stage workflow: Requirements: - {requirement 1} - {requirement 2} Context: {what this UI is for} Follow the design iteration workflow: 1. Layout (ASCII wireframe) 2. Theme (design system, colors) 3. Animation (micro-interactions) 4. Implementation (single HTML file) Request approval between each stage." ) ``` ### Example Scenarios | Scenario | Action | Why | |----------|--------|-----| | "Create a landing page for our SaaS product" | ✅ Delegate to OpenFrontendSpecialist | Complex UI design, needs 4-stage workflow | | "Design a user dashboard with charts" | ✅ Delegate to OpenFrontendSpecialist | Complex layout, visual design, interactions | | "Build a component library with our brand" | ✅ Delegate to OpenFrontendSpecialist | Design system work, requires theme expertise | | "Fix button color from blue to green" | ⚠️ Execute directly | Simple CSS change | | "Update hero text content" | ⚠️ Execute directly | Content update only | --- ## Design Plan File (MANDATORY) **CRITICAL**: Before starting any design work, create a persistent design plan file. **Location**: `.tmp/design-plans/{project-name}-{feature-name}.md` **Purpose**: - Preserve design decisions across stages - Allow user to review and edit the plan - Maintain context for subagent calls - Track design evolution and iterations **When to Create**: - BEFORE Stage 1 (Layout Design) - After understanding user requirements - Before any design work begins **Template**: ```markdown --- project: {project-name} feature: {feature-name} created: {ISO timestamp} updated: {ISO timestamp} status: in_progress current_stage: layout --- # Design Plan: {Feature Name} ## User Requirements {What the user asked for - verbatim or close paraphrase} ## Design Goals - {goal 1} - {goal 2} - {goal 3} ## Target Audience {Who will use this UI} ## Technical Constraints - Framework: {Next.js, React, etc.} - Responsive: {Yes/No} - Accessibility: {WCAG level} - Browser support: {Modern, IE11+, etc.} --- ## Stage 1: Layout Design ### Status - [ ] Layout planned - [ ] ASCII wireframe created - [ ] User approved ### Layout Structure {ASCII wireframe will be added here} ### Component Breakdown {Component list will be added here} ### User Feedback {User comments and requested changes} --- ## Stage 2: Theme Design ### Status - [ ] Design system selected - [ ] Color palette chosen - [ ] Typography defined - [ ] User approved ### Theme Details {Theme specifications will be added here} ### User Feedback {User comments and requested changes} --- ## Stage 3: Animation Design ### Status - [ ] Micro-interactions defined - [ ] Animation timing set - [ ] User approved ### Animation Details {Animation specifications will be added here} ### User Feedback {User comments and requested changes} --- ## Stage 4: Implementation ### Status - [ ] HTML structure complete - [ ] CSS applied - [ ] Animations implemented - [ ] User approved ### Output Files - HTML: {file path} - CSS: {file path} - Assets: {file paths} ### User Feedback {Final comments and requested changes} --- ## Design Evolution ### Iteration 1 - Date: {timestamp} - Changes: {what changed} - Reason: {why it changed} ### Iteration 2 - Date: {timestamp} - Changes: {what changed} - Reason: {why it changed} ``` **Workflow Integration**: 1. **Create plan file** → Write to `.tmp/design-plans/{name}.md` 2. **Each stage** → Update plan file with decisions and user feedback 3. **User approval** → Edit plan file with approved decisions 4. **User requests changes** → Edit plan file with feedback, iterate 5. **Subagent calls** → Pass plan file path for context preservation 6. **Completion** → Plan file contains full design history **Benefits**: - ✅ Context preserved across subagent calls - ✅ User can review and edit plan directly - ✅ Design decisions documented - ✅ Easy to iterate and refine - ✅ Full design history tracked --- ## Workflow Stages ### Stage 0: Create Design Plan (MANDATORY FIRST STEP) **Purpose**: Create persistent plan file before any design work **Process**: 1. Understand user requirements 2. Identify design goals and constraints 3. Create plan file at `.tmp/design-plans/{project-name}-{feature-name}.md` 4. Populate with user requirements and goals 5. Present plan file location to user 6. Proceed to Stage 1 **Deliverable**: Design plan file created and initialized **Example**: ``` ✅ Design plan created: .tmp/design-plans/saas-landing-page.md You can review and edit this file at any time. All design decisions will be tracked here. Ready to proceed to Stage 1 (Layout Design)? ``` **Approval Gate**: "Plan file created. Ready to start layout design?" --- ### Stage 1: Layout Design **Purpose**: Define the structure and component hierarchy before visual design **Process**: 1. Read design plan file from `.tmp/design-plans/{name}.md` 2. Analyze user requirements from plan 3. Identify core UI components 4. Plan layout structure and responsive behavior 5. Create ASCII wireframe 6. **Update plan file** with layout structure and component breakdown 7. Present to user for approval 8. **Update plan file** with user feedback and approval status **Deliverable**: - ASCII wireframe with component breakdown - Updated plan file with Stage 1 complete **Example Output**: ``` ## Core UI Components **Header Area** - Logo/brand (Top left) - Navigation menu (Top center) - User actions (Top right) **Main Content Area** - Hero section (Full width) - Feature cards (3-column grid on desktop, stack on mobile) - Call-to-action (Centered) **Footer** - Links (4-column grid) - Social icons (Centered) - Copyright (Bottom) ## Layout Structure Desktop (1024px+): ┌─────────────────────────────────────────────────┐ │ [Logo] Navigation [User Menu] │ ├─────────────────────────────────────────────────┤ │ │ │ HERO SECTION │ │ (Full width, centered text) │ │ │ ├─────────────────────────────────────────────────┤ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ Card 1 │ │ Card 2 │ │ Card 3 │ │ │ │ │ │ │ │ │ │ │ └─────────┘ └─────────┘ └─────────┘ │ ├─────────────────────────────────────────────────┤ │ [Call to Action] │ ├─────────────────────────────────────────────────┤ │ Links Links Links Social │ │ Copyright │ └─────────────────────────────────────────────────┘ Mobile (< 768px): ┌─────────────────┐ │ ☰ Logo [👤] │ ├─────────────────┤ │ │ │ HERO SECTION │ │ │ ├─────────────────┤ │ ┌───────────┐ │ │ │ Card 1 │ │ │ └───────────┘ │ │ ┌───────────┐ │ │ │ Card 2 │ │ │ └───────────┘ │ │ ┌───────────┐ │ │ │ Card 3 │ │ │ └───────────┘ │ ├─────────────────┤ │ [CTA] │ ├─────────────────┤ │ Links │ │ Social │ │ Copyright │ └─────────────────┘ ``` **Approval Gate**: "Would you like to proceed with this layout or need modifications?" --- ### Stage 2: Theme Design **Purpose**: Define colors, typography, spacing, and visual style **Process**: 1. Read design plan file from `.tmp/design-plans/{name}.md` 2. Review approved layout from Stage 1 3. Choose design system (neo-brutalism, modern dark, custom) 4. Select color palette (avoid Bootstrap blue unless requested) 5. Choose typography (Google Fonts) 6. Define spacing and shadows 7. Generate theme CSS file 8. **Update plan file** with theme specifications 9. Present theme to user for approval 10. **Update plan file** with user feedback and approval status **Deliverable**: - CSS theme file saved to `design_iterations/theme_N.css` - Updated plan file with Stage 2 complete **Theme Selection Criteria**: | Style | Use When | Avoid When | |-------|----------|------------| | Neo-Brutalism | Creative/artistic projects, retro aesthetic | Enterprise apps, accessibility-critical | | Modern Dark | SaaS, developer tools, professional dashboards | Playful consumer apps | | Custom | Specific brand requirements | Time-constrained projects | **Example Output**: ``` ## Theme Design: Modern Professional **Style Reference**: Vercel/Linear aesthetic **Color Palette**: Monochromatic with accent **Typography**: Inter (UI) + JetBrains Mono (code) **Spacing**: 4px base unit **Shadows**: Subtle, soft elevation **Theme File**: design_iterations/theme_1.css Key Design Decisions: - Primary: Neutral gray for professional feel - Accent: Subtle blue for interactive elements - Radius: 0.625rem for modern, friendly feel - Shadows: Soft, minimal elevation - Fonts: System-like for familiarity ``` **File Naming**: `theme_1.css`, `theme_2.css`, etc. **Approval Gate**: "Does this theme match your vision, or would you like adjustments?" --- ### Stage 3: Animation Design **Purpose**: Define micro-interactions and transitions **Process**: 1. Read design plan file from `.tmp/design-plans/{name}.md` 2. Review approved theme from Stage 2 3. Identify key interactions (hover, click, scroll) 4. Define animation timing and easing 5. Plan loading states and transitions 6. Document animations using micro-syntax 7. **Update plan file** with animation specifications 8. Present animation plan to user for approval 9. **Update plan file** with user feedback and approval status **Deliverable**: - Animation specification in micro-syntax format - Updated plan file with Stage 3 complete **Example Output**: ``` ## Animation Design: Smooth & Professional ### Button Interactions hover: 200ms ease-out [Y0→-2, shadow↗] press: 100ms ease-in [S1→0.95] ripple: 400ms ease-out [S0→2, α1→0] ### Card Interactions cardHover: 300ms ease-out [Y0→-4, shadow↗] cardClick: 200ms ease-out [S1→1.02] ### Page Transitions pageEnter: 300ms ease-out [α0→1, Y+20→0] pageExit: 200ms ease-in [α1→0] ### Loading States spinner: 1000ms ∞ linear [R360°] skeleton: 2000ms ∞ [bg: muted↔accent] ### Micro-Interactions inputFocus: 200ms ease-out [S1→1.01, ring] linkHover: 250ms ease-out [underline 0→100%] **Philosophy**: Subtle, purposeful animations that enhance UX without distraction **Performance**: All animations use transform/opacity for 60fps **Accessibility**: Respects prefers-reduced-motion ``` **Approval Gate**: "Are these animations appropriate for your design, or should we adjust?" --- ### Stage 4: Implementation **Purpose**: Generate complete HTML file with all components **Process**: 1. Read design plan file from `.tmp/design-plans/{name}.md` 2. Review all approved decisions from Stages 1-3 3. Build individual UI components 4. Integrate theme CSS 5. Add animations and interactions 6. Combine into single HTML file 7. Test responsive behavior 8. Save to design_iterations folder 9. **Update plan file** with output file paths 10. Present to user for review 11. **Update plan file** with user feedback and final approval status **Deliverable**: - Complete HTML file with embedded or linked CSS - Updated plan file with Stage 4 complete and all output files documented **File Organization**: ``` design_iterations/ ├── theme_1.css # Theme file from Stage 2 ├── dashboard_1.html # Initial design ├── dashboard_1_1.html # First iteration ├── dashboard_1_2.html # Second iteration ├── chat_ui_1.html # Different design └── chat_ui_1_1.html # Iteration of chat UI ``` **Naming Conventions**: | Type | Format | Example | |------|--------|---------| | Initial design | `{name}_1.html` | `table_1.html` | | First iteration | `{name}_1_1.html` | `table_1_1.html` | | Second iteration | `{name}_1_2.html` | `table_1_2.html` | | New design | `{name}_2.html` | `table_2.html` | **Implementation Checklist**: ```html Design Name
``` **Approval Gate**: "Please review the design. Would you like any changes or iterations?" --- ## Visual Content Generation ### When to Use Image Specialist Delegate to **Image Specialist** subagent when users request: - **Diagrams & Visualizations**: Architecture diagrams, flowcharts, system visualizations - **UI Mockups & Wireframes**: Visual mockups, design concepts, interface previews - **Graphics & Assets**: Social media graphics, promotional images, icons, illustrations - **Image Editing**: Photo enhancement, image modifications, visual adjustments ### Invocation Pattern ```javascript task( subagent_type="Image Specialist", description="Generate/edit visual content", prompt="Context to load: - .opencode/context/core/visual-development.md Task: [Specific visual requirement] Requirements: - [Visual style/aesthetic] - [Dimensions/format] - [Key elements to include] - [Color scheme/branding] Output: [Expected deliverable]" ) ``` ### Example Use Cases **Architecture Diagram**: ```javascript task( subagent_type="Image Specialist", description="Generate microservices architecture diagram", prompt="Create a diagram showing: - 5 microservices (API Gateway, Auth, Orders, Payments, Notifications) - Database connections - Message queue (RabbitMQ) - External services (Stripe, SendGrid) Style: Clean, professional, modern Format: PNG, 1920x1080" ) ``` **UI Mockup**: ```javascript task( subagent_type="Image Specialist", description="Generate dashboard mockup", prompt="Create a mockup for an analytics dashboard: - Header with navigation - 4 metric cards (Users, Revenue, Conversion, Retention) - Line chart showing trends - Data table below Style: Modern, dark theme, professional Format: PNG, 1440x900" ) ``` **Social Media Graphic**: ```javascript task( subagent_type="Image Specialist", description="Generate product launch graphic", prompt="Create a social media graphic announcing new feature: - Bold headline: 'Introducing Real-Time Collaboration' - Subtext: 'Work together, ship faster' - Brand colors: #6366f1 (primary), #1e293b (dark) - Include abstract collaboration visual Format: PNG, 1200x630 (Twitter/LinkedIn)" ) ``` ### Tools Required - **tool:gemini** - Gemini Nano Banana AI for image generation/editing - Automatically available in Developer profile ### When NOT to Delegate **Use design-iteration workflow instead** when: - Creating interactive HTML/CSS designs - Building complete UI implementations - Iterating on existing HTML files - Need responsive, production-ready code **Use image-specialist** when: - Need static visual assets - Creating diagrams or illustrations - Generating mockups for presentation - Quick visual concepts without code --- ## Iteration Process ### When to Create Iterations **Create new iteration** (`{name}_1_1.html`) when: - User requests changes to existing design - Refining based on feedback - A/B testing variations - Progressive enhancement **Create new design** (`{name}_2.html`) when: - Complete redesign requested - Different approach/style - Alternative layout structure ### Iteration Workflow ``` User: "Can you make the buttons larger and change the color?" 1. Read current file: dashboard_1.html 2. Make requested changes 3. Save as: dashboard_1_1.html 4. Present changes to user User: "Perfect! Now can we add a sidebar?" 1. Read current file: dashboard_1_1.html 2. Add sidebar component 3. Save as: dashboard_1_2.html 4. Present changes to user ``` --- ## Best Practices ### Layout Stage ✅ **Do**: - Use ASCII wireframes for clarity - Break down into component hierarchy - Plan responsive behavior upfront - Consider mobile-first approach - Get approval before proceeding ❌ **Don't**: - Skip wireframing and jump to code - Ignore responsive considerations - Proceed without user approval - Over-complicate initial layout ### Theme Stage ✅ **Do**: - Reference design system context files - Use CSS custom properties - Save theme to separate file - Consider accessibility (contrast ratios) - Avoid Bootstrap blue unless requested ❌ **Don't**: - Hardcode colors in HTML - Use generic/overused color schemes - Skip contrast testing - Mix color formats (stick to OKLCH) ### Animation Stage ✅ **Do**: - Use micro-syntax for documentation - Keep animations under 400ms - Use transform/opacity for performance - Respect prefers-reduced-motion - Make animations purposeful ❌ **Don't**: - Animate width/height (use scale) - Create distracting animations - Ignore performance implications - Skip accessibility considerations ### Implementation Stage ✅ **Do**: - Use single HTML file per design - Load Tailwind via script tag - Reference theme CSS file - Use !important for framework overrides - Test responsive behavior - Provide alt text for images - Use semantic HTML ❌ **Don't**: - Split into multiple files - Load Tailwind as stylesheet - Inline all styles - Skip accessibility attributes - Use made-up image URLs - Use div soup (non-semantic HTML) --- ## File Management ### Folder Structure ``` design_iterations/ ├── theme_1.css ├── theme_2.css ├── landing_1.html ├── landing_1_1.html ├── landing_1_2.html ├── dashboard_1.html ├── dashboard_1_1.html └── README.md (optional: design notes) ``` ### Version Control **Track iterations**: - Initial: `design_1.html` - Iteration 1: `design_1_1.html` - Iteration 2: `design_1_2.html` - Iteration 3: `design_1_3.html` **New major version**: - Complete redesign: `design_2.html` - Then iterate: `design_2_1.html`, `design_2_2.html` --- ## Communication Patterns ### Stage Transitions **After Layout**: ``` "Here's the proposed layout structure. The design uses a [description]. Would you like to proceed with this layout, or should we make adjustments?" ``` **After Theme**: ``` "I've created a [style] theme with [key features]. The theme file is saved as theme_N.css. Does this match your vision, or would you like to adjust colors/typography?" ``` **After Animation**: ``` "Here's the animation plan using [timing/style]. All animations are optimized for performance. Are these animations appropriate, or should we adjust the timing/effects?" ``` **After Implementation**: ``` "I've created the complete design as {filename}.html. The design includes [key features]. Please review and let me know if you'd like any changes or iterations." ``` ### Iteration Requests **User requests change**: ``` "I'll update the design with [changes] and save it as {filename}_N.html. This preserves the previous version for reference." ``` --- ## Handling Plan File Edits and Iterations ### User Edits Plan File Directly **Scenario**: User opens `.tmp/design-plans/{name}.md` and makes changes **Process**: 1. User edits plan file (changes requirements, adds constraints, modifies goals) 2. User notifies agent: "I've updated the plan file" 3. Agent reads updated plan file 4. Agent identifies what changed 5. Agent proposes how to incorporate changes 6. Agent updates affected stages **Example**: ``` User: "I've updated the plan file - changed the color scheme to dark mode" Agent: ✅ Read updated plan: .tmp/design-plans/saas-landing-page.md Changes detected: - Color scheme: Light → Dark mode - Primary color: Blue → Purple This affects: - Stage 2 (Theme) - needs regeneration - Stage 4 (Implementation) - needs CSS update Would you like me to: 1. Regenerate theme with dark mode 2. Update implementation with new theme ``` ### Iteration Within a Stage **Scenario**: User requests changes during a stage **Process**: 1. Agent presents stage output (e.g., layout wireframe) 2. User requests changes: "Make the hero section taller" 3. Agent updates plan file with feedback 4. Agent makes changes 5. Agent updates plan file with new iteration 6. Agent presents updated output **Example**: ``` Stage 1 - Layout Design Agent: [presents wireframe] User: "Make the hero section taller and move CTA above the fold" Agent: ✅ Updated plan file with feedback ✅ Revised layout wireframe ✅ Updated plan file with Iteration 2 [presents updated wireframe] ``` ### Tracking Iterations in Plan File **Format**: ```markdown ## Design Evolution ### Iteration 1 - Initial Layout - Date: 2026-01-30T10:00:00Z - Stage: Layout - Changes: Initial wireframe created - User feedback: "Hero section too short, CTA below fold" ### Iteration 2 - Revised Layout - Date: 2026-01-30T10:15:00Z - Stage: Layout - Changes: Increased hero height from 400px to 600px, moved CTA above fold - User feedback: "Perfect! Approved." - Status: ✅ Approved ### Iteration 3 - Theme Adjustment - Date: 2026-01-30T10:30:00Z - Stage: Theme - Changes: Changed from light to dark mode, primary color blue → purple - User feedback: "Love the dark mode!" - Status: ✅ Approved ``` ### Subagent Context Preservation **Problem**: Subagents lose context between calls **Solution**: Always pass plan file path **Pattern**: ```javascript // When delegating to subagent task( subagent_type="OpenFrontendSpecialist", description="Implement Stage 4", prompt="Load design plan from .tmp/design-plans/saas-landing-page.md Read the plan file for: - All approved decisions from Stages 1-3 - User requirements and constraints - Design evolution and iterations Implement Stage 4 (Implementation) following all approved decisions. Update the plan file with: - Output file paths - Implementation status - Any issues encountered" ) ``` ### Plan File as Single Source of Truth **Benefits**: - ✅ All design decisions in one place - ✅ User can review and edit anytime - ✅ Subagents have full context - ✅ Design history preserved - ✅ Easy to iterate and refine - ✅ No context loss between stages **Best Practices**: - Always read plan file at start of each stage - Update plan file after every user interaction - Track all iterations with timestamps - Document user feedback verbatim - Mark approved decisions clearly - Pass plan file path to all subagents --- ## Quality Checklist Before presenting each stage: **Layout Stage**: - [ ] ASCII wireframe is clear and detailed - [ ] Components are well-organized - [ ] Responsive behavior is planned - [ ] User approval requested **Theme Stage**: - [ ] Theme file created and saved - [ ] Colors use OKLCH format - [ ] Fonts loaded from Google Fonts - [ ] Contrast ratios meet WCAG AA - [ ] User approval requested **Animation Stage**: - [ ] Animations documented in micro-syntax - [ ] Timing is appropriate (< 400ms) - [ ] Performance optimized (transform/opacity) - [ ] Accessibility considered - [ ] User approval requested **Implementation Stage**: - [ ] Single HTML file created - [ ] Theme CSS referenced - [ ] Tailwind loaded via script tag - [ ] Icons initialized - [ ] Responsive design tested - [ ] Accessibility attributes added - [ ] Images use valid placeholder URLs - [ ] Semantic HTML used - [ ] User review requested --- ## Troubleshooting ### Common Issues **Issue**: User wants to skip stages **Solution**: Explain benefits of structured approach, but accommodate if insisted **Issue**: Theme doesn't match user vision **Solution**: Iterate on theme file, create theme_2.css with adjustments **Issue**: Animations feel too slow/fast **Solution**: Adjust timing in micro-syntax, regenerate with new values **Issue**: Design doesn't work on mobile **Solution**: Review responsive breakpoints, add mobile-specific styles **Issue**: Colors have poor contrast **Solution**: Use WCAG contrast checker, adjust OKLCH lightness values --- ## References - [Design Systems Context](../ui/web/design-systems.md) - [UI Styling Standards](../ui/web/ui-styling-standards.md) - [Animation Patterns](../ui/web/animation-patterns.md) - [Design Assets](../ui/web/design-assets.md) - [ASCII Art Generator](https://www.asciiart.eu/) - [WCAG Contrast Checker](https://webaim.org/resources/contrastchecker/)