claude-mpm 4.20.3__py3-none-any.whl → 4.25.10__py3-none-any.whl

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.

Potentially problematic release.


This version of claude-mpm might be problematic. Click here for more details.

Files changed (454) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +23 -6
  3. claude_mpm/agents/OUTPUT_STYLE.md +3 -48
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +1783 -34
  5. claude_mpm/agents/WORKFLOW.md +75 -2
  6. claude_mpm/agents/base_agent.json +6 -3
  7. claude_mpm/agents/frontmatter_validator.py +1 -1
  8. claude_mpm/agents/templates/api_qa.json +5 -2
  9. claude_mpm/agents/templates/circuit_breakers.md +108 -2
  10. claude_mpm/agents/templates/documentation.json +33 -6
  11. claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
  12. claude_mpm/agents/templates/php-engineer.json +10 -4
  13. claude_mpm/agents/templates/pm_red_flags.md +89 -19
  14. claude_mpm/agents/templates/project_organizer.json +7 -3
  15. claude_mpm/agents/templates/qa.json +2 -1
  16. claude_mpm/agents/templates/react_engineer.json +1 -0
  17. claude_mpm/agents/templates/research.json +82 -12
  18. claude_mpm/agents/templates/security.json +4 -4
  19. claude_mpm/agents/templates/tauri_engineer.json +274 -0
  20. claude_mpm/agents/templates/ticketing.json +10 -6
  21. claude_mpm/agents/templates/version_control.json +4 -2
  22. claude_mpm/agents/templates/web_qa.json +2 -1
  23. claude_mpm/cli/README.md +253 -0
  24. claude_mpm/cli/__init__.py +11 -1
  25. claude_mpm/cli/commands/aggregate.py +1 -1
  26. claude_mpm/cli/commands/analyze.py +3 -3
  27. claude_mpm/cli/commands/cleanup.py +1 -1
  28. claude_mpm/cli/commands/configure_agent_display.py +4 -4
  29. claude_mpm/cli/commands/debug.py +12 -12
  30. claude_mpm/cli/commands/hook_errors.py +277 -0
  31. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  32. claude_mpm/cli/commands/mcp_install_commands.py.backup +284 -0
  33. claude_mpm/cli/commands/mpm_init/README.md +365 -0
  34. claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
  35. claude_mpm/cli/commands/mpm_init/core.py +573 -0
  36. claude_mpm/cli/commands/mpm_init/display.py +341 -0
  37. claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
  38. claude_mpm/cli/commands/mpm_init/modes.py +397 -0
  39. claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
  40. claude_mpm/cli/commands/mpm_init_cli.py +396 -0
  41. claude_mpm/cli/commands/mpm_init_handler.py +67 -1
  42. claude_mpm/cli/commands/run.py +124 -128
  43. claude_mpm/cli/commands/skills.py +522 -34
  44. claude_mpm/cli/executor.py +56 -0
  45. claude_mpm/cli/interactive/agent_wizard.py +5 -5
  46. claude_mpm/cli/parsers/base_parser.py +28 -0
  47. claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
  48. claude_mpm/cli/parsers/skills_parser.py +138 -0
  49. claude_mpm/cli/startup.py +111 -8
  50. claude_mpm/cli/startup_display.py +480 -0
  51. claude_mpm/cli/utils.py +1 -1
  52. claude_mpm/cli_module/commands.py +1 -1
  53. claude_mpm/cli_module/refactoring_guide.md +253 -0
  54. claude_mpm/commands/mpm-help.md +3 -0
  55. claude_mpm/commands/mpm-init.md +19 -3
  56. claude_mpm/commands/mpm-resume.md +372 -0
  57. claude_mpm/commands/mpm-tickets.md +56 -7
  58. claude_mpm/commands/mpm.md +1 -0
  59. claude_mpm/config/agent_capabilities.yaml +658 -0
  60. claude_mpm/config/async_logging_config.yaml +145 -0
  61. claude_mpm/constants.py +12 -0
  62. claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +34 -0
  63. claude_mpm/core/api_validator.py +1 -1
  64. claude_mpm/core/claude_runner.py +14 -1
  65. claude_mpm/core/config.py +8 -0
  66. claude_mpm/core/constants.py +1 -1
  67. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  68. claude_mpm/core/hook_error_memory.py +381 -0
  69. claude_mpm/core/hook_manager.py +41 -2
  70. claude_mpm/core/interactive_session.py +48 -3
  71. claude_mpm/core/interfaces.py +56 -1
  72. claude_mpm/core/logger.py +3 -1
  73. claude_mpm/core/oneshot_session.py +39 -0
  74. claude_mpm/d2/.gitignore +22 -0
  75. claude_mpm/d2/ARCHITECTURE_COMPARISON.md +273 -0
  76. claude_mpm/d2/FLASK_INTEGRATION.md +156 -0
  77. claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +452 -0
  78. claude_mpm/d2/QUICKSTART.md +186 -0
  79. claude_mpm/d2/README.md +232 -0
  80. claude_mpm/d2/STORE_FIX_SUMMARY.md +167 -0
  81. claude_mpm/d2/SVELTE5_STORES_GUIDE.md +180 -0
  82. claude_mpm/d2/TESTING.md +288 -0
  83. claude_mpm/d2/index.html +118 -0
  84. claude_mpm/d2/package.json +19 -0
  85. claude_mpm/d2/src/App.svelte +110 -0
  86. claude_mpm/d2/src/components/Header.svelte +153 -0
  87. claude_mpm/d2/src/components/MainContent.svelte +74 -0
  88. claude_mpm/d2/src/components/Sidebar.svelte +85 -0
  89. claude_mpm/d2/src/components/tabs/EventsTab.svelte +326 -0
  90. claude_mpm/d2/src/lib/socketio.js +144 -0
  91. claude_mpm/d2/src/main.js +7 -0
  92. claude_mpm/d2/src/stores/events.js +114 -0
  93. claude_mpm/d2/src/stores/socket.js +108 -0
  94. claude_mpm/d2/src/stores/theme.js +65 -0
  95. claude_mpm/d2/svelte.config.js +12 -0
  96. claude_mpm/d2/vite.config.js +15 -0
  97. claude_mpm/dashboard/.claude-mpm/memories/README.md +36 -0
  98. claude_mpm/dashboard/BUILD_NUMBER +1 -0
  99. claude_mpm/dashboard/README.md +121 -0
  100. claude_mpm/dashboard/VERSION +1 -0
  101. claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +273 -0
  102. claude_mpm/dashboard/react/components/ErrorBoundary.tsx +75 -0
  103. claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +141 -0
  104. claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +36 -0
  105. claude_mpm/dashboard/react/components/shared/FilterBar.tsx +89 -0
  106. claude_mpm/dashboard/react/contexts/DashboardContext.tsx +215 -0
  107. claude_mpm/dashboard/react/entries/events.tsx +165 -0
  108. claude_mpm/dashboard/react/hooks/useEvents.ts +191 -0
  109. claude_mpm/dashboard/react/hooks/useSocket.ts +225 -0
  110. claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +170 -0
  111. claude_mpm/dashboard/static/built/components/activity-tree.js.map +1 -0
  112. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +101 -101
  113. claude_mpm/dashboard/static/built/components/agent-inference.js.map +1 -0
  114. claude_mpm/dashboard/static/built/components/build-tracker.js +59 -59
  115. claude_mpm/dashboard/static/built/components/code-simple.js +107 -107
  116. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +29 -29
  117. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +24 -24
  118. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +27 -27
  119. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +25 -25
  120. claude_mpm/dashboard/static/built/components/code-tree.js.map +1 -0
  121. claude_mpm/dashboard/static/built/components/code-viewer.js.map +1 -0
  122. claude_mpm/dashboard/static/built/components/connection-debug.js +101 -101
  123. claude_mpm/dashboard/static/built/components/diff-viewer.js +113 -113
  124. claude_mpm/dashboard/static/built/components/event-processor.js.map +1 -0
  125. claude_mpm/dashboard/static/built/components/event-viewer.js.map +1 -0
  126. claude_mpm/dashboard/static/built/components/export-manager.js.map +1 -0
  127. claude_mpm/dashboard/static/built/components/file-change-tracker.js +57 -57
  128. claude_mpm/dashboard/static/built/components/file-change-viewer.js +74 -74
  129. claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +1 -0
  130. claude_mpm/dashboard/static/built/components/file-viewer.js.map +1 -0
  131. claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +1 -0
  132. claude_mpm/dashboard/static/built/components/hud-manager.js.map +1 -0
  133. claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +1 -0
  134. claude_mpm/dashboard/static/built/components/module-viewer.js.map +1 -0
  135. claude_mpm/dashboard/static/built/components/session-manager.js.map +1 -0
  136. claude_mpm/dashboard/static/built/components/socket-manager.js.map +1 -0
  137. claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +1 -0
  138. claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +1 -0
  139. claude_mpm/dashboard/static/built/components/working-directory.js.map +1 -0
  140. claude_mpm/dashboard/static/built/connection-manager.js +76 -76
  141. claude_mpm/dashboard/static/built/dashboard.js.map +1 -0
  142. claude_mpm/dashboard/static/built/extension-error-handler.js +22 -22
  143. claude_mpm/dashboard/static/built/react/events.js.map +1 -0
  144. claude_mpm/dashboard/static/built/shared/dom-helpers.js +9 -9
  145. claude_mpm/dashboard/static/built/shared/event-bus.js +5 -5
  146. claude_mpm/dashboard/static/built/shared/logger.js +16 -16
  147. claude_mpm/dashboard/static/built/shared/tooltip-service.js +6 -6
  148. claude_mpm/dashboard/static/built/socket-client.js.map +1 -0
  149. claude_mpm/dashboard/static/css/activity.css +69 -69
  150. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  151. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  152. claude_mpm/dashboard/static/index.html +22 -22
  153. claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +170 -0
  154. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  155. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  156. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  157. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  158. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  159. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  160. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  161. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  162. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  163. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  164. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  165. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  166. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  167. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  168. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  169. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  170. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  171. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  172. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  173. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  174. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  175. claude_mpm/dashboard/static/js/shared/dom-helpers.js +9 -9
  176. claude_mpm/dashboard/static/js/shared/event-bus.js +5 -5
  177. claude_mpm/dashboard/static/js/shared/logger.js +16 -16
  178. claude_mpm/dashboard/static/js/shared/tooltip-service.js +6 -6
  179. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  180. claude_mpm/dashboard/static/navigation-test-results.md +118 -0
  181. claude_mpm/dashboard/static/production/main.html +21 -21
  182. claude_mpm/dashboard/static/test-archive/dashboard.html +22 -22
  183. claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +36 -0
  184. claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +39 -0
  185. claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +38 -0
  186. claude_mpm/dashboard/templates/code_simple.html +23 -23
  187. claude_mpm/dashboard/templates/index.html +18 -18
  188. claude_mpm/hooks/README.md +143 -0
  189. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  190. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  191. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  192. claude_mpm/hooks/templates/README.md +180 -0
  193. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  194. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  195. claude_mpm/hooks/templates/settings.json.example +147 -0
  196. claude_mpm/schemas/agent_schema.json +596 -0
  197. claude_mpm/schemas/frontmatter_schema.json +165 -0
  198. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  199. claude_mpm/scripts/start_activity_logging.py +3 -1
  200. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  201. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  202. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  203. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  204. claude_mpm/services/agents/loading/framework_agent_loader.py +8 -8
  205. claude_mpm/services/agents/local_template_manager.py +3 -1
  206. claude_mpm/services/cli/session_pause_manager.py +504 -0
  207. claude_mpm/services/cli/session_resume_helper.py +36 -16
  208. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  209. claude_mpm/services/core/base.py +26 -11
  210. claude_mpm/services/core/interfaces.py +56 -1
  211. claude_mpm/services/core/models/agent_config.py +3 -0
  212. claude_mpm/services/core/models/process.py +4 -0
  213. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  214. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  215. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  216. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  217. claude_mpm/services/diagnostics/doctor_reporter.py +6 -4
  218. claude_mpm/services/diagnostics/models.py +21 -0
  219. claude_mpm/services/event_bus/README.md +244 -0
  220. claude_mpm/services/event_bus/direct_relay.py +3 -3
  221. claude_mpm/services/event_bus/event_bus.py +36 -3
  222. claude_mpm/services/event_bus/relay.py +23 -7
  223. claude_mpm/services/events/README.md +303 -0
  224. claude_mpm/services/events/consumers/logging.py +1 -2
  225. claude_mpm/services/framework_claude_md_generator/README.md +119 -0
  226. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  227. claude_mpm/services/local_ops/__init__.py +2 -0
  228. claude_mpm/services/local_ops/process_manager.py +1 -1
  229. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  230. claude_mpm/services/mcp_gateway/README.md +185 -0
  231. claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
  232. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  233. claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
  234. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  235. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  236. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
  237. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  238. claude_mpm/services/memory/failure_tracker.py +19 -4
  239. claude_mpm/services/memory/optimizer.py +1 -1
  240. claude_mpm/services/model/model_router.py +8 -9
  241. claude_mpm/services/monitor/daemon.py +1 -1
  242. claude_mpm/services/monitor/server.py +2 -2
  243. claude_mpm/services/native_agent_converter.py +356 -0
  244. claude_mpm/services/port_manager.py +1 -1
  245. claude_mpm/services/project/documentation_manager.py +2 -1
  246. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  247. claude_mpm/services/runner_configuration_service.py +1 -0
  248. claude_mpm/services/self_upgrade_service.py +165 -7
  249. claude_mpm/services/skills_config.py +547 -0
  250. claude_mpm/services/skills_deployer.py +955 -0
  251. claude_mpm/services/socketio/handlers/connection.py +1 -1
  252. claude_mpm/services/socketio/handlers/connection.py.backup +217 -0
  253. claude_mpm/services/socketio/handlers/git.py +2 -2
  254. claude_mpm/services/socketio/handlers/hook.py.backup +154 -0
  255. claude_mpm/services/static/.gitkeep +2 -0
  256. claude_mpm/services/system_instructions_service.py +1 -3
  257. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  258. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  259. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  260. claude_mpm/services/version_control/VERSION +1 -0
  261. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  262. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  263. claude_mpm/skills/__init__.py +3 -3
  264. claude_mpm/skills/agent_skills_injector.py +42 -49
  265. claude_mpm/skills/bundled/.gitkeep +2 -0
  266. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +4 -0
  267. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +108 -114
  268. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  269. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  270. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  271. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  272. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  273. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +46 -41
  274. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  275. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  276. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +36 -73
  277. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  278. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  279. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +100 -125
  280. claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +63 -0
  281. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  282. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  283. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  284. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  285. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +28 -72
  286. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +11 -0
  287. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  288. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  289. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +272 -0
  290. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  291. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  292. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  293. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  294. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  295. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  296. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  297. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  298. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  299. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  300. claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +202 -0
  301. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +13 -1
  302. claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  303. claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +322 -0
  304. claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  305. claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +202 -0
  306. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +11 -0
  307. claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
  308. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +109 -277
  309. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  310. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  311. claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
  312. claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
  313. claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +22 -0
  314. claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +2 -0
  315. claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +202 -0
  316. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +135 -155
  317. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  318. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  319. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  320. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  321. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  322. claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +13 -12
  323. claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
  324. claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
  325. claude_mpm/skills/bundled/performance-profiling.md +6 -0
  326. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  327. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  328. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  329. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  330. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  331. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  332. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  333. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  334. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  335. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  336. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  337. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  338. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  339. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  340. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  341. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  342. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  343. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  344. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  345. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  346. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  347. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  348. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  349. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  350. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  351. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  352. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +21 -25
  353. claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +158 -0
  354. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  355. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  356. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  357. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  358. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  359. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  360. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +86 -250
  361. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  362. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  363. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  364. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  365. claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +202 -0
  366. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +145 -57
  367. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  368. claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
  369. claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
  370. claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
  371. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  372. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  373. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +37 -15
  374. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  375. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  376. claude_mpm/skills/skills_registry.py +44 -48
  377. claude_mpm/skills/skills_service.py +117 -108
  378. claude_mpm/templates/questions/EXAMPLES.md +501 -0
  379. claude_mpm/templates/questions/__init__.py +43 -0
  380. claude_mpm/templates/questions/base.py +193 -0
  381. claude_mpm/templates/questions/pr_strategy.py +314 -0
  382. claude_mpm/templates/questions/project_init.py +388 -0
  383. claude_mpm/templates/questions/ticket_mgmt.py +397 -0
  384. claude_mpm/tools/README_SOCKETIO_DEBUG.md +224 -0
  385. claude_mpm/tools/__main__.py +8 -8
  386. claude_mpm/tools/code_tree_analyzer/README.md +64 -0
  387. claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
  388. claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
  389. claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
  390. claude_mpm/tools/code_tree_analyzer/core.py +380 -0
  391. claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
  392. claude_mpm/tools/code_tree_analyzer/events.py +168 -0
  393. claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
  394. claude_mpm/tools/code_tree_analyzer/models.py +39 -0
  395. claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
  396. claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
  397. claude_mpm/utils/agent_dependency_loader.py +3 -3
  398. claude_mpm/utils/dependency_cache.py +3 -1
  399. claude_mpm/utils/gitignore.py +241 -0
  400. claude_mpm/utils/log_cleanup.py +3 -3
  401. claude_mpm/utils/robust_installer.py +3 -5
  402. claude_mpm/utils/structured_questions.py +619 -0
  403. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/METADATA +218 -31
  404. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +409 -246
  405. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  406. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  407. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  408. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  409. claude_mpm/cli/commands/mpm_init.py +0 -2093
  410. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  411. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  412. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  413. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  414. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  415. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  416. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  417. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  418. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  419. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  420. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  421. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  422. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  423. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  424. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  425. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  426. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  427. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  428. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  429. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  430. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  431. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  432. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  433. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  434. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  435. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  436. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  437. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  438. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  439. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  440. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  441. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  442. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  443. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  444. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  445. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  446. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  447. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  448. claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
  449. claude_mpm/tools/code_tree_analyzer.py +0 -1825
  450. /claude_mpm/skills/bundled/collaboration/requesting-code-review/{code-reviewer.md → references/code-reviewer-template.md} +0 -0
  451. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
  452. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
  453. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
  454. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,317 @@
