proagents 1.0.9 → 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,18 +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
- 'AI_INSTRUCTIONS.md',
92
- 'GEMINI.md',
93
- 'CHATGPT.md',
90
+ 'AI_INSTRUCTIONS.md', // Universal instructions kept for reference
94
91
  ];
95
92
 
96
93
  /**
@@ -258,34 +255,22 @@ For detailed commands, see \`./proagents/PROAGENTS.md\`
258
255
  console.log(chalk.green('✓ Created README.md with ProAgents commands'));
259
256
  }
260
257
 
261
- // Copy AI instruction files to project root (for AI platform recognition)
262
- const aiFiles = [
263
- { src: 'CLAUDE.md', target: 'CLAUDE.md', desc: 'Claude AI' },
264
- { src: '.cursorrules', target: '.cursorrules', desc: 'Cursor AI' },
265
- { src: 'GEMINI.md', target: 'GEMINI.md', desc: 'Gemini AI' },
266
- { src: 'CHATGPT.md', target: 'CHATGPT.md', desc: 'ChatGPT/Codex' },
267
- ];
268
-
269
- for (const file of aiFiles) {
270
- const sourcePath = join(sourceDir, file.src);
271
- const targetPath = join(targetDir, file.target);
272
- if (existsSync(sourcePath) && !existsSync(targetPath)) {
273
- cpSync(sourcePath, targetPath);
274
- console.log(chalk.green(`✓ Created ${file.target} (for ${file.desc} recognition)`));
275
- }
276
- }
258
+ // Interactive AI platform selection
259
+ const selectedPlatforms = await selectPlatforms();
277
260
 
278
- // Copy .github/copilot-instructions.md for GitHub Copilot
279
- const copilotSource = join(sourceDir, '.github', 'copilot-instructions.md');
280
- const githubDir = join(targetDir, '.github');
281
- const copilotTarget = join(githubDir, 'copilot-instructions.md');
282
- if (existsSync(copilotSource) && !existsSync(copilotTarget)) {
283
- if (!existsSync(githubDir)) {
284
- mkdirSync(githubDir, { recursive: true });
285
- }
286
- cpSync(copilotSource, copilotTarget);
287
- 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(', ')}`));
288
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);
289
274
 
290
275
  // Success message
291
276
  console.log(chalk.green('\n✓ ProAgents initialized successfully!\n'));
@@ -398,44 +383,23 @@ async function smartUpdate(sourceDir, targetDir) {
398
383
  }
399
384
  }
400
385
 
401
- // 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)
402
387
  const projectRoot = join(targetDir, '..');
403
- const aiFiles = [
404
- 'CLAUDE.md',
405
- '.cursorrules',
406
- 'AI_INSTRUCTIONS.md',
407
- 'GEMINI.md',
408
- 'CHATGPT.md',
409
- ];
410
- let aiFilesUpdated = 0;
411
-
412
- for (const file of aiFiles) {
413
- const sourcePath = join(sourceDir, file);
414
- const targetPath = join(projectRoot, file);
388
+ const configPath = join(targetDir, 'proagents.config.yaml');
389
+ const selectedPlatforms = loadPlatformConfig(configPath);
415
390
 
416
- if (existsSync(sourcePath)) {
417
- cpSync(sourcePath, targetPath, { force: true });
418
- aiFilesUpdated++;
419
- }
420
- }
391
+ if (selectedPlatforms.length > 0) {
392
+ const aiResults = copyPlatformFiles(selectedPlatforms, sourceDir, projectRoot);
421
393
 
422
- // Handle .github/copilot-instructions.md separately (needs directory creation)
423
- const copilotSource = join(sourceDir, '.github', 'copilot-instructions.md');
424
- const githubDir = join(projectRoot, '.github');
425
- const copilotTarget = join(githubDir, 'copilot-instructions.md');
426
-
427
- if (existsSync(copilotSource)) {
428
- if (!existsSync(githubDir)) {
429
- 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(', ')}`));
430
399
  }
431
- cpSync(copilotSource, copilotTarget, { force: true });
432
- aiFilesUpdated++;
433
400
  }
434
401
 
435
- if (aiFilesUpdated > 0) {
436
- console.log(chalk.green(`✓ Updated ${aiFilesUpdated} AI instruction files`));
437
- console.log(chalk.gray(' (CLAUDE.md, .cursorrules, GEMINI.md, CHATGPT.md, .github/copilot-instructions.md)'));
438
- }
402
+ console.log(chalk.gray('\nTip: Use "proagents ai add" to add more AI platforms'));
439
403
  }
440
404
 
441
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.9",
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/`
@@ -0,0 +1,74 @@
1
+ # ProAgents Commands for Windsurf
2
+
3
+ This project uses ProAgents - an AI-agnostic development workflow framework.
4
+
5
+ ## Command Recognition
6
+
7
+ Recognize commands with `pa:` prefix and execute the corresponding workflow.
8
+
9
+ ## Available Commands
10
+
11
+ ### Initialization
12
+ - `pa:init` - Initialize ProAgents in project
13
+ - `pa:help` - Show all available commands
14
+ - `pa:status` - Show current progress
15
+
16
+ ### Feature Development
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
22
+ - `pa:fix "description"` - Quick bug fix mode (read ./proagents/workflow-modes/entry-modes.md)
23
+
24
+ ### Documentation Commands
25
+ - `pa:doc` - Show documentation options
26
+ - `pa:doc-full` - Generate full documentation (read ./proagents/prompts/07-documentation.md)
27
+ - `pa:doc-moderate` - Generate balanced documentation
28
+ - `pa:doc-lite` - Generate quick reference
29
+ - `pa:doc-module [name]` - Document specific module
30
+ - `pa:doc-file [path]` - Document specific file
31
+ - `pa:doc-api` - Generate API documentation
32
+ - `pa:readme` - Generate/update README
33
+ - `pa:changelog` - Update CHANGELOG.md
34
+ - `pa:release` - Generate release notes
35
+ - `pa:release [version]` - Version-specific release notes
36
+
37
+ ### Quality & Testing
38
+ - `pa:qa` - Run quality checks (read ./proagents/checklists/code-quality.md)
39
+ - `pa:test` - Run test workflow (read ./proagents/prompts/06-testing.md)
40
+ - `pa:review` - Code review workflow
41
+
42
+ ### Deployment
43
+ - `pa:deploy` - Deployment preparation (read ./proagents/prompts/08-deployment.md)
44
+ - `pa:rollback` - Rollback procedures
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
+
63
+ ## Execution Instructions
64
+
65
+ When user types a `pa:` command:
66
+ 1. Read the corresponding prompt file from `./proagents/prompts/`
67
+ 2. Follow the workflow instructions in that file
68
+ 3. Use project configuration from `./proagents/proagents.config.yaml`
69
+
70
+ ## Key Files
71
+
72
+ - `./proagents/WORKFLOW.md` - Full 10-phase workflow
73
+ - `./proagents/PROAGENTS.md` - Quick command reference
74
+ - `./proagents/prompts/` - Phase-specific AI prompts
@@ -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: