claude-autopm 2.8.1 → 2.8.3

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.
Files changed (450) hide show
  1. package/README.md +399 -529
  2. package/bin/autopm.js +2 -0
  3. package/bin/commands/plugin.js +395 -0
  4. package/bin/commands/team.js +184 -10
  5. package/install/install.js +223 -4
  6. package/lib/plugins/PluginManager.js +1328 -0
  7. package/lib/plugins/PluginManager.old.js +400 -0
  8. package/package.json +5 -1
  9. package/packages/plugin-ai/LICENSE +21 -0
  10. package/packages/plugin-ai/README.md +316 -0
  11. package/packages/plugin-ai/agents/anthropic-claude-expert.md +579 -0
  12. package/packages/plugin-ai/agents/azure-openai-expert.md +1411 -0
  13. package/packages/plugin-ai/agents/google-a2a-expert.md +1445 -0
  14. package/packages/plugin-ai/agents/huggingface-expert.md +2131 -0
  15. package/packages/plugin-ai/agents/langchain-expert.md +1427 -0
  16. package/packages/plugin-ai/commands/a2a-setup.md +886 -0
  17. package/packages/plugin-ai/commands/ai-model-deployment.md +481 -0
  18. package/packages/plugin-ai/commands/anthropic-optimize.md +793 -0
  19. package/packages/plugin-ai/commands/huggingface-deploy.md +789 -0
  20. package/packages/plugin-ai/commands/langchain-optimize.md +807 -0
  21. package/packages/plugin-ai/commands/llm-optimize.md +348 -0
  22. package/packages/plugin-ai/commands/openai-optimize.md +863 -0
  23. package/packages/plugin-ai/commands/rag-optimize.md +841 -0
  24. package/packages/plugin-ai/commands/rag-setup-scaffold.md +382 -0
  25. package/packages/plugin-ai/package.json +66 -0
  26. package/packages/plugin-ai/plugin.json +519 -0
  27. package/packages/plugin-ai/rules/ai-model-standards.md +449 -0
  28. package/packages/plugin-ai/rules/prompt-engineering-standards.md +509 -0
  29. package/packages/plugin-ai/scripts/examples/huggingface-inference-example.py +145 -0
  30. package/packages/plugin-ai/scripts/examples/langchain-rag-example.py +366 -0
  31. package/packages/plugin-ai/scripts/examples/mlflow-tracking-example.py +224 -0
  32. package/packages/plugin-ai/scripts/examples/openai-chat-example.py +425 -0
  33. package/packages/plugin-cloud/README.md +268 -0
  34. package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
  35. package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
  36. package/packages/plugin-cloud/commands/cloud-cost-optimize.md +243 -0
  37. package/packages/plugin-cloud/commands/cloud-validate.md +196 -0
  38. package/packages/plugin-cloud/hooks/pre-cloud-deploy.js +456 -0
  39. package/packages/plugin-cloud/package.json +64 -0
  40. package/packages/plugin-cloud/plugin.json +338 -0
  41. package/packages/plugin-cloud/rules/cloud-security-compliance.md +313 -0
  42. package/packages/plugin-cloud/scripts/examples/aws-validate.sh +30 -0
  43. package/packages/plugin-cloud/scripts/examples/azure-setup.sh +33 -0
  44. package/packages/plugin-cloud/scripts/examples/gcp-setup.sh +39 -0
  45. package/packages/plugin-cloud/scripts/examples/k8s-validate.sh +40 -0
  46. package/packages/plugin-cloud/scripts/examples/terraform-init.sh +26 -0
  47. package/packages/plugin-core/README.md +274 -0
  48. package/packages/plugin-core/commands/code-rabbit.md +128 -0
  49. package/packages/plugin-core/commands/prompt.md +9 -0
  50. package/packages/plugin-core/commands/re-init.md +9 -0
  51. package/packages/plugin-core/hooks/context7-reminder.md +29 -0
  52. package/packages/plugin-core/hooks/enforce-agents.js +125 -0
  53. package/packages/plugin-core/hooks/enforce-agents.sh +35 -0
  54. package/packages/plugin-core/hooks/pre-agent-context7.js +224 -0
  55. package/packages/plugin-core/hooks/pre-command-context7.js +229 -0
  56. package/packages/plugin-core/hooks/strict-enforce-agents.sh +39 -0
  57. package/packages/plugin-core/hooks/test-hook.sh +21 -0
  58. package/packages/plugin-core/hooks/unified-context7-enforcement.sh +38 -0
  59. package/packages/plugin-core/package.json +45 -0
  60. package/packages/plugin-core/plugin.json +387 -0
  61. package/packages/plugin-core/rules/agent-coordination.md +549 -0
  62. package/packages/plugin-core/rules/agent-mandatory.md +170 -0
  63. package/packages/plugin-core/rules/command-pipelines.md +208 -0
  64. package/packages/plugin-core/rules/context-optimization.md +176 -0
  65. package/packages/plugin-core/rules/context7-enforcement.md +327 -0
  66. package/packages/plugin-core/rules/datetime.md +122 -0
  67. package/packages/plugin-core/rules/definition-of-done.md +272 -0
  68. package/packages/plugin-core/rules/development-environments.md +19 -0
  69. package/packages/plugin-core/rules/development-workflow.md +198 -0
  70. package/packages/plugin-core/rules/framework-path-rules.md +180 -0
  71. package/packages/plugin-core/rules/frontmatter-operations.md +64 -0
  72. package/packages/plugin-core/rules/git-strategy.md +237 -0
  73. package/packages/plugin-core/rules/golden-rules.md +181 -0
  74. package/packages/plugin-core/rules/naming-conventions.md +111 -0
  75. package/packages/plugin-core/rules/no-pr-workflow.md +183 -0
  76. package/packages/plugin-core/rules/pipeline-mandatory.md +109 -0
  77. package/packages/plugin-core/rules/security-checklist.md +318 -0
  78. package/packages/plugin-core/rules/standard-patterns.md +197 -0
  79. package/packages/plugin-core/rules/strip-frontmatter.md +85 -0
  80. package/packages/plugin-core/rules/tdd.enforcement.md +103 -0
  81. package/packages/plugin-core/rules/use-ast-grep.md +113 -0
  82. package/packages/plugin-core/scripts/lib/datetime-utils.sh +254 -0
  83. package/packages/plugin-core/scripts/lib/frontmatter-utils.sh +294 -0
  84. package/packages/plugin-core/scripts/lib/github-utils.sh +221 -0
  85. package/packages/plugin-core/scripts/lib/logging-utils.sh +199 -0
  86. package/packages/plugin-core/scripts/lib/validation-utils.sh +339 -0
  87. package/packages/plugin-core/scripts/mcp/add.sh +7 -0
  88. package/packages/plugin-core/scripts/mcp/disable.sh +12 -0
  89. package/packages/plugin-core/scripts/mcp/enable.sh +12 -0
  90. package/packages/plugin-core/scripts/mcp/list.sh +7 -0
  91. package/packages/plugin-core/scripts/mcp/sync.sh +8 -0
  92. package/packages/plugin-data/README.md +315 -0
  93. package/packages/plugin-data/agents/airflow-orchestration-expert.md +158 -0
  94. package/packages/plugin-data/agents/kedro-pipeline-expert.md +304 -0
  95. package/packages/plugin-data/agents/langgraph-workflow-expert.md +530 -0
  96. package/packages/plugin-data/commands/airflow-dag-scaffold.md +413 -0
  97. package/packages/plugin-data/commands/kafka-pipeline-scaffold.md +503 -0
  98. package/packages/plugin-data/package.json +66 -0
  99. package/packages/plugin-data/plugin.json +294 -0
  100. package/packages/plugin-data/rules/data-quality-standards.md +373 -0
  101. package/packages/plugin-data/rules/etl-pipeline-standards.md +255 -0
  102. package/packages/plugin-data/scripts/examples/airflow-dag-example.py +245 -0
  103. package/packages/plugin-data/scripts/examples/dbt-transform-example.sql +238 -0
  104. package/packages/plugin-data/scripts/examples/kafka-streaming-example.py +257 -0
  105. package/packages/plugin-data/scripts/examples/pandas-etl-example.py +332 -0
  106. package/packages/plugin-databases/README.md +330 -0
  107. package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/bigquery-expert.md +24 -15
  108. package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/cosmosdb-expert.md +22 -15
  109. package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/mongodb-expert.md +24 -15
  110. package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/postgresql-expert.md +23 -15
  111. package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/redis-expert.md +29 -7
  112. package/packages/plugin-databases/commands/db-optimize.md +612 -0
  113. package/packages/plugin-databases/package.json +60 -0
  114. package/packages/plugin-databases/plugin.json +237 -0
  115. package/packages/plugin-databases/rules/database-management-strategy.md +146 -0
  116. package/packages/plugin-databases/rules/database-pipeline.md +316 -0
  117. package/packages/plugin-databases/scripts/examples/bigquery-cost-analyze.sh +160 -0
  118. package/packages/plugin-databases/scripts/examples/cosmosdb-ru-optimize.sh +163 -0
  119. package/packages/plugin-databases/scripts/examples/mongodb-shard-check.sh +120 -0
  120. package/packages/plugin-databases/scripts/examples/postgres-index-analyze.sh +95 -0
  121. package/packages/plugin-databases/scripts/examples/redis-cache-stats.sh +121 -0
  122. package/packages/plugin-devops/README.md +367 -0
  123. package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/github-operations-specialist.md +1 -1
  124. package/packages/plugin-devops/commands/ci-pipeline-create.md +581 -0
  125. package/packages/plugin-devops/commands/docker-optimize.md +493 -0
  126. package/packages/plugin-devops/hooks/pre-docker-build.js +472 -0
  127. package/packages/plugin-devops/package.json +61 -0
  128. package/packages/plugin-devops/plugin.json +302 -0
  129. package/packages/plugin-devops/rules/github-operations.md +92 -0
  130. package/packages/plugin-devops/scripts/examples/docker-build-multistage.sh +43 -0
  131. package/packages/plugin-devops/scripts/examples/docker-compose-validate.sh +74 -0
  132. package/packages/plugin-devops/scripts/examples/github-workflow-validate.sh +48 -0
  133. package/packages/plugin-devops/scripts/examples/prometheus-health-check.sh +58 -0
  134. package/packages/plugin-devops/scripts/examples/ssh-key-setup.sh +74 -0
  135. package/packages/plugin-frameworks/README.md +309 -0
  136. package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/e2e-test-engineer.md +219 -0
  137. package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/react-frontend-engineer.md +176 -0
  138. package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/tailwindcss-expert.md +251 -0
  139. package/packages/plugin-frameworks/commands/nextjs-optimize.md +692 -0
  140. package/packages/plugin-frameworks/commands/react-optimize.md +583 -0
  141. package/packages/plugin-frameworks/package.json +59 -0
  142. package/packages/plugin-frameworks/plugin.json +224 -0
  143. package/packages/plugin-frameworks/rules/performance-guidelines.md +403 -0
  144. package/packages/plugin-frameworks/scripts/examples/react-component-perf.sh +34 -0
  145. package/packages/plugin-frameworks/scripts/examples/tailwind-optimize.sh +44 -0
  146. package/packages/plugin-frameworks/scripts/examples/vue-composition-check.sh +41 -0
  147. package/packages/plugin-languages/README.md +333 -0
  148. package/packages/plugin-languages/commands/javascript-optimize.md +636 -0
  149. package/packages/plugin-languages/commands/nodejs-api-scaffold.md +341 -0
  150. package/packages/plugin-languages/commands/nodejs-optimize.md +689 -0
  151. package/packages/plugin-languages/commands/python-api-scaffold.md +261 -0
  152. package/packages/plugin-languages/commands/python-optimize.md +593 -0
  153. package/packages/plugin-languages/package.json +65 -0
  154. package/packages/plugin-languages/plugin.json +265 -0
  155. package/packages/plugin-languages/rules/code-quality-standards.md +496 -0
  156. package/packages/plugin-languages/rules/testing-standards.md +768 -0
  157. package/packages/plugin-languages/scripts/examples/bash-production-script.sh +520 -0
  158. package/packages/plugin-languages/scripts/examples/javascript-es6-patterns.js +291 -0
  159. package/packages/plugin-languages/scripts/examples/nodejs-async-iteration.js +360 -0
  160. package/packages/plugin-languages/scripts/examples/python-async-patterns.py +289 -0
  161. package/packages/plugin-languages/scripts/examples/typescript-patterns.ts +432 -0
  162. package/packages/plugin-ml/README.md +430 -0
  163. package/packages/plugin-ml/agents/automl-expert.md +326 -0
  164. package/packages/plugin-ml/agents/computer-vision-expert.md +550 -0
  165. package/packages/plugin-ml/agents/gradient-boosting-expert.md +455 -0
  166. package/packages/plugin-ml/agents/neural-network-architect.md +1228 -0
  167. package/packages/plugin-ml/agents/nlp-transformer-expert.md +584 -0
  168. package/packages/plugin-ml/agents/pytorch-expert.md +412 -0
  169. package/packages/plugin-ml/agents/reinforcement-learning-expert.md +2088 -0
  170. package/packages/plugin-ml/agents/scikit-learn-expert.md +228 -0
  171. package/packages/plugin-ml/agents/tensorflow-keras-expert.md +509 -0
  172. package/packages/plugin-ml/agents/time-series-expert.md +303 -0
  173. package/packages/plugin-ml/commands/ml-automl.md +572 -0
  174. package/packages/plugin-ml/commands/ml-train-optimize.md +657 -0
  175. package/packages/plugin-ml/package.json +52 -0
  176. package/packages/plugin-ml/plugin.json +338 -0
  177. package/packages/plugin-pm/README.md +368 -0
  178. package/packages/plugin-pm/claudeautopm-plugin-pm-2.0.0.tgz +0 -0
  179. package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
  180. package/packages/plugin-pm/package.json +57 -0
  181. package/packages/plugin-pm/plugin.json +503 -0
  182. package/packages/plugin-testing/README.md +401 -0
  183. package/{autopm/.claude/agents/testing → packages/plugin-testing/agents}/frontend-testing-engineer.md +373 -0
  184. package/packages/plugin-testing/commands/jest-optimize.md +800 -0
  185. package/packages/plugin-testing/commands/playwright-optimize.md +887 -0
  186. package/packages/plugin-testing/commands/test-coverage.md +512 -0
  187. package/packages/plugin-testing/commands/test-performance.md +1041 -0
  188. package/packages/plugin-testing/commands/test-setup.md +414 -0
  189. package/packages/plugin-testing/package.json +40 -0
  190. package/packages/plugin-testing/plugin.json +197 -0
  191. package/packages/plugin-testing/rules/test-coverage-requirements.md +581 -0
  192. package/packages/plugin-testing/rules/testing-standards.md +529 -0
  193. package/packages/plugin-testing/scripts/examples/react-testing-example.test.jsx +460 -0
  194. package/packages/plugin-testing/scripts/examples/vitest-config-example.js +352 -0
  195. package/packages/plugin-testing/scripts/examples/vue-testing-example.test.js +586 -0
  196. package/scripts/publish-plugins.sh +166 -0
  197. package/autopm/.claude/agents/data/airflow-orchestration-expert.md +0 -52
  198. package/autopm/.claude/agents/data/kedro-pipeline-expert.md +0 -50
  199. package/autopm/.claude/agents/integration/message-queue-engineer.md +0 -794
  200. package/autopm/.claude/commands/ai/langgraph-workflow.md +0 -65
  201. package/autopm/.claude/commands/ai/openai-chat.md +0 -65
  202. package/autopm/.claude/commands/playwright/test-scaffold.md +0 -38
  203. package/autopm/.claude/commands/python/api-scaffold.md +0 -50
  204. package/autopm/.claude/commands/python/docs-query.md +0 -48
  205. package/autopm/.claude/commands/testing/prime.md +0 -314
  206. package/autopm/.claude/commands/testing/run.md +0 -125
  207. package/autopm/.claude/commands/ui/bootstrap-scaffold.md +0 -65
  208. package/autopm/.claude/rules/database-management-strategy.md +0 -17
  209. package/autopm/.claude/rules/database-pipeline.md +0 -94
  210. package/autopm/.claude/rules/ux-design-rules.md +0 -209
  211. package/autopm/.claude/rules/visual-testing.md +0 -223
  212. package/autopm/.claude/scripts/azure/README.md +0 -192
  213. package/autopm/.claude/scripts/azure/active-work.js +0 -524
  214. package/autopm/.claude/scripts/azure/active-work.sh +0 -20
  215. package/autopm/.claude/scripts/azure/blocked.js +0 -520
  216. package/autopm/.claude/scripts/azure/blocked.sh +0 -20
  217. package/autopm/.claude/scripts/azure/daily.js +0 -533
  218. package/autopm/.claude/scripts/azure/daily.sh +0 -20
  219. package/autopm/.claude/scripts/azure/dashboard.js +0 -970
  220. package/autopm/.claude/scripts/azure/dashboard.sh +0 -20
  221. package/autopm/.claude/scripts/azure/feature-list.js +0 -254
  222. package/autopm/.claude/scripts/azure/feature-list.sh +0 -20
  223. package/autopm/.claude/scripts/azure/feature-show.js +0 -7
  224. package/autopm/.claude/scripts/azure/feature-show.sh +0 -20
  225. package/autopm/.claude/scripts/azure/feature-status.js +0 -604
  226. package/autopm/.claude/scripts/azure/feature-status.sh +0 -20
  227. package/autopm/.claude/scripts/azure/help.js +0 -342
  228. package/autopm/.claude/scripts/azure/help.sh +0 -20
  229. package/autopm/.claude/scripts/azure/next-task.js +0 -508
  230. package/autopm/.claude/scripts/azure/next-task.sh +0 -20
  231. package/autopm/.claude/scripts/azure/search.js +0 -469
  232. package/autopm/.claude/scripts/azure/search.sh +0 -20
  233. package/autopm/.claude/scripts/azure/setup.js +0 -745
  234. package/autopm/.claude/scripts/azure/setup.sh +0 -20
  235. package/autopm/.claude/scripts/azure/sprint-report.js +0 -1012
  236. package/autopm/.claude/scripts/azure/sprint-report.sh +0 -20
  237. package/autopm/.claude/scripts/azure/sync.js +0 -563
  238. package/autopm/.claude/scripts/azure/sync.sh +0 -20
  239. package/autopm/.claude/scripts/azure/us-list.js +0 -210
  240. package/autopm/.claude/scripts/azure/us-list.sh +0 -20
  241. package/autopm/.claude/scripts/azure/us-status.js +0 -238
  242. package/autopm/.claude/scripts/azure/us-status.sh +0 -20
  243. package/autopm/.claude/scripts/azure/validate.js +0 -626
  244. package/autopm/.claude/scripts/azure/validate.sh +0 -20
  245. package/autopm/.claude/scripts/azure/wrapper-template.sh +0 -20
  246. package/autopm/.claude/scripts/github/dependency-tracker.js +0 -554
  247. package/autopm/.claude/scripts/github/dependency-validator.js +0 -545
  248. package/autopm/.claude/scripts/github/dependency-visualizer.js +0 -477
  249. package/bin/node/azure-feature-show.js +0 -7
  250. /package/{autopm/.claude/agents/cloud → packages/plugin-ai/agents}/gemini-api-expert.md +0 -0
  251. /package/{autopm/.claude/agents/data → packages/plugin-ai/agents}/langgraph-workflow-expert.md +0 -0
  252. /package/{autopm/.claude/agents/cloud → packages/plugin-ai/agents}/openai-python-expert.md +0 -0
  253. /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/README.md +0 -0
  254. /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/aws-cloud-architect.md +0 -0
  255. /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/azure-cloud-architect.md +0 -0
  256. /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/gcp-cloud-architect.md +0 -0
  257. /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/gcp-cloud-functions-engineer.md +0 -0
  258. /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/kubernetes-orchestrator.md +0 -0
  259. /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/terraform-infrastructure-expert.md +0 -0
  260. /package/{autopm/.claude/commands/cloud → packages/plugin-cloud/commands}/infra-deploy.md +0 -0
  261. /package/{autopm/.claude/commands/kubernetes/deploy.md → packages/plugin-cloud/commands/k8s-deploy.md} +0 -0
  262. /package/{autopm/.claude/commands/infrastructure → packages/plugin-cloud/commands}/ssh-security.md +0 -0
  263. /package/{autopm/.claude/commands/infrastructure → packages/plugin-cloud/commands}/traefik-setup.md +0 -0
  264. /package/{autopm/.claude → packages/plugin-cloud}/rules/infrastructure-pipeline.md +0 -0
  265. /package/{autopm/.claude → packages/plugin-core}/agents/core/agent-manager.md +0 -0
  266. /package/{autopm/.claude → packages/plugin-core}/agents/core/code-analyzer.md +0 -0
  267. /package/{autopm/.claude → packages/plugin-core}/agents/core/file-analyzer.md +0 -0
  268. /package/{autopm/.claude → packages/plugin-core}/agents/core/test-runner.md +0 -0
  269. /package/{autopm/.claude → packages/plugin-core}/rules/ai-integration-patterns.md +0 -0
  270. /package/{autopm/.claude → packages/plugin-core}/rules/performance-guidelines.md +0 -0
  271. /package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/README.md +0 -0
  272. /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/README.md +0 -0
  273. /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/azure-devops-specialist.md +0 -0
  274. /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/docker-containerization-expert.md +0 -0
  275. /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/mcp-context-manager.md +0 -0
  276. /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/observability-engineer.md +0 -0
  277. /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/ssh-operations-expert.md +0 -0
  278. /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/traefik-proxy-expert.md +0 -0
  279. /package/{autopm/.claude/commands/github → packages/plugin-devops/commands}/workflow-create.md +0 -0
  280. /package/{autopm/.claude → packages/plugin-devops}/rules/ci-cd-kubernetes-strategy.md +0 -0
  281. /package/{autopm/.claude → packages/plugin-devops}/rules/devops-troubleshooting-playbook.md +0 -0
  282. /package/{autopm/.claude → packages/plugin-devops}/rules/docker-first-development.md +0 -0
  283. /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/README.md +0 -0
  284. /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/nats-messaging-expert.md +0 -0
  285. /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/react-ui-expert.md +0 -0
  286. /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/ux-design-expert.md +0 -0
  287. /package/{autopm/.claude/commands/react → packages/plugin-frameworks/commands}/app-scaffold.md +0 -0
  288. /package/{autopm/.claude/commands/ui → packages/plugin-frameworks/commands}/tailwind-system.md +0 -0
  289. /package/{autopm/.claude → packages/plugin-frameworks}/rules/ui-development-standards.md +0 -0
  290. /package/{autopm/.claude → packages/plugin-frameworks}/rules/ui-framework-rules.md +0 -0
  291. /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/README.md +0 -0
  292. /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/bash-scripting-expert.md +0 -0
  293. /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/javascript-frontend-engineer.md +0 -0
  294. /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/nodejs-backend-engineer.md +0 -0
  295. /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/python-backend-engineer.md +0 -0
  296. /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/python-backend-expert.md +0 -0
  297. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/COMMANDS.md +0 -0
  298. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/COMMAND_MAPPING.md +0 -0
  299. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/INTEGRATION_FIX.md +0 -0
  300. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/README.md +0 -0
  301. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/active-work.md +0 -0
  302. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/aliases.md +0 -0
  303. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/blocked-items.md +0 -0
  304. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/clean.md +0 -0
  305. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/docs-query.md +0 -0
  306. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-decompose.md +0 -0
  307. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-list.md +0 -0
  308. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-new.md +0 -0
  309. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-show.md +0 -0
  310. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-start.md +0 -0
  311. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/fix-integration-example.md +0 -0
  312. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/help.md +0 -0
  313. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/import-us.md +0 -0
  314. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/init.md +0 -0
  315. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/next-task.md +0 -0
  316. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/search.md +0 -0
  317. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/sprint-status.md +0 -0
  318. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/standup.md +0 -0
  319. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/sync-all.md +0 -0
  320. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-analyze.md +0 -0
  321. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-close.md +0 -0
  322. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-edit.md +0 -0
  323. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-list.md +0 -0
  324. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-new.md +0 -0
  325. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-reopen.md +0 -0
  326. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-show.md +0 -0
  327. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-start.md +0 -0
  328. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-status.md +0 -0
  329. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-sync.md +0 -0
  330. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-edit.md +0 -0
  331. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-list.md +0 -0
  332. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-new.md +0 -0
  333. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-parse.md +0 -0
  334. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-show.md +0 -0
  335. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-status.md +0 -0
  336. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/validate.md +0 -0
  337. /package/{autopm/.claude → packages/plugin-pm}/commands/azure/work-item-sync.md +0 -0
  338. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/blocked.md +0 -0
  339. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/clean.md +0 -0
  340. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-create.md +0 -0
  341. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-prime.md +0 -0
  342. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-update.md +0 -0
  343. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context.md +0 -0
  344. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-close.md +0 -0
  345. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-decompose.md +0 -0
  346. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-edit.md +0 -0
  347. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-list.md +0 -0
  348. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-merge.md +0 -0
  349. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-oneshot.md +0 -0
  350. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-refresh.md +0 -0
  351. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-show.md +0 -0
  352. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-split.md +0 -0
  353. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-start.md +0 -0
  354. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-status.md +0 -0
  355. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync-modular.md +0 -0
  356. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync-original.md +0 -0
  357. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync.md +0 -0
  358. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/help.md +0 -0
  359. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/import.md +0 -0
  360. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/in-progress.md +0 -0
  361. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/init.md +0 -0
  362. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-analyze.md +0 -0
  363. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-close.md +0 -0
  364. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-edit.md +0 -0
  365. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-reopen.md +0 -0
  366. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-show.md +0 -0
  367. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-start.md +0 -0
  368. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-status.md +0 -0
  369. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-sync.md +0 -0
  370. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/next.md +0 -0
  371. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-edit.md +0 -0
  372. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-list.md +0 -0
  373. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-new.md +0 -0
  374. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-parse.md +0 -0
  375. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-status.md +0 -0
  376. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/search.md +0 -0
  377. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/standup.md +0 -0
  378. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/status.md +0 -0
  379. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/sync.md +0 -0
  380. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/test-reference-update.md +0 -0
  381. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/validate.md +0 -0
  382. /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/what-next.md +0 -0
  383. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/analytics.js +0 -0
  384. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/blocked.js +0 -0
  385. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/blocked.sh +0 -0
  386. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/clean.js +0 -0
  387. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-create.js +0 -0
  388. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-prime.js +0 -0
  389. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-update.js +0 -0
  390. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context.js +0 -0
  391. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-close.js +0 -0
  392. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-edit.js +0 -0
  393. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-list.js +0 -0
  394. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-list.sh +0 -0
  395. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-show.js +0 -0
  396. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-show.sh +0 -0
  397. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-split.js +0 -0
  398. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-start/epic-start.js +0 -0
  399. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-start/epic-start.sh +0 -0
  400. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-status.js +0 -0
  401. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-status.sh +0 -0
  402. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/README.md +0 -0
  403. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/create-epic-issue.sh +0 -0
  404. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/create-task-issues.sh +0 -0
  405. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/update-epic-file.sh +0 -0
  406. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/update-references.sh +0 -0
  407. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync.sh +0 -0
  408. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/help.js +0 -0
  409. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/help.sh +0 -0
  410. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/in-progress.js +0 -0
  411. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/in-progress.sh +0 -0
  412. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/init.js +0 -0
  413. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/init.sh +0 -0
  414. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-close.js +0 -0
  415. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-edit.js +0 -0
  416. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-show.js +0 -0
  417. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-start.js +0 -0
  418. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/format-comment.sh +0 -0
  419. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/gather-updates.sh +0 -0
  420. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/post-comment.sh +0 -0
  421. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/preflight-validation.sh +0 -0
  422. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/update-frontmatter.sh +0 -0
  423. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/README.md +0 -0
  424. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/epic-discovery.js +0 -0
  425. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/logger.js +0 -0
  426. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/next.js +0 -0
  427. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/next.sh +0 -0
  428. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/optimize.js +0 -0
  429. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/pr-create.js +0 -0
  430. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/pr-list.js +0 -0
  431. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-list.js +0 -0
  432. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-list.sh +0 -0
  433. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-new.js +0 -0
  434. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-parse.js +0 -0
  435. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-status.js +0 -0
  436. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-status.sh +0 -0
  437. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/release.js +0 -0
  438. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/search.js +0 -0
  439. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/search.sh +0 -0
  440. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/standup.js +0 -0
  441. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/standup.sh +0 -0
  442. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/status.js +0 -0
  443. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/status.sh +0 -0
  444. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/sync-batch.js +0 -0
  445. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/sync.js +0 -0
  446. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/template-list.js +0 -0
  447. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/template-new.js +0 -0
  448. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/validate.js +0 -0
  449. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/validate.sh +0 -0
  450. /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/what-next.js +0 -0
