proagents 1.0.10 → 1.0.11

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.
@@ -3,6 +3,7 @@ import { join, dirname } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
4
  import chalk from 'chalk';
5
5
  import yaml from 'js-yaml';
6
+ import { selectPlatforms, copyPlatformFiles, savePlatformConfig, loadPlatformConfig } from './ai.js';
6
7
 
7
8
  const __filename = fileURLToPath(import.meta.url);
8
9
  const __dirname = dirname(__filename);
@@ -79,24 +80,14 @@ const FRAMEWORK_FOLDERS = [
79
80
  'webhooks',
80
81
  ];
81
82
 
82
- // Root files to always update
83
+ // Root files to always update (AI files handled separately via platform selection)
83
84
  const FRAMEWORK_FILES = [
84
85
  'README.md',
85
86
  'WORKFLOW.md',
86
87
  'PROAGENTS.md',
87
88
  'GETTING-STARTED-STORY.md',
88
89
  'slash-commands.json',
89
- 'CLAUDE.md',
90
- '.cursorrules',
91
- '.windsurfrules',
92
- 'AI_INSTRUCTIONS.md',
93
- 'GEMINI.md',
94
- 'CHATGPT.md',
95
- 'KIRO.md',
96
- 'REPLIT.md',
97
- 'BOLT.md',
98
- 'LOVABLE.md',
99
- 'GROQ.md',
90
+ 'AI_INSTRUCTIONS.md', // Universal instructions kept for reference
100
91
  ];
101
92
 
