claude-autopm 2.8.1 → 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 +116 -8
- package/bin/autopm.js +2 -0
- package/bin/commands/plugin.js +395 -0
- package/bin/commands/team.js +184 -10
- package/install/install.js +223 -4
- package/lib/plugins/PluginManager.js +1328 -0
- package/lib/plugins/PluginManager.old.js +400 -0
- package/package.json +4 -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/README.md
CHANGED
|
@@ -283,16 +283,124 @@ autopm template:list
|
|
|
283
283
|
- 🔗 **Dependency Tracking** - Validate task dependencies automatically
|
|
284
284
|
- 📊 **Progress Auto-update** - Epic progress updates on task completion
|
|
285
285
|
|
|
286
|
-
###
|
|
286
|
+
### 🎉 **NEW in v2.1.0: Plugin-PM Published to NPM!**
|
|
287
287
|
|
|
288
|
-
|
|
288
|
+
**Complete PM Workflow Plugin** - Now available on npm with 87 PM commands
|
|
289
|
+
- 📦 **@claudeautopm/plugin-pm@2.1.0** - Published and ready to use
|
|
290
|
+
- 🎯 **87 PM Commands** - Epic management, tasks, issues, Azure DevOps integration
|
|
291
|
+
- 📦 **208 KB Compressed** - Fast downloads, 890 KB unpacked
|
|
292
|
+
- ⚡ **Zero Dependencies** - Works standalone or with core framework
|
|
293
|
+
- 🔍 **Auto-Discovery** - Commands discovered automatically via plugin.json
|
|
289
294
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
295
|
+
**Available on NPM:**
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# Install plugin-pm via npm
|
|
299
|
+
npm install @claudeautopm/plugin-pm@2.1.0
|
|
300
|
+
|
|
301
|
+
# Or install globally
|
|
302
|
+
npm install -g @claudeautopm/plugin-pm
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Package Links:**
|
|
306
|
+
- 📦 NPM: [https://www.npmjs.com/package/@claudeautopm/plugin-pm](https://www.npmjs.com/package/@claudeautopm/plugin-pm)
|
|
307
|
+
- 📖 GitHub: [https://github.com/rafeekpro/ClaudeAutoPM/tree/main/packages/plugin-pm](https://github.com/rafeekpro/ClaudeAutoPM/tree/main/packages/plugin-pm)
|
|
308
|
+
|
|
309
|
+
**What's Included:**
|
|
310
|
+
|
|
311
|
+
| Category | Commands | Description |
|
|
312
|
+
|----------|----------|-------------|
|
|
313
|
+
| **PM Commands** | 45 | Epic, issue, PRD, context, workflow management |
|
|
314
|
+
| **Azure DevOps** | 41 | Feature, task, user story, work item management |
|
|
315
|
+
| **GitHub** | 1 | Workflow creation and automation |
|
|
316
|
+
| **Total** | **87** | Complete PM workflow suite |
|
|
317
|
+
|
|
318
|
+
**Quick Start:**
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
# Install from npm
|
|
322
|
+
npm install @claudeautopm/plugin-pm@2.1.0
|
|
323
|
+
|
|
324
|
+
# Commands auto-discovered via plugin.json
|
|
325
|
+
# Use with ClaudeAutoPM CLI:
|
|
326
|
+
/pm:epic-decompose my-epic
|
|
327
|
+
/pm:task-sync
|
|
328
|
+
/azure:feature-new
|
|
329
|
+
/github:workflow-create
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**Features:**
|
|
333
|
+
- Epic Management: Decompose, start, close, sync, split, merge
|
|
334
|
+
- Task Management: Create, update, sync, analyze
|
|
335
|
+
- Issue Management: Analyze, start, close, sync, edit
|
|
336
|
+
- Azure DevOps: Full integration with work items and sprints
|
|
337
|
+
- GitHub: Workflow automation
|
|
338
|
+
- PRD Management: Parse, status, create, edit
|
|
339
|
+
|
|
340
|
+
### 🎉 **v2.8.1: Plugin Architecture!**
|
|
341
|
+
|
|
342
|
+
**Modular Agent System** - Agents organized into installable plugins
|
|
343
|
+
- 📦 **7 Official Plugins** - 35 specialized agents in thematic packages
|
|
344
|
+
- 🔌 **npm Workspaces** - Monorepo architecture with scoped packages
|
|
345
|
+
- 🏗️ **Context7-Driven** - Built on best practices from unplugin & npm
|
|
346
|
+
- ⚡ **Install on Demand** - Only load the agents you need
|
|
347
|
+
- 🔍 **Smart Discovery** - Automatic plugin detection and validation
|
|
348
|
+
|
|
349
|
+
**Available Plugins:**
|
|
350
|
+
|
|
351
|
+
| Plugin | Status | Description |
|
|
352
|
+
|--------|--------|-------------|
|
|
353
|
+
| **@claudeautopm/plugin-pm** | ✅ **Published** | 87 PM commands (epics, tasks, Azure, GitHub) |
|
|
354
|
+
| **@claudeautopm/plugin-cloud** | 📦 Coming Soon | AWS, Azure, GCP, Terraform, Kubernetes |
|
|
355
|
+
| **@claudeautopm/plugin-devops** | 📦 Coming Soon | Docker, GitHub Actions, Azure DevOps, SSH |
|
|
356
|
+
| **@claudeautopm/plugin-frameworks** | 📦 Coming Soon | React, Vue, Tailwind CSS, UX Design |
|
|
357
|
+
| **@claudeautopm/plugin-databases** | 📦 Coming Soon | PostgreSQL, MongoDB, Redis, BigQuery |
|
|
358
|
+
| **@claudeautopm/plugin-languages** | 📦 Coming Soon | JavaScript, TypeScript, Python, Node.js, Bash |
|
|
359
|
+
| **@claudeautopm/plugin-data** | 📦 Coming Soon | Airflow, Kedro, LangGraph workflows |
|
|
360
|
+
| **@claudeautopm/plugin-testing** | 📦 Coming Soon | Frontend testing, E2E, accessibility |
|
|
361
|
+
|
|
362
|
+
**Quick Start:**
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# Install published plugin
|
|
366
|
+
npm install @claudeautopm/plugin-pm
|
|
367
|
+
|
|
368
|
+
# Coming soon: Install other plugins
|
|
369
|
+
# npm install @claudeautopm/plugin-cloud
|
|
370
|
+
# npm install @claudeautopm/plugin-devops
|
|
371
|
+
|
|
372
|
+
# List available plugins
|
|
373
|
+
autopm plugin list
|
|
374
|
+
|
|
375
|
+
# Search for specific agents
|
|
376
|
+
autopm plugin search epic
|
|
377
|
+
|
|
378
|
+
# Get plugin info
|
|
379
|
+
autopm plugin info pm
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
**Architecture:**
|
|
383
|
+
- **PluginManager** - Context7-verified plugin system (unplugin patterns)
|
|
384
|
+
- **Factory Pattern** - Dynamic plugin instantiation
|
|
385
|
+
- **Event-Driven** - Hook system for extensibility
|
|
386
|
+
- **Version Compatibility** - Peer dependency validation (semver)
|
|
387
|
+
- **Persistent Registry** - Track installed/enabled state
|
|
388
|
+
|
|
389
|
+
📖 **[Plugin Architecture Guide](docs/PLUGIN-ARCHITECTURE.md)** - Complete documentation
|
|
390
|
+
|
|
391
|
+
### 🤖 **35 Specialized AI Agents** (Now in Plugins!)
|
|
392
|
+
|
|
393
|
+
Previously monolithic, now organized into installable plugins:
|
|
394
|
+
|
|
395
|
+
- **Core Agents** (4): agent-manager, code-analyzer, file-analyzer, test-runner
|
|
396
|
+
- **Cloud & Infrastructure** (8): AWS, Azure, GCP, Kubernetes, Terraform specialists
|
|
397
|
+
- **DevOps & CI/CD** (7): Docker, GitHub Actions, Azure DevOps, SSH, observability
|
|
398
|
+
- **Frontend & Frameworks** (6): React, Vue, Tailwind, UX design, E2E testing
|
|
399
|
+
- **Databases** (5): PostgreSQL, MongoDB, Redis, BigQuery, Cosmos DB
|
|
400
|
+
- **Programming Languages** (5): JavaScript, TypeScript, Python, Node.js, Bash
|
|
401
|
+
- **Data Engineering** (3): Airflow, Kedro, LangGraph workflow orchestration
|
|
402
|
+
|
|
403
|
+
**Migration:** Existing projects continue to work. New projects can use plugins for modular installation.
|
|
296
404
|
|
|
297
405
|
### 🔄 **Hybrid Execution Model**
|
|
298
406
|
|
package/bin/autopm.js
CHANGED
|
@@ -180,6 +180,8 @@ function main() {
|
|
|
180
180
|
.command(require('./commands/config'))
|
|
181
181
|
// MCP management command
|
|
182
182
|
.command(require('./commands/mcp'))
|
|
183
|
+
// Plugin management command
|
|
184
|
+
.command(require('./commands/plugin'))
|
|
183
185
|
// Epic management command (STANDALONE)
|
|
184
186
|
.command(require('../lib/cli/commands/epic'))
|
|
185
187
|
// Issue management command (STANDALONE)
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Command for autopm CLI
|
|
3
|
+
* Manages ClaudeAutoPM plugins
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* - list: List installed plugins
|
|
7
|
+
* - search: Search for plugins by keyword
|
|
8
|
+
* - install: Install a plugin
|
|
9
|
+
* - uninstall: Remove a plugin
|
|
10
|
+
* - info: Show plugin details
|
|
11
|
+
* - enable: Enable a plugin
|
|
12
|
+
* - disable: Disable a plugin
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const PluginManager = require('../../lib/plugins/PluginManager');
|
|
16
|
+
const chalk = require('chalk');
|
|
17
|
+
|
|
18
|
+
module.exports = {
|
|
19
|
+
command: 'plugin <action> [name]',
|
|
20
|
+
describe: 'Manage ClaudeAutoPM plugins',
|
|
21
|
+
|
|
22
|
+
builder: (yargs) => {
|
|
23
|
+
return yargs
|
|
24
|
+
.positional('action', {
|
|
25
|
+
describe: 'Plugin action to perform',
|
|
26
|
+
type: 'string',
|
|
27
|
+
choices: ['list', 'search', 'install', 'uninstall', 'info', 'enable', 'disable']
|
|
28
|
+
})
|
|
29
|
+
.positional('name', {
|
|
30
|
+
describe: 'Plugin name (without @claudeautopm/plugin- prefix)',
|
|
31
|
+
type: 'string'
|
|
32
|
+
})
|
|
33
|
+
.option('verbose', {
|
|
34
|
+
alias: 'v',
|
|
35
|
+
describe: 'Show detailed output',
|
|
36
|
+
type: 'boolean',
|
|
37
|
+
default: false
|
|
38
|
+
})
|
|
39
|
+
.example('autopm plugin list', 'List installed plugins')
|
|
40
|
+
.example('autopm plugin search cloud', 'Search for cloud-related plugins')
|
|
41
|
+
.example('autopm plugin install cloud', 'Install cloud plugin')
|
|
42
|
+
.example('autopm plugin uninstall cloud', 'Remove cloud plugin')
|
|
43
|
+
.example('autopm plugin info cloud', 'Show cloud plugin details')
|
|
44
|
+
.epilogue(`
|
|
45
|
+
📦 Plugin Management
|
|
46
|
+
|
|
47
|
+
Plugins extend ClaudeAutoPM with specialized agents for different technologies.
|
|
48
|
+
|
|
49
|
+
Available Official Plugins:
|
|
50
|
+
• cloud - AWS, Azure, GCP cloud architecture (9 agents)
|
|
51
|
+
• devops - Docker, K8s, CI/CD, monitoring (8 agents)
|
|
52
|
+
• frameworks - React, Next.js, Vue, Django (7 agents)
|
|
53
|
+
• databases - PostgreSQL, MongoDB, Redis (6 agents)
|
|
54
|
+
• languages - Node.js, Python, TypeScript (6 agents)
|
|
55
|
+
• data - Data engineering, ML, ETL (3 agents)
|
|
56
|
+
• decisions - Architecture advisors (3 agents)
|
|
57
|
+
|
|
58
|
+
Installation:
|
|
59
|
+
1. Install plugin package: npm install -g @claudeautopm/plugin-<name>
|
|
60
|
+
2. Install plugin agents: autopm plugin install <name>
|
|
61
|
+
|
|
62
|
+
Usage:
|
|
63
|
+
After installation, use 'autopm team load' to include plugin agents
|
|
64
|
+
or manually add @include directives to CLAUDE.md
|
|
65
|
+
`);
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
handler: async (argv) => {
|
|
69
|
+
const manager = new PluginManager();
|
|
70
|
+
|
|
71
|
+
try {
|
|
72
|
+
switch (argv.action) {
|
|
73
|
+
case 'list':
|
|
74
|
+
await handleList(manager, argv);
|
|
75
|
+
break;
|
|
76
|
+
case 'search':
|
|
77
|
+
if (!argv.name) {
|
|
78
|
+
console.error(chalk.red('Error: Search keyword required'));
|
|
79
|
+
console.log('Usage: autopm plugin search <keyword>');
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
await handleSearch(manager, argv.name, argv);
|
|
83
|
+
break;
|
|
84
|
+
case 'install':
|
|
85
|
+
if (!argv.name) {
|
|
86
|
+
console.error(chalk.red('Error: Plugin name required'));
|
|
87
|
+
console.log('Usage: autopm plugin install <name>');
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
await handleInstall(manager, argv.name, argv);
|
|
91
|
+
break;
|
|
92
|
+
case 'uninstall':
|
|
93
|
+
if (!argv.name) {
|
|
94
|
+
console.error(chalk.red('Error: Plugin name required'));
|
|
95
|
+
console.log('Usage: autopm plugin uninstall <name>');
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
await handleUninstall(manager, argv.name, argv);
|
|
99
|
+
break;
|
|
100
|
+
case 'info':
|
|
101
|
+
if (!argv.name) {
|
|
102
|
+
console.error(chalk.red('Error: Plugin name required'));
|
|
103
|
+
console.log('Usage: autopm plugin info <name>');
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
await handleInfo(manager, argv.name, argv);
|
|
107
|
+
break;
|
|
108
|
+
case 'enable':
|
|
109
|
+
if (!argv.name) {
|
|
110
|
+
console.error(chalk.red('Error: Plugin name required'));
|
|
111
|
+
console.log('Usage: autopm plugin enable <name>');
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
await handleEnable(manager, argv.name, argv);
|
|
115
|
+
break;
|
|
116
|
+
case 'disable':
|
|
117
|
+
if (!argv.name) {
|
|
118
|
+
console.error(chalk.red('Error: Plugin name required'));
|
|
119
|
+
console.log('Usage: autopm plugin disable <name>');
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
await handleDisable(manager, argv.name, argv);
|
|
123
|
+
break;
|
|
124
|
+
default:
|
|
125
|
+
console.error(chalk.red(`Unknown action: ${argv.action}`));
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
} catch (error) {
|
|
129
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
130
|
+
if (argv.verbose || argv.debug) {
|
|
131
|
+
console.error(error.stack);
|
|
132
|
+
}
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Handle 'list' command
|
|
140
|
+
*/
|
|
141
|
+
async function handleList(manager, argv) {
|
|
142
|
+
const installed = manager.getInstalledPlugins();
|
|
143
|
+
const enabled = manager.getEnabledPlugins();
|
|
144
|
+
|
|
145
|
+
console.log(chalk.bold('\n📦 Installed Plugins\n'));
|
|
146
|
+
|
|
147
|
+
if (installed.length === 0) {
|
|
148
|
+
console.log('No plugins installed.\n');
|
|
149
|
+
console.log('💡 Tip: Run ' + chalk.cyan('autopm plugin search <keyword>') + ' to find plugins');
|
|
150
|
+
console.log(' Or install directly: ' + chalk.cyan('autopm plugin install <name>'));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
for (const pluginName of installed) {
|
|
155
|
+
try {
|
|
156
|
+
const metadata = await manager.loadPluginMetadata(pluginName);
|
|
157
|
+
const isEnabled = enabled.includes(pluginName);
|
|
158
|
+
const statusIcon = isEnabled ? chalk.green('✓') : chalk.gray('○');
|
|
159
|
+
const statusText = isEnabled ? chalk.green('enabled') : chalk.gray('disabled');
|
|
160
|
+
|
|
161
|
+
console.log(`${statusIcon} ${chalk.bold(metadata.displayName)} ${chalk.gray(`(@claudeautopm/${pluginName})`)}`);
|
|
162
|
+
console.log(` ${metadata.description}`);
|
|
163
|
+
console.log(` ${chalk.gray(`Category: ${metadata.category} | Agents: ${metadata.agents.length} | Status: ${statusText}`)}`);
|
|
164
|
+
|
|
165
|
+
if (argv.verbose) {
|
|
166
|
+
console.log(` ${chalk.gray(`Version: ${metadata.version}`)}`);
|
|
167
|
+
console.log(` ${chalk.gray(`Agents: ${metadata.agents.map(a => a.name).join(', ')}`)}`);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
console.log('');
|
|
171
|
+
} catch (error) {
|
|
172
|
+
console.log(`${chalk.red('✗')} ${chalk.bold(pluginName)} ${chalk.red('(error loading)')}`);
|
|
173
|
+
if (argv.verbose) {
|
|
174
|
+
console.log(` ${chalk.red(error.message)}`);
|
|
175
|
+
}
|
|
176
|
+
console.log('');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
console.log(chalk.gray(`Total: ${installed.length} installed, ${enabled.length} enabled`));
|
|
181
|
+
console.log('');
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Handle 'search' command
|
|
186
|
+
*/
|
|
187
|
+
async function handleSearch(manager, keyword, argv) {
|
|
188
|
+
console.log(chalk.bold(`\n🔍 Searching for: "${keyword}"\n`));
|
|
189
|
+
|
|
190
|
+
const results = await manager.searchPlugins(keyword);
|
|
191
|
+
|
|
192
|
+
if (results.length === 0) {
|
|
193
|
+
console.log('No plugins found matching your search.\n');
|
|
194
|
+
console.log('💡 Tip: Try different keywords or check available plugins:');
|
|
195
|
+
console.log(' ' + chalk.cyan('autopm plugin list --all'));
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
for (const plugin of results) {
|
|
200
|
+
const isInstalled = manager.isInstalled(plugin.pluginName);
|
|
201
|
+
const installIcon = isInstalled ? chalk.green('✓ installed') : chalk.gray('not installed');
|
|
202
|
+
|
|
203
|
+
console.log(`${chalk.bold(plugin.displayName)} ${chalk.gray(`(@claudeautopm/${plugin.pluginName})`)}`);
|
|
204
|
+
console.log(` ${plugin.description}`);
|
|
205
|
+
console.log(` ${chalk.gray(`Category: ${plugin.category} | Agents: ${plugin.agents.length} | ${installIcon}`)}`);
|
|
206
|
+
|
|
207
|
+
if (argv.verbose && plugin.agents.length > 0) {
|
|
208
|
+
console.log(` ${chalk.gray(`Agents: ${plugin.agents.map(a => a.name).join(', ')}`)}`);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
console.log('');
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
console.log(chalk.gray(`Found ${results.length} plugin(s)`));
|
|
215
|
+
console.log('');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Handle 'install' command
|
|
220
|
+
*/
|
|
221
|
+
async function handleInstall(manager, pluginName, argv) {
|
|
222
|
+
const fullPluginName = pluginName.startsWith('plugin-') ? pluginName : `plugin-${pluginName}`;
|
|
223
|
+
|
|
224
|
+
console.log(chalk.bold(`\n📦 Installing plugin: ${pluginName}\n`));
|
|
225
|
+
|
|
226
|
+
// Check if already installed
|
|
227
|
+
if (manager.isInstalled(fullPluginName)) {
|
|
228
|
+
console.log(chalk.yellow(`⚠ Plugin ${pluginName} is already installed`));
|
|
229
|
+
console.log('');
|
|
230
|
+
console.log('To reinstall, first uninstall:');
|
|
231
|
+
console.log(` ${chalk.cyan(`autopm plugin uninstall ${pluginName}`)}`);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Check if npm package exists
|
|
236
|
+
const { execSync } = require('child_process');
|
|
237
|
+
let packageInstalled = false;
|
|
238
|
+
|
|
239
|
+
try {
|
|
240
|
+
execSync(`npm list -g @claudeautopm/${fullPluginName}`, { stdio: 'ignore' });
|
|
241
|
+
packageInstalled = true;
|
|
242
|
+
} catch {
|
|
243
|
+
// Package not installed
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Install npm package if needed
|
|
247
|
+
if (!packageInstalled) {
|
|
248
|
+
console.log(chalk.gray('Installing npm package...'));
|
|
249
|
+
try {
|
|
250
|
+
execSync(`npm install -g @claudeautopm/${fullPluginName}`, { stdio: 'inherit' });
|
|
251
|
+
console.log('');
|
|
252
|
+
} catch (error) {
|
|
253
|
+
console.error(chalk.red(`\n✗ Failed to install npm package: @claudeautopm/${fullPluginName}`));
|
|
254
|
+
console.error(chalk.gray('Make sure the package exists on npm'));
|
|
255
|
+
process.exit(1);
|
|
256
|
+
}
|
|
257
|
+
} else {
|
|
258
|
+
console.log(chalk.gray(`npm package already installed: @claudeautopm/${fullPluginName}`));
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Install plugin agents
|
|
262
|
+
console.log(chalk.gray('Installing plugin agents...'));
|
|
263
|
+
const result = await manager.installPlugin(fullPluginName);
|
|
264
|
+
|
|
265
|
+
console.log(chalk.green(`\n✓ Plugin installed successfully!`));
|
|
266
|
+
console.log('');
|
|
267
|
+
console.log(` ${chalk.bold(result.displayName)}`);
|
|
268
|
+
console.log(` Category: ${result.category}`);
|
|
269
|
+
console.log(` Agents installed: ${result.agentsInstalled}`);
|
|
270
|
+
|
|
271
|
+
if (argv.verbose) {
|
|
272
|
+
console.log('');
|
|
273
|
+
console.log(' Installed agents:');
|
|
274
|
+
for (const agent of result.agents) {
|
|
275
|
+
console.log(` • ${agent.name}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
console.log('');
|
|
280
|
+
console.log(chalk.bold('Next steps:'));
|
|
281
|
+
console.log(` 1. Load agents: ${chalk.cyan('autopm team load <team>')}`);
|
|
282
|
+
console.log(` 2. Or manually add to CLAUDE.md:`);
|
|
283
|
+
console.log(` ${chalk.gray(`- @include .claude/agents/${result.category}/<agent>.md`)}`);
|
|
284
|
+
console.log('');
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Handle 'uninstall' command
|
|
289
|
+
*/
|
|
290
|
+
async function handleUninstall(manager, pluginName, argv) {
|
|
291
|
+
const fullPluginName = pluginName.startsWith('plugin-') ? pluginName : `plugin-${pluginName}`;
|
|
292
|
+
|
|
293
|
+
console.log(chalk.bold(`\n📦 Uninstalling plugin: ${pluginName}\n`));
|
|
294
|
+
|
|
295
|
+
// Check if installed
|
|
296
|
+
if (!manager.isInstalled(fullPluginName)) {
|
|
297
|
+
console.log(chalk.yellow(`⚠ Plugin ${pluginName} is not installed`));
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// Uninstall plugin agents
|
|
302
|
+
const result = await manager.uninstallPlugin(fullPluginName);
|
|
303
|
+
|
|
304
|
+
console.log(chalk.green(`✓ Plugin uninstalled successfully!`));
|
|
305
|
+
console.log('');
|
|
306
|
+
console.log(` Agents removed: ${result.agentsRemoved}`);
|
|
307
|
+
|
|
308
|
+
if (argv.verbose && result.agents.length > 0) {
|
|
309
|
+
console.log('');
|
|
310
|
+
console.log(' Removed agents:');
|
|
311
|
+
for (const agentName of result.agents) {
|
|
312
|
+
console.log(` • ${agentName}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
console.log('');
|
|
317
|
+
console.log(chalk.gray('Note: npm package not removed. To remove completely:'));
|
|
318
|
+
console.log(` ${chalk.cyan(`npm uninstall -g @claudeautopm/${fullPluginName}`)}`);
|
|
319
|
+
console.log('');
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Handle 'info' command
|
|
324
|
+
*/
|
|
325
|
+
async function handleInfo(manager, pluginName, argv) {
|
|
326
|
+
const fullPluginName = pluginName.startsWith('plugin-') ? pluginName : `plugin-${pluginName}`;
|
|
327
|
+
|
|
328
|
+
try {
|
|
329
|
+
const info = await manager.getPluginInfo(fullPluginName);
|
|
330
|
+
|
|
331
|
+
console.log(chalk.bold(`\n📦 ${info.displayName}\n`));
|
|
332
|
+
console.log(`${info.description}\n`);
|
|
333
|
+
|
|
334
|
+
console.log(chalk.bold('Details:'));
|
|
335
|
+
console.log(` Package: ${chalk.cyan(`@claudeautopm/${fullPluginName}`)}`);
|
|
336
|
+
console.log(` Version: ${info.version}`);
|
|
337
|
+
console.log(` Category: ${info.category}`);
|
|
338
|
+
console.log(` Status: ${info.installed ? chalk.green('installed') : chalk.gray('not installed')}`);
|
|
339
|
+
if (info.installed) {
|
|
340
|
+
console.log(` Enabled: ${info.enabled ? chalk.green('yes') : chalk.gray('no')}`);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
console.log('');
|
|
344
|
+
console.log(chalk.bold(`Agents (${info.agents.length}):`));
|
|
345
|
+
for (const agent of info.agents) {
|
|
346
|
+
console.log(` • ${chalk.bold(agent.name)}`);
|
|
347
|
+
console.log(` ${chalk.gray(agent.description)}`);
|
|
348
|
+
if (argv.verbose) {
|
|
349
|
+
console.log(` ${chalk.gray(`File: ${agent.file}`)}`);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
if (info.keywords && info.keywords.length > 0) {
|
|
354
|
+
console.log('');
|
|
355
|
+
console.log(`Keywords: ${chalk.gray(info.keywords.join(', '))}`);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
console.log('');
|
|
359
|
+
} catch (error) {
|
|
360
|
+
console.error(chalk.red(`\n✗ Plugin not found: ${pluginName}`));
|
|
361
|
+
console.error(chalk.gray(`Package @claudeautopm/${fullPluginName} not installed`));
|
|
362
|
+
console.log('');
|
|
363
|
+
console.log('To install:');
|
|
364
|
+
console.log(` ${chalk.cyan(`autopm plugin install ${pluginName}`)}`);
|
|
365
|
+
console.log('');
|
|
366
|
+
process.exit(1);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Handle 'enable' command
|
|
372
|
+
*/
|
|
373
|
+
async function handleEnable(manager, pluginName, argv) {
|
|
374
|
+
const fullPluginName = pluginName.startsWith('plugin-') ? pluginName : `plugin-${pluginName}`;
|
|
375
|
+
|
|
376
|
+
try {
|
|
377
|
+
manager.enablePlugin(fullPluginName);
|
|
378
|
+
console.log(chalk.green(`\n✓ Plugin enabled: ${pluginName}\n`));
|
|
379
|
+
} catch (error) {
|
|
380
|
+
console.error(chalk.red(`\n✗ ${error.message}\n`));
|
|
381
|
+
process.exit(1);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Handle 'disable' command
|
|
387
|
+
*/
|
|
388
|
+
async function handleDisable(manager, pluginName, argv) {
|
|
389
|
+
const fullPluginName = pluginName.startsWith('plugin-') ? pluginName : `plugin-${pluginName}`;
|
|
390
|
+
|
|
391
|
+
manager.disablePlugin(fullPluginName);
|
|
392
|
+
console.log(chalk.yellow(`\n⚠ Plugin disabled: ${pluginName}\n`));
|
|
393
|
+
console.log(chalk.gray('Note: Agents remain in .claude/agents/ but plugin is marked as disabled'));
|
|
394
|
+
console.log('');
|
|
395
|
+
}
|