--- description: Approve final UI design and generate comprehensive developer specifications allowed-tools: [Task, LinearMCP, Context7MCP, Read, Grep, Glob, AskUserQuestion] argument-hint: --- # Approving UI Design: $1 - Option $2 You are **approving the final UI design** and generating **comprehensive developer specifications** for Linear issue **$1**. ## 🚨 CRITICAL: Safety Rules **READ FIRST**: ``$CCPM_COMMANDS_DIR/SAFETY_RULES.md`` This command is **READ-ONLY** for external systems and **WRITE** to Linear (internal tracking). ## 📦 Shared Helper Functions **READ**: `commands/_shared-linear-helpers.md` Use the following helper functions from the shared library: - `getValidStateId(teamId, stateNameOrType)` - Resolves state names to valid IDs - `ensureLabelsExist(teamId, labelNames, options)` - Creates labels if missing - `getOrCreateLabel(teamId, labelName, options)` - Gets or creates single label - `getDefaultColor(labelName)` - Standard CCPM color palette ## Arguments - **$1**: Linear issue ID (e.g., WORK-123) - **$2**: Option number to approve (1, 2, 3, or "refined") ## Workflow ### Step 1: Fetch Approved Design Use **Linear MCP** to get issue details: ```javascript linear_get_issue({ id: "$1" }) ``` Extract: - Approved design option (Option $2) - Design wireframe and description - Original requirements - Any refinements made - User feedback history Display: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ Approving Design Option $2 for $1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📋 Issue: [Title from Linear] 🎨 Approved Design: Option $2 🔗 URL: https://linear.app/workspace/issue/$1 **Selected Design**: [Display the approved option's wireframe and description] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ⏳ Generating comprehensive UI specifications... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ### Step 2: Deep Dive into Design System **Comprehensive codebase analysis** for specifications: Use **Read** to extract full details: ```bash # Tailwind configuration tailwind.config.{js,ts} # Theme configurations **/theme/**/* **/styles/**/* # Component libraries components.json (shadcn-ui) components/ui/**/*.{tsx,ts} # Global styles globals.css index.css ``` **Extract Complete Design Tokens**: - **All colors** with hex values and Tailwind classes - **Typography** (font families, sizes, weights, line heights) - **Spacing scale** (complete px values for all Tailwind classes) - **Border styles** (widths, colors, radius values) - **Shadow definitions** (all shadow levels) - **Breakpoint values** (exact px widths) - **Animation/transition configs** - **Z-index scale** (layering system) **Component Library Audit**: - List ALL available components with imports - Document component props and variants - Identify composition patterns - Note any custom components to create ### Step 3: Research Latest Implementation Patterns **Use Context7 MCP for developer-focused documentation**: ```javascript // Get latest component implementation patterns get-library-docs({ context7CompatibleLibraryID: "/tailwindlabs/tailwindcss", topic: "component implementation patterns and best practices", tokens: 3000 }) get-library-docs({ context7CompatibleLibraryID: "/shadcn-ui/ui", topic: "component composition and TypeScript patterns", tokens: 3000 }) // If React Native get-library-docs({ context7CompatibleLibraryID: "/nativewind/nativewind", topic: "React Native styling patterns and platform differences", tokens: 2000 }) ``` **Research**: - Latest TypeScript patterns for components - Accessibility implementation (ARIA attributes) - Responsive implementation strategies - Dark mode implementation patterns - Animation/transition best practices - Performance optimization techniques ### Step 4: Invoke pm:ui-designer Agent for Specifications **CRITICAL: Invoke the specialist agent to generate complete specs**: ```javascript Task(pm:ui-designer): ` Generate comprehensive UI specifications for approved design (Option $2) for Linear issue $1. **Approved Design**: [Include the approved wireframe and full description] **Complete Design System** (from codebase analysis): - Colors: [All colors with hex and Tailwind classes] - Typography: [All font configs with exact values] - Spacing: [Complete spacing scale] - Borders: [All border configs] - Shadows: [All shadow definitions] - Breakpoints: [Exact breakpoint values] - Animations: [Transition/animation configs] **Frontend Architecture Context** (from design-ui analysis): - Component patterns used in project - Existing reusable components (with file paths) - State management approach - Styling conventions - Data flow patterns - Performance patterns - Technical constraints **Available Components**: [List all existing components with import paths] **Latest Implementation Patterns** (from Context7): [Summarize latest best practices from Context7] **Original Requirements**: [User requirements and goals from initial planning] **CRITICAL REQUIREMENTS**: - MAXIMIZE reuse of existing components - FOLLOW project conventions from frontend analysis - ENSURE technical feasibility based on architecture - ALIGN with established patterns **REQUIREMENTS**: Generate a COMPREHENSIVE UI specification document that includes: 1. **Design System Reference** - All colors (name, hex, Tailwind class, usage) - All typography (size, weight, line height, usage) - Complete spacing scale - Border and shadow definitions - Breakpoint values 2. **Layout Structure** - Container specifications - Grid/Flex configurations - Responsive behavior at each breakpoint 3. **Component Breakdown** - Each component with: * Purpose and description * TypeScript interface for props * Complete JSX structure with Tailwind classes * All states (default, hover, active, disabled, focus) * All variants (primary, secondary, etc.) * Accessibility requirements (ARIA, semantic HTML) * Responsive behavior (mobile, tablet, desktop) 4. **Interactions & Animations** - Transition configurations - Hover effects with exact classes - Loading states - Micro-interactions 5. **Responsive Design** - Mobile-first implementation strategy - Breakpoint-specific styles - Examples with Tailwind responsive prefixes 6. **Dark Mode Support** - Color mappings for dark mode - Implementation strategy with dark: prefix - Examples 7. **Accessibility Checklist** - WCAG 2.1 AA requirements - Semantic HTML elements - ARIA attributes needed - Keyboard navigation requirements - Focus management 8. **Component Library Mapping** - Which existing components to reuse (with import paths) - Which new components to create (with file locations) - Component composition patterns 9. **Implementation Priority** - High/Medium/Low priority breakdown - Suggested implementation order 10. **Implementation Tips** - Step-by-step implementation guide - Common pitfalls to avoid - Performance considerations - Testing recommendations **FORMAT**: Use the comprehensive markdown template with ALL sections filled in detail. Be extremely specific with Tailwind classes, TypeScript interfaces, and implementation examples. **GOAL**: This specification should be so detailed that a developer can implement the UI accurately without needing to ask questions or make design decisions. ` ``` **Agent Output Expected**: - 10+ page comprehensive specification document - Complete design token reference - Detailed component breakdown with code - TypeScript interfaces for all components - Accessibility guidelines - Responsive implementation details - Dark mode implementation - Developer implementation guide ### Step 5: Create Linear Document for Specifications Use **Linear MCP** to create a comprehensive document: ```javascript // Create Linear Document linear_create_document({ title: "UI Specification: [Issue Title]", content: ` [Agent's comprehensive specification output] `, projectId: "[Project ID from issue]" }) // Link document to issue linear_update_issue({ id: "$1", description: "[Existing description]\n\n---\n\n## ✅ Approved UI Design\n\n**Selected**: Option $2\n**Specifications**: [Link to Linear Document]\n\n[Approved wireframe]\n\n**Status**: Ready for implementation" }) ``` ### Step 6: Update Issue Status and Labels Use **Linear MCP** with shared helpers to mark as ready for development: ```javascript // Extract team ID from issue const issue = await linear_get_issue({ id: "$1" }); const teamId = issue.team.id; // Get valid state ID using shared helper (supports fuzzy matching) const stateId = await getValidStateId(teamId, "todo"); // Maps to "unstarted" type // Ensure all required labels exist before using them const labelNames = await ensureLabelsExist(teamId, [ "design-approved", "spec-complete", "ready-for-dev" ], { colors: { "design-approved": getDefaultColor("approved"), "spec-complete": getDefaultColor("documentation"), "ready-for-dev": getDefaultColor("planning") } }); // Update issue with validated state ID and labels await linear_update_issue({ id: "$1", stateId: stateId, labelIds: labelNames }); ``` **Error Handling:** ```javascript try { const stateId = await getValidStateId(teamId, "todo"); // Proceed with update } catch (error) { console.error("Failed to resolve state:", error.message); // Error message includes available states for the team throw error; } ``` ### Step 7: Generate Implementation Tasks (Optional) Use **AskUserQuestion** to offer task breakdown: ```javascript { questions: [{ question: "Would you like me to break this down into implementation tasks?", header: "Task Breakdown", multiSelect: false, options: [ { label: "⭐ Yes, create tasks", description: "Create sub-tasks for each component/section" }, { label: "No, I'll implement as one task", description: "Keep as single issue" }, { label: "Let me review specs first", description: "I'll decide after reviewing the specifications" } ] }] } ``` **If user wants task breakdown**: Create sub-issues using **Linear MCP** with validated labels: ```javascript // Get team ID from parent issue const parentIssue = await linear_get_issue({ id: "$1" }); const teamId = parentIssue.team.id; // Ensure labels exist before creating sub-tasks const taskLabels = await ensureLabelsExist(teamId, [ "frontend", "ui-implementation" ], { colors: { "frontend": getDefaultColor("frontend"), "ui-implementation": getDefaultColor("implementation") } }); // Create sub-issues with validated labels await linear_create_issue({ title: "Implement [Component 1 Name]", description: "See UI Specification: [Link]\n\nComponent: [Component 1]\nPriority: High", parentId: "$1", teamId: teamId, labelIds: taskLabels }); await linear_create_issue({ title: "Implement [Component 2 Name]", description: "See UI Specification: [Link]\n\nComponent: [Component 2]\nPriority: High", parentId: "$1", teamId: teamId, labelIds: taskLabels }); // Continue for all major components ``` ### Step 8: Display Final Summary Show comprehensive output: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ UI Design Approved & Specifications Generated ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📋 Issue: $1 🎨 Approved: Option $2 🔗 Linear: https://linear.app/workspace/issue/$1 📄 Specifications: [Linear Document URL] 🏷️ Status: Ready for Development ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📊 Specification Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ **Design System**: - Colors: [X] defined with Tailwind classes - Typography: [Y] sizes documented - Spacing: Complete 4px grid scale - Components: [Z] to implement **Components Breakdown**: 1. [Component 1] - [Complexity: Simple/Moderate/Complex] 2. [Component 2] - [Complexity] 3. [Component 3] - [Complexity] [...] **Accessibility**: WCAG 2.1 AA compliant **Responsive**: Mobile-first, 3 breakpoints **Dark Mode**: Full support with dark: variants **Animations**: [X] micro-interactions defined **Implementation Priority**: - High: [X] components (core functionality) - Medium: [Y] components (enhancements) - Low: [Z] components (polish) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📦 Developer Resources ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ **What's Included**: ✅ Complete design token reference ✅ TypeScript interfaces for all components ✅ Tailwind class mappings for every element ✅ Accessibility implementation guide (ARIA, semantic HTML) ✅ Responsive behavior documentation (mobile/tablet/desktop) ✅ Dark mode implementation guide ✅ Animation and interaction specifications ✅ Component library mapping (reuse vs create new) ✅ Step-by-step implementation tips ✅ Performance and testing recommendations **Documentation Location**: 📄 Linear Document: [URL] 📋 Issue: https://linear.app/workspace/issue/$1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🚀 Implementation Checklist ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ For developers implementing this UI: 1. [ ] Read complete specification document 2. [ ] Review design system and available components 3. [ ] Set up component structure following specs 4. [ ] Implement base layout and structure 5. [ ] Add Tailwind styling per specifications 6. [ ] Implement interactive states (hover, focus, active) 7. [ ] Add responsive behavior for all breakpoints 8. [ ] Implement dark mode variants 9. [ ] Add accessibility features (ARIA, keyboard nav) 10. [ ] Test on mobile, tablet, and desktop 11. [ ] Test dark mode 12. [ ] Test keyboard navigation 13. [ ] Test with screen reader (if available) 14. [ ] Optimize performance (lazy loading, code splitting) 15. [ ] Review against original design wireframe ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 💡 Suggested Next Actions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` Use **AskUserQuestion** for next steps: ```javascript { questions: [{ question: "What would you like to do next?", header: "Next Step", multiSelect: false, options: [ { label: "⭐ Start Implementation", description: "Begin coding with agent coordination (/ccpm:implementation:start)" }, { label: "Break into Sub-Tasks", description: "Create Linear sub-issues for each component" }, { label: "Review Specifications", description: "View the Linear Document with full specs" }, { label: "Assign to Developer", description: "Assign issue to a team member in Linear" }, { label: "Continue Planning", description: "Return to planning workflow (/ccpm:planning:plan)" } ] }] } ``` ### Step 9: Execute Selected Next Action **If "Start Implementation"**: ```bash /ccpm:implementation:start $1 ``` **If "Break into Sub-Tasks"**: - Create Linear sub-issues for each major component - Link all to parent issue - Add priorities based on spec - Display task breakdown **If "Review Specifications"**: - Display Linear Document URL - Show table of contents from spec - Suggest key sections to review **If "Assign to Developer"**: - Use Linear MCP to assign issue - Add comment notifying assignee - Link to specifications document **If "Continue Planning"**: ```bash /ccpm:planning:plan $1 ``` ### Step 10: Final Summary Display: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🎉 UI Design Complete! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Your UI design has been approved and comprehensive specifications have been generated. Developers now have everything they need to implement this design accurately and consistently. 📄 **Specification Document**: [Linear Document URL] 📋 **Issue**: https://linear.app/workspace/issue/$1 🏷️ **Status**: Ready for Development ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📝 Quick Commands ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Start Implementation: /ccpm:implementation:start $1 View Status: /ccpm:utils:status $1 Create Sub-Tasks: /ccpm:spec:break-down $1 Review Spec: [Linear Document URL] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ## Specification Quality Standards The generated specifications MUST include: ### 1. Design System Reference (Complete) - ✅ ALL colors with name, hex, Tailwind class, and usage context - ✅ ALL typography styles with exact values - ✅ Complete spacing scale (1-96 in Tailwind units) - ✅ All border configurations - ✅ All shadow definitions - ✅ Exact breakpoint values ### 2. Component Specifications (Detailed) For EACH component: - ✅ Clear purpose statement - ✅ TypeScript interface with all props - ✅ Complete JSX structure with exact Tailwind classes - ✅ All states (default, hover, active, disabled, focus) with classes - ✅ All variants (primary, secondary, outline, etc.) - ✅ Accessibility requirements (semantic HTML, ARIA attributes) - ✅ Responsive behavior at each breakpoint - ✅ Dark mode variant classes ### 3. Implementation Guidance (Actionable) - ✅ Step-by-step implementation order - ✅ Code examples for complex patterns - ✅ Common pitfalls to avoid - ✅ Performance optimization tips - ✅ Testing recommendations ### 4. Accessibility (WCAG 2.1 AA) - ✅ Color contrast requirements met - ✅ Semantic HTML elements specified - ✅ ARIA attributes documented - ✅ Keyboard navigation flow defined - ✅ Focus management strategy - ✅ Screen reader considerations ### 5. Responsive Design (Mobile-First) - ✅ Mobile layout (default) - ✅ Tablet layout (sm: and md:) - ✅ Desktop layout (lg: and xl:) - ✅ Touch target sizes (44x44px minimum) - ✅ Responsive typography scale ## Notes ### This Command Does 1. ✅ Fetches approved design from Linear 2. ✅ Deep analysis of design system (all tokens) 3. ✅ Research latest implementation patterns (Context7) 4. ✅ Invokes pm:ui-designer agent for comprehensive specs 5. ✅ Creates Linear Document with full specifications 6. ✅ Updates issue status to "Ready for Development" 7. ✅ Offers task breakdown into sub-issues 8. ✅ Provides developer handoff checklist 9. ✅ Suggests next actions (implementation, review, assignment) ### Usage Examples **Basic usage**: ```bash /ccpm:planning:design-approve WORK-123 1 ``` **After refinement**: ```bash # After running /ccpm:planning:design-refine WORK-123 2 /ccpm:planning:design-approve WORK-123 2 ``` **Direct approval from design-ui**: ```bash # After running /ccpm:planning:design-ui WORK-123 # User selected "Approve Option 2" /ccpm:planning:design-approve WORK-123 2 ``` ### What Gets Generated A comprehensive UI specification document (typically 3000-5000 words) that includes: - **Complete Design Token Reference**: Every color, font, spacing, shadow - **TypeScript Interfaces**: For every component with all props - **Implementation Code**: JSX structures with exact Tailwind classes - **State Management**: All states (hover, focus, active, disabled) - **Responsive Patterns**: Mobile, tablet, desktop implementations - **Accessibility Guide**: WCAG 2.1 AA compliance steps - **Dark Mode Strategy**: Complete dark: variant mappings - **Animation Specs**: Transitions and micro-interactions - **Component Mapping**: What to reuse vs create new - **Priority Breakdown**: High/Medium/Low implementation order - **Implementation Tips**: Step-by-step guide for developers ### Benefits - ✅ No ambiguity for developers - ✅ Consistent implementation across team - ✅ Accessibility built-in from start - ✅ Responsive behavior clearly defined - ✅ Dark mode fully specified - ✅ Performance considerations included - ✅ Reduces back-and-forth during development - ✅ Enables parallel development of components - ✅ Complete developer handoff documentation - ✅ Linear Document for permanent reference ### Quality Assurance The pm:ui-designer agent ensures: - ✅ No missing information (if unclear, agent asks for clarification) - ✅ All Tailwind classes are valid and current - ✅ TypeScript interfaces are type-safe - ✅ Accessibility standards are met - ✅ Responsive breakpoints are logical - ✅ Dark mode colors have sufficient contrast - ✅ Component hierarchy makes sense - ✅ Implementation is feasible with existing design system