claude-autopm 2.8.2 → 2.8.4

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 (391) hide show
  1. package/README.md +399 -637
  2. package/install/install.js +15 -5
  3. package/package.json +2 -1
  4. package/packages/plugin-ai/LICENSE +21 -0
  5. package/packages/plugin-ai/README.md +316 -0
  6. package/packages/plugin-ai/agents/anthropic-claude-expert.md +579 -0
  7. package/packages/plugin-ai/agents/azure-openai-expert.md +1411 -0
  8. package/packages/plugin-ai/agents/gemini-api-expert.md +880 -0
  9. package/packages/plugin-ai/agents/google-a2a-expert.md +1445 -0
  10. package/packages/plugin-ai/agents/huggingface-expert.md +2131 -0
  11. package/packages/plugin-ai/agents/langchain-expert.md +1427 -0
  12. package/packages/plugin-ai/agents/langgraph-workflow-expert.md +520 -0
  13. package/packages/plugin-ai/agents/openai-python-expert.md +1087 -0
  14. package/packages/plugin-ai/commands/a2a-setup.md +886 -0
  15. package/packages/plugin-ai/commands/ai-model-deployment.md +481 -0
  16. package/packages/plugin-ai/commands/anthropic-optimize.md +793 -0
  17. package/packages/plugin-ai/commands/huggingface-deploy.md +789 -0
  18. package/packages/plugin-ai/commands/langchain-optimize.md +807 -0
  19. package/packages/plugin-ai/commands/llm-optimize.md +348 -0
  20. package/packages/plugin-ai/commands/openai-optimize.md +863 -0
  21. package/packages/plugin-ai/commands/rag-optimize.md +841 -0
  22. package/packages/plugin-ai/commands/rag-setup-scaffold.md +382 -0
  23. package/packages/plugin-ai/package.json +66 -0
  24. package/packages/plugin-ai/plugin.json +519 -0
  25. package/packages/plugin-ai/rules/ai-model-standards.md +449 -0
  26. package/packages/plugin-ai/rules/prompt-engineering-standards.md +509 -0
  27. package/packages/plugin-ai/scripts/examples/huggingface-inference-example.py +145 -0
  28. package/packages/plugin-ai/scripts/examples/langchain-rag-example.py +366 -0
  29. package/packages/plugin-ai/scripts/examples/mlflow-tracking-example.py +224 -0
  30. package/packages/plugin-ai/scripts/examples/openai-chat-example.py +425 -0
  31. package/packages/plugin-cloud/README.md +268 -0
  32. package/packages/plugin-cloud/agents/README.md +55 -0
  33. package/packages/plugin-cloud/agents/aws-cloud-architect.md +521 -0
  34. package/packages/plugin-cloud/agents/azure-cloud-architect.md +436 -0
  35. package/packages/plugin-cloud/agents/gcp-cloud-architect.md +385 -0
  36. package/packages/plugin-cloud/agents/gcp-cloud-functions-engineer.md +306 -0
  37. package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
  38. package/packages/plugin-cloud/agents/kubernetes-orchestrator.md +566 -0
  39. package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
  40. package/packages/plugin-cloud/agents/terraform-infrastructure-expert.md +454 -0
  41. package/packages/plugin-cloud/commands/cloud-cost-optimize.md +243 -0
  42. package/packages/plugin-cloud/commands/cloud-validate.md +196 -0
  43. package/packages/plugin-cloud/commands/infra-deploy.md +38 -0
  44. package/packages/plugin-cloud/commands/k8s-deploy.md +37 -0
  45. package/packages/plugin-cloud/commands/ssh-security.md +65 -0
  46. package/packages/plugin-cloud/commands/traefik-setup.md +65 -0
  47. package/packages/plugin-cloud/hooks/pre-cloud-deploy.js +456 -0
  48. package/packages/plugin-cloud/package.json +64 -0
  49. package/packages/plugin-cloud/plugin.json +338 -0
  50. package/packages/plugin-cloud/rules/cloud-security-compliance.md +313 -0
  51. package/packages/plugin-cloud/rules/infrastructure-pipeline.md +128 -0
  52. package/packages/plugin-cloud/scripts/examples/aws-validate.sh +30 -0
  53. package/packages/plugin-cloud/scripts/examples/azure-setup.sh +33 -0
  54. package/packages/plugin-cloud/scripts/examples/gcp-setup.sh +39 -0
  55. package/packages/plugin-cloud/scripts/examples/k8s-validate.sh +40 -0
  56. package/packages/plugin-cloud/scripts/examples/terraform-init.sh +26 -0
  57. package/packages/plugin-core/README.md +274 -0
  58. package/packages/plugin-core/agents/core/agent-manager.md +296 -0
  59. package/packages/plugin-core/agents/core/code-analyzer.md +131 -0
  60. package/packages/plugin-core/agents/core/file-analyzer.md +162 -0
  61. package/packages/plugin-core/agents/core/test-runner.md +200 -0
  62. package/packages/plugin-core/commands/code-rabbit.md +128 -0
  63. package/packages/plugin-core/commands/prompt.md +9 -0
  64. package/packages/plugin-core/commands/re-init.md +9 -0
  65. package/packages/plugin-core/hooks/context7-reminder.md +29 -0
  66. package/packages/plugin-core/hooks/enforce-agents.js +125 -0
  67. package/packages/plugin-core/hooks/enforce-agents.sh +35 -0
  68. package/packages/plugin-core/hooks/pre-agent-context7.js +224 -0
  69. package/packages/plugin-core/hooks/pre-command-context7.js +229 -0
  70. package/packages/plugin-core/hooks/strict-enforce-agents.sh +39 -0
  71. package/packages/plugin-core/hooks/test-hook.sh +21 -0
  72. package/packages/plugin-core/hooks/unified-context7-enforcement.sh +38 -0
  73. package/packages/plugin-core/package.json +45 -0
  74. package/packages/plugin-core/plugin.json +387 -0
  75. package/packages/plugin-core/rules/agent-coordination.md +549 -0
  76. package/packages/plugin-core/rules/agent-mandatory.md +170 -0
  77. package/packages/plugin-core/rules/ai-integration-patterns.md +219 -0
  78. package/packages/plugin-core/rules/command-pipelines.md +208 -0
  79. package/packages/plugin-core/rules/context-optimization.md +176 -0
  80. package/packages/plugin-core/rules/context7-enforcement.md +327 -0
  81. package/packages/plugin-core/rules/datetime.md +122 -0
  82. package/packages/plugin-core/rules/definition-of-done.md +272 -0
  83. package/packages/plugin-core/rules/development-environments.md +19 -0
  84. package/packages/plugin-core/rules/development-workflow.md +198 -0
  85. package/packages/plugin-core/rules/framework-path-rules.md +180 -0
  86. package/packages/plugin-core/rules/frontmatter-operations.md +64 -0
  87. package/packages/plugin-core/rules/git-strategy.md +237 -0
  88. package/packages/plugin-core/rules/golden-rules.md +181 -0
  89. package/packages/plugin-core/rules/naming-conventions.md +111 -0
  90. package/packages/plugin-core/rules/no-pr-workflow.md +183 -0
  91. package/packages/plugin-core/rules/performance-guidelines.md +403 -0
  92. package/packages/plugin-core/rules/pipeline-mandatory.md +109 -0
  93. package/packages/plugin-core/rules/security-checklist.md +318 -0
  94. package/packages/plugin-core/rules/standard-patterns.md +197 -0
  95. package/packages/plugin-core/rules/strip-frontmatter.md +85 -0
  96. package/packages/plugin-core/rules/tdd.enforcement.md +103 -0
  97. package/packages/plugin-core/rules/use-ast-grep.md +113 -0
  98. package/packages/plugin-core/scripts/lib/datetime-utils.sh +254 -0
  99. package/packages/plugin-core/scripts/lib/frontmatter-utils.sh +294 -0
  100. package/packages/plugin-core/scripts/lib/github-utils.sh +221 -0
  101. package/packages/plugin-core/scripts/lib/logging-utils.sh +199 -0
  102. package/packages/plugin-core/scripts/lib/validation-utils.sh +339 -0
  103. package/packages/plugin-core/scripts/mcp/add.sh +7 -0
  104. package/packages/plugin-core/scripts/mcp/disable.sh +12 -0
  105. package/packages/plugin-core/scripts/mcp/enable.sh +12 -0
  106. package/packages/plugin-core/scripts/mcp/list.sh +7 -0
  107. package/packages/plugin-core/scripts/mcp/sync.sh +8 -0
  108. package/packages/plugin-data/README.md +315 -0
  109. package/packages/plugin-data/agents/airflow-orchestration-expert.md +158 -0
  110. package/packages/plugin-data/agents/kedro-pipeline-expert.md +304 -0
  111. package/packages/plugin-data/agents/langgraph-workflow-expert.md +530 -0
  112. package/packages/plugin-data/commands/airflow-dag-scaffold.md +413 -0
  113. package/packages/plugin-data/commands/kafka-pipeline-scaffold.md +503 -0
  114. package/packages/plugin-data/package.json +66 -0
  115. package/packages/plugin-data/plugin.json +294 -0
  116. package/packages/plugin-data/rules/data-quality-standards.md +373 -0
  117. package/packages/plugin-data/rules/etl-pipeline-standards.md +255 -0
  118. package/packages/plugin-data/scripts/examples/airflow-dag-example.py +245 -0
  119. package/packages/plugin-data/scripts/examples/dbt-transform-example.sql +238 -0
  120. package/packages/plugin-data/scripts/examples/kafka-streaming-example.py +257 -0
  121. package/packages/plugin-data/scripts/examples/pandas-etl-example.py +332 -0
  122. package/packages/plugin-databases/README.md +330 -0
  123. package/packages/plugin-databases/agents/README.md +50 -0
  124. package/packages/plugin-databases/agents/bigquery-expert.md +401 -0
  125. package/packages/plugin-databases/agents/cosmosdb-expert.md +375 -0
  126. package/packages/plugin-databases/agents/mongodb-expert.md +407 -0
  127. package/packages/plugin-databases/agents/postgresql-expert.md +329 -0
  128. package/packages/plugin-databases/agents/redis-expert.md +74 -0
  129. package/packages/plugin-databases/commands/db-optimize.md +612 -0
  130. package/packages/plugin-databases/package.json +60 -0
  131. package/packages/plugin-databases/plugin.json +237 -0
  132. package/packages/plugin-databases/rules/database-management-strategy.md +146 -0
  133. package/packages/plugin-databases/rules/database-pipeline.md +316 -0
  134. package/packages/plugin-databases/scripts/examples/bigquery-cost-analyze.sh +160 -0
  135. package/packages/plugin-databases/scripts/examples/cosmosdb-ru-optimize.sh +163 -0
  136. package/packages/plugin-databases/scripts/examples/mongodb-shard-check.sh +120 -0
  137. package/packages/plugin-databases/scripts/examples/postgres-index-analyze.sh +95 -0
  138. package/packages/plugin-databases/scripts/examples/redis-cache-stats.sh +121 -0
  139. package/packages/plugin-devops/README.md +367 -0
  140. package/packages/plugin-devops/agents/README.md +52 -0
  141. package/packages/plugin-devops/agents/azure-devops-specialist.md +308 -0
  142. package/packages/plugin-devops/agents/docker-containerization-expert.md +298 -0
  143. package/packages/plugin-devops/agents/github-operations-specialist.md +335 -0
  144. package/packages/plugin-devops/agents/mcp-context-manager.md +319 -0
  145. package/packages/plugin-devops/agents/observability-engineer.md +574 -0
  146. package/packages/plugin-devops/agents/ssh-operations-expert.md +1093 -0
  147. package/packages/plugin-devops/agents/traefik-proxy-expert.md +444 -0
  148. package/packages/plugin-devops/commands/ci-pipeline-create.md +581 -0
  149. package/packages/plugin-devops/commands/docker-optimize.md +493 -0
  150. package/packages/plugin-devops/commands/workflow-create.md +42 -0
  151. package/packages/plugin-devops/hooks/pre-docker-build.js +472 -0
  152. package/packages/plugin-devops/package.json +61 -0
  153. package/packages/plugin-devops/plugin.json +302 -0
  154. package/packages/plugin-devops/rules/ci-cd-kubernetes-strategy.md +25 -0
  155. package/packages/plugin-devops/rules/devops-troubleshooting-playbook.md +450 -0
  156. package/packages/plugin-devops/rules/docker-first-development.md +404 -0
  157. package/packages/plugin-devops/rules/github-operations.md +92 -0
  158. package/packages/plugin-devops/scripts/examples/docker-build-multistage.sh +43 -0
  159. package/packages/plugin-devops/scripts/examples/docker-compose-validate.sh +74 -0
  160. package/packages/plugin-devops/scripts/examples/github-workflow-validate.sh +48 -0
  161. package/packages/plugin-devops/scripts/examples/prometheus-health-check.sh +58 -0
  162. package/packages/plugin-devops/scripts/examples/ssh-key-setup.sh +74 -0
  163. package/packages/plugin-frameworks/README.md +309 -0
  164. package/packages/plugin-frameworks/agents/README.md +64 -0
  165. package/packages/plugin-frameworks/agents/e2e-test-engineer.md +579 -0
  166. package/packages/plugin-frameworks/agents/nats-messaging-expert.md +254 -0
  167. package/packages/plugin-frameworks/agents/react-frontend-engineer.md +393 -0
  168. package/packages/plugin-frameworks/agents/react-ui-expert.md +226 -0
  169. package/packages/plugin-frameworks/agents/tailwindcss-expert.md +1021 -0
  170. package/packages/plugin-frameworks/agents/ux-design-expert.md +244 -0
  171. package/packages/plugin-frameworks/commands/app-scaffold.md +50 -0
  172. package/packages/plugin-frameworks/commands/nextjs-optimize.md +692 -0
  173. package/packages/plugin-frameworks/commands/react-optimize.md +583 -0
  174. package/packages/plugin-frameworks/commands/tailwind-system.md +64 -0
  175. package/packages/plugin-frameworks/package.json +59 -0
  176. package/packages/plugin-frameworks/plugin.json +224 -0
  177. package/packages/plugin-frameworks/rules/performance-guidelines.md +403 -0
  178. package/packages/plugin-frameworks/rules/ui-development-standards.md +281 -0
  179. package/packages/plugin-frameworks/rules/ui-framework-rules.md +151 -0
  180. package/packages/plugin-frameworks/scripts/examples/react-component-perf.sh +34 -0
  181. package/packages/plugin-frameworks/scripts/examples/tailwind-optimize.sh +44 -0
  182. package/packages/plugin-frameworks/scripts/examples/vue-composition-check.sh +41 -0
  183. package/packages/plugin-languages/README.md +333 -0
  184. package/packages/plugin-languages/agents/README.md +50 -0
  185. package/packages/plugin-languages/agents/bash-scripting-expert.md +541 -0
  186. package/packages/plugin-languages/agents/javascript-frontend-engineer.md +197 -0
  187. package/packages/plugin-languages/agents/nodejs-backend-engineer.md +226 -0
  188. package/packages/plugin-languages/agents/python-backend-engineer.md +214 -0
  189. package/packages/plugin-languages/agents/python-backend-expert.md +289 -0
  190. package/packages/plugin-languages/commands/javascript-optimize.md +636 -0
  191. package/packages/plugin-languages/commands/nodejs-api-scaffold.md +341 -0
  192. package/packages/plugin-languages/commands/nodejs-optimize.md +689 -0
  193. package/packages/plugin-languages/commands/python-api-scaffold.md +261 -0
  194. package/packages/plugin-languages/commands/python-optimize.md +593 -0
  195. package/packages/plugin-languages/package.json +65 -0
  196. package/packages/plugin-languages/plugin.json +265 -0
  197. package/packages/plugin-languages/rules/code-quality-standards.md +496 -0
  198. package/packages/plugin-languages/rules/testing-standards.md +768 -0
  199. package/packages/plugin-languages/scripts/examples/bash-production-script.sh +520 -0
  200. package/packages/plugin-languages/scripts/examples/javascript-es6-patterns.js +291 -0
  201. package/packages/plugin-languages/scripts/examples/nodejs-async-iteration.js +360 -0
  202. package/packages/plugin-languages/scripts/examples/python-async-patterns.py +289 -0
  203. package/packages/plugin-languages/scripts/examples/typescript-patterns.ts +432 -0
  204. package/packages/plugin-ml/README.md +430 -0
  205. package/packages/plugin-ml/agents/automl-expert.md +326 -0
  206. package/packages/plugin-ml/agents/computer-vision-expert.md +550 -0
  207. package/packages/plugin-ml/agents/gradient-boosting-expert.md +455 -0
  208. package/packages/plugin-ml/agents/neural-network-architect.md +1228 -0
  209. package/packages/plugin-ml/agents/nlp-transformer-expert.md +584 -0
  210. package/packages/plugin-ml/agents/pytorch-expert.md +412 -0
  211. package/packages/plugin-ml/agents/reinforcement-learning-expert.md +2088 -0
  212. package/packages/plugin-ml/agents/scikit-learn-expert.md +228 -0
  213. package/packages/plugin-ml/agents/tensorflow-keras-expert.md +509 -0
  214. package/packages/plugin-ml/agents/time-series-expert.md +303 -0
  215. package/packages/plugin-ml/commands/ml-automl.md +572 -0
  216. package/packages/plugin-ml/commands/ml-train-optimize.md +657 -0
  217. package/packages/plugin-ml/package.json +52 -0
  218. package/packages/plugin-ml/plugin.json +338 -0
  219. package/packages/plugin-pm/README.md +368 -0
  220. package/packages/plugin-pm/claudeautopm-plugin-pm-2.0.0.tgz +0 -0
  221. package/packages/plugin-pm/commands/azure/COMMANDS.md +107 -0
  222. package/packages/plugin-pm/commands/azure/COMMAND_MAPPING.md +252 -0
  223. package/packages/plugin-pm/commands/azure/INTEGRATION_FIX.md +103 -0
  224. package/packages/plugin-pm/commands/azure/README.md +246 -0
  225. package/packages/plugin-pm/commands/azure/active-work.md +198 -0
  226. package/packages/plugin-pm/commands/azure/aliases.md +143 -0
  227. package/packages/plugin-pm/commands/azure/blocked-items.md +287 -0
  228. package/packages/plugin-pm/commands/azure/clean.md +93 -0
  229. package/packages/plugin-pm/commands/azure/docs-query.md +48 -0
  230. package/packages/plugin-pm/commands/azure/feature-decompose.md +380 -0
  231. package/packages/plugin-pm/commands/azure/feature-list.md +61 -0
  232. package/packages/plugin-pm/commands/azure/feature-new.md +115 -0
  233. package/packages/plugin-pm/commands/azure/feature-show.md +205 -0
  234. package/packages/plugin-pm/commands/azure/feature-start.md +130 -0
  235. package/packages/plugin-pm/commands/azure/fix-integration-example.md +93 -0
  236. package/packages/plugin-pm/commands/azure/help.md +150 -0
  237. package/packages/plugin-pm/commands/azure/import-us.md +269 -0
  238. package/packages/plugin-pm/commands/azure/init.md +211 -0
  239. package/packages/plugin-pm/commands/azure/next-task.md +262 -0
  240. package/packages/plugin-pm/commands/azure/search.md +160 -0
  241. package/packages/plugin-pm/commands/azure/sprint-status.md +235 -0
  242. package/packages/plugin-pm/commands/azure/standup.md +260 -0
  243. package/packages/plugin-pm/commands/azure/sync-all.md +99 -0
  244. package/packages/plugin-pm/commands/azure/task-analyze.md +186 -0
  245. package/packages/plugin-pm/commands/azure/task-close.md +329 -0
  246. package/packages/plugin-pm/commands/azure/task-edit.md +145 -0
  247. package/packages/plugin-pm/commands/azure/task-list.md +263 -0
  248. package/packages/plugin-pm/commands/azure/task-new.md +84 -0
  249. package/packages/plugin-pm/commands/azure/task-reopen.md +79 -0
  250. package/packages/plugin-pm/commands/azure/task-show.md +126 -0
  251. package/packages/plugin-pm/commands/azure/task-start.md +301 -0
  252. package/packages/plugin-pm/commands/azure/task-status.md +65 -0
  253. package/packages/plugin-pm/commands/azure/task-sync.md +67 -0
  254. package/packages/plugin-pm/commands/azure/us-edit.md +164 -0
  255. package/packages/plugin-pm/commands/azure/us-list.md +202 -0
  256. package/packages/plugin-pm/commands/azure/us-new.md +265 -0
  257. package/packages/plugin-pm/commands/azure/us-parse.md +253 -0
  258. package/packages/plugin-pm/commands/azure/us-show.md +188 -0
  259. package/packages/plugin-pm/commands/azure/us-status.md +320 -0
  260. package/packages/plugin-pm/commands/azure/validate.md +86 -0
  261. package/packages/plugin-pm/commands/azure/work-item-sync.md +47 -0
  262. package/packages/plugin-pm/commands/blocked.md +28 -0
  263. package/packages/plugin-pm/commands/clean.md +119 -0
  264. package/packages/plugin-pm/commands/context-create.md +136 -0
  265. package/packages/plugin-pm/commands/context-prime.md +170 -0
  266. package/packages/plugin-pm/commands/context-update.md +292 -0
  267. package/packages/plugin-pm/commands/context.md +28 -0
  268. package/packages/plugin-pm/commands/epic-close.md +86 -0
  269. package/packages/plugin-pm/commands/epic-decompose.md +370 -0
  270. package/packages/plugin-pm/commands/epic-edit.md +83 -0
  271. package/packages/plugin-pm/commands/epic-list.md +30 -0
  272. package/packages/plugin-pm/commands/epic-merge.md +222 -0
  273. package/packages/plugin-pm/commands/epic-oneshot.md +119 -0
  274. package/packages/plugin-pm/commands/epic-refresh.md +119 -0
  275. package/packages/plugin-pm/commands/epic-show.md +28 -0
  276. package/packages/plugin-pm/commands/epic-split.md +120 -0
  277. package/packages/plugin-pm/commands/epic-start.md +195 -0
  278. package/packages/plugin-pm/commands/epic-status.md +28 -0
  279. package/packages/plugin-pm/commands/epic-sync-modular.md +338 -0
  280. package/packages/plugin-pm/commands/epic-sync-original.md +473 -0
  281. package/packages/plugin-pm/commands/epic-sync.md +486 -0
  282. package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
  283. package/packages/plugin-pm/commands/help.md +28 -0
  284. package/packages/plugin-pm/commands/import.md +115 -0
  285. package/packages/plugin-pm/commands/in-progress.md +28 -0
  286. package/packages/plugin-pm/commands/init.md +28 -0
  287. package/packages/plugin-pm/commands/issue-analyze.md +202 -0
  288. package/packages/plugin-pm/commands/issue-close.md +119 -0
  289. package/packages/plugin-pm/commands/issue-edit.md +93 -0
  290. package/packages/plugin-pm/commands/issue-reopen.md +87 -0
  291. package/packages/plugin-pm/commands/issue-show.md +41 -0
  292. package/packages/plugin-pm/commands/issue-start.md +234 -0
  293. package/packages/plugin-pm/commands/issue-status.md +95 -0
  294. package/packages/plugin-pm/commands/issue-sync.md +411 -0
  295. package/packages/plugin-pm/commands/next.md +28 -0
  296. package/packages/plugin-pm/commands/prd-edit.md +82 -0
  297. package/packages/plugin-pm/commands/prd-list.md +28 -0
  298. package/packages/plugin-pm/commands/prd-new.md +55 -0
  299. package/packages/plugin-pm/commands/prd-parse.md +42 -0
  300. package/packages/plugin-pm/commands/prd-status.md +28 -0
  301. package/packages/plugin-pm/commands/search.md +28 -0
  302. package/packages/plugin-pm/commands/standup.md +28 -0
  303. package/packages/plugin-pm/commands/status.md +28 -0
  304. package/packages/plugin-pm/commands/sync.md +99 -0
  305. package/packages/plugin-pm/commands/test-reference-update.md +151 -0
  306. package/packages/plugin-pm/commands/validate.md +28 -0
  307. package/packages/plugin-pm/commands/what-next.md +28 -0
  308. package/packages/plugin-pm/package.json +57 -0
  309. package/packages/plugin-pm/plugin.json +503 -0
  310. package/packages/plugin-pm/scripts/pm/analytics.js +425 -0
  311. package/packages/plugin-pm/scripts/pm/blocked.js +164 -0
  312. package/packages/plugin-pm/scripts/pm/blocked.sh +78 -0
  313. package/packages/plugin-pm/scripts/pm/clean.js +464 -0
  314. package/packages/plugin-pm/scripts/pm/context-create.js +216 -0
  315. package/packages/plugin-pm/scripts/pm/context-prime.js +335 -0
  316. package/packages/plugin-pm/scripts/pm/context-update.js +344 -0
  317. package/packages/plugin-pm/scripts/pm/context.js +338 -0
  318. package/packages/plugin-pm/scripts/pm/epic-close.js +347 -0
  319. package/packages/plugin-pm/scripts/pm/epic-edit.js +382 -0
  320. package/packages/plugin-pm/scripts/pm/epic-list.js +273 -0
  321. package/packages/plugin-pm/scripts/pm/epic-list.sh +109 -0
  322. package/packages/plugin-pm/scripts/pm/epic-show.js +291 -0
  323. package/packages/plugin-pm/scripts/pm/epic-show.sh +105 -0
  324. package/packages/plugin-pm/scripts/pm/epic-split.js +522 -0
  325. package/packages/plugin-pm/scripts/pm/epic-start/epic-start.js +183 -0
  326. package/packages/plugin-pm/scripts/pm/epic-start/epic-start.sh +94 -0
  327. package/packages/plugin-pm/scripts/pm/epic-status.js +291 -0
  328. package/packages/plugin-pm/scripts/pm/epic-status.sh +104 -0
  329. package/packages/plugin-pm/scripts/pm/epic-sync/README.md +208 -0
  330. package/packages/plugin-pm/scripts/pm/epic-sync/create-epic-issue.sh +77 -0
  331. package/packages/plugin-pm/scripts/pm/epic-sync/create-task-issues.sh +86 -0
  332. package/packages/plugin-pm/scripts/pm/epic-sync/update-epic-file.sh +79 -0
  333. package/packages/plugin-pm/scripts/pm/epic-sync/update-references.sh +89 -0
  334. package/packages/plugin-pm/scripts/pm/epic-sync.sh +137 -0
  335. package/packages/plugin-pm/scripts/pm/help.js +92 -0
  336. package/packages/plugin-pm/scripts/pm/help.sh +90 -0
  337. package/packages/plugin-pm/scripts/pm/in-progress.js +178 -0
  338. package/packages/plugin-pm/scripts/pm/in-progress.sh +93 -0
  339. package/packages/plugin-pm/scripts/pm/init.js +321 -0
  340. package/packages/plugin-pm/scripts/pm/init.sh +178 -0
  341. package/packages/plugin-pm/scripts/pm/issue-close.js +232 -0
  342. package/packages/plugin-pm/scripts/pm/issue-edit.js +310 -0
  343. package/packages/plugin-pm/scripts/pm/issue-show.js +272 -0
  344. package/packages/plugin-pm/scripts/pm/issue-start.js +181 -0
  345. package/packages/plugin-pm/scripts/pm/issue-sync/format-comment.sh +468 -0
  346. package/packages/plugin-pm/scripts/pm/issue-sync/gather-updates.sh +460 -0
  347. package/packages/plugin-pm/scripts/pm/issue-sync/post-comment.sh +330 -0
  348. package/packages/plugin-pm/scripts/pm/issue-sync/preflight-validation.sh +348 -0
  349. package/packages/plugin-pm/scripts/pm/issue-sync/update-frontmatter.sh +387 -0
  350. package/packages/plugin-pm/scripts/pm/lib/README.md +85 -0
  351. package/packages/plugin-pm/scripts/pm/lib/epic-discovery.js +119 -0
  352. package/packages/plugin-pm/scripts/pm/lib/logger.js +78 -0
  353. package/packages/plugin-pm/scripts/pm/next.js +189 -0
  354. package/packages/plugin-pm/scripts/pm/next.sh +72 -0
  355. package/packages/plugin-pm/scripts/pm/optimize.js +407 -0
  356. package/packages/plugin-pm/scripts/pm/pr-create.js +337 -0
  357. package/packages/plugin-pm/scripts/pm/pr-list.js +257 -0
  358. package/packages/plugin-pm/scripts/pm/prd-list.js +242 -0
  359. package/packages/plugin-pm/scripts/pm/prd-list.sh +103 -0
  360. package/packages/plugin-pm/scripts/pm/prd-new.js +684 -0
  361. package/packages/plugin-pm/scripts/pm/prd-parse.js +547 -0
  362. package/packages/plugin-pm/scripts/pm/prd-status.js +152 -0
  363. package/packages/plugin-pm/scripts/pm/prd-status.sh +63 -0
  364. package/packages/plugin-pm/scripts/pm/release.js +460 -0
  365. package/packages/plugin-pm/scripts/pm/search.js +192 -0
  366. package/packages/plugin-pm/scripts/pm/search.sh +89 -0
  367. package/packages/plugin-pm/scripts/pm/standup.js +362 -0
  368. package/packages/plugin-pm/scripts/pm/standup.sh +95 -0
  369. package/packages/plugin-pm/scripts/pm/status.js +148 -0
  370. package/packages/plugin-pm/scripts/pm/status.sh +59 -0
  371. package/packages/plugin-pm/scripts/pm/sync-batch.js +337 -0
  372. package/packages/plugin-pm/scripts/pm/sync.js +343 -0
  373. package/packages/plugin-pm/scripts/pm/template-list.js +141 -0
  374. package/packages/plugin-pm/scripts/pm/template-new.js +366 -0
  375. package/packages/plugin-pm/scripts/pm/validate.js +274 -0
  376. package/packages/plugin-pm/scripts/pm/validate.sh +106 -0
  377. package/packages/plugin-pm/scripts/pm/what-next.js +660 -0
  378. package/packages/plugin-testing/README.md +401 -0
  379. package/packages/plugin-testing/agents/frontend-testing-engineer.md +768 -0
  380. package/packages/plugin-testing/commands/jest-optimize.md +800 -0
  381. package/packages/plugin-testing/commands/playwright-optimize.md +887 -0
  382. package/packages/plugin-testing/commands/test-coverage.md +512 -0
  383. package/packages/plugin-testing/commands/test-performance.md +1041 -0
  384. package/packages/plugin-testing/commands/test-setup.md +414 -0
  385. package/packages/plugin-testing/package.json +40 -0
  386. package/packages/plugin-testing/plugin.json +197 -0
  387. package/packages/plugin-testing/rules/test-coverage-requirements.md +581 -0
  388. package/packages/plugin-testing/rules/testing-standards.md +529 -0
  389. package/packages/plugin-testing/scripts/examples/react-testing-example.test.jsx +460 -0
  390. package/packages/plugin-testing/scripts/examples/vitest-config-example.js +352 -0
  391. package/packages/plugin-testing/scripts/examples/vue-testing-example.test.js +586 -0
