claude-autopm 2.8.4 → 2.8.6

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.
@@ -300,6 +300,61 @@ class ConfigCommand {
300
300
  // Format the confirmation message
301
301
  const displayKey = key.charAt(0).toUpperCase() + key.slice(1).replace(/([A-Z])/g, ' $1');
302
302
  console.log(`✅ ${displayKey} set to: ${value}`);
303
+
304
+ // Show helpful information for provider setup
305
+ if (key === 'provider') {
306
+ console.log('');
307
+ console.log('┌─────────────────────────────────────────────────────────────┐');
308
+ console.log(`│ ${value === 'github' ? 'GitHub' : 'Azure DevOps'} Provider Configuration`);
309
+ console.log('├─────────────────────────────────────────────────────────────┤');
310
+
311
+ if (value === 'github') {
312
+ console.log('│ Required Settings:');
313
+ console.log('│ • Repository owner/organization name');
314
+ console.log('│ • Repository name');
315
+ console.log('│ • Personal Access Token (PAT)');
316
+ console.log('│');
317
+ console.log('│ Setup Commands:');
318
+ console.log('│ 1. Set owner: autopm config set github.owner YOUR_USERNAME');
319
+ console.log('│ 2. Set repo: autopm config set github.repo YOUR_REPO');
320
+ console.log('│ 3. Add PAT: Edit .claude/.env and add:');
321
+ console.log('│ GITHUB_TOKEN=ghp_your_token_here');
322
+ console.log('│');
323
+ console.log('│ Create a GitHub Personal Access Token:');
324
+ console.log('│ 1. Go to: https://github.com/settings/tokens');
325
+ console.log('│ 2. Click "Generate new token (classic)"');
326
+ console.log('│ 3. Give it a name and select scopes:');
327
+ console.log('│ - repo (all)');
328
+ console.log('│ - workflow (if using GitHub Actions)');
329
+ console.log('│ 4. Generate and copy the token');
330
+ console.log('│');
331
+ console.log('│ Verify setup: autopm config validate');
332
+ } else if (value === 'azure') {
333
+ console.log('│ Required Settings:');
334
+ console.log('│ • Organization name');
335
+ console.log('│ • Project name');
336
+ console.log('│ • Personal Access Token (PAT)');
337
+ console.log('│');
338
+ console.log('│ Setup Commands:');
339
+ console.log('│ 1. Set org: autopm config set azure.organization YOUR_ORG');
340
+ console.log('│ 2. Set project: autopm config set azure.project YOUR_PROJECT');
341
+ console.log('│ 3. Add PAT: Edit .claude/.env and add:');
342
+ console.log('│ AZURE_DEVOPS_PAT=your_token_here');
343
+ console.log('│');
344
+ console.log('│ Create an Azure DevOps Personal Access Token:');
345
+ console.log('│ 1. Go to: https://dev.azure.com/YOUR_ORG/_usersSettings/tokens');
346
+ console.log('│ 2. Click "+ New Token"');
347
+ console.log('│ 3. Give it a name and select scopes:');
348
+ console.log('│ - Work Items: Read, write, & manage');
349
+ console.log('│ - Code: Read & write');
350
+ console.log('│ 4. Create and copy the token');
351
+ console.log('│');
352
+ console.log('│ Verify setup: autopm config validate');
353
+ }
354
+
355
+ console.log('└─────────────────────────────────────────────────────────────┘');
356
+ console.log('');
357
+ }
303
358
  }
304
359
 
305
360
  /**
@@ -411,9 +466,7 @@ class ConfigCommand {
411
466
  */
412
467
  async switch(provider) {
413
468
  await this.set('provider', provider);
414
-
415
- const providerName = provider === 'azure' ? 'Azure DevOps' : 'GitHub';
416
- console.log(`✅ Switched to ${providerName}`);
469
+ // The set method will handle showing the configuration guide
417
470
  }
418
471
  }
419
472
 
@@ -918,13 +918,34 @@ See: https://github.com/rafeekpro/ClaudeAutoPM
918
918
  }
919
919
 
920
920
  for (const command of metadata.commands) {
921
- if (!command.file) continue;
922
- const sourcePath = path.join(pluginPath, command.file);
923
- const targetPath = path.join(targetDir, path.basename(command.file));
921
+ // Handle subdirectory collections with auto-discovery
922
+ if (command.subdirectory && command.discovery === 'auto') {
923
+ const commandsSourceDir = path.join(pluginPath, command.subdirectory);
924
+
925
+ if (fs.existsSync(commandsSourceDir)) {
926
+ // Auto-discover all .md files in subdirectory
927
+ const files = fs.readdirSync(commandsSourceDir);
928
+ for (const file of files) {
929
+ if (file.endsWith('.md')) {
930
+ const sourcePath = path.join(commandsSourceDir, file);
931
+ const targetPath = path.join(targetDir, file);
932
+
933
+ if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
934
+ fs.copyFileSync(sourcePath, targetPath);
935
+ commandsInstalled++;
936
+ }
937
+ }
938
+ }
939
+ }
940
+ } else if (command.file) {
941
+ // Handle individual command files
942
+ const sourcePath = path.join(pluginPath, command.file);
943
+ const targetPath = path.join(targetDir, path.basename(command.file));
924
944
 
925
- if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
926
- fs.copyFileSync(sourcePath, targetPath);
927
- commandsInstalled++;
945
+ if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
946
+ fs.copyFileSync(sourcePath, targetPath);
947
+ commandsInstalled++;
948
+ }
928
949
  }
929
950
  }
930
951
  }
@@ -1020,9 +1041,11 @@ See: https://github.com/rafeekpro/ClaudeAutoPM
1020
1041
  }
1021
1042
  }
1022
1043
 
1044
+ const displayName = metadata.displayName || metadata.name || pluginName;
1045
+
1023
1046
  installedPlugins.push({
1024
1047
  name: pluginName,
1025
- displayName: metadata.displayName,
1048
+ displayName: displayName,
1026
1049
  agents: agentsInstalled,
1027
1050
  commands: commandsInstalled,
1028
1051
  rules: rulesInstalled
@@ -1033,7 +1056,7 @@ See: https://github.com/rafeekpro/ClaudeAutoPM
1033
1056
  if (commandsInstalled > 0) summary.push(`${commandsInstalled} commands`);
1034
1057
  if (rulesInstalled > 0) summary.push(`${rulesInstalled} rules`);
1035
1058
 
1036
- this.printSuccess(`${metadata.displayName} installed (${summary.join(', ') || 'no resources'})`);
1059
+ this.printSuccess(`${displayName} installed (${summary.join(', ') || 'no resources'})`);
1037
1060
  } catch (error) {
1038
1061
  failedPlugins.push({ name: pluginName, error: error.message });
1039
1062
  this.printWarning(`Failed to install ${pluginName}: ${error.message}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-autopm",
3
- "version": "2.8.4",
3
+ "version": "2.8.6",
4
4
  "description": "Autonomous Project Management Framework for Claude Code - Advanced AI-powered development automation",
5
5
  "main": "bin/autopm.js",
6
6
  "workspaces": [
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@claudeautopm/plugin-core",
3
3
  "version": "2.0.0",
4
+ "displayName": "Core Framework",
4
5
  "description": "Core framework functionality for ClaudeAutoPM",
5
6
  "schemaVersion": "2.0",
6
7
  "metadata": {