@@ -0,0 +1,689 @@
1
+ # nodejs:optimize
2
+
3
+ Optimize Node.js application performance with Context7-verified clustering, worker threads, and profiling techniques.
4
+
5
+ ## Description
6
+
7
+ Comprehensive Node.js performance optimization following official best practices:
8
+ - Clustering for multi-core CPU utilization
9
+ - Worker threads for CPU-intensive tasks
10
+ - Performance monitoring and profiling
11
+ - Memory optimization techniques
12
+ - Event loop optimization
13
+
14
+ ## Required Documentation Access
15
+
16
+ **MANDATORY:** Before optimization, query Context7 for Node.js best practices:
17
+
18
+ **Documentation Queries:**
19
+ - `mcp://context7/nodejs/performance` - Node.js performance optimization
20
+ - `mcp://context7/nodejs/cluster` - Cluster module for multi-core
21
+ - `mcp://context7/nodejs/worker-threads` - Worker threads for parallel processing
22
+ - `mcp://context7/nodejs/performance-hooks` - Performance monitoring
23
+ - `mcp://context7/nodejs/async-hooks` - Async context tracking
24
+
25
+ **Why This is Required:**
26
+ - Ensures optimization follows official Node.js documentation
27
+ - Applies proven clustering and threading patterns
28
+ - Validates performance monitoring approaches
29
+ - Prevents common Node.js performance pitfalls
30
+
31
+ ## Usage
32
+
33
+ ```bash
34
+ /nodejs:optimize [options]
35
+ ```
36
+
37
+ ## Options
38
+
39
+ - `--scope <cluster|workers|memory|all>` - Optimization scope (default: all)
40
+ - `--analyze-only` - Analyze without applying changes
41
+ - `--output <file>` - Write optimization report
42
+ - `--framework <express|fastify|nestjs>` - Framework-specific optimization
43
+ - `--workers <count>` - Number of cluster workers (default: CPU count)
44
+
45
+ ## Examples
46
+
47
+ ### Full Application Optimization
48
+ ```bash
49
+ /nodejs:optimize
50
+ ```
51
+
52
+ ### Add Clustering Support
53
+ ```bash
54
+ /nodejs:optimize --scope cluster --workers 4
55
+ ```
56
+
57
+ ### Analyze Performance
58
+ ```bash
59
+ /nodejs:optimize --analyze-only --output performance-report.md
60
+ ```
61
+
62
+ ### Framework-Specific Optimization
63
+ ```bash
64
+ /nodejs:optimize --framework fastify
65
+ ```
66
+
67
+ ## Optimization Categories
68
+
69
+ ### 1. Clustering for Multi-Core Utilization (Context7-Verified)
70
+
71
+ **Pattern from Context7 (/nodejs/node):**
72
+
73
+ #### Basic Cluster Setup
74
+ ```javascript
75
+ import cluster from 'node:cluster';
76
+ import os from 'node:os';
77
+ import { createServer } from 'node:http';
78
+
79
+ const numCPUs = os.availableParallelism();
80
+
81
+ if (cluster.isPrimary) {
82
+ console.log(`Primary ${process.pid} is running`);
83
+
84
+ // Fork workers (one per CPU core)
85
+ for (let i = 0; i < numCPUs; i++) {
86
+ cluster.fork();
87
+ }
88
+
89
+ cluster.on('exit', (worker, code, signal) => {
90
+ console.log(`Worker ${worker.process.pid} died`);
91
+ // Replace the dead worker
92
+ cluster.fork();
93
+ });
94
+ } else {
95
+ // Workers share the same server port
96
+ const server = createServer((req, res) => {
97
+ res.writeHead(200);
98
+ res.end('Hello World\n');
99
+ });
100
+
101
+ server.listen(8000);
102
+ console.log(`Worker ${process.pid} started`);
103
+ }
104
+ ```
105
+
106
+ **Benefits:**
107
+ - Utilizes all CPU cores (4-8x throughput)
108
+ - Automatic load balancing across workers
109
+ - Zero-downtime restarts
110
+ - Fault tolerance (auto-restart on crash)
111
+
112
+ **Performance Impact:**
113
+ - Single process: 1,000 req/s
114
+ - 4 workers (4 cores): 3,800 req/s (3.8x)
115
+ - 8 workers (8 cores): 7,200 req/s (7.2x)
116
+
117
+ #### Advanced Cluster with Health Checks
118
+ ```javascript
119
+ import cluster from 'node:cluster';
120
+ import os from 'node:os';
121
+
122
+ const numCPUs = os.availableParallelism();
123
+ const timeouts = [];
124
+
125
+ if (cluster.isPrimary) {
126
+ console.log(`Primary ${process.pid} is running`);
127
+
128
+ // Fork workers
129
+ for (let i = 0; i < numCPUs; i++) {
130
+ cluster.fork();
131
+ }
132
+
133
+ // Worker fork event (health check timeout)
134
+ cluster.on('fork', (worker) => {
135
+ timeouts[worker.id] = setTimeout(() => {
136
+ console.error(`Worker ${worker.id} startup timeout - killing`);
137
+ worker.kill();
138
+ }, 5000); // 5 second startup timeout
139
+ });
140
+
141
+ // Worker listening event (clear health check)
142
+ cluster.on('listening', (worker, address) => {
143
+ clearTimeout(timeouts[worker.id]);
144
+ console.log(`Worker ${worker.id} listening on ${address.port}`);
145
+ });
146
+
147
+ // Worker exit event (auto-restart)
148
+ cluster.on('exit', (worker, code, signal) => {
149
+ clearTimeout(timeouts[worker.id]);
150
+ console.log(`Worker ${worker.id} died (${signal || code})`);
151
+
152
+ // Restart the worker
153
+ cluster.fork();
154
+ });
155
+
156
+ // Graceful shutdown
157
+ process.on('SIGTERM', () => {
158
+ console.log('SIGTERM received, shutting down gracefully');
159
+
160
+ for (const id in cluster.workers) {
161
+ cluster.workers[id].send('shutdown');
162
+ cluster.workers[id].disconnect();
163
+ }
164
+
165
+ setTimeout(() => {
166
+ console.log('Forcing shutdown');
167
+ process.exit(0);
168
+ }, 10000);
169
+ });
170
+ } else {
171
+ // Worker process
172
+ const server = require('./app'); // Your Express/Fastify app
173
+
174
+ server.listen(process.env.PORT || 3000);
175
+
176
+ // Handle shutdown signal from primary
177
+ process.on('message', (msg) => {
178
+ if (msg === 'shutdown') {
179
+ server.close(() => {
180
+ console.log(`Worker ${process.pid} shutting down`);
181
+ process.exit(0);
182
+ });
183
+ }
184
+ });
185
+ }
186
+ ```
187
+
188
+ **Benefits:**
189
+ - Health check timeouts (prevents hung workers)
190
+ - Graceful shutdown (finish existing requests)
191
+ - Auto-restart on failure
192
+ - Production-ready error handling
193
+
194
+ ### 2. Worker Threads for CPU-Intensive Tasks (Context7-Verified)
195
+
196
+ **Pattern from Context7 (/nodejs/node):**
197
+
198
+ #### Basic Worker Thread Example
199
+ ```javascript
200
+ import {
201
+ Worker,
202
+ isMainThread,
203
+ parentPort,
204
+ workerData,
205
+ } from 'node:worker_threads';
206
+
207
+ if (isMainThread) {
208
+ // Main thread: Create worker for CPU-intensive task
209
+ export default function parseJSAsync(script) {
210
+ return new Promise((resolve, reject) => {
211
+ const worker = new Worker(new URL(import.meta.url), {
212
+ workerData: script,
213
+ });
214
+
215
+ worker.on('message', resolve);
216
+ worker.on('error', reject);
217
+ worker.on('exit', (code) => {
218
+ if (code !== 0)
219
+ reject(new Error(`Worker stopped with exit code ${code}`));
220
+ });
221
+ });
222
+ }
223
+ } else {
224
+ // Worker thread: Process the data
225
+ const { parse } = await import('some-js-parsing-library');
226
+ const script = workerData;
227
+ parentPort.postMessage(parse(script));
228
+ }
229
+ ```
230
+
231
+ **Usage:**
232
+ ```javascript
233
+ import parseJSAsync from './parser.js';
234
+
235
+ // Non-blocking CPU-intensive parsing
236
+ const result = await parseJSAsync(code);
237
+ ```
238
+
239
+ **Benefits:**
240
+ - Non-blocking CPU-intensive operations
241
+ - Parallel processing (utilize multiple cores)
242
+ - Shared memory via SharedArrayBuffer
243
+ - Message-based communication
244
+
245
+ #### Worker Pool Pattern (Recommended)
246
+ ```javascript
247
+ import { Worker } from 'node:worker_threads';
248
+ import os from 'node:os';
249
+
250
+ class WorkerPool {
251
+ constructor(workerScript, poolSize = os.availableParallelism()) {
252
+ this.workerScript = workerScript;
253
+ this.poolSize = poolSize;
254
+ this.workers = [];
255
+ this.freeWorkers = [];
256
+ this.taskQueue = [];
257
+
258
+ this.initWorkers();
259
+ }
260
+
261
+ initWorkers() {
262
+ for (let i = 0; i < this.poolSize; i++) {
263
+ const worker = new Worker(this.workerScript);
264
+ this.workers.push(worker);
265
+ this.freeWorkers.push(worker);
266
+
267
+ worker.on('message', (result) => {
268
+ this.onWorkerMessage(worker, result);
269
+ });
270
+
271
+ worker.on('error', (err) => {
272
+ console.error(`Worker error:`, err);
273
+ });
274
+ }
275
+ }
276
+
277
+ async runTask(data) {
278
+ return new Promise((resolve, reject) => {
279
+ const task = { data, resolve, reject };
280
+
281
+ if (this.freeWorkers.length > 0) {
282
+ const worker = this.freeWorkers.pop();
283
+ worker.postMessage(data);
284
+ worker._currentTask = task;
285
+ } else {
286
+ this.taskQueue.push(task);
287
+ }
288
+ });
289
+ }
290
+
291
+ onWorkerMessage(worker, result) {
292
+ const task = worker._currentTask;
293
+ task.resolve(result);
294
+
295
+ if (this.taskQueue.length > 0) {
296
+ const nextTask = this.taskQueue.shift();
297
+ worker.postMessage(nextTask.data);
298
+ worker._currentTask = nextTask;
299
+ } else {
300
+ this.freeWorkers.push(worker);
301
+ worker._currentTask = null;
302
+ }
303
+ }
304
+
305
+ terminate() {
306
+ for (const worker of this.workers) {
307
+ worker.terminate();
308
+ }
309
+ }
310
+ }
311
+
312
+ // Usage
313
+ const pool = new WorkerPool('./worker.js', 4);
314
+
315
+ // Process tasks in parallel
316
+ const results = await Promise.all([
317
+ pool.runTask({ data: 'task1' }),
318
+ pool.runTask({ data: 'task2' }),
319
+ pool.runTask({ data: 'task3' }),
320
+ pool.runTask({ data: 'task4' }),
321
+ ]);
322
+ ```
323
+
324
+ **Benefits:**
325
+ - Reuses workers (avoids creation overhead)
326
+ - Task queuing (handles backpressure)
327
+ - Parallel processing (4-8x faster for CPU tasks)
328
+ - Production-ready pattern
329
+
330
+ **Performance Impact:**
331
+ - Image processing: 1 image/s → 4 images/s (4-core)
332
+ - Data parsing: 100 records/s → 800 records/s (8-core)
333
+ - Computation: 10 calculations/s → 80 calculations/s (8-core)
334
+
335
+ ### 3. Performance Monitoring (Context7-Verified)
336
+
337
+ **Pattern from Context7:**
338
+
339
+ #### Performance Hooks API
340
+ ```javascript
341
+ import { performance, PerformanceObserver } from 'node:perf_hooks';
342
+
343
+ // Monitor HTTP server performance
344
+ const obs = new PerformanceObserver((items) => {
345
+ items.getEntries().forEach((entry) => {
346
+ console.log(`${entry.name}: ${entry.duration}ms`);
347
+ });
348
+ });
349
+
350
+ obs.observe({ entryTypes: ['measure'] });
351
+
352
+ // Measure request processing time
353
+ function handleRequest(req, res) {
354
+ performance.mark('request-start');
355
+
356
+ // Process request
357
+ processRequest(req, res);
358
+
359
+ performance.mark('request-end');
360
+ performance.measure(
361
+ 'request-processing',
362
+ 'request-start',
363
+ 'request-end'
364
+ );
365
+ }
366
+ ```
367
+
368
+ #### Worker Thread CPU Usage
369
+ ```javascript
370
+ import { Worker } from 'node:worker_threads';
371
+
372
+ const worker = new Worker('./worker.js');
373
+
374
+ // Monitor worker CPU usage
375
+ const cpuUsage = await worker.cpuUsage();
376
+ console.log(`Worker CPU usage:`, cpuUsage);
377
+ // { user: 123456, system: 789012 } (microseconds)
378
+ ```
379
+
380
+ #### Event Loop Monitoring
381
+ ```javascript
382
+ import { monitorEventLoopDelay } from 'node:perf_hooks';
383
+
384
+ const h = monitorEventLoopDelay({ resolution: 20 });
385
+ h.enable();
386
+
387
+ setInterval(() => {
388
+ console.log(`Event loop delay (ms):`);
389
+ console.log(` min: ${h.min / 1e6}`);
390
+ console.log(` max: ${h.max / 1e6}`);
391
+ console.log(` mean: ${h.mean / 1e6}`);
392
+ console.log(` p50: ${h.percentile(50) / 1e6}`);
393
+ console.log(` p99: ${h.percentile(99) / 1e6}`);
394
+ h.reset();
395
+ }, 10000);
396
+ ```
397
+
398
+ **Benefits:**
399
+ - Real-time performance metrics
400
+ - Event loop delay detection
401
+ - CPU usage monitoring
402
+ - Request timing analysis
403
+
404
+ ### 4. Memory Optimization
405
+
406
+ #### Stream Processing (vs Loading Entire File)
407
+ ```javascript
408
+ import { createReadStream } from 'node:fs';
409
+ import { createInterface } from 'node:readline';
410
+
411
+ // BEFORE: Load entire file into memory (high memory)
412
+ import { readFile } from 'node:fs/promises';
413
+
414
+ const data = await readFile('large-file.txt', 'utf8');
415
+ const lines = data.split('\n');
416
+ for (const line of lines) {
417
+ processLine(line);
418
+ }
419
+ // Memory: 500 MB for 500 MB file
420
+
421
+ // AFTER: Stream processing (constant memory)
422
+ const fileStream = createReadStream('large-file.txt');
423
+ const rl = createInterface({
424
+ input: fileStream,
425
+ crlfDelay: Infinity,
426
+ });
427
+
428
+ for await (const line of rl) {
429
+ processLine(line);
430
+ }
431
+ // Memory: ~10 MB (streaming buffer)
432
+ ```
433
+
434
+ **Memory Savings:** 98% reduction (500 MB → 10 MB)
435
+
436
+ #### Backpressure Handling
437
+ ```javascript
438
+ import { pipeline } from 'node:stream/promises';
439
+ import { createReadStream, createWriteStream } from 'node:fs';
440
+ import { Transform } from 'node:stream';
441
+
442
+ // Transform stream with backpressure handling
443
+ const transform = new Transform({
444
+ transform(chunk, encoding, callback) {
445
+ // Process chunk (automatic backpressure)
446
+ const processed = processChunk(chunk);
447
+ callback(null, processed);
448
+ }
449
+ });
450
+
451
+ // Pipeline automatically handles backpressure
452
+ await pipeline(
453
+ createReadStream('input.txt'),
454
+ transform,
455
+ createWriteStream('output.txt')
456
+ );
457
+ ```
458
+
459
+ **Benefits:**
460
+ - Automatic backpressure (prevents memory overflow)
461
+ - Constant memory usage (regardless of file size)
462
+ - Pipeline error handling
463
+
464
+ ### 5. Event Loop Optimization
465
+
466
+ #### Avoid Blocking Operations
467
+ ```javascript
468
+ // BEFORE: Synchronous blocking operation
469
+ import { readFileSync } from 'node:fs';
470
+
471
+ function handleRequest(req, res) {
472
+ const data = readFileSync('file.txt', 'utf8'); // ❌ BLOCKS EVENT LOOP
473
+ res.send(data);
474
+ }
475
+
476
+ // AFTER: Asynchronous non-blocking
477
+ import { readFile } from 'node:fs/promises';
478
+
479
+ async function handleRequest(req, res) {
480
+ const data = await readFile('file.txt', 'utf8'); // ✅ NON-BLOCKING
481
+ res.send(data);
482
+ }
483
+ ```
484
+
485
+ #### Break Up Long-Running Tasks
486
+ ```javascript
487
+ // BEFORE: Long synchronous loop (blocks event loop)
488
+ function processLargeArray(array) {
489
+ for (const item of array) {
490
+ heavyComputation(item); // Blocks for 100ms each
491
+ }
492
+ }
493
+ // 10,000 items × 100ms = 1,000 seconds of blocking
494
+
495
+ // AFTER: Process in batches with setImmediate
496
+ async function processLargeArray(array, batchSize = 100) {
497
+ for (let i = 0; i < array.length; i += batchSize) {
498
+ const batch = array.slice(i, i + batchSize);
499
+
500
+ for (const item of batch) {
501
+ heavyComputation(item);
502
+ }
503
+
504
+ // Yield to event loop after each batch
505
+ await new Promise(resolve => setImmediate(resolve));
506
+ }
507
+ }
508
+ // Allows event loop to process other tasks between batches
509
+ ```
510
+
511
+ **Benefits:**
512
+ - Responsive event loop (handle other requests)
513
+ - No request timeouts
514
+ - Better throughput under load
515
+
516
+ #### Use Worker Threads for CPU-Intensive Tasks
517
+ ```javascript
518
+ // BETTER: Offload to worker thread
519
+ import { Worker } from 'node:worker_threads';
520
+
521
+ async function processLargeArray(array) {
522
+ return new Promise((resolve, reject) => {
523
+ const worker = new Worker('./process-worker.js', {
524
+ workerData: array
525
+ });
526
+
527
+ worker.on('message', resolve);
528
+ worker.on('error', reject);
529
+ });
530
+ }
531
+ // Main event loop remains responsive
532
+ ```
533
+
534
+ ## Optimization Output
535
+
536
+ ```
537
+ 🚀 Node.js Performance Optimization Analysis
538
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
539
+
540
+ Project: Express API
541
+ Node.js: v20.11.0
542
+ CPU Cores: 8
543
+
544
+ ⚡ Clustering Analysis
545
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
546
+
547
+ ❌ No clustering detected
548
+ Current: Single process (12.5% CPU utilization)
549
+
550
+ 💡 Recommendation: Add cluster module
551
+
552
+ Expected Impact:
553
+ - CPU Utilization: 12.5% → 95% (7.6x)
554
+ - Throughput: 1,200 req/s → 9,000 req/s (7.5x)
555
+ - Memory: 120 MB → 960 MB (8 workers × 120 MB)
556
+
557
+ 🔧 Worker Threads Analysis
558
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
559
+
560
+ ⚠️ Found 3 CPU-intensive operations in main thread
561
+
562
+ Hotspots:
563
+ 1. imageProcessing() - 2.3s per request (blocks event loop)
564
+ 2. dataParser() - 1.8s per request (blocks event loop)
565
+ 3. encryption() - 0.9s per request (blocks event loop)
566
+
567
+ 💡 Recommendation: Move to worker thread pool
568
+
569
+ Expected Impact:
570
+ - Image processing: 1 req/s → 4 req/s (4 workers)
571
+ - Event loop: Unblocked (responsive)
572
+ - Throughput: +300% for CPU-intensive endpoints
573
+
574
+ 💾 Memory Optimization
575
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
576
+
577
+ Current Memory Usage: 450 MB
578
+
579
+ ⚠️ Large file loading detected
580
+ Files: routes/export.js:45, routes/import.js:78
581
+ 💡 Recommendation: Use stream processing
582
+ ⚡ Impact: 380 MB savings (98% reduction)
583
+
584
+ ⚠️ Memory leaks detected
585
+ Potential leaks: 3 event listeners not removed
586
+ 💡 Recommendation: Clean up event listeners
587
+ ⚡ Impact: Prevent memory growth over time
588
+
589
+ 📊 Event Loop Analysis
590
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
591
+
592
+ Event Loop Delay (p99): 234 ms (⚠️ HIGH)
593
+ Target: < 50 ms
594
+
595
+ Blocking Operations:
596
+ 1. Synchronous file reads: 12 occurrences
597
+ 2. JSON.parse() on large payloads: 5 occurrences
598
+ 3. Heavy computation in routes: 3 endpoints
599
+
600
+ 💡 Recommendations:
601
+ 1. Replace sync operations with async
602
+ 2. Stream JSON parsing for large payloads
603
+ 3. Move computation to worker threads
604
+
605
+ Expected Impact: p99 delay: 234ms → 35ms (85% improvement)
606
+
607
+ Summary
608
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
609
+
610
+ Total Optimizations: 8
611
+
612
+ 🔴 Critical: 1 (clustering)
613
+ 🟡 High Impact: 4 (worker threads, event loop)
614
+ 🟢 Medium Impact: 3 (memory, monitoring)
615
+
616
+ Estimated Performance Improvement:
617
+ - Throughput: +650% (1,200 → 9,000 req/s)
618
+ - CPU Utilization: +660% (12.5% → 95%)
619
+ - Memory: 98% reduction for file operations
620
+ - Event loop: 85% faster (234ms → 35ms)
621
+
622
+ Run with --apply to implement optimizations
623
+ ```
624
+
625
+ ## Implementation
626
+
627
+ This command uses the **@nodejs-backend-engineer** agent:
628
+
629
+ 1. Query Context7 for Node.js optimization patterns
630
+ 2. Analyze clustering setup (or lack thereof)
631
+ 3. Detect CPU-intensive operations (worker thread candidates)
632
+ 4. Check memory usage patterns (streams vs buffers)
633
+ 5. Monitor event loop delay
634
+ 6. Generate optimization recommendations
635
+ 7. Optionally apply automated fixes
636
+
637
+ ## Best Practices Applied
638
+
639
+ Based on Context7 documentation from `/nodejs/node`:
640
+
641
+ 1. **Clustering** - Multi-core utilization (7-8x throughput)
642
+ 2. **Worker Threads** - Parallel CPU-intensive tasks
643
+ 3. **Performance Hooks** - Real-time monitoring
644
+ 4. **Streaming** - Constant memory usage
645
+ 5. **Event Loop** - Non-blocking operations
646
+
647
+ ## Related Commands
648
+
649
+ - `/nodejs:api-scaffold` - Generate Node.js API
650
+ - `/api:optimize` - API-specific optimization
651
+ - `/docker:optimize` - Container optimization
652
+
653
+ ## Troubleshooting
654
+
655
+ ### Cluster Workers Not Starting
656
+ - Check port availability
657
+ - Verify worker startup timeout
658
+ - Ensure graceful error handling
659
+
660
+ ### Worker Thread Errors
661
+ - Validate worker script path
662
+ - Check SharedArrayBuffer support
663
+ - Monitor worker memory usage
664
+
665
+ ### High Event Loop Delay
666
+ - Profile with `--inspect`
667
+ - Check for synchronous operations
668
+ - Move CPU tasks to worker threads
669
+
670
+ ## Installation
671
+
672
+ ```bash
673
+ # Node.js built-in modules (no installation needed)
674
+ # - cluster
675
+ # - worker_threads
676
+ # - perf_hooks
677
+
678
+ # Optional: Advanced profiling
679
+ npm install clinic
680
+ npm install autocannon # Load testing
681
+ ```
682
+
683
+ ## Version History
684
+
685
+ - v2.0.0 - Initial Schema v2.0 release with Context7 integration
686
+ - Clustering patterns for multi-core
687
+ - Worker threads for parallel processing
688
+ - Performance monitoring with perf_hooks
689
+