@@ -0,0 +1,224 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Pre-Agent Context7 Hook
5
+ *
6
+ * MANDATORY: This hook enforces Context7 documentation queries BEFORE agent invocation.
7
+ *
8
+ * Workflow:
9
+ * 1. Intercept agent invocation (e.g., @aws-cloud-architect)
10
+ * 2. Extract agent file path from .claude/agents/{category}/{agent}.md
11
+ * 3. Parse "Documentation Queries" section
12
+ * 4. Query Context7 MCP for each link
13
+ * 5. Inject results into agent context
14
+ * 6. Allow agent to proceed with Context7 knowledge
15
+ *
16
+ * Zero Tolerance: If Context7 query fails, agent invocation STOPS.
17
+ */
18
+
19
+ const fs = require('fs');
20
+ const path = require('path');
21
+
22
+ /**
23
+ * Parse agent invocation
24
+ * @param {string} agentInvocation - e.g., "@aws-cloud-architect design VPC"
25
+ * @returns {object} { agentName, task }
26
+ */
27
+ function parseAgentInvocation(agentInvocation) {
28
+ // Remove @ symbol and split
29
+ const cleaned = agentInvocation.replace(/^@/, '');
30
+ const parts = cleaned.split(/\s+/);
31
+ const agentName = parts[0];
32
+ const task = parts.slice(1).join(' ');
33
+
34
+ return {
35
+ agentName,
36
+ task,
37
+ fullInvocation: agentInvocation
38
+ };
39
+ }
40
+
41
+ /**
42
+ * Find agent file in .claude/agents/
43
+ * @param {string} agentName - Agent name (aws-cloud-architect, test-runner, etc.)
44
+ * @returns {string|null} - Path to agent file or null
45
+ */
46
+ function findAgentFile(agentName) {
47
+ const baseDir = path.join(process.cwd(), '.claude', 'agents');
48
+
49
+ // Search recursively in all subdirectories
50
+ function searchDir(dir) {
51
+ if (!fs.existsSync(dir)) return null;
52
+
53
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
54
+
55
+ for (const entry of entries) {
56
+ const fullPath = path.join(dir, entry.name);
57
+
58
+ if (entry.isDirectory()) {
59
+ const found = searchDir(fullPath);
60
+ if (found) return found;
61
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
62
+ // Check if filename matches (with or without .md extension)
63
+ const basename = path.basename(entry.name, '.md');
64
+ if (basename === agentName || basename.replace(/-/g, '_') === agentName) {
65
+ return fullPath;
66
+ }
67
+ }
68
+ }
69
+
70
+ return null;
71
+ }
72
+
73
+ return searchDir(baseDir);
74
+ }
75
+
76
+ /**
77
+ * Extract Documentation Queries from agent file
78
+ * @param {string} filePath - Path to agent .md file
79
+ * @returns {Array<{url: string, description: string}>}
80
+ */
81
+ function extractDocumentationQueries(filePath) {
82
+ const content = fs.readFileSync(filePath, 'utf8');
83
+ const queries = [];
84
+
85
+ // Find the Documentation Queries section (agent format)
86
+ const querySection = content.match(/\*\*Documentation Queries:\*\*\s*\n([\s\S]*?)(?=\n\n|\*\*|##|$)/);
87
+
88
+ if (!querySection) {
89
+ return queries; // No Documentation Queries section found
90
+ }
91
+
92
+ // Extract each mcp://context7/... line
93
+ const lines = querySection[1].split('\n');
94
+ for (const line of lines) {
95
+ const match = line.match(/`(mcp:\/\/context7\/[^`]+)`\s*-\s*(.+)/);
96
+ if (match) {
97
+ queries.push({
98
+ url: match[1],
99
+ description: match[2].trim()
100
+ });
101
+ }
102
+ }
103
+
104
+ return queries;
105
+ }
106
+
107
+ /**
108
+ * Query Context7 MCP server
109
+ * @param {string} mcpUrl - e.g., "mcp://context7/aws/compute"
110
+ * @returns {Promise<object>} - Context7 response
111
+ */
112
+ async function queryContext7(mcpUrl) {
113
+ // Parse MCP URL: mcp://context7/category/topic
114
+ const urlMatch = mcpUrl.match(/mcp:\/\/context7\/(.+)/);
115
+ if (!urlMatch) {
116
+ throw new Error(`Invalid Context7 URL format: ${mcpUrl}`);
117
+ }
118
+
119
+ const topicPath = urlMatch[1]; // e.g., "aws/compute"
120
+
121
+ // In real implementation, this would call the MCP server
122
+ // For now, return a placeholder that instructs Claude to query
123
+ return {
124
+ url: mcpUrl,
125
+ topic: topicPath,
126
+ instruction: `MANDATORY: Query Context7 MCP for topic "${topicPath}" before implementing solution.`,
127
+ placeholder: true
128
+ };
129
+ }
130
+
131
+ /**
132
+ * Main hook execution
133
+ * @param {string} agentInvocation - Full agent invocation from user
134
+ */
135
+ async function main(agentInvocation) {
136
+ console.log('\n🔒 Context7 Pre-Agent Hook Activated\n');
137
+
138
+ // Parse agent invocation
139
+ const { agentName, task, fullInvocation } = parseAgentInvocation(agentInvocation || process.argv[2] || '');
140
+
141
+ console.log(`🤖 Agent: @${agentName}`);
142
+ if (task) {
143
+ console.log(` Task: ${task}`);
144
+ }
145
+
146
+ // Find agent file
147
+ const agentFile = findAgentFile(agentName);
148
+ if (!agentFile) {
149
+ console.log(`\n⚠️ Warning: Agent file not found for @${agentName}`);
150
+ console.log(` Searched: .claude/agents/**/${agentName}.md`);
151
+ console.log(` Proceeding without Context7 enforcement (agent may not exist)\n`);
152
+ return;
153
+ }
154
+
155
+ console.log(` File: ${path.relative(process.cwd(), agentFile)}`);
156
+
157
+ // Extract Documentation Queries
158
+ const queries = extractDocumentationQueries(agentFile);
159
+
160
+ if (queries.length === 0) {
161
+ console.log(`\n❌ CRITICAL: No Documentation Queries found in agent file!`);
162
+ console.log(` This violates Context7 enforcement policy.`);
163
+ console.log(` ALL agents MUST have Documentation Queries section.`);
164
+ console.log(`\n Please add to ${path.basename(agentFile)}:`);
165
+ console.log(` **Documentation Queries:**`);
166
+ console.log(` - \`mcp://context7/...\` - Description`);
167
+ console.log(`\n Blocking agent invocation until fixed.\n`);
168
+ process.exit(1);
169
+ }
170
+
171
+ console.log(`\n📚 Context7 Documentation Queries Required: ${queries.length}\n`);
172
+
173
+ // Query Context7 for each link
174
+ const results = [];
175
+ for (const query of queries) {
176
+ console.log(` ➜ ${query.url}`);
177
+ console.log(` ${query.description}`);
178
+
179
+ try {
180
+ const result = await queryContext7(query.url);
181
+ results.push(result);
182
+ } catch (error) {
183
+ console.log(`\n❌ Context7 query FAILED: ${error.message}`);
184
+ console.log(` Cannot proceed without Context7 documentation.`);
185
+ console.log(` Please ensure Context7 MCP server is running.\n`);
186
+ process.exit(1);
187
+ }
188
+ }
189
+
190
+ console.log(`\n✅ Context7 Queries Complete\n`);
191
+ console.log(`📖 REMINDER: @${agentName} MUST use Context7 documentation:`);
192
+ console.log(` • Apply patterns from Context7 examples`);
193
+ console.log(` • Verify API signatures against Context7 results`);
194
+ console.log(` • Follow best practices documented in Context7`);
195
+ console.log(` • Flag any conflicts between training data and Context7`);
196
+ console.log(`\n🚀 Proceeding with agent invocation...\n`);
197
+
198
+ // In production, this would inject Context7 results into agent's context
199
+ // For now, we output instruction for Claude to see
200
+ if (results.length > 0 && results[0].placeholder) {
201
+ console.log(`⚡ ACTION REQUIRED FOR @${agentName}:`);
202
+ console.log(` Before implementing "${task || 'task'}", you MUST:`);
203
+ for (const result of results) {
204
+ console.log(` • ${result.instruction}`);
205
+ }
206
+ console.log();
207
+ }
208
+ }
209
+
210
+ // Execute if run directly
211
+ if (require.main === module) {
212
+ const agentInvocation = process.argv.slice(2).join(' ');
213
+ main(agentInvocation).catch(error => {
214
+ console.error('\n❌ Hook execution failed:', error.message);
215
+ process.exit(1);
216
+ });
217
+ }
218
+
219
+ module.exports = {
220
+ parseAgentInvocation,
221
+ findAgentFile,
222
+ extractDocumentationQueries,
223
+ queryContext7
224
+ };
@@ -0,0 +1,229 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Pre-Command Context7 Hook
5
+ *
6
+ * MANDATORY: This hook enforces Context7 documentation queries BEFORE command execution.
7
+ *
8
+ * Workflow:
9
+ * 1. Intercept command execution (e.g., /pm:epic-decompose)
10
+ * 2. Extract command file path from .claude/commands/{category}/{command}.md
11
+ * 3. Parse "Documentation Queries" section
12
+ * 4. Query Context7 MCP for each link
13
+ * 5. Inject results into execution context
14
+ * 6. Allow command to proceed with Context7 knowledge
15
+ *
16
+ * Zero Tolerance: If Context7 query fails, execution STOPS.
17
+ */
18
+
19
+ const fs = require('fs');
20
+ const path = require('path');
21
+
22
+ /**
23
+ * Extract command metadata from invocation
24
+ * @param {string} commandInvocation - e.g., "/pm:epic-decompose feature-name"
25
+ * @returns {object} { category, command, args }
26
+ */
27
+ function parseCommandInvocation(commandInvocation) {
28
+ // Remove leading slash and split
29
+ const cleaned = commandInvocation.replace(/^\//, '');
30
+ const [categoryCommand, ...args] = cleaned.split(/\s+/);
31
+ const [category, command] = categoryCommand.split(':');
32
+
33
+ return {
34
+ category: category || 'pm', // Default to pm if no category
35
+ command: command || categoryCommand,
36
+ args: args,
37
+ fullCommand: categoryCommand
38
+ };
39
+ }
40
+
41
+ /**
42
+ * Find command file in .claude/commands/
43
+ * @param {string} category - Command category (pm, azure, cloud, etc.)
44
+ * @param {string} command - Command name (epic-decompose, issue-start, etc.)
45
+ * @returns {string|null} - Path to command file or null
46
+ */
47
+ function findCommandFile(category, command) {
48
+ const baseDir = path.join(process.cwd(), '.claude', 'commands');
49
+
50
+ // Try exact match first
51
+ let commandPath = path.join(baseDir, category, `${command}.md`);
52
+ if (fs.existsSync(commandPath)) {
53
+ return commandPath;
54
+ }
55
+
56
+ // Try with underscores (epic-decompose → epic_decompose)
57
+ const underscored = command.replace(/-/g, '_');
58
+ commandPath = path.join(baseDir, category, `${underscored}.md`);
59
+ if (fs.existsSync(commandPath)) {
60
+ return commandPath;
61
+ }
62
+
63
+ // Try without category prefix if command includes it
64
+ if (command.includes('-')) {
65
+ const [, actualCommand] = command.split('-', 2);
66
+ if (actualCommand) {
67
+ commandPath = path.join(baseDir, category, `${actualCommand}.md`);
68
+ if (fs.existsSync(commandPath)) {
69
+ return commandPath;
70
+ }
71
+ }
72
+ }
73
+
74
+ return null;
75
+ }
76
+
77
+ /**
78
+ * Extract Documentation Queries from command file
79
+ * @param {string} filePath - Path to command .md file
80
+ * @returns {Array<{url: string, description: string}>}
81
+ */
82
+ function extractDocumentationQueries(filePath) {
83
+ const content = fs.readFileSync(filePath, 'utf8');
84
+ const queries = [];
85
+
86
+ // Find the Documentation Queries section
87
+ const querySection = content.match(/\*\*Documentation Queries:\*\*\s*\n([\s\S]*?)(?=\n\n|\*\*Why This is Required|\n##|$)/);
88
+
89
+ if (!querySection) {
90
+ return queries; // No Documentation Queries section found
91
+ }
92
+
93
+ // Extract each mcp://context7/... line
94
+ const lines = querySection[1].split('\n');
95
+ for (const line of lines) {
96
+ const match = line.match(/`(mcp:\/\/context7\/[^`]+)`\s*-\s*(.+)/);
97
+ if (match) {
98
+ queries.push({
99
+ url: match[1],
100
+ description: match[2].trim()
101
+ });
102
+ }
103
+ }
104
+
105
+ return queries;
106
+ }
107
+
108
+ /**
109
+ * Query Context7 MCP server
110
+ * @param {string} mcpUrl - e.g., "mcp://context7/agile/epic-decomposition"
111
+ * @returns {Promise<object>} - Context7 response
112
+ */
113
+ async function queryContext7(mcpUrl) {
114
+ // Parse MCP URL: mcp://context7/category/topic
115
+ const urlMatch = mcpUrl.match(/mcp:\/\/context7\/(.+)/);
116
+ if (!urlMatch) {
117
+ throw new Error(`Invalid Context7 URL format: ${mcpUrl}`);
118
+ }
119
+
120
+ const topicPath = urlMatch[1]; // e.g., "agile/epic-decomposition"
121
+
122
+ // In real implementation, this would call the MCP server
123
+ // For now, return a placeholder that instructs Claude to query
124
+ return {
125
+ url: mcpUrl,
126
+ topic: topicPath,
127
+ instruction: `MANDATORY: Query Context7 MCP for topic "${topicPath}" before proceeding with implementation.`,
128
+ placeholder: true
129
+ };
130
+ }
131
+
132
+ /**
133
+ * Main hook execution
134
+ * @param {string} commandInvocation - Full command string from user
135
+ */
136
+ async function main(commandInvocation) {
137
+ console.log('\n🔒 Context7 Pre-Command Hook Activated\n');
138
+
139
+ // Parse command
140
+ const { category, command, args, fullCommand } = parseCommandInvocation(commandInvocation || process.argv[2] || '');
141
+
142
+ console.log(`📋 Command: /${fullCommand}`);
143
+ console.log(` Category: ${category}`);
144
+ console.log(` Command: ${command}`);
145
+ if (args.length > 0) {
146
+ console.log(` Arguments: ${args.join(' ')}`);
147
+ }
148
+
149
+ // Find command file
150
+ const commandFile = findCommandFile(category, command);
151
+ if (!commandFile) {
152
+ console.log(`\n⚠️ Warning: Command file not found for /${fullCommand}`);
153
+ console.log(` Searched: .claude/commands/${category}/${command}.md`);
154
+ console.log(` Proceeding without Context7 enforcement (file may not exist yet)\n`);
155
+ return;
156
+ }
157
+
158
+ console.log(` File: ${path.relative(process.cwd(), commandFile)}`);
159
+
160
+ // Extract Documentation Queries
161
+ const queries = extractDocumentationQueries(commandFile);
162
+
163
+ if (queries.length === 0) {
164
+ console.log(`\n❌ CRITICAL: No Documentation Queries found in command file!`);
165
+ console.log(` This violates Context7 enforcement policy.`);
166
+ console.log(` ALL commands MUST have Documentation Queries section.`);
167
+ console.log(`\n Please add to ${path.basename(commandFile)}:`);
168
+ console.log(` ## Required Documentation Access`);
169
+ console.log(` **MANDATORY:** Before [action], query Context7 for best practices:`);
170
+ console.log(` **Documentation Queries:**`);
171
+ console.log(` - \`mcp://context7/...\` - Description`);
172
+ console.log(`\n Blocking execution until fixed.\n`);
173
+ process.exit(1);
174
+ }
175
+
176
+ console.log(`\n📚 Context7 Documentation Queries Required: ${queries.length}\n`);
177
+
178
+ // Query Context7 for each link
179
+ const results = [];
180
+ for (const query of queries) {
181
+ console.log(` ➜ ${query.url}`);
182
+ console.log(` ${query.description}`);
183
+
184
+ try {
185
+ const result = await queryContext7(query.url);
186
+ results.push(result);
187
+ } catch (error) {
188
+ console.log(`\n❌ Context7 query FAILED: ${error.message}`);
189
+ console.log(` Cannot proceed without Context7 documentation.`);
190
+ console.log(` Please ensure Context7 MCP server is running.\n`);
191
+ process.exit(1);
192
+ }
193
+ }
194
+
195
+ console.log(`\n✅ Context7 Queries Complete\n`);
196
+ console.log(`📖 REMINDER: You MUST use Context7 documentation in your implementation:`);
197
+ console.log(` • Apply patterns from Context7 examples`);
198
+ console.log(` • Verify API signatures against Context7 results`);
199
+ console.log(` • Follow best practices documented in Context7`);
200
+ console.log(` • Flag any conflicts between training data and Context7`);
201
+ console.log(`\n🚀 Proceeding with command execution...\n`);
202
+
203
+ // In production, this would inject Context7 results into Claude's context
204
+ // For now, we output instruction for Claude to see
205
+ if (results.length > 0 && results[0].placeholder) {
206
+ console.log(`⚡ ACTION REQUIRED:`);
207
+ console.log(` Before implementing /${fullCommand}, you MUST:`);
208
+ for (const result of results) {
209
+ console.log(` • ${result.instruction}`);
210
+ }
211
+ console.log();
212
+ }
213
+ }
214
+
215
+ // Execute if run directly
216
+ if (require.main === module) {
217
+ const commandInvocation = process.argv.slice(2).join(' ');
218
+ main(commandInvocation).catch(error => {
219
+ console.error('\n❌ Hook execution failed:', error.message);
220
+ process.exit(1);
221
+ });
222
+ }
223
+
224
+ module.exports = {
225
+ parseCommandInvocation,
226
+ findCommandFile,
227
+ extractDocumentationQueries,
228
+ queryContext7
229
+ };
@@ -0,0 +1,39 @@
1
+ #!/bin/bash
2
+
3
+ # STRICT MODE: Blocks ALL direct operations except Task tool
4
+
5
+ TOOL_NAME="$1"
6
+
7
+ # List of allowed tools when not using agents
8
+ ALLOWED_TOOLS="Task|TodoWrite|ExitPlanMode|WebFetch|WebSearch"
9
+
10
+ # If tool is not on allowed list
11
+ if ! echo "$TOOL_NAME" | grep -qE "^($ALLOWED_TOOLS)$"; then
12
+
13
+ # Tool to agent mapping
14
+ case "$TOOL_NAME" in
15
+ "Bash")
16
+ echo "❌ BLOCKED: Direct bash execution"
17
+ echo "✅ USE: Appropriate agent based on task:"
18
+ echo " - python-backend-engineer for Python development"
19
+ echo " - test-runner for running tests"
20
+ echo " - bash-scripting-expert for shell scripts"
21
+ exit 1
22
+ ;;
23
+ "Read"|"Glob"|"Grep")
24
+ echo "❌ BLOCKED: Direct file operations"
25
+ echo "✅ USE: code-analyzer or file-analyzer agent"
26
+ exit 1
27
+ ;;
28
+ "Edit"|"Write"|"MultiEdit")
29
+ echo "❌ BLOCKED: Direct file editing"
30
+ echo "✅ USE: Appropriate development agent:"
31
+ echo " - python-backend-engineer for .py files"
32
+ echo " - react-frontend-engineer for .jsx/.tsx files"
33
+ echo " - nodejs-backend-engineer for Node.js"
34
+ exit 1
35
+ ;;
36
+ esac
37
+ fi
38
+
39
+ exit 0
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+
3
+ # Hook test - call simulation
4
+ echo "Testing hook with different scenarios:"
5
+ echo "======================================"
6
+
7
+ # Test 1: Direct grep (should be blocked)
8
+ echo -e "\n1. Testing: Bash 'grep -r TODO *.py'"
9
+ ./.claude/hooks/enforce-agents.sh "Bash" '{"command": "grep -r TODO *.py"}' || echo " Result: Blocked ✓"
10
+
11
+ # Test 2: Task tool (should pass)
12
+ echo -e "\n2. Testing: Task tool usage"
13
+ ./.claude/hooks/enforce-agents.sh "Task" '{"agent": "code-analyzer"}' && echo " Result: Allowed ✓"
14
+
15
+ # Test 3: Direct tests (should be blocked)
16
+ echo -e "\n3. Testing: Bash 'pytest tests/'"
17
+ ./.claude/hooks/enforce-agents.sh "Bash" '{"command": "pytest tests/"}' || echo " Result: Blocked ✓"
18
+
19
+ # Test 4: Normal bash command (should pass)
20
+ echo -e "\n4. Testing: Bash 'ls -la'"
21
+ ./.claude/hooks/enforce-agents.sh "Bash" '{"command": "ls -la"}' && echo " Result: Allowed ✓"
@@ -0,0 +1,38 @@
1
+ #!/bin/bash
2
+
3
+ # Unified Context7 Enforcement Hook
4
+ # Triggered by Claude Code on tool-use events
5
+ # Shows Context7 queries that MUST be performed before command/agent execution
6
+
7
+ set -e
8
+
9
+ # Get the user's prompt/command
10
+ PROMPT="${PROMPT:-$1}"
11
+
12
+ # Check if this is a command invocation (starts with /)
13
+ if [[ "$PROMPT" =~ ^/([a-z-]+):([a-z-]+) ]]; then
14
+ CATEGORY="${BASH_REMATCH[1]}"
15
+ COMMAND="${BASH_REMATCH[2]}"
16
+
17
+ echo ""
18
+ echo "🔒 Context7 Enforcement: Command Detected"
19
+ echo " Command: /$CATEGORY:$COMMAND"
20
+ echo ""
21
+
22
+ # Run the command hook
23
+ node .claude/hooks/pre-command-context7.js "$PROMPT"
24
+
25
+ elif [[ "$PROMPT" =~ ^@([a-z-]+) ]]; then
26
+ AGENT="${BASH_REMATCH[1]}"
27
+
28
+ echo ""
29
+ echo "🔒 Context7 Enforcement: Agent Detected"
30
+ echo " Agent: @$AGENT"
31
+ echo ""
32
+
33
+ # Run the agent hook
34
+ node .claude/hooks/pre-agent-context7.js "$PROMPT"
35
+ fi
36
+
37
+ # Always allow execution to continue
38
+ exit 0
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@claudeautopm/plugin-core",
3
+ "version": "2.0.0",
4
+ "description": "Core framework functionality for ClaudeAutoPM - universal agents, rules, hooks, and utilities",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "keywords": [
10
+ "claude",
11
+ "autopm",
12
+ "core",
13
+ "framework",
14
+ "agents",
15
+ "tdd",
16
+ "context7",
17
+ "automation"
18
+ ],
19
+ "author": "ClaudeAutoPM Team",
20
+ "license": "MIT",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/rafeekpro/ClaudeAutoPM.git",
24
+ "directory": "packages/plugin-core"
25
+ },
26
+ "homepage": "https://github.com/rafeekpro/ClaudeAutoPM#readme",
27
+ "bugs": {
28
+ "url": "https://github.com/rafeekpro/ClaudeAutoPM/issues"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "files": [
34
+ "agents/",
35
+ "commands/",
36
+ "rules/",
37
+ "hooks/",
38
+ "scripts/",
39
+ "plugin.json",
40
+ "README.md"
41
+ ],
42
+ "engines": {
43
+ "node": ">=18.0.0"
44
+ }
45
+ }