1
+ # Assertion Quality Guide
2
+
3
+ ## Assertion Strength Spectrum
4
+
5
+ ### Level 1: Worthless (Don't use)
6
+ ```python
7
+ assert result # Always passes unless None/False
8
+ assert x # Meaningless
9
+ assert True # Always passes
10
+ ```
11
+
12
+ **Problem:** These pass even when functionality is completely broken.
13
+
14
+ ### Level 2: Existence Only (Very weak)
15
+ ```python
16
+ assert result is not None
17
+ assert len(items) > 0
18
+ assert user
19
+ ```
20
+
21
+ **Problem:** Verifies something exists, not that it's correct.
22
+
23
+ **When acceptable:** As a precondition before stronger assertions.
24
+
25
+ ### Level 3: Type Checking (Weak)
26
+ ```python
27
+ assert isinstance(result, dict)
28
+ assert type(user) == User
29
+ ```
30
+
31
+ **Problem:** Right type, but could be garbage data.
32
+
33
+ **When acceptable:** Combined with value assertions.
34
+
35
+ ### Level 4: Property Existence (Moderate)
36
+ ```python
37
+ assert 'email' in user
38
+ assert hasattr(response, 'status_code')
39
+ ```
40
+
41
+ **Problem:** Property exists but could have wrong value.
42
+
43
+ **When acceptable:** When structure matters more than values.
44
+
45
+ ### Level 5: Value Verification (Strong)
46
+ ```python
47
+ assert user.email == "test@example.com"
48
+ assert response.status_code == 200
49
+ assert len(items) == 5
50
+ ```
51
+
52
+ **Good:** Verifies specific correctness.
53
+
54
+ **Still missing:** Failure cases, edge conditions.
55
+
56
+ ### Level 6: Complete Verification (Strongest)
57
+ ```python
58
+ # Success case
59
+ assert user.email == "test@example.com"
60
+ assert user.is_active is True
61
+ assert user.created_at <= datetime.now()
62
+
63
+ # Failure case
64
+ with pytest.raises(ValidationError) as exc:
65
+ create_user("invalid-email")
66
+ assert "Invalid email format" in str(exc.value)
67
+
68
+ # Side effects
69
+ assert User.count() == initial_count + 1
70
+ ```
71
+
72
+ **Best:** Verifies correctness AND failure modes AND side effects.
73
+
74
+ ## Assertion Patterns
75
+
76
+ ### Pattern 1: Value Assertions
77
+
78
+ #### Bad: Existence Only
79
+ ```python
80
+ def test_user_creation():
81
+ user = create_user("test@example.com", "password")
82
+ assert user # Weak!
83
+ ```
84
+
85
+ #### Good: Specific Values
86
+ ```python
87
+ def test_user_creation_sets_correct_attributes():
88
+ user = create_user("test@example.com", "password123")
89
+
90
+ assert user.email == "test@example.com"
91
+ assert user.is_active is True
92
+ assert user.role == "user"
93
+ assert user.created_at is not None
94
+ ```
95
+
96
+ ### Pattern 2: Collection Assertions
97
+
98
+ #### Bad: Count Only
99
+ ```python
100
+ def test_get_users():
101
+ users = get_all_users()
102
+ assert len(users) > 0 # Weak!
103
+ ```
104
+
105
+ #### Good: Content Verification
106
+ ```python
107
+ def test_get_users_returns_all_active_users():
108
+ create_user("user1@example.com")
109
+ create_user("user2@example.com")
110
+ create_inactive_user("inactive@example.com")
111
+
112
+ users = get_all_users()
113
+
114
+ assert len(users) == 2
115
+ emails = [u.email for u in users]
116
+ assert "user1@example.com" in emails
117
+ assert "user2@example.com" in emails
118
+ assert "inactive@example.com" not in emails
119
+ ```
120
+
121
+ ### Pattern 3: Error Assertions
122
+
123
+ #### Bad: Generic Exception
124
+ ```python
125
+ def test_invalid_input():
126
+ try:
127
+ process_data(None)
128
+ assert False, "Should have raised"
129
+ except Exception:
130
+ pass # Too generic!
131
+ ```
132
+
133
+ #### Good: Specific Error with Message
134
+ ```python
135
+ def test_process_data_with_none_raises_validation_error():
136
+ with pytest.raises(ValidationError) as exc:
137
+ process_data(None)
138
+
139
+ assert "Data cannot be None" in str(exc.value)
140
+ assert exc.value.field == "data"
141
+ ```
142
+
143
+ ### Pattern 4: State Change Assertions
144
+
145
+ #### Bad: No Before/After Check
146
+ ```python
147
+ def test_update_user():
148
+ user = get_user(1)
149
+ update_user(1, email="new@example.com")
150
+ # No verification of actual change!
151
+ ```
152
+
153
+ #### Good: Verify State Transition
154
+ ```python
155
+ def test_update_user_email_changes_email_field():
156
+ user = create_user("old@example.com")
157
+ original_email = user.email
158
+
159
+ update_user(user.id, email="new@example.com")
160
+ updated_user = get_user(user.id)
161
+
162
+ assert updated_user.email == "new@example.com"
163
+ assert updated_user.email != original_email
164
+ assert updated_user.id == user.id # Same user
165
+ ```
166
+
167
+ ### Pattern 5: API Response Assertions
168
+
169
+ #### Bad: Status Code Only
170
+ ```python
171
+ def test_api_endpoint():
172
+ response = client.get("/api/users")
173
+ assert response.status_code == 200 # Weak!
174
+ ```
175
+
176
+ #### Good: Complete Response Verification
177
+ ```python
178
+ def test_get_users_endpoint_returns_user_list():
179
+ create_user("test1@example.com")
180
+ create_user("test2@example.com")
181
+
182
+ response = client.get("/api/users")
183
+
184
+ assert response.status_code == 200
185
+ assert response.headers["Content-Type"] == "application/json"
186
+
187
+ data = response.json()
188
+ assert "users" in data
189
+ assert len(data["users"]) == 2
190
+ assert data["users"][0]["email"] == "test1@example.com"
191
+ ```
192
+
193
+ ## Assertion Anti-Patterns
194
+
195
+ ### Anti-Pattern 1: Testing Mock Behavior
196
+ ```python
197
+ # BAD
198
+ def test_send_email():
199
+ mock_mailer = Mock()
200
+ send_email(mock_mailer, "test@example.com", "Hello")
201
+ assert mock_mailer.send.called # Testing mock!
202
+ ```
203
+
204
+ **Fix:** Test real behavior or use test doubles that verify contracts.
205
+
206
+ ### Anti-Pattern 2: Asserting Implementation Details
207
+ ```python
208
+ # BAD
209
+ def test_password_hashing():
210
+ user = User("test", "password")
211
+ assert user._hash_algorithm == "bcrypt" # Implementation detail!
212
+ ```
213
+
214
+ **Fix:** Test behavior (password verification works) not implementation.
215
+
216
+ ### Anti-Pattern 3: Multiple Concepts in One Assert
217
+ ```python
218
+ # BAD
219
+ def test_user_and_profile():
220
+ result = create_user_with_profile(...)
221
+ assert result.user and result.profile # Too vague!
222
+ ```
223
+
224
+ **Fix:** Separate assertions for each concept.
225
+
226
+ ### Anti-Pattern 4: Overly Lenient Assertions
227
+ ```python
228
+ # BAD
229
+ def test_calculate_total():
230
+ total = calculate_total([1, 2, 3])
231
+ assert total > 0 # Way too lenient!
232
+ ```
233
+
234
+ **Fix:** Assert exact expected value.
235
+
236
+ ## Assertion Best Practices
237
+
238
+ ### 1. One Concept Per Assertion
239
+ ```python
240
+ # Good: Clear what's being verified
241
+ assert user.email == expected_email
242
+ assert user.is_active is True
243
+ assert user.created_at is not None
244
+ ```
245
+
246
+ ### 2. Meaningful Failure Messages
247
+ ```python
248
+ # Good: Helpful when test fails
249
+ assert user.age >= 18, f"User age {user.age} is below minimum 18"
250
+ ```
251
+
252
+ ### 3. Assert Actual vs Expected
253
+ ```python
254
+ # Good: Clear which is which
255
+ assert actual == expected # Convention: actual first
256
+ ```
257
+
258
+ ### 4. Test Both Paths
259
+ ```python
260
+ # Good: Success and failure
261
+ def test_valid_login_succeeds():
262
+ assert login("user", "pass").success is True
263
+
264
+ def test_invalid_login_fails():
265
+ assert login("user", "wrong").success is False
266
+ ```
267
+
268
+ ### 5. Verify Side Effects
269
+ ```python
270
+ # Good: Check state changes
271
+ def test_delete_user_removes_from_database():
272
+ user = create_user("test@example.com")
273
+ initial_count = User.count()
274
+
275
+ delete_user(user.id)
276
+
277
+ assert User.count() == initial_count - 1
278
+ assert User.get(user.id) is None
279
+ ```
280
+
281
+ ## Assertion Checklist
282
+
283
+ For each assertion, ask:
284
+
285
+ - [ ] **Specificity**: Is this assertion specific enough?
286
+ - [ ] **Meaningfulness**: Would this fail if functionality breaks?
287
+ - [ ] **Completeness**: Are all aspects verified?
288
+ - [ ] **Clarity**: Is it obvious what's being tested?
289
+ - [ ] **Failure Messages**: Will I know why it failed?
290
+
291
+ ## Quick Reference
292
+
293
+ ### Strong Assertions ✅
294
+ ```python
295
+ assert actual == expected_value
296
+ assert result.field == specific_value
297
+ assert len(collection) == expected_count
298
+ assert "expected text" in result.message
299
+ with pytest.raises(SpecificError):
300
+ dangerous_operation()
301
+ ```
302
+
303
+ ### Weak Assertions ❌
304
+ ```python
305
+ assert result
306
+ assert result is not None
307
+ assert len(collection) > 0
308
+ assert True
309
+ assert mock.called
310
+ ```
311
+
312
+ ## Remember
313
+
314
+ > "An assertion that would pass with broken code is not an assertion."
315
+ > "Weak assertions create false confidence."
316
+ > "Test behavior, not implementation."
317
+ > "Verify correctness, not just existence."
@@ -0,0 +1,270 @@
1
+ # Test Inspection Checklist
2
+
3
+ ## Quick Inspection (2 minutes per test)
4
+
5
+ ### Intent Check
6
+ - [ ] Test name describes behavior, not method
7
+ - [ ] Expected behavior is stated
8
+ - [ ] Single clear purpose
9
+
10
+ ### Assertion Check
11
+ - [ ] Assertions match intent
12
+ - [ ] Specific values, not just "not None"
13
+ - [ ] Would catch regressions
14
+
15
+ ### Failure Check
16
+ - [ ] Error cases tested
17
+ - [ ] Would fail if feature removed
18
+ - [ ] Meaningful failure messages
19
+
20
+ ## Deep Inspection (5-10 minutes per test)
21
+
22
+ ### 1. Intent Analysis
23
+ ```
24
+ Question: What is this test supposed to verify?
25
+
26
+ Checklist:
27
+ [ ] Test name clearly states behavior
28
+ [ ] Docstring explains expected outcome
29
+ [ ] Setup reflects realistic scenario
30
+ [ ] Test has single responsibility
31
+ ```
32
+
33
+ **Red Flags:**
34
+ - "test_method_name" (tests method, not behavior)
35
+ - "test_user" (too vague)
36
+ - "test_works" (what does "works" mean?)
37
+
38
+ ### 2. Setup Quality
39
+ ```
40
+ Question: Is the setup realistic and complete?
41
+
42
+ Checklist:
43
+ [ ] Test data matches production patterns
44
+ [ ] All dependencies are initialized
45
+ [ ] State is valid and achievable
46
+ [ ] Mocks are justified and complete
47
+ ```
48
+
49
+ **Red Flags:**
50
+ - Mock data that would never occur
51
+ - Missing required fields
52
+ - Bypassing normal constraints
53
+ - Over-simplified scenarios
54
+
55
+ ### 3. Execution Verification
56
+ ```
57
+ Question: Does execution match intent?
58
+
59
+ Checklist:
60
+ [ ] Real code paths are exercised
61
+ [ ] System under test is not mocked
62
+ [ ] Integration points are tested
63
+ [ ] Side effects are verifiable
64
+ ```
65
+
66
+ **Red Flags:**
67
+ - Mocking the system under test
68
+ - Testing mock behavior
69
+ - Skipping critical paths
70
+ - No integration verification
71
+
72
+ ### 4. Assertion Strength
73
+ ```
74
+ Question: Do assertions prove correctness?
75
+
76
+ Checklist:
77
+ [ ] Assertions verify specific values
78
+ [ ] Success criteria are explicit
79
+ [ ] Failure cases are tested
80
+ [ ] Error messages are meaningful
81
+ ```
82
+
83
+ **Red Flags:**
84
+ - `assert result` (too weak)
85
+ - `assert x is not None` (existence only)
86
+ - `assert mock.called` (testing mock)
87
+ - No negative assertions
88
+
89
+ ### 5. Regression Prevention
90
+ ```
91
+ Question: Would this catch real bugs?
92
+
93
+ Checklist:
94
+ [ ] Test would fail if feature removed
95
+ [ ] Boundary conditions tested
96
+ [ ] Edge cases covered
97
+ [ ] Known bug patterns caught
98
+ ```
99
+
100
+ **Red Flags:**
101
+ - Test passes with broken code
102
+ - Only happy path tested
103
+ - No boundary testing
104
+ - Missing error scenarios
105
+
106
+ ## Inspection Report Template
107
+
108
+ ```markdown
109
+ ### Test: [test_name]
110
+
111
+ **Intent:** [What test claims to verify]
112
+ **Actually Tests:** [What it really tests]
113
+
114
+ **Strengths:**
115
+ - [Good aspects]
116
+
117
+ **Issues:**
118
+ 1. [Issue] - [Impact]
119
+ 2. [Issue] - [Impact]
120
+
121
+ **Suggestions:**
122
+ 1. [Specific improvement]
123
+ 2. [Additional test case]
124
+ 3. [Assertion strengthening]
125
+
126
+ **Risk Level:** [LOW/MEDIUM/HIGH]
127
+ **Action:** [APPROVE/REQUEST_CHANGES/BLOCK]
128
+ ```
129
+
130
+ ## Risk Assessment
131
+
132
+ ### HIGH Risk (Block merge)
133
+ - Weak assertions that would miss bugs
134
+ - Testing mock behavior only
135
+ - Missing critical failure cases
136
+ - Test passes with broken functionality
137
+
138
+ ### MEDIUM Risk (Request changes)
139
+ - Incomplete coverage of scenarios
140
+ - Weak but not broken assertions
141
+ - Missing some error cases
142
+ - Could be stronger
143
+
144
+ ### LOW Risk (Approve with notes)
145
+ - Minor naming improvements
146
+ - Additional nice-to-have tests
147
+ - Documentation enhancements
148
+ - Style consistency
149
+
150
+ ## Common Patterns to Inspect
151
+
152
+ ### Pattern 1: CRUD Operations
153
+ ```python
154
+ # Check:
155
+ [ ] Create: Valid data, duplicate prevention, validation
156
+ [ ] Read: Exists, doesn't exist, multiple results
157
+ [ ] Update: Valid changes, invalid changes, concurrency
158
+ [ ] Delete: Exists, doesn't exist, cascade effects
159
+ ```
160
+
161
+ ### Pattern 2: Authentication/Authorization
162
+ ```python
163
+ # Check:
164
+ [ ] Valid credentials succeed
165
+ [ ] Invalid credentials fail
166
+ [ ] Locked accounts rejected
167
+ [ ] Expired tokens rejected
168
+ [ ] Insufficient permissions denied
169
+ ```
170
+
171
+ ### Pattern 3: Data Validation
172
+ ```python
173
+ # Check:
174
+ [ ] Valid data accepted
175
+ [ ] Invalid format rejected
176
+ [ ] Missing required fields rejected
177
+ [ ] Boundary values tested
178
+ [ ] Type coercion tested
179
+ ```
180
+
181
+ ### Pattern 4: API Endpoints
182
+ ```python
183
+ # Check:
184
+ [ ] Success response structure
185
+ [ ] Error response structure
186
+ [ ] Status codes correct
187
+ [ ] Request validation
188
+ [ ] Response validation
189
+ ```
190
+
191
+ ## Mental Debugging Technique
192
+
193
+ For each test, mentally introduce bugs:
194
+
195
+ ### Bug 1: Remove Core Logic
196
+ ```
197
+ If I comment out the main functionality,
198
+ would this test fail?
199
+
200
+ If NO: Test is not testing the right thing
201
+ ```
202
+
203
+ ### Bug 2: Return Wrong Data
204
+ ```
205
+ If I return incorrect values,
206
+ would assertions catch it?
207
+
208
+ If NO: Assertions are too weak
209
+ ```
210
+
211
+ ### Bug 3: Skip Validation
212
+ ```
213
+ If I remove input validation,
214
+ would test catch invalid data?
215
+
216
+ If NO: Missing negative test cases
217
+ ```
218
+
219
+ ### Bug 4: Break Error Handling
220
+ ```
221
+ If I make errors silently fail,
222
+ would test detect it?
223
+
224
+ If NO: Not testing failure paths
225
+ ```
226
+
227
+ ## Inspection Efficiency Tips
228
+
229
+ ### Quick Wins
230
+ 1. Check test names first (30 seconds)
231
+ 2. Scan assertions (30 seconds)
232
+ 3. Look for negative tests (30 seconds)
233
+ 4. Check mock usage (30 seconds)
234
+
235
+ ### Deep Dive Triggers
236
+ - Test name is vague
237
+ - Only one or two assertions
238
+ - No error cases visible
239
+ - Heavy mock usage
240
+ - Test recently added
241
+
242
+ ### Batch Inspection
243
+ ```
244
+ For test suite review:
245
+ 1. Group tests by feature
246
+ 2. Check coverage gaps between tests
247
+ 3. Look for redundant tests
248
+ 4. Identify missing scenarios
249
+ 5. Verify integration tests exist
250
+ ```
251
+
252
+ ## Remember
253
+
254
+ ✅ **Good inspection prevents:**
255
+ - False confidence from weak tests
256
+ - Production bugs slipping through
257
+ - Wasted time on bad tests
258
+ - Technical debt accumulation
259
+
260
+ ❌ **Don't just check:**
261
+ - That tests exist
262
+ - That tests pass
263
+ - That coverage is high
264
+ - That names follow convention
265
+
266
+ ✓ **Always verify:**
267
+ - Tests test the right thing
268
+ - Assertions are meaningful
269
+ - Failures are caught
270
+ - Regressions are prevented