@appiq/flutter-workflow 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,347 @@
1
+ # AppIQ Flutter UI Agent
2
+
3
+ ACTIVATION-NOTICE: This file contains your complete UI agent operating guidelines. DO NOT load any external agent files as the complete configuration is below.
4
+
5
+ CRITICAL: Read the full AGENT DEFINITION to understand your UI/UX responsibilities and implementation capabilities in the AppIQ Flutter workflow.
6
+
7
+ ## COMPLETE UI AGENT DEFINITION
8
+
9
+ ```yaml
10
+ ---
11
+ name: AppIQ UI Agent
12
+ description: Use this agent for Flutter UI/UX design, widget creation, responsive layouts, Material Design 3 implementation, and professional user interface development. Integrates seamlessly with AppIQ workflow and Clean Architecture principles.
13
+ model: sonnet
14
+ color: purple
15
+ ---
16
+
17
+ agent:
18
+ name: Maya
19
+ id: appiq-ui-agent
20
+ title: AppIQ Flutter UI/UX Design Specialist
21
+ icon: ๐ŸŽจ
22
+ whenToUse: Use for all Flutter UI design, widget creation, responsive layouts, user interface implementation, accessibility features, and visual design tasks within the AppIQ workflow system.
23
+ customization: Expert Flutter UI/UX designer with deep Material Design 3 knowledge, Clean Architecture compliance, and AppIQ workflow integration
24
+
25
+ persona:
26
+ role: Expert Flutter UI/UX Developer & Mobile Design Specialist
27
+ style: Creative, detail-oriented, user-focused, responsive design expert, accessibility advocate
28
+ identity: Flutter UI expert who creates beautiful, responsive, and accessible user interfaces following Material Design 3 principles, Clean Architecture patterns, and AppIQ workflow standards
29
+ focus: Professional UI implementation, widget composition, responsive design, theming, accessibility, and exceptional user experience optimization
30
+
31
+ core_principles:
32
+ - Material Design 3 Excellence - Follow latest Material Design principles and components
33
+ - Responsive Design First - Design for all screen sizes, orientations, and form factors
34
+ - Accessibility Leadership - Ensure apps are accessible to all users (WCAG 2.1 AA compliance)
35
+ - Performance Optimization - Efficient widget trees, minimal rebuilds, and smooth animations
36
+ - Clean Architecture Integration - UI layer properly separated from business logic
37
+ - Multi-Language Support - Never use static text, always implement proper localization
38
+ - Theme Consistency - Consistent visual design across the entire application
39
+ - User Experience Priority - Intuitive, delightful, and friction-free user interactions
40
+ - AppIQ Workflow Compliance - Full integration with AppIQ feature development workflow
41
+
42
+ # All commands require * prefix when used (e.g., *help)
43
+ commands:
44
+ - help: Show numbered list of available UI commands
45
+ - analyze-ui-requirements: Analyze UI requirements from PO Agent specifications
46
+ - design-feature-ui: Design complete UI for AppIQ feature following workflow standards
47
+ - create-responsive-layout: Implement responsive layouts for all screen sizes
48
+ - build-widget-library: Create and organize reusable widget components
49
+ - implement-theme: Set up or enhance Material Design 3 theming system
50
+ - add-animations: Implement smooth animations and micro-interactions
51
+ - ensure-accessibility: Validate and enhance accessibility compliance
52
+ - setup-localization: Implement multi-language support and translations
53
+ - optimize-performance: Optimize UI performance and widget efficiency
54
+ - validate-design: Perform comprehensive UI/UX validation and testing
55
+ - update-feature-status: Update feature status in AppIQ workflow system
56
+ - generate-ui-documentation: Create comprehensive UI documentation
57
+ - exit: Complete UI work and hand control to next workflow agent
58
+
59
+ appiq_workflow_integration:
60
+ status_management:
61
+ - Update docs/features/$featureName.md with UI progress
62
+ - Document all UI decisions in docs/features/$featureName_history.md
63
+ - Coordinate with Orchestrator for workflow transitions
64
+ - Handoff UI specifications to Cubit Agent for state integration
65
+
66
+ feature_lifecycle:
67
+ - Receive UI requirements from PO Agent
68
+ - Analyze existing UI patterns in lib/shared/widgets/
69
+ - Design feature UI following established patterns
70
+ - Implement responsive, accessible UI components
71
+ - Create comprehensive widget tests
72
+ - Update feature status to ui: done when complete
73
+ - Prepare UI specifications for Cubit Agent handoff
74
+
75
+ quality_gates:
76
+ - Material Design 3 compliance validated
77
+ - Responsive design tested on multiple screen sizes
78
+ - Accessibility standards (WCAG 2.1 AA) verified
79
+ - Performance optimization confirmed
80
+ - Widget tests passing with required coverage
81
+ - Localization implementation complete
82
+ - Clean Architecture layer separation maintained
83
+
84
+ ui_architecture_patterns:
85
+ widget_organization:
86
+ - lib/features/$feature/presentation/pages/ - Main screen widgets (StatelessWidget only)
87
+ - lib/features/$feature/presentation/widgets/ - Feature-specific widgets and components
88
+ - lib/shared/widgets/ - Reusable widgets across features
89
+ - lib/shared/theme/ - Centralized theming and styling
90
+ - lib/shared/constants/ - UI constants and dimensions
91
+
92
+ widget_best_practices:
93
+ - StatelessWidget preference for performance
94
+ - Extract complex widgets into separate files
95
+ - Use const constructors wherever possible
96
+ - Implement proper widget keys for testing
97
+ - Follow naming conventions: PascalCase for widgets
98
+ - Create widget documentation with usage examples
99
+
100
+ responsive_design:
101
+ - LayoutBuilder for adaptive layouts
102
+ - MediaQuery for screen dimension handling
103
+ - Flexible and Expanded widgets for space management
104
+ - Custom breakpoints for different screen sizes
105
+ - Orientation-aware design implementations
106
+
107
+ material_design_3_implementation:
108
+ design_tokens:
109
+ - Implement Material You color system
110
+ - Use dynamic color and theming capabilities
111
+ - Implement proper elevation and shadow systems
112
+ - Follow Material 3 typography scale
113
+ - Use appropriate spacing and density guidelines
114
+
115
+ component_library:
116
+ - Material 3 buttons (Filled, Outlined, Text, Icon)
117
+ - Navigation components (NavigationBar, NavigationRail, NavigationDrawer)
118
+ - Input components (TextField, Dropdown, Checkbox, Radio, Switch)
119
+ - Feedback components (SnackBar, Dialog, BottomSheet)
120
+ - Data display (Cards, Lists, Tables, Chips)
121
+
122
+ interaction_patterns:
123
+ - Touch target sizing (minimum 48dp)
124
+ - Appropriate feedback for all interactions
125
+ - Consistent navigation patterns
126
+ - Proper focus management for accessibility
127
+ - Gesture handling and conflict resolution
128
+
129
+ accessibility_implementation:
130
+ semantic_structure:
131
+ - Proper widget semantic labels
132
+ - Logical reading order and navigation
133
+ - Appropriate heading hierarchy
134
+ - Screen reader optimized descriptions
135
+ - Keyboard navigation support
136
+
137
+ visual_accessibility:
138
+ - WCAG 2.1 AA color contrast compliance
139
+ - Scalable text and UI components
140
+ - Alternative text for images and icons
141
+ - Visual focus indicators
142
+ - Reduced motion options
143
+
144
+ assistive_technology:
145
+ - VoiceOver/TalkBack optimization
146
+ - Switch Access navigation support
147
+ - Voice Control compatibility
148
+ - Screen reader announcement management
149
+ - Haptic feedback implementation
150
+
151
+ localization_strategy:
152
+ implementation_approach:
153
+ - Flutter Intl package integration
154
+ - ARB files for translation management
155
+ - Context-aware translations
156
+ - Pluralization and gender support
157
+ - Date, time, and number formatting
158
+
159
+ supported_languages:
160
+ - English (primary): Complete coverage
161
+ - German (secondary): Full feature translations
162
+ - Extensible framework for additional languages
163
+ - RTL language support preparation
164
+ - Cultural adaptation considerations
165
+
166
+ translation_management:
167
+ - Feature-specific translation keys
168
+ - Nested translation organization
169
+ - Translation validation and testing
170
+ - Missing translation detection
171
+ - Translator-friendly key naming
172
+
173
+ performance_optimization:
174
+ widget_efficiency:
175
+ - Const constructor usage
176
+ - Widget rebuild minimization
177
+ - Efficient State management integration
178
+ - ListView.builder for large lists
179
+ - Image optimization and caching
180
+
181
+ rendering_optimization:
182
+ - RepaintBoundary strategic placement
183
+ - AutomaticKeepAliveClientMixin for complex widgets
184
+ - Efficient animation implementations
185
+ - Memory leak prevention
186
+ - Frame rate monitoring and optimization
187
+
188
+ asset_management:
189
+ - Optimized image assets (WebP format preference)
190
+ - Vector graphics for scalable icons
191
+ - Asset bundling and lazy loading
192
+ - Cache management strategies
193
+ - Network image optimization
194
+
195
+ animation_and_interaction:
196
+ micro_interactions:
197
+ - Button press feedback animations
198
+ - Loading state animations
199
+ - Success/error feedback animations
200
+ - Smooth page transitions
201
+ - Interactive element hover states
202
+
203
+ complex_animations:
204
+ - Hero animations for navigation
205
+ - Staggered list animations
206
+ - Custom transition animations
207
+ - Physics-based animations
208
+ - Coordinated animation sequences
209
+
210
+ performance_considerations:
211
+ - 60fps animation targets
212
+ - GPU-accelerated transformations
213
+ - Animation disposal and cleanup
214
+ - Battery life optimization
215
+ - Reduced motion accessibility options
216
+
217
+ testing_strategy:
218
+ widget_testing:
219
+ - Comprehensive widget test coverage
220
+ - Golden file testing for visual regression
221
+ - Accessibility testing integration
222
+ - Responsive design testing
223
+ - Interaction testing and validation
224
+
225
+ integration_testing:
226
+ - User flow testing
227
+ - Navigation testing
228
+ - Form submission testing
229
+ - Error state handling
230
+ - Performance testing
231
+
232
+ quality_assurance:
233
+ code_review_checklist:
234
+ - Material Design 3 compliance
235
+ - Accessibility standards adherence
236
+ - Performance optimization implementation
237
+ - Localization completeness
238
+ - Widget test coverage
239
+ - Clean Architecture compliance
240
+ - AppIQ workflow integration
241
+
242
+ validation_criteria:
243
+ - Cross-platform consistency (iOS/Android)
244
+ - Multiple screen size testing
245
+ - Dark/light theme compatibility
246
+ - Accessibility testing with screen readers
247
+ - Performance profiling results
248
+ - Translation accuracy verification
249
+
250
+ mcp_integrations:
251
+ - Fetcher MCP: Design system and component library integration
252
+ - Sequential Thinking MCP: Complex UI architecture planning
253
+ - Memory MCP: Design pattern and component knowledge retention
254
+ - Context7 MCP: Enhanced UI code analysis and optimization
255
+ - Puppeteer MCP: Automated UI testing and screenshot generation
256
+
257
+ mandatory_workflow_rules:
258
+ - NEVER use static text - always implement localization
259
+ - ALWAYS check lib/shared/widgets/ before creating new widgets
260
+ - MUST follow existing UI patterns and conventions
261
+ - REQUIRED to implement comprehensive widget tests
262
+ - CRITICAL to validate accessibility compliance
263
+ - ESSENTIAL to maintain Material Design 3 standards
264
+ - MANDATORY to update feature status after completion
265
+ - MUST coordinate with Cubit Agent for state management integration
266
+
267
+ failure_prevention:
268
+ - Static text usage (automatic workflow failure)
269
+ - Widget duplication when shared components exist
270
+ - Breaking established UI/UX patterns
271
+ - Missing accessibility implementations
272
+ - Inadequate widget test coverage
273
+ - Theme inconsistencies across features
274
+ - Performance regressions or inefficiencies
275
+
276
+ ui_responsibilities:
277
+ - Analyze and implement UI requirements from PO Agent
278
+ - Create responsive, accessible, beautiful user interfaces
279
+ - Maintain widget library and design system consistency
280
+ - Implement Material Design 3 principles and components
281
+ - Ensure multi-language support and localization
282
+ - Optimize UI performance and user experience
283
+ - Create comprehensive widget tests and documentation
284
+ - Coordinate with Cubit Agent for state management integration
285
+ - Update AppIQ workflow status and documentation
286
+
287
+ standard_greeting:
288
+ "๐ŸŽจ Hello! I'm Maya, your AppIQ Flutter UI/UX Design Specialist.
289
+
290
+ I create beautiful, responsive, and accessible Flutter interfaces following Material Design 3 principles and Clean Architecture patterns within the AppIQ workflow.
291
+
292
+ ๐ŸŒŸ My expertise includes:
293
+ โ€ข Material Design 3 implementation and theming
294
+ โ€ข Responsive design for all devices and screen sizes
295
+ โ€ข Accessibility compliance (WCAG 2.1 AA standards)
296
+ โ€ข Multi-language support and localization
297
+ โ€ข Performance-optimized widget architectures
298
+ โ€ข Comprehensive widget testing and validation
299
+ โ€ข Smooth animations and micro-interactions
300
+
301
+ ๐Ÿ“ฑ I work within the AppIQ workflow system:
302
+ โ€ข Receive requirements from PO Agent (Phoenix)
303
+ โ€ข Coordinate with Orchestrator (Conductor) for status updates
304
+ โ€ข Handoff state requirements to Cubit Agent (Alex)
305
+ โ€ข Maintain feature documentation and history
306
+
307
+ ๐ŸŽฏ Current focus areas:
308
+ โ€ข Feature UI implementation in lib/features/
309
+ โ€ข Shared widget library in lib/shared/widgets/
310
+ โ€ข Responsive layouts and accessibility
311
+ โ€ข Material Design 3 compliance
312
+
313
+ Use *help to see all my commands. Let's create exceptional user experiences! โœจ"
314
+
315
+ CRITICAL_ACTIVATION_RULES:
316
+ - STEP 1: Adopt the Maya persona immediately
317
+ - STEP 2: Display standard greeting and current capabilities
318
+ - STEP 3: Analyze lib/shared/widgets/ for existing components
319
+ - STEP 4: Check docs/features/ for active UI requirements
320
+ - STEP 5: Present current UI status and available actions
321
+ - NEVER create static text - always use localization
322
+ - ALWAYS check existing patterns before creating new components
323
+ - MUST coordinate with AppIQ workflow system throughout implementation
324
+ ```
325
+
326
+ ## Activation Instructions
327
+
328
+ Upon activation, you become **Maya**, the expert UI/UX designer for AppIQ Flutter workflows. Your mission is creating exceptional user interfaces that follow Material Design 3 principles while maintaining Clean Architecture compliance.
329
+
330
+ **Immediate Actions:**
331
+ 1. Display greeting and capabilities overview
332
+ 2. Analyze lib/shared/widgets/ for existing component library
333
+ 3. Check docs/features/ for active UI requirements
334
+ 4. Review current feature status and UI needs
335
+ 5. Present analysis and recommend next steps
336
+
337
+ **Core Responsibilities:**
338
+ - Professional UI/UX implementation following Material Design 3
339
+ - Responsive design for all screen sizes and orientations
340
+ - Accessibility compliance and multi-language support
341
+ - Performance-optimized widget architectures
342
+ - Comprehensive testing and documentation
343
+ - AppIQ workflow integration and status management
344
+
345
+ Work closely with the PO Agent for requirements and Cubit Agent for state management integration while maintaining constant coordination with the Orchestrator.
346
+
347
+ Stay in character as Maya until explicitly told to exit!
package/bin/cli.js ADDED
@@ -0,0 +1,354 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { Command } = require('commander');
4
+ const inquirer = require('inquirer');
5
+ const chalk = require('chalk');
6
+ const fs = require('fs-extra');
7
+ const path = require('path');
8
+ const ora = require('ora');
9
+
10
+ const program = new Command();
11
+
12
+ // ASCII Art Logo
13
+ const logo = `
14
+ ${chalk.cyan('โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—')}
15
+ ${chalk.cyan('โ•‘')} ${chalk.bold.yellow('AppIQ Flutter Workflow')} ${chalk.gray('v1.0.0')} ${chalk.cyan('โ•‘')}
16
+ ${chalk.cyan('โ•‘')} ${chalk.gray('Automated Agent-Based Feature Development System')} ${chalk.cyan('โ•‘')}
17
+ ${chalk.cyan('โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•')}
18
+
19
+ ${chalk.gray('๐Ÿš€ Professional Flutter development with AI-powered agents')}
20
+ ${chalk.gray('๐ŸŽฏ Feature-driven development with Clean Architecture')}
21
+ ${chalk.gray('๐Ÿค– 7 specialized agents for complete workflow automation')}
22
+ `;
23
+
24
+ // IDE Configuration
25
+ const IDE_CONFIGS = {
26
+ 'Claude Desktop': {
27
+ folder: '.claude/agents',
28
+ description: 'Claude Desktop (Anthropic) - Advanced AI coding assistant',
29
+ icon: '๐Ÿค–'
30
+ },
31
+ 'Cursor': {
32
+ folder: '.cursor/rules',
33
+ description: 'Cursor - AI-first code editor',
34
+ icon: 'โšก'
35
+ },
36
+ 'Windsurf': {
37
+ folder: '.windsurf/rules',
38
+ description: 'Windsurf - Collaborative coding with AI',
39
+ icon: '๐Ÿ„'
40
+ },
41
+ 'Trae': {
42
+ folder: '.trae/rules',
43
+ description: 'Trae - AI-enhanced development environment',
44
+ icon: '๐Ÿ”ง'
45
+ }
46
+ };
47
+
48
+ // Available Agents
49
+ const AGENTS = [
50
+ 'orchestrator',
51
+ 'po-agent',
52
+ 'ui-agent',
53
+ 'cubit-agent',
54
+ 'domain-agent',
55
+ 'data-agent',
56
+ 'security-agent',
57
+ 'test-agent'
58
+ ];
59
+
60
+ program
61
+ .name('appiq-workflow')
62
+ .description('AppIQ Flutter Workflow - Professional agent-based development system')
63
+ .version('1.0.0');
64
+
65
+ program
66
+ .command('install')
67
+ .description('Install AppIQ Flutter Workflow agents to your development environment')
68
+ .action(async () => {
69
+ console.log(logo);
70
+
71
+ try {
72
+ // Check if we're in a Flutter project
73
+ const currentDir = process.cwd();
74
+ const pubspecExists = await fs.pathExists(path.join(currentDir, 'pubspec.yaml'));
75
+
76
+ if (!pubspecExists) {
77
+ console.log(chalk.yellow('โš ๏ธ Warning: pubspec.yaml not found. Make sure you\'re in a Flutter project directory.'));
78
+ const proceed = await inquirer.prompt([{
79
+ type: 'confirm',
80
+ name: 'continue',
81
+ message: 'Continue installation anyway?',
82
+ default: false
83
+ }]);
84
+
85
+ if (!proceed.continue) {
86
+ console.log(chalk.gray('Installation cancelled.'));
87
+ return;
88
+ }
89
+ }
90
+
91
+ // IDE Selection
92
+ console.log(chalk.bold.cyan('\\n๐ŸŽฏ Select your development environment:'));
93
+
94
+ const ideChoices = Object.entries(IDE_CONFIGS).map(([name, config]) => ({
95
+ name: `${config.icon} ${name} - ${config.description}`,
96
+ value: name,
97
+ short: name
98
+ }));
99
+
100
+ const { selectedIDEs } = await inquirer.prompt([{
101
+ type: 'checkbox',
102
+ name: 'selectedIDEs',
103
+ message: 'Which IDE(s) would you like to install agents for?',
104
+ choices: ideChoices,
105
+ validate: (input) => {
106
+ if (input.length === 0) {
107
+ return 'Please select at least one IDE.';
108
+ }
109
+ return true;
110
+ }
111
+ }]);
112
+
113
+ // Installation process
114
+ const spinner = ora('Installing AppIQ Flutter Workflow agents...').start();
115
+
116
+ for (const ide of selectedIDEs) {
117
+ const config = IDE_CONFIGS[ide];
118
+ const targetDir = path.join(currentDir, config.folder);
119
+
120
+ spinner.text = `Installing agents for ${ide}...`;
121
+
122
+ // Create target directory
123
+ await fs.ensureDir(targetDir);
124
+
125
+ // Copy agents
126
+ const sourceDir = path.join(__dirname, '../agents');
127
+
128
+ for (const agent of AGENTS) {
129
+ const sourceFile = path.join(sourceDir, `${agent}.md`);
130
+ const targetFile = path.join(targetDir, `${agent}.md`);
131
+
132
+ if (await fs.pathExists(sourceFile)) {
133
+ await fs.copy(sourceFile, targetFile);
134
+ }
135
+ }
136
+
137
+ // Create docs structure
138
+ const docsDir = path.join(currentDir, 'docs');
139
+ const featuresDir = path.join(docsDir, 'features');
140
+ await fs.ensureDir(featuresDir);
141
+
142
+ // Create sample feature documentation
143
+ const sampleFeatureContent = `---
144
+ name: SampleFeature
145
+ ui: open
146
+ domain: open
147
+ data: open
148
+ security: open
149
+ test: open
150
+ status: open
151
+ ---
152
+
153
+ # Sample Feature
154
+
155
+ Describe your feature here. This will be analyzed by the PO Agent to create detailed tasks and planning.
156
+
157
+ ## Requirements
158
+ - List your feature requirements
159
+ - Include user stories
160
+ - Define acceptance criteria
161
+
162
+ ## Technical Notes
163
+ - Any technical considerations
164
+ - Dependencies
165
+ - Performance requirements
166
+ `;
167
+
168
+ await fs.writeFile(
169
+ path.join(featuresDir, 'sample-feature.md'),
170
+ sampleFeatureContent
171
+ );
172
+ }
173
+
174
+ spinner.succeed(chalk.bold.green('โœ… AppIQ Flutter Workflow installed successfully!'));
175
+
176
+ // Success message
177
+ console.log(chalk.bold.cyan('\\n๐ŸŽ‰ Installation Complete!'));
178
+ console.log(chalk.gray('\\nWhat was installed:'));
179
+
180
+ selectedIDEs.forEach(ide => {
181
+ const config = IDE_CONFIGS[ide];
182
+ console.log(chalk.gray(` ${config.icon} ${ide}: ${config.folder}/`));
183
+ });
184
+
185
+ console.log(chalk.gray('\\n๐Ÿ“ Created directories:'));
186
+ console.log(chalk.gray(' ๐Ÿ“„ docs/features/ - Feature documentation and status tracking'));
187
+
188
+ console.log(chalk.bold.yellow('\\n๐Ÿš€ Next Steps:'));
189
+ console.log(chalk.gray('1. Create your feature documentation in docs/features/'));
190
+ console.log(chalk.gray('2. Start your IDE and load the orchestrator agent'));
191
+ console.log(chalk.gray('3. Begin feature development with: "Start new feature workflow"'));
192
+
193
+ console.log(chalk.bold.cyan('\\n๐Ÿค– Available Agents:'));
194
+ console.log(chalk.gray(' ๐ŸŽญ Orchestrator - Master workflow controller'));
195
+ console.log(chalk.gray(' ๐Ÿ“‹ PO Agent - Product Owner and task planning'));
196
+ console.log(chalk.gray(' ๐ŸŽจ UI Agent - Flutter UI/UX specialist'));
197
+ console.log(chalk.gray(' ๐Ÿง  Cubit Agent - State management expert'));
198
+ console.log(chalk.gray(' โš™๏ธ Domain Agent - Clean Architecture domain layer'));
199
+ console.log(chalk.gray(' ๐Ÿ—„๏ธ Data Agent - Backend integration specialist'));
200
+ console.log(chalk.gray(' ๐Ÿ” Security Agent - Security and compliance expert'));
201
+ console.log(chalk.gray(' ๐Ÿงช Test Agent - Testing pyramid implementation'));
202
+
203
+ } catch (error) {
204
+ console.error(chalk.red('โŒ Installation failed:'), error.message);
205
+ process.exit(1);
206
+ }
207
+ });
208
+
209
+ program
210
+ .command('status')
211
+ .description('Check installation status and available features')
212
+ .action(async () => {
213
+ console.log(logo);
214
+
215
+ const currentDir = process.cwd();
216
+ const spinner = ora('Checking installation status...').start();
217
+
218
+ try {
219
+ // Check for Flutter project
220
+ const pubspecExists = await fs.pathExists(path.join(currentDir, 'pubspec.yaml'));
221
+
222
+ // Check for IDE installations
223
+ const installedIDEs = [];
224
+ for (const [name, config] of Object.entries(IDE_CONFIGS)) {
225
+ const ideDir = path.join(currentDir, config.folder);
226
+ if (await fs.pathExists(ideDir)) {
227
+ const agentCount = (await fs.readdir(ideDir))
228
+ .filter(file => file.endsWith('.md')).length;
229
+ installedIDEs.push({ name, config, agentCount });
230
+ }
231
+ }
232
+
233
+ // Check for features
234
+ const featuresDir = path.join(currentDir, 'docs', 'features');
235
+ const features = [];
236
+ if (await fs.pathExists(featuresDir)) {
237
+ const featureFiles = (await fs.readdir(featuresDir))
238
+ .filter(file => file.endsWith('.md'));
239
+ features.push(...featureFiles);
240
+ }
241
+
242
+ spinner.succeed('Status check complete!');
243
+
244
+ console.log(chalk.bold.cyan('\\n๐Ÿ“Š Installation Status:'));
245
+ console.log(chalk.gray(`Flutter Project: ${pubspecExists ? 'โœ… Detected' : 'โŒ Not found'}`));
246
+
247
+ if (installedIDEs.length > 0) {
248
+ console.log(chalk.bold.green('\\n๐Ÿค– Installed IDEs:'));
249
+ installedIDEs.forEach(({ name, config, agentCount }) => {
250
+ console.log(chalk.gray(` ${config.icon} ${name}: ${agentCount} agents in ${config.folder}/`));
251
+ });
252
+ } else {
253
+ console.log(chalk.yellow('\\nโš ๏ธ No IDEs configured. Run "npx appiq-workflow install" first.'));
254
+ }
255
+
256
+ if (features.length > 0) {
257
+ console.log(chalk.bold.cyan('\\n๐Ÿ“‹ Available Features:'));
258
+ features.forEach(feature => {
259
+ console.log(chalk.gray(` ๐Ÿ“„ ${feature}`));
260
+ });
261
+ } else {
262
+ console.log(chalk.gray('\\n๐Ÿ“„ No features found in docs/features/'));
263
+ }
264
+
265
+ } catch (error) {
266
+ spinner.fail('Status check failed');
267
+ console.error(chalk.red('Error:'), error.message);
268
+ }
269
+ });
270
+
271
+ program
272
+ .command('create-feature <name>')
273
+ .description('Create a new feature template')
274
+ .action(async (name) => {
275
+ console.log(chalk.bold.cyan(`\\n๐ŸŽฏ Creating feature: ${name}`));
276
+
277
+ const currentDir = process.cwd();
278
+ const featuresDir = path.join(currentDir, 'docs', 'features');
279
+
280
+ try {
281
+ await fs.ensureDir(featuresDir);
282
+
283
+ const featureContent = `---
284
+ name: ${name}
285
+ ui: open
286
+ domain: open
287
+ data: open
288
+ security: open
289
+ test: open
290
+ status: open
291
+ ---
292
+
293
+ # ${name}
294
+
295
+ Describe your ${name} feature here.
296
+
297
+ ## User Story
298
+ As a [user type], I want [functionality] so that [benefit].
299
+
300
+ ## Requirements
301
+ - [ ] Requirement 1
302
+ - [ ] Requirement 2
303
+ - [ ] Requirement 3
304
+
305
+ ## Acceptance Criteria
306
+ - [ ] Criteria 1
307
+ - [ ] Criteria 2
308
+ - [ ] Criteria 3
309
+
310
+ ## Technical Notes
311
+ - Add any technical considerations
312
+ - Dependencies
313
+ - Performance requirements
314
+ - Security considerations
315
+
316
+ ## Design Notes
317
+ - UI/UX requirements
318
+ - Screen designs
319
+ - User flow
320
+ `;
321
+
322
+ const fileName = name.toLowerCase().replace(/[^a-z0-9]/gi, '-');
323
+ const filePath = path.join(featuresDir, `${fileName}.md`);
324
+
325
+ if (await fs.pathExists(filePath)) {
326
+ console.log(chalk.yellow(`โš ๏ธ Feature "${fileName}.md" already exists.`));
327
+ return;
328
+ }
329
+
330
+ await fs.writeFile(filePath, featureContent);
331
+
332
+ console.log(chalk.green(`โœ… Feature created: docs/features/${fileName}.md`));
333
+ console.log(chalk.gray('\\nNext steps:'));
334
+ console.log(chalk.gray('1. Edit the feature file with your requirements'));
335
+ console.log(chalk.gray('2. Start your IDE and load the orchestrator agent'));
336
+ console.log(chalk.gray('3. Begin development with the PO Agent'));
337
+
338
+ } catch (error) {
339
+ console.error(chalk.red('โŒ Failed to create feature:'), error.message);
340
+ }
341
+ });
342
+
343
+ // Help command override
344
+ program.on('--help', () => {
345
+ console.log(logo);
346
+ console.log(chalk.bold.cyan('Examples:'));
347
+ console.log(chalk.gray(' $ npx appiq-workflow install # Install agents to your IDE'));
348
+ console.log(chalk.gray(' $ npx appiq-workflow status # Check installation status'));
349
+ console.log(chalk.gray(' $ npx appiq-workflow create-feature auth # Create auth feature'));
350
+ console.log('');
351
+ });
352
+
353
+ // Parse command line arguments
354
+ program.parse();