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,366 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ LangChain RAG Example - Context7 Best Practices
4
+
5
+ Demonstrates LangChain RAG patterns from Context7:
6
+ - RunnablePassthrough.assign() for context injection
7
+ - Vector store retrieval with MMR
8
+ - RAG chain composition
9
+ - Document chunking and embedding
10
+ - Contextual compression for relevance
11
+
12
+ Source: /langchain-ai/langchain (150 snippets, trust 9.2)
13
+ """
14
+
15
+ import os
16
+ import logging
17
+ from typing import List
18
+ from langchain_community.document_loaders import TextLoader
19
+ from langchain.text_splitter import RecursiveCharacterTextSplitter
20
+ from langchain_openai import OpenAIEmbeddings, ChatOpenAI
21
+ from langchain_community.vectorstores import Chroma
22
+ from langchain_core.prompts import ChatPromptTemplate
23
+ from langchain_core.runnables import RunnablePassthrough
24
+ from langchain_core.output_parsers import StrOutputParser
25
+ from operator import itemgetter
26
+
27
+ logging.basicConfig(level=logging.INFO)
28
+ logger = logging.getLogger(__name__)
29
+
30
+
31
+ # ===================================================================
32
+ # CONTEXT7 PATTERN: Document Ingestion and Chunking
33
+ # ===================================================================
34
+
35
+ def create_sample_documents():
36
+ """Create sample documents for demonstration"""
37
+ documents = [
38
+ """
39
+ Python is a high-level, interpreted programming language known for its simplicity
40
+ and readability. It was created by Guido van Rossum and first released in 1991.
41
+ Python supports multiple programming paradigms including procedural, object-oriented,
42
+ and functional programming. It has a comprehensive standard library and a large
43
+ ecosystem of third-party packages available through PyPI.
44
+ """,
45
+ """
46
+ Machine Learning is a subset of artificial intelligence that focuses on the
47
+ development of algorithms that can learn from and make predictions on data.
48
+ Python is one of the most popular languages for machine learning due to libraries
49
+ like scikit-learn, TensorFlow, and PyTorch. These libraries provide implementations
50
+ of various ML algorithms including classification, regression, and clustering.
51
+ """,
52
+ """
53
+ LangChain is a framework for developing applications powered by language models.
54
+ It provides abstractions for working with LLMs, including chains, agents, and
55
+ retrievers. LangChain supports various vector stores for retrieval-augmented
56
+ generation (RAG), including Chroma, FAISS, and Pinecone. RAG combines the power
57
+ of language models with external knowledge bases for more accurate responses.
58
+ """,
59
+ """
60
+ Vector databases store high-dimensional vectors (embeddings) and enable efficient
61
+ similarity search. They are essential for RAG systems because they allow quick
62
+ retrieval of relevant documents based on semantic similarity. Popular vector
63
+ databases include Chroma (lightweight, local), Pinecone (cloud-based), and
64
+ FAISS (Facebook AI Similarity Search). Embeddings are typically generated
65
+ using models like OpenAI's text-embedding-3-small or sentence transformers.
66
+ """
67
+ ]
68
+
69
+ return documents
70
+
71
+
72
+ def ingest_and_chunk_documents(texts: List[str]) -> List:
73
+ """
74
+ Ingest and chunk documents with Context7 best practices.
75
+
76
+ Context7 Pattern: RecursiveCharacterTextSplitter with optimal parameters
77
+ """
78
+ logger.info("Chunking documents...")
79
+
80
+ # Context7 recommended: RecursiveCharacterTextSplitter
81
+ text_splitter = RecursiveCharacterTextSplitter(
82
+ chunk_size=512, # Optimal for embeddings
83
+ chunk_overlap=50, # Maintain context across chunks
84
+ length_function=len,
85
+ separators=["\n\n", "\n", " ", ""] # Hierarchical splitting
86
+ )
87
+
88
+ # Split documents
89
+ chunks = []
90
+ for i, text in enumerate(texts):
91
+ splits = text_splitter.split_text(text.strip())
92
+ for j, split in enumerate(splits):
93
+ chunks.append({
94
+ "page_content": split,
95
+ "metadata": {"source": f"doc_{i}", "chunk": j}
96
+ })
97
+
98
+ logger.info(f"✓ Created {len(chunks)} chunks from {len(texts)} documents")
99
+ return chunks
100
+
101
+
102
+ # ===================================================================
103
+ # CONTEXT7 PATTERN: Vector Store Creation
104
+ # ===================================================================
105
+
106
+ def create_vector_store(chunks: List[dict], persist_dir: str = "./chroma_db") -> Chroma:
107
+ """
108
+ Create vector store with Context7 best practices.
109
+
110
+ Context7 Pattern: Chroma with text-embedding-3-small
111
+ """
112
+ logger.info("Creating vector store...")
113
+
114
+ # Context7 recommended: text-embedding-3-small (cost-effective)
115
+ embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
116
+
117
+ # Extract text and metadata
118
+ texts = [chunk["page_content"] for chunk in chunks]
119
+ metadatas = [chunk["metadata"] for chunk in chunks]
120
+
121
+ # Create Chroma vector store
122
+ vectorstore = Chroma.from_texts(
123
+ texts=texts,
124
+ embedding=embeddings,
125
+ metadatas=metadatas,
126
+ persist_directory=persist_dir
127
+ )
128
+
129
+ logger.info(f"✓ Vector store created with {len(texts)} documents")
130
+ return vectorstore
131
+
132
+
133
+ # ===================================================================
134
+ # CONTEXT7 PATTERN: Retriever Configuration
135
+ # ===================================================================
136
+
137
+ def create_mmr_retriever(vectorstore: Chroma, k: int = 4):
138
+ """
139
+ Create MMR retriever with Context7 best practices.
140
+
141
+ Context7 Pattern: MMR (Maximal Marginal Relevance) for diversity
142
+ """
143
+ logger.info("Creating MMR retriever...")
144
+
145
+ # Context7 recommended: MMR for diverse, relevant results
146
+ retriever = vectorstore.as_retriever(
147
+ search_type="mmr",
148
+ search_kwargs={
149
+ "k": k, # Number of documents to return
150
+ "fetch_k": k * 2, # Fetch more candidates
151
+ "lambda_mult": 0.7 # Balance relevance (1.0) vs diversity (0.0)
152
+ }
153
+ )
154
+
155
+ logger.info(f"✓ MMR retriever created (k={k}, fetch_k={k*2}, lambda=0.7)")
156
+ return retriever
157
+
158
+
159
+ # ===================================================================
160
+ # CONTEXT7 PATTERN: RAG Chain with RunnablePassthrough.assign()
161
+ # ===================================================================
162
+
163
+ def create_rag_chain(retriever):
164
+ """
165
+ Create RAG chain with Context7 best practices.
166
+
167
+ Context7 Pattern: RunnablePassthrough.assign() for elegant context handling
168
+ """
169
+ logger.info("Creating RAG chain...")
170
+
171
+ # Context7 recommended prompt template
172
+ template = """Answer the question based ONLY on the following context.
173
+ If you cannot answer the question based on the context, say "I don't have enough information to answer."
174
+
175
+ Context:
176
+ {context}
177
+
178
+ Question: {question}
179
+
180
+ Answer:"""
181
+
182
+ prompt = ChatPromptTemplate.from_template(template)
183
+
184
+ # Context7: Use low temperature for factual responses
185
+ llm = ChatOpenAI(model="gpt-4", temperature=0)
186
+
187
+ # Context7 pattern: RunnablePassthrough.assign() for clean composition
188
+ rag_chain = (
189
+ RunnablePassthrough.assign(
190
+ context=itemgetter("question")
191
+ | retriever
192
+ | (lambda docs: "\n\n".join(doc.page_content for doc in docs))
193
+ )
194
+ | prompt
195
+ | llm
196
+ | StrOutputParser()
197
+ )
198
+
199
+ logger.info("✓ RAG chain created with RunnablePassthrough.assign()")
200
+ return rag_chain
201
+
202
+
203
+ # ===================================================================
204
+ # CONTEXT7 PATTERN: RAG Query Examples
205
+ # ===================================================================
206
+
207
+ async def run_rag_queries(rag_chain):
208
+ """Run example RAG queries to demonstrate retrieval"""
209
+ print("\n" + "=" * 60)
210
+ print("RAG QUERY EXAMPLES")
211
+ print("=" * 60 + "\n")
212
+
213
+ queries = [
214
+ {
215
+ "title": "Query 1: Python Basics",
216
+ "question": "What is Python and who created it?"
217
+ },
218
+ {
219
+ "title": "Query 2: Machine Learning",
220
+ "question": "What Python libraries are popular for machine learning?"
221
+ },
222
+ {
223
+ "title": "Query 3: RAG and LangChain",
224
+ "question": "What is RAG and how does LangChain support it?"
225
+ },
226
+ {
227
+ "title": "Query 4: Unknown Topic (should return 'insufficient info')",
228
+ "question": "What is quantum computing?"
229
+ }
230
+ ]
231
+
232
+ for query in queries:
233
+ print(f"\n{query['title']}")
234
+ print("-" * 60)
235
+ print(f"Question: {query['question']}")
236
+ print()
237
+
238
+ try:
239
+ response = rag_chain.invoke({"question": query["question"]})
240
+ print(f"Answer: {response}")
241
+
242
+ except Exception as e:
243
+ logger.error(f"Query failed: {e}")
244
+ print(f"Error: {e}")
245
+
246
+ print()
247
+
248
+
249
+ # ===================================================================
250
+ # CONTEXT7 PATTERN: Retrieval Quality Testing
251
+ # ===================================================================
252
+
253
+ def test_retrieval_quality(retriever):
254
+ """Test retrieval quality with sample queries"""
255
+ print("\n" + "=" * 60)
256
+ print("RETRIEVAL QUALITY TEST")
257
+ print("=" * 60 + "\n")
258
+
259
+ test_queries = [
260
+ "Python programming language",
261
+ "machine learning libraries",
262
+ "vector databases and embeddings"
263
+ ]
264
+
265
+ for query in test_queries:
266
+ print(f"Query: '{query}'")
267
+ print("-" * 60)
268
+
269
+ # Retrieve documents
270
+ docs = retriever.get_relevant_documents(query)
271
+
272
+ for i, doc in enumerate(docs, 1):
273
+ preview = doc.page_content[:100].replace("\n", " ")
274
+ print(f"{i}. {preview}...")
275
+
276
+ print()
277
+
278
+
279
+ # ===================================================================
280
+ # MAIN DEMONSTRATION
281
+ # ===================================================================
282
+
283
+ def main():
284
+ """Run complete RAG demonstration"""
285
+ print("\n" + "=" * 60)
286
+ print("LangChain RAG Example - Context7 Best Practices")
287
+ print("=" * 60 + "\n")
288
+
289
+ try:
290
+ # Check API key
291
+ if not os.getenv("OPENAI_API_KEY"):
292
+ raise ValueError("OPENAI_API_KEY environment variable not set")
293
+
294
+ # 1. Create sample documents
295
+ print("Step 1: Creating sample documents...")
296
+ documents = create_sample_documents()
297
+ print(f"✓ Created {len(documents)} sample documents\n")
298
+
299
+ # 2. Chunk documents
300
+ print("Step 2: Chunking documents...")
301
+ chunks = ingest_and_chunk_documents(documents)
302
+ print()
303
+
304
+ # 3. Create vector store
305
+ print("Step 3: Creating vector store...")
306
+ vectorstore = create_vector_store(chunks)
307
+ print()
308
+
309
+ # 4. Create retriever
310
+ print("Step 4: Creating MMR retriever...")
311
+ retriever = create_mmr_retriever(vectorstore, k=3)
312
+ print()
313
+
314
+ # 5. Test retrieval quality
315
+ test_retrieval_quality(retriever)
316
+
317
+ # 6. Create RAG chain
318
+ print("Step 5: Creating RAG chain...")
319
+ rag_chain = create_rag_chain(retriever)
320
+ print()
321
+
322
+ # 7. Run RAG queries
323
+ import asyncio
324
+ asyncio.run(run_rag_queries(rag_chain))
325
+
326
+ # Summary
327
+ print("\n" + "=" * 60)
328
+ print("RAG EXAMPLE COMPLETED SUCCESSFULLY")
329
+ print("=" * 60)
330
+ print("\nContext7 Patterns Demonstrated:")
331
+ print("1. ✅ RecursiveCharacterTextSplitter for hierarchical chunking")
332
+ print("2. ✅ text-embedding-3-small for cost-effective embeddings")
333
+ print("3. ✅ MMR retrieval for diverse, relevant results")
334
+ print("4. ✅ RunnablePassthrough.assign() for clean composition")
335
+ print("5. ✅ Temperature=0 for factual RAG responses")
336
+ print("6. ✅ Context boundary enforcement in prompt")
337
+ print("\nSource: /langchain-ai/langchain (150 snippets, trust 9.2)")
338
+
339
+ except ValueError as e:
340
+ logger.error(f"Configuration error: {e}")
341
+ print(f"\n❌ Error: {e}")
342
+ print("\nPlease set OPENAI_API_KEY environment variable:")
343
+ print("export OPENAI_API_KEY='your-api-key-here'")
344
+
345
+ except Exception as e:
346
+ logger.error(f"Unexpected error: {e}")
347
+ print(f"\n❌ Unexpected error: {e}")
348
+ import traceback
349
+ traceback.print_exc()
350
+
351
+
352
+ if __name__ == "__main__":
353
+ print("LangChain RAG Example - Context7 Best Practices")
354
+ print("=" * 60)
355
+ print("")
356
+ print("This example demonstrates Context7-verified patterns for:")
357
+ print("- Document chunking with RecursiveCharacterTextSplitter")
358
+ print("- Vector store creation with Chroma")
359
+ print("- MMR retrieval for diverse results")
360
+ print("- RAG chain composition with RunnablePassthrough.assign()")
361
+ print("- Context boundary enforcement")
362
+ print("")
363
+ print("Source: /langchain-ai/langchain (150 snippets, trust 9.2)")
364
+ print("")
365
+
366
+ main()
@@ -0,0 +1,224 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ MLflow Tracking Example - Context7 Best Practices
4
+
5
+ Demonstrates MLflow patterns from Context7:
6
+ - Experiment tracking and organization
7
+ - Parameter and metric logging
8
+ - Model registry and versioning
9
+ - Artifact storage
10
+ - Run comparison
11
+
12
+ Source: /mlflow/mlflow (3,114 snippets, trust 9.1)
13
+ """
14
+
15
+ import mlflow
16
+ import mlflow.sklearn
17
+ from mlflow.tracking import MlflowClient
18
+ from sklearn.ensemble import RandomForestClassifier
19
+ from sklearn.datasets import load_iris
20
+ from sklearn.model_selection import train_test_split
21
+ from sklearn.metrics import accuracy_score, f1_score
22
+ import logging
23
+
24
+ logging.basicConfig(level=logging.INFO)
25
+ logger = logging.getLogger(__name__)
26
+
27
+
28
+ # ===================================================================
29
+ # CONTEXT7 PATTERN: Experiment Organization
30
+ # ===================================================================
31
+
32
+ def setup_experiment(experiment_name: str = "iris-classification"):
33
+ """
34
+ Context7 Pattern: Organize runs into experiments
35
+ """
36
+ logger.info(f"Setting up experiment: {experiment_name}")
37
+
38
+ # Context7 pattern: Set experiment for organization
39
+ mlflow.set_experiment(experiment_name)
40
+
41
+ logger.info("✓ Experiment setup complete")
42
+
43
+
44
+ # ===================================================================
45
+ # CONTEXT7 PATTERN: Parameter and Metric Logging
46
+ # ===================================================================
47
+
48
+ def train_and_log_model(n_estimators: int, max_depth: int):
49
+ """
50
+ Context7 Pattern: Log params, metrics, and models
51
+ """
52
+ logger.info(f"Training model (n_estimators={n_estimators}, max_depth={max_depth})")
53
+
54
+ # Load data
55
+ iris = load_iris()
56
+ X_train, X_test, y_train, y_test = train_test_split(
57
+ iris.data, iris.target, test_size=0.2, random_state=42
58
+ )
59
+
60
+ # Context7 pattern: Use mlflow.start_run() context manager
61
+ with mlflow.start_run():
62
+ # Log parameters
63
+ mlflow.log_param("n_estimators", n_estimators)
64
+ mlflow.log_param("max_depth", max_depth)
65
+ mlflow.log_param("random_state", 42)
66
+
67
+ # Train model
68
+ model = RandomForestClassifier(
69
+ n_estimators=n_estimators,
70
+ max_depth=max_depth,
71
+ random_state=42
72
+ )
73
+ model.fit(X_train, y_train)
74
+
75
+ # Make predictions
76
+ y_pred = model.predict(X_test)
77
+
78
+ # Calculate metrics
79
+ accuracy = accuracy_score(y_test, y_pred)
80
+ f1 = f1_score(y_test, y_pred, average="weighted")
81
+
82
+ # Log metrics
83
+ mlflow.log_metric("accuracy", accuracy)
84
+ mlflow.log_metric("f1_score", f1)
85
+
86
+ # Context7 pattern: Log model with signature
87
+ mlflow.sklearn.log_model(
88
+ model,
89
+ "model",
90
+ registered_model_name="iris-classifier"
91
+ )
92
+
93
+ # Log tags
94
+ mlflow.set_tag("model_type", "RandomForest")
95
+ mlflow.set_tag("dataset", "iris")
96
+
97
+ run_id = mlflow.active_run().info.run_id
98
+ logger.info(f"✓ Run complete: {run_id} (accuracy={accuracy:.3f})")
99
+
100
+ return run_id, accuracy, f1
101
+
102
+
103
+ # ===================================================================
104
+ # CONTEXT7 PATTERN: Run Comparison
105
+ # ===================================================================
106
+
107
+ def compare_runs():
108
+ """
109
+ Context7 Pattern: Compare multiple runs
110
+ """
111
+ logger.info("Comparing multiple model configurations...")
112
+
113
+ configs = [
114
+ {"n_estimators": 10, "max_depth": 3},
115
+ {"n_estimators": 50, "max_depth": 5},
116
+ {"n_estimators": 100, "max_depth": 10},
117
+ ]
118
+
119
+ results = []
120
+
121
+ for config in configs:
122
+ run_id, accuracy, f1 = train_and_log_model(**config)
123
+ results.append({
124
+ "run_id": run_id,
125
+ "config": config,
126
+ "accuracy": accuracy,
127
+ "f1": f1
128
+ })
129
+
130
+ logger.info("✓ Model comparison complete")
131
+ return results
132
+
133
+
134
+ # ===================================================================
135
+ # CONTEXT7 PATTERN: Model Registry
136
+ # ===================================================================
137
+
138
+ def get_best_model():
139
+ """
140
+ Context7 Pattern: Retrieve best model from registry
141
+ """
142
+ logger.info("Retrieving best model from registry...")
143
+
144
+ client = MlflowClient()
145
+
146
+ # Get all versions of registered model
147
+ model_name = "iris-classifier"
148
+ versions = client.search_model_versions(f"name='{model_name}'")
149
+
150
+ if not versions:
151
+ logger.warning("No registered models found")
152
+ return None
153
+
154
+ # Find version with highest accuracy (from tags/metrics)
155
+ best_version = None
156
+ best_accuracy = 0
157
+
158
+ for version in versions:
159
+ run = client.get_run(version.run_id)
160
+ accuracy = run.data.metrics.get("accuracy", 0)
161
+
162
+ if accuracy > best_accuracy:
163
+ best_accuracy = accuracy
164
+ best_version = version
165
+
166
+ if best_version:
167
+ logger.info(f"✓ Best model: v{best_version.version} (accuracy={best_accuracy:.3f})")
168
+
169
+ return best_version
170
+
171
+
172
+ # ===================================================================
173
+ # MAIN DEMONSTRATION
174
+ # ===================================================================
175
+
176
+ def main():
177
+ """Run complete MLflow tracking demonstration"""
178
+ print("\n" + "=" * 60)
179
+ print("MLflow Tracking Example - Context7 Best Practices")
180
+ print("=" * 60 + "\n")
181
+
182
+ # 1. Setup experiment
183
+ print("Step 1: Setting up experiment...")
184
+ setup_experiment()
185
+ print()
186
+
187
+ # 2. Compare multiple runs
188
+ print("Step 2: Training and comparing models...")
189
+ print("-" * 60)
190
+ results = compare_runs()
191
+ print()
192
+
193
+ # 3. Display results
194
+ print("Step 3: Run Comparison Results")
195
+ print("-" * 60)
196
+ for i, result in enumerate(results, 1):
197
+ config = result["config"]
198
+ print(f"{i}. n_estimators={config['n_estimators']}, max_depth={config['max_depth']}")
199
+ print(f" Accuracy: {result['accuracy']:.3f}, F1: {result['f1']:.3f}")
200
+ print(f" Run ID: {result['run_id'][:8]}...")
201
+ print()
202
+
203
+ # 4. Get best model
204
+ print("Step 4: Retrieving best model from registry...")
205
+ print("-" * 60)
206
+ best_model = get_best_model()
207
+ print()
208
+
209
+ # Summary
210
+ print("\n" + "=" * 60)
211
+ print("MLflow TRACKING COMPLETED SUCCESSFULLY")
212
+ print("=" * 60)
213
+ print("\nContext7 Patterns Demonstrated:")
214
+ print("1. ✅ Experiment organization with set_experiment()")
215
+ print("2. ✅ Parameter logging with log_param()")
216
+ print("3. ✅ Metric logging with log_metric()")
217
+ print("4. ✅ Model logging with sklearn.log_model()")
218
+ print("5. ✅ Model registry for versioning")
219
+ print("\nSource: /mlflow/mlflow (3,114 snippets, trust 9.1)")
220
+ print(f"\nView results: mlflow ui")
221
+
222
+
223
+ if __name__ == "__main__":
224
+ main()