claude-autopm 2.7.0 → 2.8.2
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.
- package/README.md +307 -56
- package/autopm/.claude/.env +158 -0
- package/autopm/.claude/settings.local.json +9 -0
- package/bin/autopm.js +11 -2
- package/bin/commands/epic.js +23 -3
- package/bin/commands/plugin.js +395 -0
- package/bin/commands/team.js +184 -10
- package/install/install.js +223 -4
- package/lib/cli/commands/issue.js +360 -20
- package/lib/plugins/PluginManager.js +1328 -0
- package/lib/plugins/PluginManager.old.js +400 -0
- package/lib/providers/AzureDevOpsProvider.js +575 -0
- package/lib/providers/GitHubProvider.js +475 -0
- package/lib/services/EpicService.js +1092 -3
- package/lib/services/IssueService.js +991 -0
- package/package.json +9 -1
- package/scripts/publish-plugins.sh +166 -0
- package/autopm/.claude/agents/cloud/README.md +0 -55
- package/autopm/.claude/agents/cloud/aws-cloud-architect.md +0 -521
- package/autopm/.claude/agents/cloud/azure-cloud-architect.md +0 -436
- package/autopm/.claude/agents/cloud/gcp-cloud-architect.md +0 -385
- package/autopm/.claude/agents/cloud/gcp-cloud-functions-engineer.md +0 -306
- package/autopm/.claude/agents/cloud/gemini-api-expert.md +0 -880
- package/autopm/.claude/agents/cloud/kubernetes-orchestrator.md +0 -566
- package/autopm/.claude/agents/cloud/openai-python-expert.md +0 -1087
- package/autopm/.claude/agents/cloud/terraform-infrastructure-expert.md +0 -454
- package/autopm/.claude/agents/core/agent-manager.md +0 -296
- package/autopm/.claude/agents/core/code-analyzer.md +0 -131
- package/autopm/.claude/agents/core/file-analyzer.md +0 -162
- package/autopm/.claude/agents/core/test-runner.md +0 -200
- package/autopm/.claude/agents/data/airflow-orchestration-expert.md +0 -52
- package/autopm/.claude/agents/data/kedro-pipeline-expert.md +0 -50
- package/autopm/.claude/agents/data/langgraph-workflow-expert.md +0 -520
- package/autopm/.claude/agents/databases/README.md +0 -50
- package/autopm/.claude/agents/databases/bigquery-expert.md +0 -392
- package/autopm/.claude/agents/databases/cosmosdb-expert.md +0 -368
- package/autopm/.claude/agents/databases/mongodb-expert.md +0 -398
- package/autopm/.claude/agents/databases/postgresql-expert.md +0 -321
- package/autopm/.claude/agents/databases/redis-expert.md +0 -52
- package/autopm/.claude/agents/devops/README.md +0 -52
- package/autopm/.claude/agents/devops/azure-devops-specialist.md +0 -308
- package/autopm/.claude/agents/devops/docker-containerization-expert.md +0 -298
- package/autopm/.claude/agents/devops/github-operations-specialist.md +0 -335
- package/autopm/.claude/agents/devops/mcp-context-manager.md +0 -319
- package/autopm/.claude/agents/devops/observability-engineer.md +0 -574
- package/autopm/.claude/agents/devops/ssh-operations-expert.md +0 -1093
- package/autopm/.claude/agents/devops/traefik-proxy-expert.md +0 -444
- package/autopm/.claude/agents/frameworks/README.md +0 -64
- package/autopm/.claude/agents/frameworks/e2e-test-engineer.md +0 -360
- package/autopm/.claude/agents/frameworks/nats-messaging-expert.md +0 -254
- package/autopm/.claude/agents/frameworks/react-frontend-engineer.md +0 -217
- package/autopm/.claude/agents/frameworks/react-ui-expert.md +0 -226
- package/autopm/.claude/agents/frameworks/tailwindcss-expert.md +0 -770
- package/autopm/.claude/agents/frameworks/ux-design-expert.md +0 -244
- package/autopm/.claude/agents/integration/message-queue-engineer.md +0 -794
- package/autopm/.claude/agents/languages/README.md +0 -50
- package/autopm/.claude/agents/languages/bash-scripting-expert.md +0 -541
- package/autopm/.claude/agents/languages/javascript-frontend-engineer.md +0 -197
- package/autopm/.claude/agents/languages/nodejs-backend-engineer.md +0 -226
- package/autopm/.claude/agents/languages/python-backend-engineer.md +0 -214
- package/autopm/.claude/agents/languages/python-backend-expert.md +0 -289
- package/autopm/.claude/agents/testing/frontend-testing-engineer.md +0 -395
- package/autopm/.claude/commands/ai/langgraph-workflow.md +0 -65
- package/autopm/.claude/commands/ai/openai-chat.md +0 -65
- package/autopm/.claude/commands/azure/COMMANDS.md +0 -107
- package/autopm/.claude/commands/azure/COMMAND_MAPPING.md +0 -252
- package/autopm/.claude/commands/azure/INTEGRATION_FIX.md +0 -103
- package/autopm/.claude/commands/azure/README.md +0 -246
- package/autopm/.claude/commands/azure/active-work.md +0 -198
- package/autopm/.claude/commands/azure/aliases.md +0 -143
- package/autopm/.claude/commands/azure/blocked-items.md +0 -287
- package/autopm/.claude/commands/azure/clean.md +0 -93
- package/autopm/.claude/commands/azure/docs-query.md +0 -48
- package/autopm/.claude/commands/azure/feature-decompose.md +0 -380
- package/autopm/.claude/commands/azure/feature-list.md +0 -61
- package/autopm/.claude/commands/azure/feature-new.md +0 -115
- package/autopm/.claude/commands/azure/feature-show.md +0 -205
- package/autopm/.claude/commands/azure/feature-start.md +0 -130
- package/autopm/.claude/commands/azure/fix-integration-example.md +0 -93
- package/autopm/.claude/commands/azure/help.md +0 -150
- package/autopm/.claude/commands/azure/import-us.md +0 -269
- package/autopm/.claude/commands/azure/init.md +0 -211
- package/autopm/.claude/commands/azure/next-task.md +0 -262
- package/autopm/.claude/commands/azure/search.md +0 -160
- package/autopm/.claude/commands/azure/sprint-status.md +0 -235
- package/autopm/.claude/commands/azure/standup.md +0 -260
- package/autopm/.claude/commands/azure/sync-all.md +0 -99
- package/autopm/.claude/commands/azure/task-analyze.md +0 -186
- package/autopm/.claude/commands/azure/task-close.md +0 -329
- package/autopm/.claude/commands/azure/task-edit.md +0 -145
- package/autopm/.claude/commands/azure/task-list.md +0 -263
- package/autopm/.claude/commands/azure/task-new.md +0 -84
- package/autopm/.claude/commands/azure/task-reopen.md +0 -79
- package/autopm/.claude/commands/azure/task-show.md +0 -126
- package/autopm/.claude/commands/azure/task-start.md +0 -301
- package/autopm/.claude/commands/azure/task-status.md +0 -65
- package/autopm/.claude/commands/azure/task-sync.md +0 -67
- package/autopm/.claude/commands/azure/us-edit.md +0 -164
- package/autopm/.claude/commands/azure/us-list.md +0 -202
- package/autopm/.claude/commands/azure/us-new.md +0 -265
- package/autopm/.claude/commands/azure/us-parse.md +0 -253
- package/autopm/.claude/commands/azure/us-show.md +0 -188
- package/autopm/.claude/commands/azure/us-status.md +0 -320
- package/autopm/.claude/commands/azure/validate.md +0 -86
- package/autopm/.claude/commands/azure/work-item-sync.md +0 -47
- package/autopm/.claude/commands/cloud/infra-deploy.md +0 -38
- package/autopm/.claude/commands/github/workflow-create.md +0 -42
- package/autopm/.claude/commands/infrastructure/ssh-security.md +0 -65
- package/autopm/.claude/commands/infrastructure/traefik-setup.md +0 -65
- package/autopm/.claude/commands/kubernetes/deploy.md +0 -37
- package/autopm/.claude/commands/playwright/test-scaffold.md +0 -38
- package/autopm/.claude/commands/pm/blocked.md +0 -28
- package/autopm/.claude/commands/pm/clean.md +0 -119
- package/autopm/.claude/commands/pm/context-create.md +0 -136
- package/autopm/.claude/commands/pm/context-prime.md +0 -170
- package/autopm/.claude/commands/pm/context-update.md +0 -292
- package/autopm/.claude/commands/pm/context.md +0 -28
- package/autopm/.claude/commands/pm/epic-close.md +0 -86
- package/autopm/.claude/commands/pm/epic-decompose.md +0 -370
- package/autopm/.claude/commands/pm/epic-edit.md +0 -83
- package/autopm/.claude/commands/pm/epic-list.md +0 -30
- package/autopm/.claude/commands/pm/epic-merge.md +0 -222
- package/autopm/.claude/commands/pm/epic-oneshot.md +0 -119
- package/autopm/.claude/commands/pm/epic-refresh.md +0 -119
- package/autopm/.claude/commands/pm/epic-show.md +0 -28
- package/autopm/.claude/commands/pm/epic-split.md +0 -120
- package/autopm/.claude/commands/pm/epic-start.md +0 -195
- package/autopm/.claude/commands/pm/epic-status.md +0 -28
- package/autopm/.claude/commands/pm/epic-sync-modular.md +0 -338
- package/autopm/.claude/commands/pm/epic-sync-original.md +0 -473
- package/autopm/.claude/commands/pm/epic-sync.md +0 -486
- package/autopm/.claude/commands/pm/help.md +0 -28
- package/autopm/.claude/commands/pm/import.md +0 -115
- package/autopm/.claude/commands/pm/in-progress.md +0 -28
- package/autopm/.claude/commands/pm/init.md +0 -28
- package/autopm/.claude/commands/pm/issue-analyze.md +0 -202
- package/autopm/.claude/commands/pm/issue-close.md +0 -119
- package/autopm/.claude/commands/pm/issue-edit.md +0 -93
- package/autopm/.claude/commands/pm/issue-reopen.md +0 -87
- package/autopm/.claude/commands/pm/issue-show.md +0 -41
- package/autopm/.claude/commands/pm/issue-start.md +0 -234
- package/autopm/.claude/commands/pm/issue-status.md +0 -95
- package/autopm/.claude/commands/pm/issue-sync.md +0 -411
- package/autopm/.claude/commands/pm/next.md +0 -28
- package/autopm/.claude/commands/pm/prd-edit.md +0 -82
- package/autopm/.claude/commands/pm/prd-list.md +0 -28
- package/autopm/.claude/commands/pm/prd-new.md +0 -55
- package/autopm/.claude/commands/pm/prd-parse.md +0 -42
- package/autopm/.claude/commands/pm/prd-status.md +0 -28
- package/autopm/.claude/commands/pm/search.md +0 -28
- package/autopm/.claude/commands/pm/standup.md +0 -28
- package/autopm/.claude/commands/pm/status.md +0 -28
- package/autopm/.claude/commands/pm/sync.md +0 -99
- package/autopm/.claude/commands/pm/test-reference-update.md +0 -151
- package/autopm/.claude/commands/pm/validate.md +0 -28
- package/autopm/.claude/commands/pm/what-next.md +0 -28
- package/autopm/.claude/commands/python/api-scaffold.md +0 -50
- package/autopm/.claude/commands/python/docs-query.md +0 -48
- package/autopm/.claude/commands/react/app-scaffold.md +0 -50
- package/autopm/.claude/commands/testing/prime.md +0 -314
- package/autopm/.claude/commands/testing/run.md +0 -125
- package/autopm/.claude/commands/ui/bootstrap-scaffold.md +0 -65
- package/autopm/.claude/commands/ui/tailwind-system.md +0 -64
- package/autopm/.claude/rules/ai-integration-patterns.md +0 -219
- package/autopm/.claude/rules/ci-cd-kubernetes-strategy.md +0 -25
- package/autopm/.claude/rules/database-management-strategy.md +0 -17
- package/autopm/.claude/rules/database-pipeline.md +0 -94
- package/autopm/.claude/rules/devops-troubleshooting-playbook.md +0 -450
- package/autopm/.claude/rules/docker-first-development.md +0 -404
- package/autopm/.claude/rules/infrastructure-pipeline.md +0 -128
- package/autopm/.claude/rules/performance-guidelines.md +0 -403
- package/autopm/.claude/rules/ui-development-standards.md +0 -281
- package/autopm/.claude/rules/ui-framework-rules.md +0 -151
- package/autopm/.claude/rules/ux-design-rules.md +0 -209
- package/autopm/.claude/rules/visual-testing.md +0 -223
- package/autopm/.claude/scripts/azure/README.md +0 -192
- package/autopm/.claude/scripts/azure/active-work.js +0 -524
- package/autopm/.claude/scripts/azure/active-work.sh +0 -20
- package/autopm/.claude/scripts/azure/blocked.js +0 -520
- package/autopm/.claude/scripts/azure/blocked.sh +0 -20
- package/autopm/.claude/scripts/azure/daily.js +0 -533
- package/autopm/.claude/scripts/azure/daily.sh +0 -20
- package/autopm/.claude/scripts/azure/dashboard.js +0 -970
- package/autopm/.claude/scripts/azure/dashboard.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-list.js +0 -254
- package/autopm/.claude/scripts/azure/feature-list.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-show.js +0 -7
- package/autopm/.claude/scripts/azure/feature-show.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-status.js +0 -604
- package/autopm/.claude/scripts/azure/feature-status.sh +0 -20
- package/autopm/.claude/scripts/azure/help.js +0 -342
- package/autopm/.claude/scripts/azure/help.sh +0 -20
- package/autopm/.claude/scripts/azure/next-task.js +0 -508
- package/autopm/.claude/scripts/azure/next-task.sh +0 -20
- package/autopm/.claude/scripts/azure/search.js +0 -469
- package/autopm/.claude/scripts/azure/search.sh +0 -20
- package/autopm/.claude/scripts/azure/setup.js +0 -745
- package/autopm/.claude/scripts/azure/setup.sh +0 -20
- package/autopm/.claude/scripts/azure/sprint-report.js +0 -1012
- package/autopm/.claude/scripts/azure/sprint-report.sh +0 -20
- package/autopm/.claude/scripts/azure/sync.js +0 -563
- package/autopm/.claude/scripts/azure/sync.sh +0 -20
- package/autopm/.claude/scripts/azure/us-list.js +0 -210
- package/autopm/.claude/scripts/azure/us-list.sh +0 -20
- package/autopm/.claude/scripts/azure/us-status.js +0 -238
- package/autopm/.claude/scripts/azure/us-status.sh +0 -20
- package/autopm/.claude/scripts/azure/validate.js +0 -626
- package/autopm/.claude/scripts/azure/validate.sh +0 -20
- package/autopm/.claude/scripts/azure/wrapper-template.sh +0 -20
- package/autopm/.claude/scripts/github/dependency-tracker.js +0 -554
- package/autopm/.claude/scripts/github/dependency-validator.js +0 -545
- package/autopm/.claude/scripts/github/dependency-visualizer.js +0 -477
- package/autopm/.claude/scripts/pm/analytics.js +0 -425
- package/autopm/.claude/scripts/pm/blocked.js +0 -164
- package/autopm/.claude/scripts/pm/blocked.sh +0 -78
- package/autopm/.claude/scripts/pm/clean.js +0 -464
- package/autopm/.claude/scripts/pm/context-create.js +0 -216
- package/autopm/.claude/scripts/pm/context-prime.js +0 -335
- package/autopm/.claude/scripts/pm/context-update.js +0 -344
- package/autopm/.claude/scripts/pm/context.js +0 -338
- package/autopm/.claude/scripts/pm/epic-close.js +0 -347
- package/autopm/.claude/scripts/pm/epic-edit.js +0 -382
- package/autopm/.claude/scripts/pm/epic-list.js +0 -273
- package/autopm/.claude/scripts/pm/epic-list.sh +0 -109
- package/autopm/.claude/scripts/pm/epic-show.js +0 -291
- package/autopm/.claude/scripts/pm/epic-show.sh +0 -105
- package/autopm/.claude/scripts/pm/epic-split.js +0 -522
- package/autopm/.claude/scripts/pm/epic-start/epic-start.js +0 -183
- package/autopm/.claude/scripts/pm/epic-start/epic-start.sh +0 -94
- package/autopm/.claude/scripts/pm/epic-status.js +0 -291
- package/autopm/.claude/scripts/pm/epic-status.sh +0 -104
- package/autopm/.claude/scripts/pm/epic-sync/README.md +0 -208
- package/autopm/.claude/scripts/pm/epic-sync/create-epic-issue.sh +0 -77
- package/autopm/.claude/scripts/pm/epic-sync/create-task-issues.sh +0 -86
- package/autopm/.claude/scripts/pm/epic-sync/update-epic-file.sh +0 -79
- package/autopm/.claude/scripts/pm/epic-sync/update-references.sh +0 -89
- package/autopm/.claude/scripts/pm/epic-sync.sh +0 -137
- package/autopm/.claude/scripts/pm/help.js +0 -92
- package/autopm/.claude/scripts/pm/help.sh +0 -90
- package/autopm/.claude/scripts/pm/in-progress.js +0 -178
- package/autopm/.claude/scripts/pm/in-progress.sh +0 -93
- package/autopm/.claude/scripts/pm/init.js +0 -321
- package/autopm/.claude/scripts/pm/init.sh +0 -178
- package/autopm/.claude/scripts/pm/issue-close.js +0 -232
- package/autopm/.claude/scripts/pm/issue-edit.js +0 -310
- package/autopm/.claude/scripts/pm/issue-show.js +0 -272
- package/autopm/.claude/scripts/pm/issue-start.js +0 -181
- package/autopm/.claude/scripts/pm/issue-sync/format-comment.sh +0 -468
- package/autopm/.claude/scripts/pm/issue-sync/gather-updates.sh +0 -460
- package/autopm/.claude/scripts/pm/issue-sync/post-comment.sh +0 -330
- package/autopm/.claude/scripts/pm/issue-sync/preflight-validation.sh +0 -348
- package/autopm/.claude/scripts/pm/issue-sync/update-frontmatter.sh +0 -387
- package/autopm/.claude/scripts/pm/lib/README.md +0 -85
- package/autopm/.claude/scripts/pm/lib/epic-discovery.js +0 -119
- package/autopm/.claude/scripts/pm/lib/logger.js +0 -78
- package/autopm/.claude/scripts/pm/next.js +0 -189
- package/autopm/.claude/scripts/pm/next.sh +0 -72
- package/autopm/.claude/scripts/pm/optimize.js +0 -407
- package/autopm/.claude/scripts/pm/pr-create.js +0 -337
- package/autopm/.claude/scripts/pm/pr-list.js +0 -257
- package/autopm/.claude/scripts/pm/prd-list.js +0 -242
- package/autopm/.claude/scripts/pm/prd-list.sh +0 -103
- package/autopm/.claude/scripts/pm/prd-new.js +0 -684
- package/autopm/.claude/scripts/pm/prd-parse.js +0 -547
- package/autopm/.claude/scripts/pm/prd-status.js +0 -152
- package/autopm/.claude/scripts/pm/prd-status.sh +0 -63
- package/autopm/.claude/scripts/pm/release.js +0 -460
- package/autopm/.claude/scripts/pm/search.js +0 -192
- package/autopm/.claude/scripts/pm/search.sh +0 -89
- package/autopm/.claude/scripts/pm/standup.js +0 -362
- package/autopm/.claude/scripts/pm/standup.sh +0 -95
- package/autopm/.claude/scripts/pm/status.js +0 -148
- package/autopm/.claude/scripts/pm/status.sh +0 -59
- package/autopm/.claude/scripts/pm/sync-batch.js +0 -337
- package/autopm/.claude/scripts/pm/sync.js +0 -343
- package/autopm/.claude/scripts/pm/template-list.js +0 -141
- package/autopm/.claude/scripts/pm/template-new.js +0 -366
- package/autopm/.claude/scripts/pm/validate.js +0 -274
- package/autopm/.claude/scripts/pm/validate.sh +0 -106
- package/autopm/.claude/scripts/pm/what-next.js +0 -660
- package/bin/node/azure-feature-show.js +0 -7
package/install/install.js
CHANGED
|
@@ -459,6 +459,7 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
459
459
|
• Native tooling: npm, pip, local installs
|
|
460
460
|
• Best for: Simple projects, learning, debugging
|
|
461
461
|
• No containers or orchestration
|
|
462
|
+
${this.colors.DIM}• Plugins: core, languages, pm (3 plugins)${this.colors.NC}
|
|
462
463
|
`);
|
|
463
464
|
|
|
464
465
|
// Option 2: Docker-only (requires Docker)
|
|
@@ -468,6 +469,7 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
468
469
|
• Docker containers for development environment
|
|
469
470
|
• Best for: Microservices, consistent environments
|
|
470
471
|
• Local Docker only, no Kubernetes
|
|
472
|
+
${this.colors.DIM}• Plugins: core, languages, frameworks, testing, devops, pm (6 plugins)${this.colors.NC}
|
|
471
473
|
`);
|
|
472
474
|
} else {
|
|
473
475
|
console.log(`${this.colors.DIM}2. Docker-only${this.colors.NC} ${this.colors.RED}(Docker not installed)${this.colors.NC}
|
|
@@ -481,6 +483,7 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
481
483
|
• Kubernetes manifests and cloud deployment ready
|
|
482
484
|
• GitHub Actions with KIND clusters and Kaniko builds
|
|
483
485
|
• Best for: Production applications, enterprise projects
|
|
486
|
+
${this.colors.DIM}• Plugins: core, languages, frameworks, testing, devops, cloud, databases, pm, ai (9 plugins)${this.colors.NC}
|
|
484
487
|
`);
|
|
485
488
|
} else if (availableTools.docker) {
|
|
486
489
|
console.log(`${this.colors.DIM}3. Full DevOps${this.colors.NC} ${this.colors.RED}(kubectl not installed)${this.colors.NC}
|
|
@@ -497,6 +500,7 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
497
500
|
• Advanced context isolation and security
|
|
498
501
|
• Full DevOps capabilities with speed optimization
|
|
499
502
|
• Best for: Large projects, massive refactoring, power users
|
|
503
|
+
${this.colors.DIM}• Plugins: ALL - core, languages, frameworks, testing, devops, cloud, databases, data, pm, ai, ml (11 plugins)${this.colors.NC}
|
|
500
504
|
`);
|
|
501
505
|
} else if (availableTools.docker) {
|
|
502
506
|
console.log(`${this.colors.DIM}4. Performance${this.colors.NC} ${this.colors.RED}(kubectl not installed)${this.colors.NC}
|
|
@@ -592,7 +596,8 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
592
596
|
tools: {
|
|
593
597
|
docker: { enabled: false },
|
|
594
598
|
kubernetes: { enabled: false }
|
|
595
|
-
}
|
|
599
|
+
},
|
|
600
|
+
plugins: ['plugin-core', 'plugin-languages', 'plugin-pm']
|
|
596
601
|
},
|
|
597
602
|
docker: {
|
|
598
603
|
version: version,
|
|
@@ -601,7 +606,8 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
601
606
|
tools: {
|
|
602
607
|
docker: { enabled: true, first: false },
|
|
603
608
|
kubernetes: { enabled: false }
|
|
604
|
-
}
|
|
609
|
+
},
|
|
610
|
+
plugins: ['plugin-core', 'plugin-languages', 'plugin-frameworks', 'plugin-testing', 'plugin-devops', 'plugin-pm']
|
|
605
611
|
},
|
|
606
612
|
full: {
|
|
607
613
|
version: version,
|
|
@@ -610,7 +616,8 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
610
616
|
tools: {
|
|
611
617
|
docker: { enabled: true, first: true },
|
|
612
618
|
kubernetes: { enabled: true }
|
|
613
|
-
}
|
|
619
|
+
},
|
|
620
|
+
plugins: ['plugin-core', 'plugin-languages', 'plugin-frameworks', 'plugin-testing', 'plugin-devops', 'plugin-cloud', 'plugin-databases', 'plugin-pm', 'plugin-ai']
|
|
614
621
|
},
|
|
615
622
|
performance: {
|
|
616
623
|
version: version,
|
|
@@ -620,7 +627,8 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
620
627
|
tools: {
|
|
621
628
|
docker: { enabled: true, first: false },
|
|
622
629
|
kubernetes: { enabled: true }
|
|
623
|
-
}
|
|
630
|
+
},
|
|
631
|
+
plugins: ['plugin-core', 'plugin-languages', 'plugin-frameworks', 'plugin-testing', 'plugin-devops', 'plugin-cloud', 'plugin-databases', 'plugin-data', 'plugin-pm', 'plugin-ai', 'plugin-ml']
|
|
624
632
|
}
|
|
625
633
|
};
|
|
626
634
|
|
|
@@ -835,6 +843,214 @@ See: https://github.com/rafeekpro/ClaudeAutoPM
|
|
|
835
843
|
return processedContent;
|
|
836
844
|
}
|
|
837
845
|
|
|
846
|
+
async installPlugins() {
|
|
847
|
+
if (!this.currentConfig || !this.currentConfig.plugins) {
|
|
848
|
+
this.printStep('No plugins configured for this scenario');
|
|
849
|
+
return;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
const pluginsToInstall = this.currentConfig.plugins;
|
|
853
|
+
|
|
854
|
+
console.log('');
|
|
855
|
+
this.printStep('Installing plugins for selected scenario...');
|
|
856
|
+
console.log('');
|
|
857
|
+
this.printMsg('CYAN', `📦 Plugins to install (${pluginsToInstall.length}):`);
|
|
858
|
+
|
|
859
|
+
for (const plugin of pluginsToInstall) {
|
|
860
|
+
console.log(` • ${plugin}`);
|
|
861
|
+
}
|
|
862
|
+
console.log('');
|
|
863
|
+
|
|
864
|
+
const packagesDir = path.join(this.baseDir, 'packages');
|
|
865
|
+
const installedPlugins = [];
|
|
866
|
+
const failedPlugins = [];
|
|
867
|
+
|
|
868
|
+
// Install each plugin directly
|
|
869
|
+
for (const pluginName of pluginsToInstall) {
|
|
870
|
+
try {
|
|
871
|
+
this.printStep(`Installing ${pluginName}...`);
|
|
872
|
+
|
|
873
|
+
const pluginPath = path.join(packagesDir, pluginName);
|
|
874
|
+
const pluginJsonPath = path.join(pluginPath, 'plugin.json');
|
|
875
|
+
|
|
876
|
+
if (!fs.existsSync(pluginJsonPath)) {
|
|
877
|
+
throw new Error(`Plugin metadata not found: ${pluginJsonPath}`);
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
const metadata = JSON.parse(fs.readFileSync(pluginJsonPath, 'utf-8'));
|
|
881
|
+
let agentsInstalled = 0;
|
|
882
|
+
let commandsInstalled = 0;
|
|
883
|
+
let rulesInstalled = 0;
|
|
884
|
+
|
|
885
|
+
// Install agents
|
|
886
|
+
if (metadata.agents && metadata.agents.length > 0) {
|
|
887
|
+
const targetDir = path.join(this.targetDir, '.claude', 'agents', metadata.category);
|
|
888
|
+
if (!fs.existsSync(targetDir)) {
|
|
889
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
for (const agent of metadata.agents) {
|
|
893
|
+
const sourcePath = path.join(pluginPath, agent.file);
|
|
894
|
+
const targetPath = path.join(targetDir, path.basename(agent.file));
|
|
895
|
+
|
|
896
|
+
if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
|
|
897
|
+
fs.copyFileSync(sourcePath, targetPath);
|
|
898
|
+
agentsInstalled++;
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
// Install commands
|
|
904
|
+
if (metadata.commands && metadata.commands.length > 0) {
|
|
905
|
+
const targetDir = path.join(this.targetDir, '.claude', 'commands');
|
|
906
|
+
if (!fs.existsSync(targetDir)) {
|
|
907
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
for (const command of metadata.commands) {
|
|
911
|
+
if (!command.file) continue;
|
|
912
|
+
const sourcePath = path.join(pluginPath, command.file);
|
|
913
|
+
const targetPath = path.join(targetDir, path.basename(command.file));
|
|
914
|
+
|
|
915
|
+
if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
|
|
916
|
+
fs.copyFileSync(sourcePath, targetPath);
|
|
917
|
+
commandsInstalled++;
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
// Install hooks
|
|
923
|
+
if (metadata.hooks && metadata.hooks.length > 0) {
|
|
924
|
+
const targetDir = path.join(this.targetDir, '.claude', 'hooks');
|
|
925
|
+
if (!fs.existsSync(targetDir)) {
|
|
926
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
for (const hook of metadata.hooks) {
|
|
930
|
+
const files = hook.files || (hook.file ? [hook.file] : []);
|
|
931
|
+
for (const file of files) {
|
|
932
|
+
const sourcePath = path.join(pluginPath, file);
|
|
933
|
+
const targetPath = path.join(targetDir, path.basename(file));
|
|
934
|
+
|
|
935
|
+
if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
|
|
936
|
+
fs.copyFileSync(sourcePath, targetPath);
|
|
937
|
+
// Make executable if shell script
|
|
938
|
+
if (file.endsWith('.sh')) {
|
|
939
|
+
fs.chmodSync(targetPath, 0o755);
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
// Install scripts
|
|
947
|
+
if (metadata.scripts && metadata.scripts.length > 0) {
|
|
948
|
+
const targetDir = path.join(this.targetDir, 'scripts');
|
|
949
|
+
if (!fs.existsSync(targetDir)) {
|
|
950
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
for (const script of metadata.scripts) {
|
|
954
|
+
if (script.subdirectory && script.files) {
|
|
955
|
+
// Handle subdirectory with multiple files
|
|
956
|
+
const cleanSubdir = script.subdirectory.replace(/^scripts\//, '');
|
|
957
|
+
const subdirTarget = path.join(targetDir, cleanSubdir);
|
|
958
|
+
if (!fs.existsSync(subdirTarget)) {
|
|
959
|
+
fs.mkdirSync(subdirTarget, { recursive: true });
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
for (const file of script.files) {
|
|
963
|
+
const sourcePath = path.join(pluginPath, script.subdirectory, file);
|
|
964
|
+
const targetPath = path.join(subdirTarget, file);
|
|
965
|
+
|
|
966
|
+
if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
|
|
967
|
+
fs.copyFileSync(sourcePath, targetPath);
|
|
968
|
+
if (file.endsWith('.sh')) {
|
|
969
|
+
fs.chmodSync(targetPath, 0o755);
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
} else if (script.file) {
|
|
974
|
+
// Handle single script file
|
|
975
|
+
const cleanFile = script.file.replace(/^scripts\//, '');
|
|
976
|
+
const sourcePath = path.join(pluginPath, script.file);
|
|
977
|
+
const targetPath = path.join(targetDir, cleanFile);
|
|
978
|
+
|
|
979
|
+
// Create subdirectories if needed (e.g., lib/)
|
|
980
|
+
const scriptTargetDir = path.dirname(targetPath);
|
|
981
|
+
if (!fs.existsSync(scriptTargetDir)) {
|
|
982
|
+
fs.mkdirSync(scriptTargetDir, { recursive: true });
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
|
|
986
|
+
fs.copyFileSync(sourcePath, targetPath);
|
|
987
|
+
if (script.file.endsWith('.sh')) {
|
|
988
|
+
fs.chmodSync(targetPath, 0o755);
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
// Install rules
|
|
996
|
+
if (metadata.rules && metadata.rules.length > 0) {
|
|
997
|
+
const targetDir = path.join(this.targetDir, '.claude', 'rules');
|
|
998
|
+
if (!fs.existsSync(targetDir)) {
|
|
999
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
for (const rule of metadata.rules) {
|
|
1003
|
+
const sourcePath = path.join(pluginPath, rule.file);
|
|
1004
|
+
const targetPath = path.join(targetDir, path.basename(rule.file));
|
|
1005
|
+
|
|
1006
|
+
if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
|
|
1007
|
+
fs.copyFileSync(sourcePath, targetPath);
|
|
1008
|
+
rulesInstalled++;
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
installedPlugins.push({
|
|
1014
|
+
name: pluginName,
|
|
1015
|
+
displayName: metadata.displayName,
|
|
1016
|
+
agents: agentsInstalled,
|
|
1017
|
+
commands: commandsInstalled,
|
|
1018
|
+
rules: rulesInstalled
|
|
1019
|
+
});
|
|
1020
|
+
|
|
1021
|
+
const summary = [];
|
|
1022
|
+
if (agentsInstalled > 0) summary.push(`${agentsInstalled} agents`);
|
|
1023
|
+
if (commandsInstalled > 0) summary.push(`${commandsInstalled} commands`);
|
|
1024
|
+
if (rulesInstalled > 0) summary.push(`${rulesInstalled} rules`);
|
|
1025
|
+
|
|
1026
|
+
this.printSuccess(`${metadata.displayName} installed (${summary.join(', ') || 'no resources'})`);
|
|
1027
|
+
} catch (error) {
|
|
1028
|
+
failedPlugins.push({ name: pluginName, error: error.message });
|
|
1029
|
+
this.printWarning(`Failed to install ${pluginName}: ${error.message}`);
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
// Store installation results in config
|
|
1034
|
+
this.currentConfig.installedPlugins = installedPlugins;
|
|
1035
|
+
this.currentConfig.failedPlugins = failedPlugins;
|
|
1036
|
+
|
|
1037
|
+
// Update config file with installation results
|
|
1038
|
+
const configPath = path.join(this.targetDir, '.claude', 'config.json');
|
|
1039
|
+
if (fs.existsSync(configPath)) {
|
|
1040
|
+
fs.writeFileSync(configPath, JSON.stringify(this.currentConfig, null, 2));
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
console.log('');
|
|
1044
|
+
if (installedPlugins.length > 0) {
|
|
1045
|
+
this.printMsg('GREEN', `✓ Successfully installed ${installedPlugins.length} plugin(s)`);
|
|
1046
|
+
}
|
|
1047
|
+
if (failedPlugins.length > 0) {
|
|
1048
|
+
this.printMsg('YELLOW', `⚠ Failed to install ${failedPlugins.length} plugin(s)`);
|
|
1049
|
+
this.printMsg('CYAN', '💡 Tip: Install missing plugins with: autopm plugin install <name>');
|
|
1050
|
+
}
|
|
1051
|
+
console.log('');
|
|
1052
|
+
}
|
|
1053
|
+
|
|
838
1054
|
setupMCPIntegration() {
|
|
839
1055
|
const mcpServersPath = path.join(this.targetDir, '.claude', 'mcp-servers.json');
|
|
840
1056
|
const configPath = path.join(this.targetDir, '.claude', 'config.json');
|
|
@@ -952,6 +1168,9 @@ See: https://github.com/rafeekpro/ClaudeAutoPM
|
|
|
952
1168
|
// Install configuration
|
|
953
1169
|
this.installConfig(scenario);
|
|
954
1170
|
|
|
1171
|
+
// Install plugins based on scenario
|
|
1172
|
+
await this.installPlugins();
|
|
1173
|
+
|
|
955
1174
|
// Install CLAUDE.md
|
|
956
1175
|
this.installClaudeMd();
|
|
957
1176
|
|