102
93
  /**
@@ -264,40 +255,22 @@ For detailed commands, see \`./proagents/PROAGENTS.md\`
264
255
  console.log(chalk.green('✓ Created README.md with ProAgents commands'));
265
256
  }
266
257
 
267
- // Copy AI instruction files to project root (for AI platform recognition)
268
- const aiFiles = [
269
- { src: 'CLAUDE.md', target: 'CLAUDE.md', desc: 'Claude AI' },
270
- { src: '.cursorrules', target: '.cursorrules', desc: 'Cursor AI' },
271
- { src: '.windsurfrules', target: '.windsurfrules', desc: 'Windsurf' },
272
- { src: 'GEMINI.md', target: 'GEMINI.md', desc: 'Gemini AI' },
273
- { src: 'CHATGPT.md', target: 'CHATGPT.md', desc: 'ChatGPT/Codex' },
274
- { src: 'KIRO.md', target: 'KIRO.md', desc: 'AWS Kiro' },
275
- { src: 'REPLIT.md', target: 'REPLIT.md', desc: 'Replit AI' },
276
- { src: 'BOLT.md', target: 'BOLT.md', desc: 'Bolt.new' },
277
- { src: 'LOVABLE.md', target: 'LOVABLE.md', desc: 'Lovable' },
278
- { src: 'GROQ.md', target: 'GROQ.md', desc: 'Groq' },
279
- ];
280
-
281
- for (const file of aiFiles) {
282
- const sourcePath = join(sourceDir, file.src);
283
- const targetPath = join(targetDir, file.target);
284
- if (existsSync(sourcePath) && !existsSync(targetPath)) {
285
- cpSync(sourcePath, targetPath);
286
- console.log(chalk.green(`✓ Created ${file.target} (for ${file.desc} recognition)`));
287
- }
288
- }
258
+ // Interactive AI platform selection
259
+ const selectedPlatforms = await selectPlatforms();
289
260
 
290
- // Copy .github/copilot-instructions.md for GitHub Copilot
291
- const copilotSource = join(sourceDir, '.github', 'copilot-instructions.md');
292
- const githubDir = join(targetDir, '.github');
293
- const copilotTarget = join(githubDir, 'copilot-instructions.md');
294
- if (existsSync(copilotSource) && !existsSync(copilotTarget)) {
295
- if (!existsSync(githubDir)) {
296
- mkdirSync(githubDir, { recursive: true });
297
- }
298
- cpSync(copilotSource, copilotTarget);
299
- console.log(chalk.green('✓ Created .github/copilot-instructions.md (for GitHub Copilot)'));
261
+ // Copy AI instruction files for selected platforms
262
+ const aiResults = copyPlatformFiles(selectedPlatforms, sourceDir, targetDir);
263
+
264
+ if (aiResults.created.length > 0) {
265
+ console.log(chalk.green(`✓ Created AI files: ${aiResults.created.join(', ')}`));
300
266
  }
267
+ if (aiResults.skipped.length > 0) {
268
+ console.log(chalk.yellow(`⚠️ Skipped (already exist): ${aiResults.skipped.join(', ')}`));
269
+ }
270
+
271
+ // Save selected platforms to config
272
+ const configPath = join(proagentsDir, 'proagents.config.yaml');
273
+ savePlatformConfig(selectedPlatforms, configPath);
301
274
 
302
275
  // Success message
303
276
  console.log(chalk.green('\n✓ ProAgents initialized successfully!\n'));
@@ -410,50 +383,23 @@ async function smartUpdate(sourceDir, targetDir) {
410
383
  }
411
384
  }
412
385
 
413
- // Copy AI instruction files to project root (for AI platform recognition)
386
+ // Copy AI instruction files for configured platforms (only if they don't exist)
414
387
  const projectRoot = join(targetDir, '..');
415
- const aiFiles = [
416
- 'CLAUDE.md',
417
- '.cursorrules',
418
- '.windsurfrules',
419
- 'AI_INSTRUCTIONS.md',
420
- 'GEMINI.md',
421
- 'CHATGPT.md',
422
- 'KIRO.md',
423
- 'REPLIT.md',
424
- 'BOLT.md',
425
- 'LOVABLE.md',
426
- 'GROQ.md',
427
- ];
428
- let aiFilesUpdated = 0;
429
-
430
- for (const file of aiFiles) {
431
- const sourcePath = join(sourceDir, file);
432
- const targetPath = join(projectRoot, file);
388
+ const configPath = join(targetDir, 'proagents.config.yaml');
389
+ const selectedPlatforms = loadPlatformConfig(configPath);
433
390
 
434
- if (existsSync(sourcePath)) {
435
- cpSync(sourcePath, targetPath, { force: true });
436
- aiFilesUpdated++;
437
- }
438
- }
391
+ if (selectedPlatforms.length > 0) {
392
+ const aiResults = copyPlatformFiles(selectedPlatforms, sourceDir, projectRoot);
439
393
 
440
- // Handle .github/copilot-instructions.md separately (needs directory creation)
441
- const copilotSource = join(sourceDir, '.github', 'copilot-instructions.md');
442
- const githubDir = join(projectRoot, '.github');
443
- const copilotTarget = join(githubDir, 'copilot-instructions.md');
444
-
445
- if (existsSync(copilotSource)) {
446
- if (!existsSync(githubDir)) {
447
- mkdirSync(githubDir, { recursive: true });
394
+ if (aiResults.created.length > 0) {
395
+ console.log(chalk.green(`✓ Created new AI files: ${aiResults.created.join(', ')}`));
396
+ }
397
+ if (aiResults.skipped.length > 0) {
398
+ console.log(chalk.gray(`ℹ️ Preserved existing: ${aiResults.skipped.join(', ')}`));
448
399
  }
449
- cpSync(copilotSource, copilotTarget, { force: true });
450
- aiFilesUpdated++;
451
400
  }
452
401
 
453
- if (aiFilesUpdated > 0) {
454
- console.log(chalk.green(`✓ Updated ${aiFilesUpdated} AI instruction files`));
455
- console.log(chalk.gray(' (Claude, Cursor, Windsurf, Gemini, ChatGPT, Kiro, Replit, Bolt, Lovable, Groq, Copilot)'));
456
- }
402
+ console.log(chalk.gray('\nTip: Use "proagents ai add" to add more AI platforms'));
457
403
  }
458
404
 
459
405
  /**
@@ -0,0 +1,178 @@
1
+ import { existsSync, rmSync, readFileSync, writeFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { createInterface } from 'readline';
4
+ import chalk from 'chalk';
5
+
6
+ // AI instruction files that may have been copied to project root
7
+ const AI_FILES = [
8
+ 'CLAUDE.md',
9
+ '.cursorrules',
10
+ '.windsurfrules',
11
+ 'GEMINI.md',
12
+ 'CHATGPT.md',
13
+ 'KIRO.md',
14
+ 'REPLIT.md',
15
+ 'BOLT.md',
16
+ 'LOVABLE.md',
17
+ 'GROQ.md',
18
+ 'ANTIGRAVITY.md',
19
+ 'AI_INSTRUCTIONS.md',
20
+ ];
21
+
22
+ /**
23
+ * Command: proagents uninstall
24
+ */
25
+ export async function uninstallCommand(options = {}) {
26
+ const targetDir = process.cwd();
27
+ const proagentsDir = join(targetDir, 'proagents');
28
+
29
+ console.log('\n' + chalk.bold.red('ProAgents Uninstall'));
30
+ console.log(chalk.red('===================\n'));
31
+
32
+ // Check if ProAgents is installed
33
+ if (!existsSync(proagentsDir)) {
34
+ console.log(chalk.yellow('ProAgents is not installed in this project.\n'));
35
+ return;
36
+ }
37
+
38
+ // Confirm unless --force is used
39
+ if (!options.force) {
40
+ const rl = createInterface({
41
+ input: process.stdin,
42
+ output: process.stdout
43
+ });
44
+
45
+ const question = (prompt) => new Promise(resolve => rl.question(prompt, resolve));
46
+
47
+ console.log(chalk.yellow('This will remove:'));
48
+ console.log(chalk.gray(' • ./proagents/ folder'));
49
+ console.log(chalk.gray(' • AI instruction files (CLAUDE.md, .cursorrules, etc.)'));
50
+ console.log(chalk.gray(' • ProAgents section from README.md\n'));
51
+
52
+ const answer = await question(chalk.yellow('Are you sure? (yes/no): '));
53
+ rl.close();
54
+
55
+ if (answer.toLowerCase() !== 'yes' && answer.toLowerCase() !== 'y') {
56
+ console.log(chalk.gray('\nUninstall cancelled.\n'));
57
+ return;
58
+ }
59
+ }
60
+
61
+ console.log('');
62
+
63
+ // 1. Remove proagents folder
64
+ if (existsSync(proagentsDir)) {
65
+ rmSync(proagentsDir, { recursive: true, force: true });
66
+ console.log(chalk.green('✓ Removed ./proagents/ folder'));
67
+ }
68
+
69
+ // 2. Remove AI instruction files from project root
70
+ let aiFilesRemoved = 0;
71
+ for (const file of AI_FILES) {
72
+ const filePath = join(targetDir, file);
73
+ if (existsSync(filePath)) {
74
+ rmSync(filePath, { force: true });
75
+ aiFilesRemoved++;
76
+ }
77
+ }
78
+
79
+ // Remove .github/copilot-instructions.md
80
+ const copilotPath = join(targetDir, '.github', 'copilot-instructions.md');
81
+ if (existsSync(copilotPath)) {
82
+ rmSync(copilotPath, { force: true });
83
+ aiFilesRemoved++;
84
+ }
85
+
86
+ if (aiFilesRemoved > 0) {
87
+ console.log(chalk.green(`✓ Removed ${aiFilesRemoved} AI instruction file(s)`));
88
+ }
89
+
90
+ // 3. Remove ProAgents section from README.md
91
+ const readmePath = join(targetDir, 'README.md');
92
+ if (existsSync(readmePath)) {
93
+ try {
94
+ let content = readFileSync(readmePath, 'utf-8');
95
+
96
+ // Remove ProAgents section between markers
97
+ const startMarker = '<!-- PROAGENTS:START';
98
+ const endMarker = '<!-- PROAGENTS:END -->';
99
+
100
+ const startIndex = content.indexOf(startMarker);
101
+ const endIndex = content.indexOf(endMarker);
102
+
103
+ if (startIndex !== -1 && endIndex !== -1) {
104
+ const before = content.substring(0, startIndex).trimEnd();
105
+ const after = content.substring(endIndex + endMarker.length).trimStart();
106
+ content = before + (after ? '\n\n' + after : '');
107
+
108
+ writeFileSync(readmePath, content);
109
+ console.log(chalk.green('✓ Removed ProAgents section from README.md'));
110
+ }
111
+ } catch (error) {
112
+ console.log(chalk.yellow('⚠️ Could not update README.md: ' + error.message));
113
+ }
114
+ }
115
+
116
+ // 4. Remove docs files created by ProAgents (optional - only if empty)
117
+ const docsDir = join(targetDir, 'docs');
118
+ const releasesDir = join(docsDir, 'releases');
119
+ const releasesReadme = join(releasesDir, 'README.md');
120
+
121
+ // Only remove if it's the default ProAgents-generated file
122
+ if (existsSync(releasesReadme)) {
123
+ try {
124
+ const content = readFileSync(releasesReadme, 'utf-8');
125
+ if (content.includes('Generated by [ProAgents]')) {
126
+ rmSync(releasesReadme, { force: true });
127
+ // Try to remove empty directories
128
+ try {
129
+ rmSync(releasesDir, { recursive: false });
130
+ rmSync(join(docsDir, 'api'), { recursive: false });
131
+ rmSync(docsDir, { recursive: false });
132
+ console.log(chalk.green('✓ Removed empty docs/ folder'));
133
+ } catch {
134
+ // Directory not empty, leave it
135
+ }
136
+ }
137
+ } catch {
138
+ // Ignore errors
139
+ }
140
+ }
141
+
142
+ // 5. Check for CHANGELOG.md and RELEASE_NOTES.md
143
+ const changelogPath = join(targetDir, 'CHANGELOG.md');
144
+ const releaseNotesPath = join(targetDir, 'RELEASE_NOTES.md');
145
+
146
+ if (existsSync(changelogPath)) {
147
+ try {
148
+ const content = readFileSync(changelogPath, 'utf-8');
149
+ if (content.includes('Generated by [ProAgents]')) {
150
+ rmSync(changelogPath, { force: true });
151
+ console.log(chalk.green('✓ Removed CHANGELOG.md (ProAgents-generated)'));
152
+ } else {
153
+ console.log(chalk.gray('ℹ️ Kept CHANGELOG.md (has custom content)'));
154
+ }
155
+ } catch {
156
+ // Ignore
157
+ }
158
+ }
159
+
160
+ if (existsSync(releaseNotesPath)) {
161
+ try {
162
+ const content = readFileSync(releaseNotesPath, 'utf-8');
163
+ if (content.includes('Generated by [ProAgents]')) {
164
+ rmSync(releaseNotesPath, { force: true });
165
+ console.log(chalk.green('✓ Removed RELEASE_NOTES.md (ProAgents-generated)'));
166
+ } else {
167
+ console.log(chalk.gray('ℹ️ Kept RELEASE_NOTES.md (has custom content)'));
168
+ }
169
+ } catch {
170
+ // Ignore
171
+ }
172
+ }
173
+
174
+ console.log(chalk.green('\n✓ ProAgents uninstalled from this project.\n'));
175
+
176
+ console.log(chalk.gray('To uninstall the global CLI:'));
177
+ console.log(chalk.cyan(' npm uninstall -g proagents\n'));
178
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proagents",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "AI-agnostic development workflow framework that automates the full software development lifecycle",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -6,18 +6,56 @@ This project uses ProAgents workflow framework.
6
6
 
7
7
  Recognize commands starting with `pa:` prefix:
8
8
 
9
+ **Initialization**
10
+ - `pa:init` - Initialize ProAgents in project
9
11
  - `pa:help` - Show all commands
12
+ - `pa:status` - Show current progress
13
+
14
+ **Feature Development**
10
15
  - `pa:feature "name"` - Start feature workflow (see ./proagents/WORKFLOW.md)
16
+ - `pa:feature-start "name"` - Start new feature
17
+ - `pa:feature-status` - Check feature status
18
+ - `pa:feature-list` - List all features
19
+ - `pa:feature-complete` - Mark feature complete
11
20
  - `pa:fix "bug"` - Bug fix mode (see ./proagents/workflow-modes/entry-modes.md)
12
- - `pa:status` - Show progress
21
+
22
+ **Documentation**
13
23
  - `pa:doc` - Documentation options
14
24
  - `pa:doc-full` - Generate full documentation (see ./proagents/prompts/07-documentation.md)
15
25
  - `pa:doc-moderate` - Balanced documentation
16
26
  - `pa:doc-lite` - Quick reference
27
+ - `pa:doc-module [name]` - Document specific module
28
+ - `pa:doc-file [path]` - Document specific file
29
+ - `pa:doc-api` - Generate API documentation
30
+ - `pa:readme` - Generate/update README
31
+ - `pa:changelog` - Update CHANGELOG.md
32
+ - `pa:release` - Generate release notes
33
+
34
+ **Quality & Testing**
17
35
  - `pa:qa` - Quality checks (see ./proagents/checklists/code-quality.md)
18
36
  - `pa:test` - Test workflow (see ./proagents/prompts/06-testing.md)
37
+ - `pa:review` - Code review workflow
38
+
39
+ **Deployment**
19
40
  - `pa:deploy` - Deployment workflow (see ./proagents/prompts/08-deployment.md)
20
- - `pa:release` - Generate release notes
41
+ - `pa:rollback` - Rollback procedures
42
+
43
+ **AI Platform Management**
44
+ - `pa:ai-list` - List installed AI platforms
45
+ - `pa:ai-add` - Add more AI platforms
46
+ - `pa:ai-remove` - Remove AI platforms from config
47
+
48
+ **Configuration**
49
+ - `pa:config` - Show current configuration
50
+ - `pa:config-list` - List all configurable options
51
+ - `pa:config-show` - Show current config values
52
+ - `pa:config-set K V` - Set a config value
53
+ - `pa:config-get K` - Get a config value
54
+ - `pa:config-setup` - Interactive config wizard
55
+ - `pa:config-customize` - Copy templates to customize
56
+
57
+ **Utilities**
58
+ - `pa:uninstall` - Remove ProAgents from project
21
59
 
22
60
  ## Workflow
23
61
 
@@ -4,11 +4,18 @@ This project uses ProAgents workflow framework. Recognize `pa:` prefix commands.
4
4
 
5
5
  ## Commands
6
6
 
7
- ### Core
7
+ ### Initialization
8
+ - `pa:init` - Initialize ProAgents in project
8
9
  - `pa:help` - Show all commands
10
+ - `pa:status` - Show progress
11
+
12
+ ### Feature Development
9
13
  - `pa:feature "name"` - Start feature (read ./proagents/WORKFLOW.md)
14
+ - `pa:feature-start "name"` - Start new feature
15
+ - `pa:feature-status` - Check feature status
16
+ - `pa:feature-list` - List all features
17
+ - `pa:feature-complete` - Mark feature complete
10
18
  - `pa:fix "bug"` - Bug fix mode (read ./proagents/workflow-modes/entry-modes.md)
11
- - `pa:status` - Show progress
12
19
 
13
20
  ### Documentation
14
21
  - `pa:doc` - Documentation options
@@ -23,7 +30,7 @@ This project uses ProAgents workflow framework. Recognize `pa:` prefix commands.
23
30
  - `pa:release` - Release notes
24
31
  - `pa:release [ver]` - Version-specific notes
25
32
 
26
- ### Quality
33
+ ### Quality & Testing
27
34
  - `pa:qa` - Quality checks (read ./proagents/checklists/code-quality.md)
28
35
  - `pa:test` - Test workflow (read ./proagents/prompts/06-testing.md)
29
36
  - `pa:review` - Code review
@@ -32,6 +39,23 @@ This project uses ProAgents workflow framework. Recognize `pa:` prefix commands.
32
39
  - `pa:deploy` - Deployment (read ./proagents/prompts/08-deployment.md)
33
40
  - `pa:rollback` - Rollback procedures
34
41
 
42
+ ### AI Platform Management
43
+ - `pa:ai-list` - List installed AI platforms
44
+ - `pa:ai-add` - Add more AI platforms
45
+ - `pa:ai-remove` - Remove AI platforms from config
46
+
47
+ ### Configuration
48
+ - `pa:config` - Show current configuration
49
+ - `pa:config-list` - List all configurable options
50
+ - `pa:config-show` - Show current config values
51
+ - `pa:config-set K V` - Set a config value
52
+ - `pa:config-get K` - Get a config value
53
+ - `pa:config-setup` - Interactive config wizard
54
+ - `pa:config-customize` - Copy templates to customize
55
+
56
+ ### Utilities
57
+ - `pa:uninstall` - Remove ProAgents from project
58
+
35
59
  ## On `pa:` Command
36
60
 
37
61
  1. Read corresponding file in `./proagents/prompts/` or `./proagents/workflow-modes/`
@@ -8,11 +8,18 @@ Recognize commands with `pa:` prefix and execute the corresponding workflow.
8
8
 
9
9
  ## Available Commands
10
10
 
11
- ### Core Commands
11
+ ### Initialization
12
+ - `pa:init` - Initialize ProAgents in project
12
13
  - `pa:help` - Show all available commands
14
+ - `pa:status` - Show current progress
15
+
16
+ ### Feature Development
13
17
  - `pa:feature "name"` - Start new feature (read ./proagents/WORKFLOW.md)
18
+ - `pa:feature-start "name"` - Start new feature
19
+ - `pa:feature-status` - Check feature status
20
+ - `pa:feature-list` - List all features
21
+ - `pa:feature-complete` - Mark feature complete
14
22
  - `pa:fix "description"` - Quick bug fix mode (read ./proagents/workflow-modes/entry-modes.md)
15
- - `pa:status` - Show current progress
16
23
 
17
24
  ### Documentation Commands
18
25
  - `pa:doc` - Show documentation options
@@ -27,15 +34,32 @@ Recognize commands with `pa:` prefix and execute the corresponding workflow.
27
34
  - `pa:release` - Generate release notes
28
35
  - `pa:release [version]` - Version-specific release notes
29
36
 
30
- ### Quality Commands
37
+ ### Quality & Testing
31
38
  - `pa:qa` - Run quality checks (read ./proagents/checklists/code-quality.md)
32
39
  - `pa:test` - Run test workflow (read ./proagents/prompts/06-testing.md)
33
40
  - `pa:review` - Code review workflow
34
41
 
35
- ### Deployment Commands
42
+ ### Deployment
36
43
  - `pa:deploy` - Deployment preparation (read ./proagents/prompts/08-deployment.md)
37
44
  - `pa:rollback` - Rollback procedures
38
45
 
46
+ ### AI Platform Management
47
+ - `pa:ai-list` - List installed AI platforms
48
+ - `pa:ai-add` - Add more AI platforms
49
+ - `pa:ai-remove` - Remove AI platforms from config
50
+
51
+ ### Configuration
52
+ - `pa:config` - Show current configuration
53
+ - `pa:config-list` - List all configurable options
54
+ - `pa:config-show` - Show current config values
55
+ - `pa:config-set K V` - Set a config value
56
+ - `pa:config-get K` - Get a config value
57
+ - `pa:config-setup` - Interactive config wizard
58
+ - `pa:config-customize` - Copy templates to customize
59
+
60
+ ### Utilities
61
+ - `pa:uninstall` - Remove ProAgents from project
62
+
39
63
  ## Execution Instructions
40
64
 
41
65
  When user types a `pa:` command:
@@ -6,13 +6,22 @@ This project uses ProAgents - an AI-agnostic development workflow framework.
6
6
 
7
7
  When the user types commands starting with `pa:`, recognize and execute them:
8
8
 
9
- ### Core Commands
9
+ ### Initialization
10
10
  | Command | Action |
11
11
  |---------|--------|
12
+ | `pa:init` | Initialize ProAgents in project |
12
13
  | `pa:help` | Show all available commands |
14
+ | `pa:status` | Show current progress |
15
+
16
+ ### Feature Development
17
+ | Command | Action |
18
+ |---------|--------|
13
19
  | `pa:feature "name"` | Start new feature workflow |
20
+ | `pa:feature-start "name"` | Start new feature |
21
+ | `pa:feature-status` | Check feature status |
22
+ | `pa:feature-list` | List all features |
23
+ | `pa:feature-complete` | Mark feature complete |
14
24
  | `pa:fix "description"` | Quick bug fix mode |
15
- | `pa:status` | Show current progress |
16
25
 
17
26
  ### Documentation Commands
18
27
  | Command | Action |
@@ -29,19 +38,42 @@ When the user types commands starting with `pa:`, recognize and execute them:
29
38
  | `pa:release` | Generate release notes |
30
39
  | `pa:release [version]` | Version-specific release notes |
31
40
 
32
- ### Quality Commands
41
+ ### Quality & Testing
33
42
  | Command | Action |
34
43
  |---------|--------|
35
44
  | `pa:qa` | Run quality assurance checks |
36
45
  | `pa:test` | Run test workflow |
37
46
  | `pa:review` | Code review workflow |
38
47
 
39
- ### Deployment Commands
48
+ ### Deployment
40
49
  | Command | Action |
41
50
  |---------|--------|
42
51
  | `pa:deploy` | Deployment preparation |
43
52
  | `pa:rollback` | Rollback procedures |
44
53
 
54
+ ### AI Platform Management
55
+ | Command | Action |
56
+ |---------|--------|
57
+ | `pa:ai-list` | List installed AI platforms |
58
+ | `pa:ai-add` | Add more AI platforms |
59
+ | `pa:ai-remove` | Remove AI platforms from config |
60
+
61
+ ### Configuration
62
+ | Command | Action |
63
+ |---------|--------|
64
+ | `pa:config` | Show current configuration |
65
+ | `pa:config-list` | List all configurable options |
66
+ | `pa:config-show` | Show current config values |
67
+ | `pa:config-set K V` | Set a config value |
68
+ | `pa:config-get K` | Get a config value |
69
+ | `pa:config-setup` | Interactive config wizard |
70
+ | `pa:config-customize` | Copy templates to customize |
71
+
72
+ ### Utilities
73
+ | Command | Action |
74
+ |---------|--------|
75
+ | `pa:uninstall` | Remove ProAgents from project |
76
+
45
77
  ## How to Execute Commands
46
78
 
47
79
  When user types a `pa:` command: