696 lines
22 KiB
Markdown
696 lines
22 KiB
Markdown
---
|
|
description: Approve final UI design and generate comprehensive developer specifications
|
|
allowed-tools: [Task, LinearMCP, Context7MCP, Read, Grep, Glob, AskUserQuestion]
|
|
argument-hint: <issue-id> <option-number>
|
|
---
|
|
|
|
# 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
|