claude-autopm 2.8.2 → 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 (390) hide show
  1. package/README.md +399 -637
  2. package/package.json +2 -1
  3. package/packages/plugin-ai/LICENSE +21 -0
  4. package/packages/plugin-ai/README.md +316 -0
  5. package/packages/plugin-ai/agents/anthropic-claude-expert.md +579 -0
  6. package/packages/plugin-ai/agents/azure-openai-expert.md +1411 -0
  7. package/packages/plugin-ai/agents/gemini-api-expert.md +880 -0
  8. package/packages/plugin-ai/agents/google-a2a-expert.md +1445 -0
  9. package/packages/plugin-ai/agents/huggingface-expert.md +2131 -0
  10. package/packages/plugin-ai/agents/langchain-expert.md +1427 -0
  11. package/packages/plugin-ai/agents/langgraph-workflow-expert.md +520 -0
  12. package/packages/plugin-ai/agents/openai-python-expert.md +1087 -0
  13. package/packages/plugin-ai/commands/a2a-setup.md +886 -0
  14. package/packages/plugin-ai/commands/ai-model-deployment.md +481 -0
  15. package/packages/plugin-ai/commands/anthropic-optimize.md +793 -0
  16. package/packages/plugin-ai/commands/huggingface-deploy.md +789 -0
  17. package/packages/plugin-ai/commands/langchain-optimize.md +807 -0
  18. package/packages/plugin-ai/commands/llm-optimize.md +348 -0
  19. package/packages/plugin-ai/commands/openai-optimize.md +863 -0
  20. package/packages/plugin-ai/commands/rag-optimize.md +841 -0
  21. package/packages/plugin-ai/commands/rag-setup-scaffold.md +382 -0
  22. package/packages/plugin-ai/package.json +66 -0
  23. package/packages/plugin-ai/plugin.json +519 -0
  24. package/packages/plugin-ai/rules/ai-model-standards.md +449 -0
  25. package/packages/plugin-ai/rules/prompt-engineering-standards.md +509 -0
  26. package/packages/plugin-ai/scripts/examples/huggingface-inference-example.py +145 -0
  27. package/packages/plugin-ai/scripts/examples/langchain-rag-example.py +366 -0
  28. package/packages/plugin-ai/scripts/examples/mlflow-tracking-example.py +224 -0
  29. package/packages/plugin-ai/scripts/examples/openai-chat-example.py +425 -0
  30. package/packages/plugin-cloud/README.md +268 -0
  31. package/packages/plugin-cloud/agents/README.md +55 -0
  32. package/packages/plugin-cloud/agents/aws-cloud-architect.md +521 -0
  33. package/packages/plugin-cloud/agents/azure-cloud-architect.md +436 -0
  34. package/packages/plugin-cloud/agents/gcp-cloud-architect.md +385 -0
  35. package/packages/plugin-cloud/agents/gcp-cloud-functions-engineer.md +306 -0
  36. package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
  37. package/packages/plugin-cloud/agents/kubernetes-orchestrator.md +566 -0
  38. package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
  39. package/packages/plugin-cloud/agents/terraform-infrastructure-expert.md +454 -0
  40. package/packages/plugin-cloud/commands/cloud-cost-optimize.md +243 -0
  41. package/packages/plugin-cloud/commands/cloud-validate.md +196 -0
  42. package/packages/plugin-cloud/commands/infra-deploy.md +38 -0
  43. package/packages/plugin-cloud/commands/k8s-deploy.md +37 -0
  44. package/packages/plugin-cloud/commands/ssh-security.md +65 -0
  45. package/packages/plugin-cloud/commands/traefik-setup.md +65 -0
  46. package/packages/plugin-cloud/hooks/pre-cloud-deploy.js +456 -0
  47. package/packages/plugin-cloud/package.json +64 -0
  48. package/packages/plugin-cloud/plugin.json +338 -0
  49. package/packages/plugin-cloud/rules/cloud-security-compliance.md +313 -0
  50. package/packages/plugin-cloud/rules/infrastructure-pipeline.md +128 -0
  51. package/packages/plugin-cloud/scripts/examples/aws-validate.sh +30 -0
  52. package/packages/plugin-cloud/scripts/examples/azure-setup.sh +33 -0
  53. package/packages/plugin-cloud/scripts/examples/gcp-setup.sh +39 -0
  54. package/packages/plugin-cloud/scripts/examples/k8s-validate.sh +40 -0
  55. package/packages/plugin-cloud/scripts/examples/terraform-init.sh +26 -0
  56. package/packages/plugin-core/README.md +274 -0
  57. package/packages/plugin-core/agents/core/agent-manager.md +296 -0
  58. package/packages/plugin-core/agents/core/code-analyzer.md +131 -0
  59. package/packages/plugin-core/agents/core/file-analyzer.md +162 -0
  60. package/packages/plugin-core/agents/core/test-runner.md +200 -0
  61. package/packages/plugin-core/commands/code-rabbit.md +128 -0
  62. package/packages/plugin-core/commands/prompt.md +9 -0
  63. package/packages/plugin-core/commands/re-init.md +9 -0
  64. package/packages/plugin-core/hooks/context7-reminder.md +29 -0
  65. package/packages/plugin-core/hooks/enforce-agents.js +125 -0
  66. package/packages/plugin-core/hooks/enforce-agents.sh +35 -0
  67. package/packages/plugin-core/hooks/pre-agent-context7.js +224 -0
  68. package/packages/plugin-core/hooks/pre-command-context7.js +229 -0
  69. package/packages/plugin-core/hooks/strict-enforce-agents.sh +39 -0
  70. package/packages/plugin-core/hooks/test-hook.sh +21 -0
  71. package/packages/plugin-core/hooks/unified-context7-enforcement.sh +38 -0
  72. package/packages/plugin-core/package.json +45 -0
  73. package/packages/plugin-core/plugin.json +387 -0
  74. package/packages/plugin-core/rules/agent-coordination.md +549 -0
  75. package/packages/plugin-core/rules/agent-mandatory.md +170 -0
  76. package/packages/plugin-core/rules/ai-integration-patterns.md +219 -0
  77. package/packages/plugin-core/rules/command-pipelines.md +208 -0
  78. package/packages/plugin-core/rules/context-optimization.md +176 -0
  79. package/packages/plugin-core/rules/context7-enforcement.md +327 -0
  80. package/packages/plugin-core/rules/datetime.md +122 -0
  81. package/packages/plugin-core/rules/definition-of-done.md +272 -0
  82. package/packages/plugin-core/rules/development-environments.md +19 -0
  83. package/packages/plugin-core/rules/development-workflow.md +198 -0
  84. package/packages/plugin-core/rules/framework-path-rules.md +180 -0
  85. package/packages/plugin-core/rules/frontmatter-operations.md +64 -0
  86. package/packages/plugin-core/rules/git-strategy.md +237 -0
  87. package/packages/plugin-core/rules/golden-rules.md +181 -0
  88. package/packages/plugin-core/rules/naming-conventions.md +111 -0
  89. package/packages/plugin-core/rules/no-pr-workflow.md +183 -0
  90. package/packages/plugin-core/rules/performance-guidelines.md +403 -0
  91. package/packages/plugin-core/rules/pipeline-mandatory.md +109 -0
  92. package/packages/plugin-core/rules/security-checklist.md +318 -0
  93. package/packages/plugin-core/rules/standard-patterns.md +197 -0
  94. package/packages/plugin-core/rules/strip-frontmatter.md +85 -0
  95. package/packages/plugin-core/rules/tdd.enforcement.md +103 -0
  96. package/packages/plugin-core/rules/use-ast-grep.md +113 -0
  97. package/packages/plugin-core/scripts/lib/datetime-utils.sh +254 -0
  98. package/packages/plugin-core/scripts/lib/frontmatter-utils.sh +294 -0
  99. package/packages/plugin-core/scripts/lib/github-utils.sh +221 -0
  100. package/packages/plugin-core/scripts/lib/logging-utils.sh +199 -0
  101. package/packages/plugin-core/scripts/lib/validation-utils.sh +339 -0
  102. package/packages/plugin-core/scripts/mcp/add.sh +7 -0
  103. package/packages/plugin-core/scripts/mcp/disable.sh +12 -0
  104. package/packages/plugin-core/scripts/mcp/enable.sh +12 -0
  105. package/packages/plugin-core/scripts/mcp/list.sh +7 -0
  106. package/packages/plugin-core/scripts/mcp/sync.sh +8 -0
  107. package/packages/plugin-data/README.md +315 -0
  108. package/packages/plugin-data/agents/airflow-orchestration-expert.md +158 -0
  109. package/packages/plugin-data/agents/kedro-pipeline-expert.md +304 -0
  110. package/packages/plugin-data/agents/langgraph-workflow-expert.md +530 -0
  111. package/packages/plugin-data/commands/airflow-dag-scaffold.md +413 -0
  112. package/packages/plugin-data/commands/kafka-pipeline-scaffold.md +503 -0
  113. package/packages/plugin-data/package.json +66 -0
  114. package/packages/plugin-data/plugin.json +294 -0
  115. package/packages/plugin-data/rules/data-quality-standards.md +373 -0
  116. package/packages/plugin-data/rules/etl-pipeline-standards.md +255 -0
  117. package/packages/plugin-data/scripts/examples/airflow-dag-example.py +245 -0
  118. package/packages/plugin-data/scripts/examples/dbt-transform-example.sql +238 -0
  119. package/packages/plugin-data/scripts/examples/kafka-streaming-example.py +257 -0
  120. package/packages/plugin-data/scripts/examples/pandas-etl-example.py +332 -0
  121. package/packages/plugin-databases/README.md +330 -0
  122. package/packages/plugin-databases/agents/README.md +50 -0
  123. package/packages/plugin-databases/agents/bigquery-expert.md +401 -0
  124. package/packages/plugin-databases/agents/cosmosdb-expert.md +375 -0
  125. package/packages/plugin-databases/agents/mongodb-expert.md +407 -0
  126. package/packages/plugin-databases/agents/postgresql-expert.md +329 -0
  127. package/packages/plugin-databases/agents/redis-expert.md +74 -0
  128. package/packages/plugin-databases/commands/db-optimize.md +612 -0
  129. package/packages/plugin-databases/package.json +60 -0
  130. package/packages/plugin-databases/plugin.json +237 -0
  131. package/packages/plugin-databases/rules/database-management-strategy.md +146 -0
  132. package/packages/plugin-databases/rules/database-pipeline.md +316 -0
  133. package/packages/plugin-databases/scripts/examples/bigquery-cost-analyze.sh +160 -0
  134. package/packages/plugin-databases/scripts/examples/cosmosdb-ru-optimize.sh +163 -0
  135. package/packages/plugin-databases/scripts/examples/mongodb-shard-check.sh +120 -0
  136. package/packages/plugin-databases/scripts/examples/postgres-index-analyze.sh +95 -0
  137. package/packages/plugin-databases/scripts/examples/redis-cache-stats.sh +121 -0
  138. package/packages/plugin-devops/README.md +367 -0
  139. package/packages/plugin-devops/agents/README.md +52 -0
  140. package/packages/plugin-devops/agents/azure-devops-specialist.md +308 -0
  141. package/packages/plugin-devops/agents/docker-containerization-expert.md +298 -0
  142. package/packages/plugin-devops/agents/github-operations-specialist.md +335 -0
  143. package/packages/plugin-devops/agents/mcp-context-manager.md +319 -0
  144. package/packages/plugin-devops/agents/observability-engineer.md +574 -0
  145. package/packages/plugin-devops/agents/ssh-operations-expert.md +1093 -0
  146. package/packages/plugin-devops/agents/traefik-proxy-expert.md +444 -0
  147. package/packages/plugin-devops/commands/ci-pipeline-create.md +581 -0
  148. package/packages/plugin-devops/commands/docker-optimize.md +493 -0
  149. package/packages/plugin-devops/commands/workflow-create.md +42 -0
  150. package/packages/plugin-devops/hooks/pre-docker-build.js +472 -0
  151. package/packages/plugin-devops/package.json +61 -0
  152. package/packages/plugin-devops/plugin.json +302 -0
  153. package/packages/plugin-devops/rules/ci-cd-kubernetes-strategy.md +25 -0
  154. package/packages/plugin-devops/rules/devops-troubleshooting-playbook.md +450 -0
  155. package/packages/plugin-devops/rules/docker-first-development.md +404 -0
  156. package/packages/plugin-devops/rules/github-operations.md +92 -0
  157. package/packages/plugin-devops/scripts/examples/docker-build-multistage.sh +43 -0
  158. package/packages/plugin-devops/scripts/examples/docker-compose-validate.sh +74 -0
  159. package/packages/plugin-devops/scripts/examples/github-workflow-validate.sh +48 -0
  160. package/packages/plugin-devops/scripts/examples/prometheus-health-check.sh +58 -0
  161. package/packages/plugin-devops/scripts/examples/ssh-key-setup.sh +74 -0
  162. package/packages/plugin-frameworks/README.md +309 -0
  163. package/packages/plugin-frameworks/agents/README.md +64 -0
  164. package/packages/plugin-frameworks/agents/e2e-test-engineer.md +579 -0
  165. package/packages/plugin-frameworks/agents/nats-messaging-expert.md +254 -0
  166. package/packages/plugin-frameworks/agents/react-frontend-engineer.md +393 -0
  167. package/packages/plugin-frameworks/agents/react-ui-expert.md +226 -0
  168. package/packages/plugin-frameworks/agents/tailwindcss-expert.md +1021 -0
  169. package/packages/plugin-frameworks/agents/ux-design-expert.md +244 -0
  170. package/packages/plugin-frameworks/commands/app-scaffold.md +50 -0
  171. package/packages/plugin-frameworks/commands/nextjs-optimize.md +692 -0
  172. package/packages/plugin-frameworks/commands/react-optimize.md +583 -0
  173. package/packages/plugin-frameworks/commands/tailwind-system.md +64 -0
  174. package/packages/plugin-frameworks/package.json +59 -0
  175. package/packages/plugin-frameworks/plugin.json +224 -0
  176. package/packages/plugin-frameworks/rules/performance-guidelines.md +403 -0
  177. package/packages/plugin-frameworks/rules/ui-development-standards.md +281 -0
  178. package/packages/plugin-frameworks/rules/ui-framework-rules.md +151 -0
  179. package/packages/plugin-frameworks/scripts/examples/react-component-perf.sh +34 -0
  180. package/packages/plugin-frameworks/scripts/examples/tailwind-optimize.sh +44 -0
  181. package/packages/plugin-frameworks/scripts/examples/vue-composition-check.sh +41 -0
  182. package/packages/plugin-languages/README.md +333 -0
  183. package/packages/plugin-languages/agents/README.md +50 -0
  184. package/packages/plugin-languages/agents/bash-scripting-expert.md +541 -0
  185. package/packages/plugin-languages/agents/javascript-frontend-engineer.md +197 -0
  186. package/packages/plugin-languages/agents/nodejs-backend-engineer.md +226 -0
  187. package/packages/plugin-languages/agents/python-backend-engineer.md +214 -0
  188. package/packages/plugin-languages/agents/python-backend-expert.md +289 -0
  189. package/packages/plugin-languages/commands/javascript-optimize.md +636 -0
  190. package/packages/plugin-languages/commands/nodejs-api-scaffold.md +341 -0
  191. package/packages/plugin-languages/commands/nodejs-optimize.md +689 -0
  192. package/packages/plugin-languages/commands/python-api-scaffold.md +261 -0
  193. package/packages/plugin-languages/commands/python-optimize.md +593 -0
  194. package/packages/plugin-languages/package.json +65 -0
  195. package/packages/plugin-languages/plugin.json +265 -0
  196. package/packages/plugin-languages/rules/code-quality-standards.md +496 -0
  197. package/packages/plugin-languages/rules/testing-standards.md +768 -0
  198. package/packages/plugin-languages/scripts/examples/bash-production-script.sh +520 -0
  199. package/packages/plugin-languages/scripts/examples/javascript-es6-patterns.js +291 -0
  200. package/packages/plugin-languages/scripts/examples/nodejs-async-iteration.js +360 -0
  201. package/packages/plugin-languages/scripts/examples/python-async-patterns.py +289 -0
  202. package/packages/plugin-languages/scripts/examples/typescript-patterns.ts +432 -0
  203. package/packages/plugin-ml/README.md +430 -0
  204. package/packages/plugin-ml/agents/automl-expert.md +326 -0
  205. package/packages/plugin-ml/agents/computer-vision-expert.md +550 -0
  206. package/packages/plugin-ml/agents/gradient-boosting-expert.md +455 -0
  207. package/packages/plugin-ml/agents/neural-network-architect.md +1228 -0
  208. package/packages/plugin-ml/agents/nlp-transformer-expert.md +584 -0
  209. package/packages/plugin-ml/agents/pytorch-expert.md +412 -0
  210. package/packages/plugin-ml/agents/reinforcement-learning-expert.md +2088 -0
  211. package/packages/plugin-ml/agents/scikit-learn-expert.md +228 -0
  212. package/packages/plugin-ml/agents/tensorflow-keras-expert.md +509 -0
  213. package/packages/plugin-ml/agents/time-series-expert.md +303 -0
  214. package/packages/plugin-ml/commands/ml-automl.md +572 -0
  215. package/packages/plugin-ml/commands/ml-train-optimize.md +657 -0
  216. package/packages/plugin-ml/package.json +52 -0
  217. package/packages/plugin-ml/plugin.json +338 -0
  218. package/packages/plugin-pm/README.md +368 -0
  219. package/packages/plugin-pm/claudeautopm-plugin-pm-2.0.0.tgz +0 -0
  220. package/packages/plugin-pm/commands/azure/COMMANDS.md +107 -0
  221. package/packages/plugin-pm/commands/azure/COMMAND_MAPPING.md +252 -0
  222. package/packages/plugin-pm/commands/azure/INTEGRATION_FIX.md +103 -0
  223. package/packages/plugin-pm/commands/azure/README.md +246 -0
  224. package/packages/plugin-pm/commands/azure/active-work.md +198 -0
  225. package/packages/plugin-pm/commands/azure/aliases.md +143 -0
  226. package/packages/plugin-pm/commands/azure/blocked-items.md +287 -0
  227. package/packages/plugin-pm/commands/azure/clean.md +93 -0
  228. package/packages/plugin-pm/commands/azure/docs-query.md +48 -0
  229. package/packages/plugin-pm/commands/azure/feature-decompose.md +380 -0
  230. package/packages/plugin-pm/commands/azure/feature-list.md +61 -0
  231. package/packages/plugin-pm/commands/azure/feature-new.md +115 -0
  232. package/packages/plugin-pm/commands/azure/feature-show.md +205 -0
  233. package/packages/plugin-pm/commands/azure/feature-start.md +130 -0
  234. package/packages/plugin-pm/commands/azure/fix-integration-example.md +93 -0
  235. package/packages/plugin-pm/commands/azure/help.md +150 -0
  236. package/packages/plugin-pm/commands/azure/import-us.md +269 -0
  237. package/packages/plugin-pm/commands/azure/init.md +211 -0
  238. package/packages/plugin-pm/commands/azure/next-task.md +262 -0
  239. package/packages/plugin-pm/commands/azure/search.md +160 -0
  240. package/packages/plugin-pm/commands/azure/sprint-status.md +235 -0
  241. package/packages/plugin-pm/commands/azure/standup.md +260 -0
  242. package/packages/plugin-pm/commands/azure/sync-all.md +99 -0
  243. package/packages/plugin-pm/commands/azure/task-analyze.md +186 -0
  244. package/packages/plugin-pm/commands/azure/task-close.md +329 -0
  245. package/packages/plugin-pm/commands/azure/task-edit.md +145 -0
  246. package/packages/plugin-pm/commands/azure/task-list.md +263 -0
  247. package/packages/plugin-pm/commands/azure/task-new.md +84 -0
  248. package/packages/plugin-pm/commands/azure/task-reopen.md +79 -0
  249. package/packages/plugin-pm/commands/azure/task-show.md +126 -0
  250. package/packages/plugin-pm/commands/azure/task-start.md +301 -0
  251. package/packages/plugin-pm/commands/azure/task-status.md +65 -0
  252. package/packages/plugin-pm/commands/azure/task-sync.md +67 -0
  253. package/packages/plugin-pm/commands/azure/us-edit.md +164 -0
  254. package/packages/plugin-pm/commands/azure/us-list.md +202 -0
  255. package/packages/plugin-pm/commands/azure/us-new.md +265 -0
  256. package/packages/plugin-pm/commands/azure/us-parse.md +253 -0
  257. package/packages/plugin-pm/commands/azure/us-show.md +188 -0
  258. package/packages/plugin-pm/commands/azure/us-status.md +320 -0
  259. package/packages/plugin-pm/commands/azure/validate.md +86 -0
  260. package/packages/plugin-pm/commands/azure/work-item-sync.md +47 -0
  261. package/packages/plugin-pm/commands/blocked.md +28 -0
  262. package/packages/plugin-pm/commands/clean.md +119 -0
  263. package/packages/plugin-pm/commands/context-create.md +136 -0
  264. package/packages/plugin-pm/commands/context-prime.md +170 -0
  265. package/packages/plugin-pm/commands/context-update.md +292 -0
  266. package/packages/plugin-pm/commands/context.md +28 -0
  267. package/packages/plugin-pm/commands/epic-close.md +86 -0
  268. package/packages/plugin-pm/commands/epic-decompose.md +370 -0
  269. package/packages/plugin-pm/commands/epic-edit.md +83 -0
  270. package/packages/plugin-pm/commands/epic-list.md +30 -0
  271. package/packages/plugin-pm/commands/epic-merge.md +222 -0
  272. package/packages/plugin-pm/commands/epic-oneshot.md +119 -0
  273. package/packages/plugin-pm/commands/epic-refresh.md +119 -0
  274. package/packages/plugin-pm/commands/epic-show.md +28 -0
  275. package/packages/plugin-pm/commands/epic-split.md +120 -0
  276. package/packages/plugin-pm/commands/epic-start.md +195 -0
  277. package/packages/plugin-pm/commands/epic-status.md +28 -0
  278. package/packages/plugin-pm/commands/epic-sync-modular.md +338 -0
  279. package/packages/plugin-pm/commands/epic-sync-original.md +473 -0
  280. package/packages/plugin-pm/commands/epic-sync.md +486 -0
  281. package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
  282. package/packages/plugin-pm/commands/help.md +28 -0
  283. package/packages/plugin-pm/commands/import.md +115 -0
  284. package/packages/plugin-pm/commands/in-progress.md +28 -0
  285. package/packages/plugin-pm/commands/init.md +28 -0
  286. package/packages/plugin-pm/commands/issue-analyze.md +202 -0
  287. package/packages/plugin-pm/commands/issue-close.md +119 -0
  288. package/packages/plugin-pm/commands/issue-edit.md +93 -0
  289. package/packages/plugin-pm/commands/issue-reopen.md +87 -0
  290. package/packages/plugin-pm/commands/issue-show.md +41 -0
  291. package/packages/plugin-pm/commands/issue-start.md +234 -0
  292. package/packages/plugin-pm/commands/issue-status.md +95 -0
  293. package/packages/plugin-pm/commands/issue-sync.md +411 -0
  294. package/packages/plugin-pm/commands/next.md +28 -0
  295. package/packages/plugin-pm/commands/prd-edit.md +82 -0
  296. package/packages/plugin-pm/commands/prd-list.md +28 -0
  297. package/packages/plugin-pm/commands/prd-new.md +55 -0
  298. package/packages/plugin-pm/commands/prd-parse.md +42 -0
  299. package/packages/plugin-pm/commands/prd-status.md +28 -0
  300. package/packages/plugin-pm/commands/search.md +28 -0
  301. package/packages/plugin-pm/commands/standup.md +28 -0
  302. package/packages/plugin-pm/commands/status.md +28 -0
  303. package/packages/plugin-pm/commands/sync.md +99 -0
  304. package/packages/plugin-pm/commands/test-reference-update.md +151 -0
  305. package/packages/plugin-pm/commands/validate.md +28 -0
  306. package/packages/plugin-pm/commands/what-next.md +28 -0
  307. package/packages/plugin-pm/package.json +57 -0
  308. package/packages/plugin-pm/plugin.json +503 -0
  309. package/packages/plugin-pm/scripts/pm/analytics.js +425 -0
  310. package/packages/plugin-pm/scripts/pm/blocked.js +164 -0
  311. package/packages/plugin-pm/scripts/pm/blocked.sh +78 -0
  312. package/packages/plugin-pm/scripts/pm/clean.js +464 -0
  313. package/packages/plugin-pm/scripts/pm/context-create.js +216 -0
  314. package/packages/plugin-pm/scripts/pm/context-prime.js +335 -0
  315. package/packages/plugin-pm/scripts/pm/context-update.js +344 -0
  316. package/packages/plugin-pm/scripts/pm/context.js +338 -0
  317. package/packages/plugin-pm/scripts/pm/epic-close.js +347 -0
  318. package/packages/plugin-pm/scripts/pm/epic-edit.js +382 -0
  319. package/packages/plugin-pm/scripts/pm/epic-list.js +273 -0
  320. package/packages/plugin-pm/scripts/pm/epic-list.sh +109 -0
  321. package/packages/plugin-pm/scripts/pm/epic-show.js +291 -0
  322. package/packages/plugin-pm/scripts/pm/epic-show.sh +105 -0
  323. package/packages/plugin-pm/scripts/pm/epic-split.js +522 -0
  324. package/packages/plugin-pm/scripts/pm/epic-start/epic-start.js +183 -0
  325. package/packages/plugin-pm/scripts/pm/epic-start/epic-start.sh +94 -0
  326. package/packages/plugin-pm/scripts/pm/epic-status.js +291 -0
  327. package/packages/plugin-pm/scripts/pm/epic-status.sh +104 -0
  328. package/packages/plugin-pm/scripts/pm/epic-sync/README.md +208 -0
  329. package/packages/plugin-pm/scripts/pm/epic-sync/create-epic-issue.sh +77 -0
  330. package/packages/plugin-pm/scripts/pm/epic-sync/create-task-issues.sh +86 -0
  331. package/packages/plugin-pm/scripts/pm/epic-sync/update-epic-file.sh +79 -0
  332. package/packages/plugin-pm/scripts/pm/epic-sync/update-references.sh +89 -0
  333. package/packages/plugin-pm/scripts/pm/epic-sync.sh +137 -0
  334. package/packages/plugin-pm/scripts/pm/help.js +92 -0
  335. package/packages/plugin-pm/scripts/pm/help.sh +90 -0
  336. package/packages/plugin-pm/scripts/pm/in-progress.js +178 -0
  337. package/packages/plugin-pm/scripts/pm/in-progress.sh +93 -0
  338. package/packages/plugin-pm/scripts/pm/init.js +321 -0
  339. package/packages/plugin-pm/scripts/pm/init.sh +178 -0
  340. package/packages/plugin-pm/scripts/pm/issue-close.js +232 -0
  341. package/packages/plugin-pm/scripts/pm/issue-edit.js +310 -0
  342. package/packages/plugin-pm/scripts/pm/issue-show.js +272 -0
  343. package/packages/plugin-pm/scripts/pm/issue-start.js +181 -0
  344. package/packages/plugin-pm/scripts/pm/issue-sync/format-comment.sh +468 -0
  345. package/packages/plugin-pm/scripts/pm/issue-sync/gather-updates.sh +460 -0
  346. package/packages/plugin-pm/scripts/pm/issue-sync/post-comment.sh +330 -0
  347. package/packages/plugin-pm/scripts/pm/issue-sync/preflight-validation.sh +348 -0
  348. package/packages/plugin-pm/scripts/pm/issue-sync/update-frontmatter.sh +387 -0
  349. package/packages/plugin-pm/scripts/pm/lib/README.md +85 -0
  350. package/packages/plugin-pm/scripts/pm/lib/epic-discovery.js +119 -0
  351. package/packages/plugin-pm/scripts/pm/lib/logger.js +78 -0
  352. package/packages/plugin-pm/scripts/pm/next.js +189 -0
  353. package/packages/plugin-pm/scripts/pm/next.sh +72 -0
  354. package/packages/plugin-pm/scripts/pm/optimize.js +407 -0
  355. package/packages/plugin-pm/scripts/pm/pr-create.js +337 -0
  356. package/packages/plugin-pm/scripts/pm/pr-list.js +257 -0
  357. package/packages/plugin-pm/scripts/pm/prd-list.js +242 -0
  358. package/packages/plugin-pm/scripts/pm/prd-list.sh +103 -0
  359. package/packages/plugin-pm/scripts/pm/prd-new.js +684 -0
  360. package/packages/plugin-pm/scripts/pm/prd-parse.js +547 -0
  361. package/packages/plugin-pm/scripts/pm/prd-status.js +152 -0
  362. package/packages/plugin-pm/scripts/pm/prd-status.sh +63 -0
  363. package/packages/plugin-pm/scripts/pm/release.js +460 -0
  364. package/packages/plugin-pm/scripts/pm/search.js +192 -0
  365. package/packages/plugin-pm/scripts/pm/search.sh +89 -0
  366. package/packages/plugin-pm/scripts/pm/standup.js +362 -0
  367. package/packages/plugin-pm/scripts/pm/standup.sh +95 -0
  368. package/packages/plugin-pm/scripts/pm/status.js +148 -0
  369. package/packages/plugin-pm/scripts/pm/status.sh +59 -0
  370. package/packages/plugin-pm/scripts/pm/sync-batch.js +337 -0
  371. package/packages/plugin-pm/scripts/pm/sync.js +343 -0
  372. package/packages/plugin-pm/scripts/pm/template-list.js +141 -0
  373. package/packages/plugin-pm/scripts/pm/template-new.js +366 -0
  374. package/packages/plugin-pm/scripts/pm/validate.js +274 -0
  375. package/packages/plugin-pm/scripts/pm/validate.sh +106 -0
  376. package/packages/plugin-pm/scripts/pm/what-next.js +660 -0
  377. package/packages/plugin-testing/README.md +401 -0
  378. package/packages/plugin-testing/agents/frontend-testing-engineer.md +768 -0
  379. package/packages/plugin-testing/commands/jest-optimize.md +800 -0
  380. package/packages/plugin-testing/commands/playwright-optimize.md +887 -0
  381. package/packages/plugin-testing/commands/test-coverage.md +512 -0
  382. package/packages/plugin-testing/commands/test-performance.md +1041 -0
  383. package/packages/plugin-testing/commands/test-setup.md +414 -0
  384. package/packages/plugin-testing/package.json +40 -0
  385. package/packages/plugin-testing/plugin.json +197 -0
  386. package/packages/plugin-testing/rules/test-coverage-requirements.md +581 -0
  387. package/packages/plugin-testing/rules/testing-standards.md +529 -0
  388. package/packages/plugin-testing/scripts/examples/react-testing-example.test.jsx +460 -0
  389. package/packages/plugin-testing/scripts/examples/vitest-config-example.js +352 -0
  390. package/packages/plugin-testing/scripts/examples/vue-testing-example.test.js +586 -0
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env bash
2
+ # BigQuery cost analysis and optimization checker
3
+ # Usage: ./bigquery-cost-analyze.sh [project-id] [dataset]
4
+
5
+ set -euo pipefail
6
+
7
+ PROJECT_ID="${1:-}"
8
+ DATASET="${2:-}"
9
+
10
+ if [ -z "$PROJECT_ID" ]; then
11
+ echo "Usage: $0 <project-id> [dataset]"
12
+ exit 1
13
+ fi
14
+
15
+ echo "💰 Analyzing BigQuery costs and optimization opportunities..."
16
+ echo "Project: $PROJECT_ID"
17
+ if [ -n "$DATASET" ]; then
18
+ echo "Dataset: $DATASET"
19
+ fi
20
+
21
+ # Check if bq CLI is installed
22
+ if ! command -v bq &> /dev/null; then
23
+ echo "❌ bq CLI not found. Please install Google Cloud SDK."
24
+ exit 1
25
+ fi
26
+
27
+ # Get storage costs
28
+ echo ""
29
+ echo "📊 Storage Analysis:"
30
+ if [ -n "$DATASET" ]; then
31
+ QUERY="
32
+ SELECT
33
+ table_schema as dataset,
34
+ table_name,
35
+ ROUND(total_logical_bytes / POW(10, 9), 2) as logical_gb,
36
+ ROUND(total_physical_bytes / POW(10, 9), 2) as physical_gb,
37
+ ROUND(long_term_logical_bytes / POW(10, 9), 2) as long_term_gb,
38
+ CASE
39
+ WHEN total_rows > 0 THEN ROUND(total_physical_bytes / total_rows, 2)
40
+ ELSE 0
41
+ END as bytes_per_row
42
+ FROM \`region-us\`.INFORMATION_SCHEMA.TABLE_STORAGE
43
+ WHERE table_schema = '$DATASET'
44
+ ORDER BY total_physical_bytes DESC
45
+ LIMIT 10;
46
+ "
47
+ else
48
+ QUERY="
49
+ SELECT
50
+ table_schema as dataset,
51
+ SUM(total_physical_bytes) / POW(10, 9) as total_physical_gb,
52
+ SUM(long_term_physical_bytes) / POW(10, 9) as long_term_gb
53
+ FROM \`region-us\`.INFORMATION_SCHEMA.TABLE_STORAGE
54
+ GROUP BY table_schema
55
+ ORDER BY total_physical_gb DESC
56
+ LIMIT 10;
57
+ "
58
+ fi
59
+
60
+ bq query --use_legacy_sql=false --format=prettyjson "$QUERY" 2>/dev/null | head -50
61
+
62
+ # Check for partitioning and clustering
63
+ echo ""
64
+ echo "🗂️ Partitioning and Clustering Status:"
65
+ if [ -n "$DATASET" ]; then
66
+ PARTITION_QUERY="
67
+ SELECT
68
+ table_name,
69
+ CASE
70
+ WHEN is_partitioning_column = 'YES' THEN 'Partitioned'
71
+ ELSE 'Not Partitioned'
72
+ END as partition_status,
73
+ CASE
74
+ WHEN clustering_ordinal_position IS NOT NULL THEN 'Clustered'
75
+ ELSE 'Not Clustered'
76
+ END as cluster_status
77
+ FROM \`$PROJECT_ID.$DATASET.INFORMATION_SCHEMA.COLUMNS\`
78
+ WHERE table_name NOT LIKE '%INFORMATION_SCHEMA%'
79
+ GROUP BY table_name, partition_status, cluster_status
80
+ ORDER BY table_name;
81
+ "
82
+ bq query --use_legacy_sql=false --format=prettyjson "$PARTITION_QUERY" 2>/dev/null | head -50
83
+ fi
84
+
85
+ # Check recent query costs
86
+ echo ""
87
+ echo "💸 Most Expensive Queries (Last 7 Days):"
88
+ EXPENSIVE_QUERY="
89
+ SELECT
90
+ user_email,
91
+ query,
92
+ ROUND(total_bytes_processed / POW(10, 9), 2) as gb_processed,
93
+ ROUND(total_slot_ms / 1000, 2) as slot_seconds,
94
+ TIMESTAMP_DIFF(end_time, start_time, MILLISECOND) as duration_ms
95
+ FROM \`$PROJECT_ID.region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT\`
96
+ WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
97
+ AND job_type = 'QUERY'
98
+ AND state = 'DONE'
99
+ AND total_bytes_processed > 0
100
+ ORDER BY total_bytes_processed DESC
101
+ LIMIT 5;
102
+ "
103
+ bq query --use_legacy_sql=false --format=prettyjson "$EXPENSIVE_QUERY" 2>/dev/null | head -100
104
+
105
+ echo ""
106
+ echo "📋 Best practices from Context7 (/websites/cloud_google-bigquery):"
107
+ echo ""
108
+ echo "🗂️ Partitioning:"
109
+ echo " ✓ Partition tables by DATE or TIMESTAMP for time-series data"
110
+ echo " ✓ Use PARTITION BY DATE(timestamp_column) for daily partitions"
111
+ echo " ✓ Set partition_expiration_days to automatically remove old data"
112
+ echo " ✓ Use require_partition_filter=TRUE to enforce partition filtering"
113
+ echo ""
114
+ echo "Example:"
115
+ echo " CREATE TABLE dataset.events ("
116
+ echo " event_id INT64,"
117
+ echo " event_timestamp TIMESTAMP"
118
+ echo " )"
119
+ echo " PARTITION BY DATE(event_timestamp)"
120
+ echo " OPTIONS (partition_expiration_days=365);"
121
+ echo ""
122
+ echo "🎯 Clustering:"
123
+ echo " ✓ Cluster by columns frequently used in WHERE and GROUP BY"
124
+ echo " ✓ Order clustering columns by cardinality (low to high)"
125
+ echo " ✓ Up to 4 clustering columns supported"
126
+ echo " ✓ Clustering improves query performance and reduces costs"
127
+ echo ""
128
+ echo "Example:"
129
+ echo " CREATE TABLE dataset.events ("
130
+ echo " event_timestamp TIMESTAMP,"
131
+ echo " user_id STRING,"
132
+ echo " event_type STRING"
133
+ echo " )"
134
+ echo " PARTITION BY DATE(event_timestamp)"
135
+ echo " CLUSTER BY user_id, event_type;"
136
+ echo ""
137
+ echo "💰 Cost Optimization:"
138
+ echo " ✓ Use _PARTITIONTIME for partition pruning in WHERE clauses"
139
+ echo " ✓ Avoid SELECT * - specify only needed columns"
140
+ echo " ✓ Use LIMIT for exploratory queries"
141
+ echo " ✓ Preview data with table preview (free)"
142
+ echo " ✓ Use materialized views for repeated aggregations"
143
+ echo " ✓ Monitor INFORMATION_SCHEMA.TABLE_STORAGE for storage costs"
144
+ echo " ✓ Long-term storage (90+ days) is 50% cheaper"
145
+ echo ""
146
+ echo "🚀 Query Optimization:"
147
+ echo " ✓ Place _PARTITIONTIME on left side of comparisons"
148
+ echo " ✓ Use constant expressions for partition pruning"
149
+ echo " ✓ Combine filters with AND for multiple partition columns"
150
+ echo " ✓ Use ORDER BY + LIMIT for search queries on partitioned tables"
151
+ echo ""
152
+ echo "Example optimized query:"
153
+ echo " SELECT event_type, COUNT(*) as total"
154
+ echo " FROM dataset.events"
155
+ echo " WHERE DATE(event_timestamp) BETWEEN '2024-01-01' AND '2024-01-31'"
156
+ echo " AND user_id = 'user123'"
157
+ echo " GROUP BY event_type;"
158
+
159
+ echo ""
160
+ echo "✅ BigQuery cost analysis complete"
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/env bash
2
+ # Azure Cosmos DB RU/s optimization and partition analysis
3
+ # Usage: ./cosmosdb-ru-optimize.sh [resource-group] [account-name] [database] [container]
4
+
5
+ set -euo pipefail
6
+
7
+ RESOURCE_GROUP="${1:-}"
8
+ ACCOUNT_NAME="${2:-}"
9
+ DATABASE="${3:-}"
10
+ CONTAINER="${4:-}"
11
+
12
+ if [ -z "$RESOURCE_GROUP" ] || [ -z "$ACCOUNT_NAME" ] || [ -z "$DATABASE" ] || [ -z "$CONTAINER" ]; then
13
+ echo "Usage: $0 <resource-group> <account-name> <database> <container>"
14
+ exit 1
15
+ fi
16
+
17
+ echo "🔍 Analyzing Azure Cosmos DB RU/s and partition distribution..."
18
+ echo "Resource Group: $RESOURCE_GROUP"
19
+ echo "Account: $ACCOUNT_NAME"
20
+ echo "Database: $DATABASE"
21
+ echo "Container: $CONTAINER"
22
+
23
+ # Check if az CLI is installed
24
+ if ! command -v az &> /dev/null; then
25
+ echo "❌ Azure CLI not found. Please install Azure CLI."
26
+ exit 1
27
+ fi
28
+
29
+ # Get current throughput
30
+ echo ""
31
+ echo "📊 Current Throughput Configuration:"
32
+ az cosmosdb sql container throughput show \
33
+ --resource-group "$RESOURCE_GROUP" \
34
+ --account-name "$ACCOUNT_NAME" \
35
+ --database-name "$DATABASE" \
36
+ --name "$CONTAINER" \
37
+ --query "{throughput: resource.throughput, autoscale: resource.autoscaleSettings}" \
38
+ --output table 2>/dev/null || echo " ℹ️ Using database-level shared throughput"
39
+
40
+ # Get container properties
41
+ echo ""
42
+ echo "🗂️ Container Properties:"
43
+ az cosmosdb sql container show \
44
+ --resource-group "$RESOURCE_GROUP" \
45
+ --account-name "$ACCOUNT_NAME" \
46
+ --database-name "$DATABASE" \
47
+ --name "$CONTAINER" \
48
+ --query "{partitionKey: resource.partitionKey.paths[0], ttl: resource.defaultTtl, indexingPolicy: resource.indexingPolicy.indexingMode}" \
49
+ --output table
50
+
51
+ # Check for partition distribution (requires connection)
52
+ echo ""
53
+ echo "⚖️ Partition Distribution Analysis:"
54
+ echo " ℹ️ Use Azure Portal Metrics or Application Insights for detailed partition metrics"
55
+ echo " 📊 Recommended checks:"
56
+ echo " - Normalized RU Consumption (should be balanced across partitions)"
57
+ echo " - Storage per partition (should be evenly distributed)"
58
+ echo " - Hot partition detection (> 50% RU consumption on single partition)"
59
+
60
+ # Get consistency level
61
+ echo ""
62
+ echo "🎯 Consistency Level:"
63
+ az cosmosdb show \
64
+ --resource-group "$RESOURCE_GROUP" \
65
+ --name "$ACCOUNT_NAME" \
66
+ --query "consistencyPolicy.defaultConsistencyLevel" \
67
+ --output tsv
68
+
69
+ echo ""
70
+ echo "📋 Best practices from Context7 (/websites/learn_microsoft-en-us-azure-cosmos-db):"
71
+ echo ""
72
+ echo "🔑 Partition Key Selection:"
73
+ echo " ✓ Choose high-cardinality partition key (many distinct values)"
74
+ echo " ✓ Distribute read and write operations evenly"
75
+ echo " ✓ Avoid hot partitions (single partition handling most traffic)"
76
+ echo " ✓ Common patterns:"
77
+ echo " - User ID for user-centric applications"
78
+ echo " - Tenant ID for multi-tenant applications"
79
+ echo " - Date + ID composite for time-series data"
80
+ echo ""
81
+ echo "⚖️ Consistency Levels (by use case):"
82
+ echo " • Strong: Financial transactions, inventory systems"
83
+ echo " • Bounded Staleness: Social media feeds, leaderboards"
84
+ echo " • Session: Shopping carts, user preferences (MOST COMMON)"
85
+ echo " • Consistent Prefix: Live scores, news feeds"
86
+ echo " • Eventual: Analytics, telemetry, logs"
87
+ echo ""
88
+ echo "💰 RU/s Optimization:"
89
+ echo " ✓ Use autoscale for unpredictable workloads"
90
+ echo " ✓ Use manual throughput for consistent workloads"
91
+ echo " ✓ Monitor normalized RU consumption (should be 70-85%)"
92
+ echo " ✓ Distribute throughput evenly across partitions"
93
+ echo ""
94
+ echo "Example: Evenly distribute RU/s across partitions:"
95
+ echo " az cosmosdb sql container redistribute-partition-throughput \\"
96
+ echo " --resource-group '$RESOURCE_GROUP' \\"
97
+ echo " --account-name '$ACCOUNT_NAME' \\"
98
+ echo " --database-name '$DATABASE' \\"
99
+ echo " --name '$CONTAINER' \\"
100
+ echo " --evenly-distribute"
101
+ echo ""
102
+ echo "🕒 TTL (Time-to-Live):"
103
+ echo " ✓ Set defaultTtl for automatic data expiration"
104
+ echo " ✓ Per-item TTL for granular control"
105
+ echo " ✓ Reduces storage costs and improves query performance"
106
+ echo ""
107
+ echo "Example: Enable TTL on container:"
108
+ echo " az cosmosdb sql container update \\"
109
+ echo " --resource-group '$RESOURCE_GROUP' \\"
110
+ echo " --account-name '$ACCOUNT_NAME' \\"
111
+ echo " --database-name '$DATABASE' \\"
112
+ echo " --name '$CONTAINER' \\"
113
+ echo " --ttl 86400 # 24 hours"
114
+ echo ""
115
+ echo "📊 Query Optimization:"
116
+ echo " ✓ Include partition key in WHERE clause when possible"
117
+ echo " ✓ Use composite indexes for multi-property queries"
118
+ echo " ✓ Limit result set size with TOP"
119
+ echo " ✓ Use OFFSET/LIMIT for pagination"
120
+ echo " ✓ Avoid cross-partition queries when possible"
121
+ echo ""
122
+ echo "Example optimized query:"
123
+ echo " SELECT * FROM c"
124
+ echo " WHERE c.userId = 'user123' -- Partition key"
125
+ echo " AND c.timestamp > '2024-01-01'"
126
+ echo " ORDER BY c.timestamp DESC"
127
+ echo " OFFSET 0 LIMIT 20"
128
+ echo ""
129
+ echo "🌍 Global Distribution:"
130
+ echo " ✓ Enable multi-region writes for low latency globally"
131
+ echo " ✓ Use Session consistency for global applications"
132
+ echo " ✓ Configure read regions based on user distribution"
133
+ echo " ✓ Monitor cross-region replication lag"
134
+ echo ""
135
+ echo "💡 Cost Optimization Tips:"
136
+ echo " 1. Right-size RU/s based on actual usage (monitor normalized RU consumption)"
137
+ echo " 2. Use shared database throughput for small containers"
138
+ echo " 3. Implement TTL to automatically remove old data"
139
+ echo " 4. Use serverless for development/test environments"
140
+ echo " 5. Archive cold data to Azure Blob Storage"
141
+ echo " 6. Optimize indexing policy (exclude unused properties)"
142
+
143
+ # Check if container uses composite indexes
144
+ echo ""
145
+ echo "🔍 Checking Indexing Policy:"
146
+ az cosmosdb sql container show \
147
+ --resource-group "$RESOURCE_GROUP" \
148
+ --account-name "$ACCOUNT_NAME" \
149
+ --database-name "$DATABASE" \
150
+ --name "$CONTAINER" \
151
+ --query "resource.indexingPolicy" \
152
+ --output json 2>/dev/null | head -30
153
+
154
+ echo ""
155
+ echo "✅ Cosmos DB RU/s optimization analysis complete"
156
+ echo ""
157
+ echo "📌 Next Steps:"
158
+ echo " 1. Review partition distribution in Azure Portal Metrics"
159
+ echo " 2. Check for hot partitions (> 50% normalized RU consumption)"
160
+ echo " 3. Verify consistency level matches application requirements"
161
+ echo " 4. Implement TTL if not already configured"
162
+ echo " 5. Consider autoscale for variable workloads"
163
+ echo " 6. Monitor query RU charges and optimize high-cost queries"
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env bash
2
+ # MongoDB sharded collection index consistency check
3
+ # Usage: ./mongodb-shard-check.sh [database] [collection]
4
+
5
+ set -euo pipefail
6
+
7
+ DB_NAME="${1:-test}"
8
+ COLLECTION="${2:-users}"
9
+
10
+ echo "🔍 Checking MongoDB sharded collection index consistency..."
11
+ echo "Database: $DB_NAME"
12
+ echo "Collection: $COLLECTION"
13
+
14
+ # Create temporary JavaScript file for aggregation pipeline
15
+ TEMP_JS=$(mktemp)
16
+ cat > "$TEMP_JS" << 'EOJS'
17
+ const pipeline = [
18
+ // Get indexes and the shards that they belong to
19
+ {$indexStats: {}},
20
+ // Attach a list of all shards which reported indexes
21
+ {$group: {_id: null, indexDoc: {$push: "$$ROOT"}, allShards: {$addToSet: "$shard"}}},
22
+ // Unwind the generated array back
23
+ {$unwind: "$indexDoc"},
24
+ // Group by index name
25
+ {
26
+ $group: {
27
+ "_id": "$indexDoc.name",
28
+ "shards": {$push: "$indexDoc.shard"},
29
+ "specs": {$push: {$objectToArray: {$ifNull: ["$indexDoc.spec", {}]}}},
30
+ "allShards": {$first: "$allShards"}
31
+ }
32
+ },
33
+ // Compute which indexes are not present on all shards
34
+ {
35
+ $project: {
36
+ missingFromShards: {$setDifference: ["$allShards", "$shards"]},
37
+ inconsistentProperties: {
38
+ $setDifference: [
39
+ {$reduce: {
40
+ input: "$specs",
41
+ initialValue: {$arrayElemAt: ["$specs", 0]},
42
+ in: {$setUnion: ["$$value", "$$this"]}}},
43
+ {$reduce: {
44
+ input: "$specs",
45
+ initialValue: {$arrayElemAt: ["$specs", 0]},
46
+ in: {$setIntersection: ["$$value", "$$this"]}}}
47
+ ]
48
+ }
49
+ }
50
+ },
51
+ // Only return inconsistencies
52
+ {
53
+ $match: {
54
+ $expr: {$or: [
55
+ {$gt: [{$size: "$missingFromShards"}, 0]},
56
+ {$gt: [{$size: "$inconsistentProperties"}, 0]}
57
+ ]}
58
+ }
59
+ },
60
+ // Output relevant fields
61
+ {$project: {_id: 0, indexName: "$$ROOT._id", inconsistentProperties: 1, missingFromShards: 1}}
62
+ ];
63
+
64
+ const result = db.getSiblingDB("$DB_NAME").getCollection("$COLLECTION").aggregate(pipeline);
65
+
66
+ print("\n📊 Index Inconsistency Report:");
67
+ print("================================\n");
68
+
69
+ let found = false;
70
+ result.forEach(doc => {
71
+ found = true;
72
+ print("Index: " + doc.indexName);
73
+ if (doc.missingFromShards && doc.missingFromShards.length > 0) {
74
+ print(" ⚠️ Missing from shards: " + doc.missingFromShards.join(", "));
75
+ }
76
+ if (doc.inconsistentProperties && doc.inconsistentProperties.length > 0) {
77
+ print(" ⚠️ Inconsistent properties detected");
78
+ }
79
+ print("");
80
+ });
81
+
82
+ if (!found) {
83
+ print("✅ No index inconsistencies found - all indexes are consistent across shards\n");
84
+ }
85
+ EOJS
86
+
87
+ # Replace variables in the JavaScript file
88
+ sed -i '' "s/\$DB_NAME/$DB_NAME/g" "$TEMP_JS"
89
+ sed -i '' "s/\$COLLECTION/$COLLECTION/g" "$TEMP_JS"
90
+
91
+ # Execute the aggregation
92
+ mongosh --quiet --file "$TEMP_JS"
93
+
94
+ # Cleanup
95
+ rm "$TEMP_JS"
96
+
97
+ echo ""
98
+ echo "📊 Checking shard distribution..."
99
+ mongosh --quiet --eval "
100
+ db.getSiblingDB('$DB_NAME').getCollection('$COLLECTION').aggregate([
101
+ {\$collStats:{}},
102
+ {\$group: {_id: '\$ns', shard_list: {\$addToSet: '\$shard'}}}
103
+ ]).forEach(doc => {
104
+ print('Collection: ' + doc._id);
105
+ print('Shards: ' + doc.shard_list.join(', '));
106
+ });
107
+ "
108
+
109
+ echo ""
110
+ echo "📋 Best practices from Context7 (/mongodb/docs):"
111
+ echo " ✓ Compound indexes should match query filter order"
112
+ echo " ✓ Use \$indexStats to detect inconsistencies in sharded collections"
113
+ echo " ✓ Verify indexes exist on all shards for sharded collections"
114
+ echo " ✓ Use aggregation pipelines for complex queries"
115
+ echo " ✓ Monitor index usage with explain('executionStats')"
116
+ echo " ✓ Create indexes on frequently queried fields"
117
+ echo " ✓ Avoid creating too many indexes (impacts write performance)"
118
+
119
+ echo ""
120
+ echo "✅ MongoDB shard check complete"
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env bash
2
+ # PostgreSQL index analysis and optimization
3
+ # Usage: ./postgres-index-analyze.sh [database-name]
4
+
5
+ set -euo pipefail
6
+
7
+ DB_NAME="${1:-postgres}"
8
+
9
+ echo "🔍 Analyzing PostgreSQL indexes for database: $DB_NAME"
10
+
11
+ # Check for unused indexes
12
+ echo ""
13
+ echo "📊 Checking for unused indexes..."
14
+ psql -d "$DB_NAME" -c "
15
+ SELECT
16
+ schemaname,
17
+ tablename,
18
+ indexname,
19
+ idx_scan as scans,
20
+ pg_size_pretty(pg_relation_size(indexrelid)) as size
21
+ FROM pg_stat_user_indexes
22
+ WHERE idx_scan = 0 AND schemaname = 'public'
23
+ ORDER BY pg_relation_size(indexrelid) DESC
24
+ LIMIT 10;
25
+ "
26
+
27
+ # Check index hit ratio
28
+ echo ""
29
+ echo "📈 Checking index hit ratio..."
30
+ psql -d "$DB_NAME" -c "
31
+ SELECT
32
+ sum(idx_blks_hit) - sum(idx_blks_read) as idx_hit,
33
+ sum(idx_blks_hit) + sum(idx_blks_read) as idx_read,
34
+ CASE WHEN (sum(idx_blks_hit) + sum(idx_blks_read)) = 0 THEN 0
35
+ ELSE round(100.0 * sum(idx_blks_hit) / (sum(idx_blks_hit) + sum(idx_blks_read)), 2)
36
+ END as hit_ratio
37
+ FROM pg_statio_user_indexes;
38
+ "
39
+
40
+ # Show largest tables without indexes
41
+ echo ""
42
+ echo "⚠️ Large tables without indexes..."
43
+ psql -d "$DB_NAME" -c "
44
+ SELECT
45
+ schemaname,
46
+ tablename,
47
+ pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as total_size,
48
+ n_tup_ins + n_tup_upd + n_tup_del as modifications
49
+ FROM pg_stat_user_tables
50
+ WHERE schemaname = 'public'
51
+ AND tablename NOT IN (
52
+ SELECT DISTINCT tablename
53
+ FROM pg_indexes
54
+ WHERE schemaname = 'public'
55
+ )
56
+ ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC
57
+ LIMIT 10;
58
+ "
59
+
60
+ # Check for missing indexes on foreign keys
61
+ echo ""
62
+ echo "🔑 Checking for missing indexes on foreign keys..."
63
+ psql -d "$DB_NAME" -c "
64
+ SELECT
65
+ tc.table_schema,
66
+ tc.table_name,
67
+ kcu.column_name,
68
+ pg_size_pretty(pg_total_relation_size(tc.table_schema||'.'||tc.table_name)) as table_size
69
+ FROM information_schema.table_constraints tc
70
+ JOIN information_schema.key_column_usage kcu
71
+ ON tc.constraint_name = kcu.constraint_name
72
+ WHERE tc.constraint_type = 'FOREIGN KEY'
73
+ AND NOT EXISTS (
74
+ SELECT 1
75
+ FROM pg_indexes
76
+ WHERE schemaname = tc.table_schema
77
+ AND tablename = tc.table_name
78
+ AND indexdef LIKE '%'||kcu.column_name||'%'
79
+ )
80
+ ORDER BY pg_total_relation_size(tc.table_schema||'.'||tc.table_name) DESC
81
+ LIMIT 10;
82
+ "
83
+
84
+ echo ""
85
+ echo "📋 Best practices from Context7 (/websites/postgresql):"
86
+ echo " ✓ B-tree indexes for equality and range queries"
87
+ echo " ✓ Partial indexes for filtered queries (WHERE clause)"
88
+ echo " ✓ Covering indexes with INCLUDE clause (avoid heap lookups)"
89
+ echo " ✓ CREATE INDEX CONCURRENTLY to avoid table locks"
90
+ echo " ✓ Use EXPLAIN ANALYZE to verify index usage"
91
+ echo " ✓ Monitor pg_stat_user_indexes for index effectiveness"
92
+ echo " ✓ Drop unused indexes to reduce write overhead"
93
+
94
+ echo ""
95
+ echo "✅ PostgreSQL index analysis complete"
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env bash
2
+ # Redis cache statistics and performance analysis
3
+ # Usage: ./redis-cache-stats.sh [host] [port]
4
+
5
+ set -euo pipefail
6
+
7
+ REDIS_HOST="${1:-localhost}"
8
+ REDIS_PORT="${2:-6379}"
9
+
10
+ echo "📊 Analyzing Redis cache performance..."
11
+ echo "Host: $REDIS_HOST:$REDIS_PORT"
12
+
13
+ # Check connection
14
+ if ! redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" PING > /dev/null 2>&1; then
15
+ echo "❌ Cannot connect to Redis at $REDIS_HOST:$REDIS_PORT"
16
+ exit 1
17
+ fi
18
+
19
+ # Get memory stats
20
+ echo ""
21
+ echo "💾 Memory Statistics:"
22
+ redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" INFO memory | grep -E "used_memory_human|used_memory_peak_human|mem_fragmentation_ratio|maxmemory_policy"
23
+
24
+ # Get keyspace stats
25
+ echo ""
26
+ echo "🔑 Keyspace Statistics:"
27
+ redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" INFO keyspace
28
+
29
+ # Get hit/miss ratio
30
+ echo ""
31
+ echo "🎯 Cache Hit/Miss Ratio:"
32
+ redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" INFO stats | grep -E "keyspace_hits|keyspace_misses" | while read -r line; do
33
+ echo " $line"
34
+ done
35
+
36
+ # Calculate hit rate
37
+ HITS=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" INFO stats | grep "keyspace_hits:" | cut -d: -f2 | tr -d '\r')
38
+ MISSES=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" INFO stats | grep "keyspace_misses:" | cut -d: -f2 | tr -d '\r')
39
+
40
+ if [ -n "$HITS" ] && [ -n "$MISSES" ]; then
41
+ TOTAL=$((HITS + MISSES))
42
+ if [ "$TOTAL" -gt 0 ]; then
43
+ HIT_RATE=$(awk "BEGIN {printf \"%.2f\", ($HITS / $TOTAL) * 100}")
44
+ echo " Hit Rate: $HIT_RATE%"
45
+
46
+ if (( $(echo "$HIT_RATE < 80" | bc -l) )); then
47
+ echo " ⚠️ Hit rate below 80% - consider reviewing cache strategy"
48
+ else
49
+ echo " ✅ Hit rate is healthy (>80%)"
50
+ fi
51
+ fi
52
+ fi
53
+
54
+ # Check persistence configuration
55
+ echo ""
56
+ echo "💿 Persistence Configuration:"
57
+ redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" CONFIG GET save | tail -1
58
+ redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" CONFIG GET appendonly | tail -1
59
+
60
+ # Check for slow log entries
61
+ echo ""
62
+ echo "🐌 Recent Slow Log Entries:"
63
+ SLOW_COUNT=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" SLOWLOG LEN)
64
+ if [ "$SLOW_COUNT" -gt 0 ]; then
65
+ echo " Found $SLOW_COUNT slow log entries"
66
+ redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" SLOWLOG GET 5
67
+ else
68
+ echo " ✅ No slow log entries"
69
+ fi
70
+
71
+ # Check connected clients
72
+ echo ""
73
+ echo "👥 Connected Clients:"
74
+ redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" INFO clients | grep "connected_clients:"
75
+
76
+ # Sample key distribution by data type
77
+ echo ""
78
+ echo "📦 Key Distribution by Type:"
79
+ for type in string list set zset hash stream; do
80
+ count=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" --scan --pattern "*" | \
81
+ xargs -I{} redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" TYPE {} | \
82
+ grep -c "^$type$" || echo "0")
83
+ if [ "$count" -gt 0 ]; then
84
+ echo " $type: $count"
85
+ fi
86
+ done
87
+
88
+ echo ""
89
+ echo "📋 Best practices from Context7 (/websites/redis_io):"
90
+ echo " ✓ Client-side caching with placeholder pattern for race condition prevention"
91
+ echo " ✓ Use appropriate data structures:"
92
+ echo " - Hash: For objects with multiple fields"
93
+ echo " - Set: For unique collections, membership tests"
94
+ echo " - Sorted Set: For ranked/scored data, leaderboards"
95
+ echo " - List: For queues, stacks, recent items"
96
+ echo " - String: For simple key-value, counters"
97
+ echo " ✓ Configure persistence: AOF for durability, RDB for snapshots"
98
+ echo " ✓ Set expiration (TTL) on cached items"
99
+ echo " ✓ Monitor memory usage and implement eviction policies"
100
+ echo " ✓ Use pipelining for multiple commands"
101
+ echo " ✓ Avoid KEYS in production (use SCAN instead)"
102
+ echo " ✓ Target cache hit rate > 80%"
103
+
104
+ echo ""
105
+ echo "💡 Cache Strategy Recommendations:"
106
+ if [ -n "$HIT_RATE" ]; then
107
+ if (( $(echo "$HIT_RATE < 80" | bc -l) )); then
108
+ echo " 1. Review TTL settings - may be too short"
109
+ echo " 2. Analyze cache miss patterns"
110
+ echo " 3. Consider warming cache on startup"
111
+ echo " 4. Implement write-through caching where appropriate"
112
+ fi
113
+ fi
114
+
115
+ MEMORY_POLICY=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" CONFIG GET maxmemory-policy | tail -1)
116
+ if [ "$MEMORY_POLICY" = "noeviction" ]; then
117
+ echo " ⚠️ Eviction policy is 'noeviction' - consider using LRU or LFU"
118
+ fi
119
+
120
+ echo ""
121
+ echo "✅ Redis cache analysis complete"