claude-mpm 4.25.10__py3-none-any.whl → 5.1.8__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 (507) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +12 -0
  3. claude_mpm/agents/PM_INSTRUCTIONS.md +1055 -2230
  4. claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
  5. claude_mpm/agents/WORKFLOW.md +4 -4
  6. claude_mpm/agents/__init__.py +6 -0
  7. claude_mpm/agents/agent_loader.py +1 -4
  8. claude_mpm/agents/base_agent_loader.py +10 -35
  9. claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +576 -66
  10. claude_mpm/agents/templates/context-management-examples.md +544 -0
  11. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  12. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  13. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  14. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  15. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  16. claude_mpm/cli/__init__.py +28 -3
  17. claude_mpm/cli/commands/__init__.py +2 -0
  18. claude_mpm/cli/commands/agent_source.py +774 -0
  19. claude_mpm/cli/commands/agent_state_manager.py +188 -30
  20. claude_mpm/cli/commands/agents.py +959 -36
  21. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  22. claude_mpm/cli/commands/agents_discover.py +338 -0
  23. claude_mpm/cli/commands/auto_configure.py +537 -239
  24. claude_mpm/cli/commands/config.py +7 -4
  25. claude_mpm/cli/commands/configure.py +924 -45
  26. claude_mpm/cli/commands/configure_navigation.py +63 -46
  27. claude_mpm/cli/commands/doctor.py +10 -2
  28. claude_mpm/cli/commands/local_deploy.py +1 -4
  29. claude_mpm/cli/commands/postmortem.py +401 -0
  30. claude_mpm/cli/commands/run.py +1 -39
  31. claude_mpm/cli/commands/skill_source.py +694 -0
  32. claude_mpm/cli/commands/skills.py +322 -19
  33. claude_mpm/cli/executor.py +22 -3
  34. claude_mpm/cli/interactive/agent_wizard.py +1028 -43
  35. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  36. claude_mpm/cli/parsers/agents_parser.py +256 -4
  37. claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
  38. claude_mpm/cli/parsers/base_parser.py +25 -0
  39. claude_mpm/cli/parsers/config_parser.py +96 -43
  40. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  41. claude_mpm/cli/parsers/skills_parser.py +7 -0
  42. claude_mpm/cli/parsers/source_parser.py +138 -0
  43. claude_mpm/cli/startup.py +456 -103
  44. claude_mpm/cli/startup_display.py +4 -4
  45. claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
  46. claude_mpm/commands/mpm-agents-detect.md +9 -0
  47. claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
  48. claude_mpm/commands/mpm-agents-recommend.md +9 -0
  49. claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
  50. claude_mpm/commands/mpm-doctor.md +9 -0
  51. claude_mpm/commands/mpm-help.md +14 -2
  52. claude_mpm/commands/mpm-init.md +9 -0
  53. claude_mpm/commands/mpm-monitor.md +9 -0
  54. claude_mpm/commands/mpm-postmortem.md +123 -0
  55. claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
  56. claude_mpm/commands/mpm-status.md +9 -0
  57. claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
  58. claude_mpm/commands/mpm-ticket-view.md +552 -0
  59. claude_mpm/commands/mpm-version.md +9 -0
  60. claude_mpm/commands/mpm.md +10 -0
  61. claude_mpm/config/agent_presets.py +488 -0
  62. claude_mpm/config/agent_sources.py +325 -0
  63. claude_mpm/config/skill_presets.py +392 -0
  64. claude_mpm/config/skill_sources.py +590 -0
  65. claude_mpm/constants.py +1 -0
  66. claude_mpm/core/claude_runner.py +5 -34
  67. claude_mpm/core/config.py +16 -0
  68. claude_mpm/core/framework/__init__.py +3 -16
  69. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  70. claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
  71. claude_mpm/core/interactive_session.py +83 -7
  72. claude_mpm/core/oneshot_session.py +71 -8
  73. claude_mpm/core/protocols/__init__.py +23 -0
  74. claude_mpm/core/protocols/runner_protocol.py +103 -0
  75. claude_mpm/core/protocols/session_protocol.py +131 -0
  76. claude_mpm/core/shared/singleton_manager.py +11 -4
  77. claude_mpm/core/system_context.py +38 -0
  78. claude_mpm/core/unified_config.py +22 -0
  79. claude_mpm/experimental/cli_enhancements.py +1 -5
  80. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  81. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
  82. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
  83. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
  84. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
  85. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
  86. claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
  87. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
  88. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
  89. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
  90. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
  91. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
  92. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  93. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  94. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  95. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  96. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  97. claude_mpm/models/git_repository.py +198 -0
  98. claude_mpm/services/agents/agent_builder.py +45 -9
  99. claude_mpm/services/agents/agent_preset_service.py +238 -0
  100. claude_mpm/services/agents/agent_selection_service.py +484 -0
  101. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  102. claude_mpm/services/agents/cache_git_manager.py +621 -0
  103. claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
  104. claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
  105. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  106. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  107. claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
  108. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  109. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  110. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
  111. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  112. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
  113. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  114. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  115. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  116. claude_mpm/services/agents/git_source_manager.py +629 -0
  117. claude_mpm/services/agents/loading/framework_agent_loader.py +1 -4
  118. claude_mpm/services/agents/local_template_manager.py +47 -9
  119. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  120. claude_mpm/services/agents/sources/__init__.py +13 -0
  121. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  122. claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
  123. claude_mpm/services/agents/startup_sync.py +239 -0
  124. claude_mpm/services/agents/toolchain_detector.py +474 -0
  125. claude_mpm/services/analysis/__init__.py +25 -0
  126. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  127. claude_mpm/services/analysis/postmortem_service.py +765 -0
  128. claude_mpm/services/command_deployment_service.py +200 -6
  129. claude_mpm/services/core/base.py +7 -2
  130. claude_mpm/services/core/interfaces/__init__.py +1 -3
  131. claude_mpm/services/core/interfaces/health.py +1 -4
  132. claude_mpm/services/core/models/__init__.py +2 -11
  133. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  134. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  135. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  136. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  137. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  138. claude_mpm/services/diagnostics/doctor_reporter.py +34 -6
  139. claude_mpm/services/git/__init__.py +21 -0
  140. claude_mpm/services/git/git_operations_service.py +494 -0
  141. claude_mpm/services/github/__init__.py +21 -0
  142. claude_mpm/services/github/github_cli_service.py +397 -0
  143. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  144. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  145. claude_mpm/services/instructions/__init__.py +9 -0
  146. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  147. claude_mpm/services/local_ops/__init__.py +3 -13
  148. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  149. claude_mpm/services/local_ops/health_manager.py +1 -4
  150. claude_mpm/services/mcp_config_manager.py +75 -145
  151. claude_mpm/services/mcp_gateway/core/process_pool.py +22 -16
  152. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
  153. claude_mpm/services/mcp_service_verifier.py +6 -3
  154. claude_mpm/services/monitor/daemon.py +28 -8
  155. claude_mpm/services/monitor/daemon_manager.py +96 -19
  156. claude_mpm/services/pr/__init__.py +14 -0
  157. claude_mpm/services/pr/pr_template_service.py +329 -0
  158. claude_mpm/services/project/project_organizer.py +4 -0
  159. claude_mpm/services/runner_configuration_service.py +16 -3
  160. claude_mpm/services/session_management_service.py +16 -4
  161. claude_mpm/services/skills/__init__.py +18 -0
  162. claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
  163. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  164. claude_mpm/services/socketio/server/core.py +1 -4
  165. claude_mpm/services/socketio/server/main.py +1 -3
  166. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  167. claude_mpm/services/unified/unified_deployment.py +1 -5
  168. claude_mpm/services/visualization/__init__.py +1 -5
  169. claude_mpm/templates/questions/__init__.py +2 -7
  170. claude_mpm/templates/questions/pr_strategy.py +1 -4
  171. claude_mpm/templates/questions/project_init.py +1 -4
  172. claude_mpm/templates/questions/ticket_mgmt.py +1 -4
  173. claude_mpm/utils/agent_dependency_loader.py +77 -10
  174. claude_mpm/utils/agent_filters.py +288 -0
  175. claude_mpm/utils/gitignore.py +3 -0
  176. claude_mpm/utils/migration.py +372 -0
  177. claude_mpm/utils/progress.py +387 -0
  178. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/METADATA +356 -112
  179. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +188 -439
  180. claude_mpm/agents/templates/agent-manager.json +0 -273
  181. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  182. claude_mpm/agents/templates/api_qa.json +0 -183
  183. claude_mpm/agents/templates/clerk-ops.json +0 -235
  184. claude_mpm/agents/templates/code_analyzer.json +0 -101
  185. claude_mpm/agents/templates/content-agent.json +0 -358
  186. claude_mpm/agents/templates/dart_engineer.json +0 -307
  187. claude_mpm/agents/templates/data_engineer.json +0 -225
  188. claude_mpm/agents/templates/documentation.json +0 -238
  189. claude_mpm/agents/templates/engineer.json +0 -210
  190. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  191. claude_mpm/agents/templates/golang_engineer.json +0 -270
  192. claude_mpm/agents/templates/imagemagick.json +0 -264
  193. claude_mpm/agents/templates/java_engineer.json +0 -346
  194. claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
  195. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  196. claude_mpm/agents/templates/memory_manager.json +0 -158
  197. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  198. claude_mpm/agents/templates/ops.json +0 -185
  199. claude_mpm/agents/templates/php-engineer.json +0 -287
  200. claude_mpm/agents/templates/product_owner.json +0 -338
  201. claude_mpm/agents/templates/project_organizer.json +0 -144
  202. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  203. claude_mpm/agents/templates/python_engineer.json +0 -387
  204. claude_mpm/agents/templates/qa.json +0 -243
  205. claude_mpm/agents/templates/react_engineer.json +0 -239
  206. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  207. claude_mpm/agents/templates/research.json +0 -258
  208. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  209. claude_mpm/agents/templates/rust_engineer.json +0 -275
  210. claude_mpm/agents/templates/security.json +0 -202
  211. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  212. claude_mpm/agents/templates/tauri_engineer.json +0 -274
  213. claude_mpm/agents/templates/ticketing.json +0 -181
  214. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  215. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  216. claude_mpm/agents/templates/version_control.json +0 -159
  217. claude_mpm/agents/templates/web_qa.json +0 -400
  218. claude_mpm/agents/templates/web_ui.json +0 -189
  219. claude_mpm/cli/README.md +0 -253
  220. claude_mpm/cli/commands/mcp_install_commands.py.backup +0 -284
  221. claude_mpm/cli/commands/mpm_init/README.md +0 -365
  222. claude_mpm/cli_module/refactoring_guide.md +0 -253
  223. claude_mpm/commands/mpm-tickets.md +0 -151
  224. claude_mpm/config/agent_capabilities.yaml +0 -658
  225. claude_mpm/config/async_logging_config.yaml +0 -145
  226. claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +0 -34
  227. claude_mpm/d2/.gitignore +0 -22
  228. claude_mpm/d2/ARCHITECTURE_COMPARISON.md +0 -273
  229. claude_mpm/d2/FLASK_INTEGRATION.md +0 -156
  230. claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +0 -452
  231. claude_mpm/d2/QUICKSTART.md +0 -186
  232. claude_mpm/d2/README.md +0 -232
  233. claude_mpm/d2/STORE_FIX_SUMMARY.md +0 -167
  234. claude_mpm/d2/SVELTE5_STORES_GUIDE.md +0 -180
  235. claude_mpm/d2/TESTING.md +0 -288
  236. claude_mpm/d2/index.html +0 -118
  237. claude_mpm/d2/package.json +0 -19
  238. claude_mpm/d2/src/App.svelte +0 -110
  239. claude_mpm/d2/src/components/Header.svelte +0 -153
  240. claude_mpm/d2/src/components/MainContent.svelte +0 -74
  241. claude_mpm/d2/src/components/Sidebar.svelte +0 -85
  242. claude_mpm/d2/src/components/tabs/EventsTab.svelte +0 -326
  243. claude_mpm/d2/src/lib/socketio.js +0 -144
  244. claude_mpm/d2/src/main.js +0 -7
  245. claude_mpm/d2/src/stores/events.js +0 -114
  246. claude_mpm/d2/src/stores/socket.js +0 -108
  247. claude_mpm/d2/src/stores/theme.js +0 -65
  248. claude_mpm/d2/svelte.config.js +0 -12
  249. claude_mpm/d2/vite.config.js +0 -15
  250. claude_mpm/dashboard/.claude-mpm/memories/README.md +0 -36
  251. claude_mpm/dashboard/BUILD_NUMBER +0 -1
  252. claude_mpm/dashboard/README.md +0 -121
  253. claude_mpm/dashboard/VERSION +0 -1
  254. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  255. claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +0 -273
  256. claude_mpm/dashboard/react/components/ErrorBoundary.tsx +0 -75
  257. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  258. claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +0 -141
  259. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  260. claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +0 -36
  261. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  262. claude_mpm/dashboard/react/components/shared/FilterBar.tsx +0 -89
  263. claude_mpm/dashboard/react/contexts/DashboardContext.tsx +0 -215
  264. claude_mpm/dashboard/react/entries/events.tsx +0 -165
  265. claude_mpm/dashboard/react/hooks/useEvents.ts +0 -191
  266. claude_mpm/dashboard/react/hooks/useSocket.ts +0 -225
  267. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  268. claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +0 -170
  269. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  270. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  271. claude_mpm/dashboard/static/built/components/activity-tree.js.map +0 -1
  272. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  273. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  274. claude_mpm/dashboard/static/built/components/agent-inference.js.map +0 -1
  275. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  276. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  277. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  278. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  279. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  280. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  281. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  282. claude_mpm/dashboard/static/built/components/code-tree.js.map +0 -1
  283. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  284. claude_mpm/dashboard/static/built/components/code-viewer.js.map +0 -1
  285. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  286. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  287. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  288. claude_mpm/dashboard/static/built/components/event-processor.js.map +0 -1
  289. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  290. claude_mpm/dashboard/static/built/components/event-viewer.js.map +0 -1
  291. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  292. claude_mpm/dashboard/static/built/components/export-manager.js.map +0 -1
  293. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  294. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  295. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  296. claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +0 -1
  297. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  298. claude_mpm/dashboard/static/built/components/file-viewer.js.map +0 -1
  299. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  300. claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +0 -1
  301. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  302. claude_mpm/dashboard/static/built/components/hud-manager.js.map +0 -1
  303. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  304. claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +0 -1
  305. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  306. claude_mpm/dashboard/static/built/components/module-viewer.js.map +0 -1
  307. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  308. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  309. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  310. claude_mpm/dashboard/static/built/components/session-manager.js.map +0 -1
  311. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  312. claude_mpm/dashboard/static/built/components/socket-manager.js.map +0 -1
  313. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  314. claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +0 -1
  315. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  316. claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +0 -1
  317. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  318. claude_mpm/dashboard/static/built/components/working-directory.js.map +0 -1
  319. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  320. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  321. claude_mpm/dashboard/static/built/dashboard.js.map +0 -1
  322. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  323. claude_mpm/dashboard/static/built/react/events.js +0 -30
  324. claude_mpm/dashboard/static/built/react/events.js.map +0 -1
  325. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  326. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  327. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  328. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  329. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  330. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  331. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  332. claude_mpm/dashboard/static/built/socket-client.js.map +0 -1
  333. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  334. claude_mpm/dashboard/static/events.html +0 -607
  335. claude_mpm/dashboard/static/index.html +0 -635
  336. claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +0 -170
  337. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  338. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  339. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  340. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  341. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  342. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  343. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  344. claude_mpm/dashboard/static/legacy/files.html +0 -747
  345. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  346. claude_mpm/dashboard/static/monitors.html +0 -431
  347. claude_mpm/dashboard/static/navigation-test-results.md +0 -118
  348. claude_mpm/dashboard/static/production/events.html +0 -659
  349. claude_mpm/dashboard/static/production/main.html +0 -698
  350. claude_mpm/dashboard/static/production/monitors.html +0 -483
  351. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  352. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  353. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  354. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  355. claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +0 -36
  356. claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +0 -39
  357. claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +0 -38
  358. claude_mpm/hooks/README.md +0 -143
  359. claude_mpm/hooks/templates/README.md +0 -180
  360. claude_mpm/hooks/templates/settings.json.example +0 -147
  361. claude_mpm/schemas/agent_schema.json +0 -596
  362. claude_mpm/schemas/frontmatter_schema.json +0 -165
  363. claude_mpm/services/event_bus/README.md +0 -244
  364. claude_mpm/services/events/README.md +0 -303
  365. claude_mpm/services/framework_claude_md_generator/README.md +0 -119
  366. claude_mpm/services/mcp_gateway/README.md +0 -185
  367. claude_mpm/services/socketio/handlers/connection.py.backup +0 -217
  368. claude_mpm/services/socketio/handlers/hook.py.backup +0 -154
  369. claude_mpm/services/static/.gitkeep +0 -2
  370. claude_mpm/services/version_control/VERSION +0 -1
  371. claude_mpm/skills/bundled/.gitkeep +0 -2
  372. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  373. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  374. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  375. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  376. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  377. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  378. claude_mpm/skills/bundled/collaboration/git-worktrees.md +0 -317
  379. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  380. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  381. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  382. claude_mpm/skills/bundled/collaboration/stacked-prs.md +0 -251
  383. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  384. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  385. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  386. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  387. claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +0 -63
  388. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  389. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  390. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  391. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  392. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  393. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  394. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  395. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  396. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  397. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  398. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  399. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  400. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  401. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  402. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  403. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  404. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  405. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  406. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  407. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +0 -611
  408. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +0 -596
  409. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +0 -260
  410. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +0 -315
  411. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +0 -436
  412. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +0 -433
  413. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +0 -452
  414. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +0 -404
  415. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +0 -420
  416. claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +0 -202
  417. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  418. claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +0 -54
  419. claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +0 -322
  420. claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  421. claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +0 -202
  422. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  423. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  424. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  425. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  426. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  427. claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +0 -202
  428. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  429. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  430. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  431. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  432. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  433. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  434. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  435. claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +0 -22
  436. claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +0 -2
  437. claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +0 -202
  438. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  439. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  440. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  441. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  442. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  443. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  444. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  445. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  446. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  447. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  448. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  449. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  450. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  451. claude_mpm/skills/bundled/react/flexlayout-react.md +0 -742
  452. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  453. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  454. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  455. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  456. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  457. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  458. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  459. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +0 -495
  460. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +0 -599
  461. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +0 -535
  462. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +0 -613
  463. claude_mpm/skills/bundled/tauri/tauri-event-system.md +0 -648
  464. claude_mpm/skills/bundled/tauri/tauri-file-system.md +0 -673
  465. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +0 -767
  466. claude_mpm/skills/bundled/tauri/tauri-performance.md +0 -669
  467. claude_mpm/skills/bundled/tauri/tauri-state-management.md +0 -573
  468. claude_mpm/skills/bundled/tauri/tauri-testing.md +0 -384
  469. claude_mpm/skills/bundled/tauri/tauri-window-management.md +0 -628
  470. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  471. claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +0 -158
  472. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  473. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  474. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  475. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  476. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  477. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  478. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  479. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +0 -458
  480. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +0 -411
  481. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +0 -317
  482. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +0 -270
  483. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +0 -436
  484. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  485. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  486. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  487. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  488. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  489. claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +0 -202
  490. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  491. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  492. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  493. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  494. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  495. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  496. claude_mpm/templates/questions/EXAMPLES.md +0 -501
  497. claude_mpm/tools/README_SOCKETIO_DEBUG.md +0 -224
  498. claude_mpm/tools/code_tree_analyzer/README.md +0 -64
  499. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  500. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  501. /claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +0 -0
  502. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  503. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  504. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
  505. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
  506. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
  507. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
@@ -1,459 +0,0 @@
1
- # Decision Tree Reference
2
-
3
- Complete flowcharts and decision guides for webapp testing scenarios.
4
-
5
- ## Table of Contents
6
-
7
- - [Start Here: New Test Decision Tree](#start-here-new-test-decision-tree)
8
- - [Server State Decision Tree](#server-state-decision-tree)
9
- - [Test Failure Decision Tree](#test-failure-decision-tree)
10
- - [Debugging Decision Tree](#debugging-decision-tree)
11
- - [Selector Strategy Decision Tree](#selector-strategy-decision-tree)
12
- - [Wait Strategy Decision Tree](#wait-strategy-decision-tree)
13
- - [Environment Selection Decision Tree](#environment-selection-decision-tree)
14
- - [Testing Approach Decision Tree](#testing-approach-decision-tree)
15
-
16
- ## Start Here: New Test Decision Tree
17
-
18
- ```
19
- User requests webapp testing
20
-
21
- Is it a local webapp?
22
- ├─ No → Ask for deployment URL
23
- │ ├─ Public URL → Test directly with Playwright
24
- │ └─ Private URL → Configure authentication first
25
-
26
- └─ Yes → What type of webapp?
27
- ├─ Static HTML file
28
- │ ├─ Read HTML source directly
29
- │ │ ├─ Can identify selectors? → Write test
30
- │ │ └─ Need to see rendered? → Use file:// URL
31
- │ └─ Write Playwright script with file:// URL
32
-
33
- ├─ Dynamic webapp (React, Vue, Angular, etc.)
34
- │ └─ Is server already running?
35
- │ ├─ Yes → Check server status
36
- │ │ ├─ lsof -i :PORT shows LISTEN
37
- │ │ │ └─ curl http://localhost:PORT succeeds
38
- │ │ │ └─ Write Playwright test
39
- │ │ └─ Server not responding
40
- │ │ └─ Restart server
41
- │ │
42
- │ └─ No → Need to start server
43
- │ ├─ Single server
44
- │ │ └─ Use with_server.py:
45
- │ │ python scripts/with_server.py \
46
- │ │ --server "npm start" --port 3000 \
47
- │ │ -- python test.py
48
- │ │
49
- │ └─ Multiple servers (backend + frontend)
50
- │ └─ Use with_server.py with multiple --server flags:
51
- │ python scripts/with_server.py \
52
- │ --server "cd backend && npm start" --port 4000 \
53
- │ --server "cd frontend && npm start" --port 3000 \
54
- │ -- python test.py
55
-
56
- └─ Server-side rendered (Django, Flask, Rails, etc.)
57
- └─ Follow dynamic webapp path above
58
- ```
59
-
60
- ## Server State Decision Tree
61
-
62
- ```
63
- Need to test webapp
64
-
65
- Check if server is running
66
- └─ lsof -i :PORT -sTCP:LISTEN
67
- ├─ No output (server not running)
68
- │ └─ Need to start server
69
- │ ├─ Know server command?
70
- │ │ ├─ Yes → Use with_server.py
71
- │ │ └─ No → Check package.json or README
72
- │ │ ├─ Found start command
73
- │ │ │ └─ Use with_server.py
74
- │ │ └─ Can't find command
75
- │ │ └─ Ask user for startup instructions
76
- │ │
77
- │ └─ Port conflict?
78
- │ ├─ Check: lsof -i :PORT (without LISTEN filter)
79
- │ │ └─ Shows process using port
80
- │ │ ├─ Different app using port
81
- │ │ │ └─ Kill: lsof -t -i :PORT | xargs kill
82
- │ │ └─ Old instance of same app
83
- │ │ └─ Kill and restart
84
- │ └─ Port available
85
- │ └─ Start server on this port
86
-
87
- └─ Shows server (server running)
88
- └─ Test HTTP response
89
- └─ curl -f http://localhost:PORT/health
90
- ├─ Success (200 OK)
91
- │ └─ Server is healthy
92
- │ └─ Proceed with testing
93
-
94
- ├─ Connection refused
95
- │ └─ Process running but not accepting connections
96
- │ ├─ Check logs: tail -f server.log
97
- │ ├─ Check if still starting up
98
- │ │ └─ Wait 10-30 seconds and retry
99
- │ └─ Server may have crashed during startup
100
- │ └─ Restart server
101
-
102
- ├─ Timeout
103
- │ └─ Server responding slowly
104
- │ ├─ Check server resource usage
105
- │ │ └─ ps -p PID -o %cpu,%mem
106
- │ ├─ High CPU/memory?
107
- │ │ └─ Server may be overloaded
108
- │ └─ Increase timeout or wait longer
109
-
110
- └─ 404 or other error
111
- └─ Server running but endpoint doesn't exist
112
- ├─ Try root: curl http://localhost:PORT/
113
- └─ Check server routes/endpoints
114
- ```
115
-
116
- ## Test Failure Decision Tree
117
-
118
- ```
119
- Playwright test failed
120
-
121
- What type of error?
122
- ├─ TimeoutError: Timeout 30000ms exceeded
123
- │ └─ What was timing out?
124
- │ ├─ page.goto() timeout
125
- │ │ └─ Server issues
126
- │ │ ├─ Check server is running
127
- │ │ ├─ Check server response time: curl -w "Time: %{time_total}s\n"
128
- │ │ ├─ Increase timeout: goto(url, timeout=60000)
129
- │ │ └─ Check network connectivity
130
- │ │
131
- │ ├─ wait_for_selector() timeout
132
- │ │ └─ Element not appearing
133
- │ │ ├─ Did you wait for networkidle first?
134
- │ │ │ └─ No → Add page.wait_for_load_state('networkidle')
135
- │ │ ├─ Take screenshot to see actual state
136
- │ │ │ └─ page.screenshot(path='/tmp/debug.png', full_page=True)
137
- │ │ ├─ Is selector correct?
138
- │ │ │ └─ Inspect DOM: page.content()
139
- │ │ └─ Is element conditionally rendered?
140
- │ │ └─ Check application state
141
- │ │
142
- │ ├─ page.click() timeout
143
- │ │ └─ Element not clickable
144
- │ │ ├─ Element not visible?
145
- │ │ │ └─ Check: page.locator(selector).is_visible()
146
- │ │ ├─ Element disabled?
147
- │ │ │ └─ Check: page.locator(selector).is_enabled()
148
- │ │ ├─ Element obscured by another element?
149
- │ │ │ └─ Try: page.click(selector, force=True)
150
- │ │ └─ Selector matches multiple elements?
151
- │ │ └─ Make selector more specific
152
- │ │
153
- │ └─ wait_for_load_state() timeout
154
- │ └─ Page never reaches networkidle
155
- │ ├─ Polling API?
156
- │ │ └─ Use 'load' instead of 'networkidle'
157
- │ ├─ WebSocket connection?
158
- │ │ └─ Use 'load' instead of 'networkidle'
159
- │ └─ Long-running requests?
160
- │ └─ Wait for specific element instead
161
-
162
- ├─ Error: Element not found
163
- │ └─ Selector doesn't match
164
- │ ├─ Wrong selector syntax?
165
- │ │ ├─ text= for text content
166
- │ │ ├─ role= for ARIA roles
167
- │ │ ├─ CSS selector for classes/IDs
168
- │ │ └─ xpath= for XPath
169
- │ ├─ Element doesn't exist?
170
- │ │ └─ Inspect DOM: page.content()
171
- │ ├─ Element inside iframe?
172
- │ │ └─ Use: page.frame_locator('iframe').locator(selector)
173
- │ └─ Element created dynamically?
174
- │ └─ Wait for element first: page.wait_for_selector(selector)
175
-
176
- ├─ Error: Element is not visible
177
- │ └─ Element exists but not visible
178
- │ ├─ Display: none or visibility: hidden?
179
- │ │ └─ Check CSS properties
180
- │ ├─ Outside viewport?
181
- │ │ └─ Scroll to element: page.locator(selector).scroll_into_view_if_needed()
182
- │ ├─ Hidden by parent?
183
- │ │ └─ Check parent visibility
184
- │ └─ Animation in progress?
185
- │ └─ Wait for animation: page.wait_for_timeout(500)
186
-
187
- ├─ Error: Element is not enabled
188
- │ └─ Button/input disabled
189
- │ ├─ Check application state
190
- │ │ └─ What conditions enable this element?
191
- │ ├─ Need to fill other fields first?
192
- │ │ └─ Complete prerequisite steps
193
- │ └─ Network request must complete first?
194
- │ └─ Wait for API response
195
-
196
- ├─ Error: Connection refused / ECONNREFUSED
197
- │ └─ Server not accessible
198
- │ └─ Follow Server State Decision Tree above
199
-
200
- ├─ JavaScript error in console
201
- │ └─ Application error
202
- │ ├─ Capture console logs
203
- │ │ └─ page.on("console", lambda msg: print(msg.text))
204
- │ ├─ Check browser console in headed mode
205
- │ │ └─ launch(headless=False)
206
- │ └─ Review application code
207
-
208
- └─ Test assertion failed
209
- └─ Unexpected state
210
- ├─ Take screenshot: page.screenshot(path='/tmp/actual.png')
211
- ├─ Compare with expected state
212
- ├─ Check console for errors
213
- └─ Review test logic
214
- ```
215
-
216
- ## Debugging Decision Tree
217
-
218
- ```
219
- Test is failing, need to debug
220
-
221
- Start with reconnaissance
222
- ├─ Server reconnaissance
223
- │ ├─ lsof -i :PORT -sTCP:LISTEN
224
- │ ├─ curl http://localhost:PORT/health
225
- │ └─ tail -f server.log
226
-
227
- ├─ Visual reconnaissance
228
- │ ├─ page.screenshot(path='/tmp/debug.png', full_page=True)
229
- │ └─ Open screenshot to see actual state
230
-
231
- ├─ DOM reconnaissance
232
- │ ├─ content = page.content()
233
- │ ├─ print(content[:500])
234
- │ └─ Search for expected elements
235
-
236
- └─ Console reconnaissance
237
- ├─ page.on("console", handler)
238
- └─ Check for JavaScript errors
239
-
240
- Analyze reconnaissance data
241
- ├─ Server not running?
242
- │ └─ Follow Server State Decision Tree
243
-
244
- ├─ Page not loaded correctly?
245
- │ ├─ Screenshot shows blank page
246
- │ │ ├─ Network issue?
247
- │ │ ├─ Server returned error?
248
- │ │ └─ Wrong URL?
249
- │ ├─ Screenshot shows loading spinner
250
- │ │ ├─ Wait longer: wait_for_load_state('networkidle')
251
- │ │ └─ Check for blocking requests
252
- │ └─ Screenshot shows error page
253
- │ └─ Check server logs for errors
254
-
255
- ├─ Element not found?
256
- │ ├─ Search DOM content for element
257
- │ │ ├─ Not in DOM → Wait longer or check conditions
258
- │ │ └─ In DOM → Selector is wrong
259
- │ └─ Highlight element to verify
260
- │ └─ page.locator(selector).evaluate('el => el.style.border = "3px solid red"')
261
-
262
- ├─ Console errors?
263
- │ ├─ JavaScript syntax error
264
- │ │ └─ Application bug
265
- │ ├─ Network request failed
266
- │ │ └─ API server issue
267
- │ └─ React/Vue error
268
- │ └─ Component issue
269
-
270
- └─ Still unclear?
271
- └─ Progressive debugging
272
- ├─ Run in headed mode: launch(headless=False)
273
- ├─ Add slow motion: launch(slow_mo=1000)
274
- ├─ Add pause: page.pause()
275
- └─ Enable verbose logging: DEBUG=pw:api python test.py
276
- ```
277
-
278
- ## Selector Strategy Decision Tree
279
-
280
- ```
281
- Need to select an element
282
-
283
- What do you know about the element?
284
- ├─ Has data-testid attribute?
285
- │ └─ USE: page.click('[data-testid="submit"]')
286
- │ → Most stable, won't break with UI changes
287
-
288
- ├─ Has unique text content?
289
- │ └─ USE: page.click('text=Submit Form')
290
- │ → Readable, but text may change
291
- │ ├─ Exact match: 'text="Submit"'
292
- │ └─ Regex: 'text=/submit/i'
293
-
294
- ├─ Has semantic role?
295
- │ └─ USE: page.click('role=button[name="Submit"]')
296
- │ → Accessible, semantic, stable
297
- │ ├─ Common roles: button, link, textbox, checkbox
298
- │ └─ With name: role=button[name="Submit"]
299
-
300
- ├─ Has unique ID?
301
- │ └─ USE: page.click('#submit-button')
302
- │ → Fast, stable if ID doesn't change
303
- │ └─ Avoid dynamically generated IDs
304
-
305
- ├─ Has unique class?
306
- │ └─ USE: page.click('.submit-button')
307
- │ → May break with CSS refactoring
308
- │ └─ Combine with tag: 'button.submit'
309
-
310
- ├─ Need complex selection?
311
- │ └─ USE: CSS combinators
312
- │ ├─ Child: 'form > button'
313
- │ ├─ Descendant: 'form button'
314
- │ ├─ Sibling: '.label + input'
315
- │ └─ Nth child: 'button:nth-child(2)'
316
-
317
- ├─ Nothing else works?
318
- │ └─ USE: XPath (last resort)
319
- │ └─ 'xpath=//button[contains(text(), "Submit")]'
320
-
321
- └─ Multiple matches?
322
- └─ Make selector more specific
323
- ├─ Chain: page.locator('form').locator('button.submit')
324
- ├─ Combine: 'button.submit[type="submit"]'
325
- └─ Use parent context: 'div.modal >> button.submit'
326
- ```
327
-
328
- ## Wait Strategy Decision Tree
329
-
330
- ```
331
- Need to wait for something
332
-
333
- What are you waiting for?
334
- ├─ Page to load
335
- │ └─ What type of page?
336
- │ ├─ Dynamic (React, Vue, Angular)
337
- │ │ └─ USE: page.wait_for_load_state('networkidle')
338
- │ │ → Waits for network requests to finish
339
- │ ├─ Static with images
340
- │ │ └─ USE: page.wait_for_load_state('load')
341
- │ │ → Waits for all resources
342
- │ └─ Server-side rendered
343
- │ └─ USE: page.wait_for_load_state('domcontentloaded')
344
- │ → Waits for HTML to parse
345
-
346
- ├─ Specific element
347
- │ └─ What state?
348
- │ ├─ Element to appear
349
- │ │ └─ USE: page.wait_for_selector('.modal', state='visible')
350
- │ ├─ Element to disappear
351
- │ │ └─ USE: page.wait_for_selector('.loading', state='hidden')
352
- │ ├─ Element to exist in DOM
353
- │ │ └─ USE: page.wait_for_selector('.data', state='attached')
354
- │ └─ Element to be removed from DOM
355
- │ └─ USE: page.wait_for_selector('.temp', state='detached')
356
-
357
- ├─ Network request
358
- │ └─ Specific API call
359
- │ ├─ Wait for response
360
- │ │ └─ USE: with page.expect_response('**/api/data'):
361
- │ ├─ Wait for request
362
- │ │ └─ USE: with page.expect_request('**/api/data'):
363
- │ └─ All network idle
364
- │ └─ USE: page.wait_for_load_state('networkidle')
365
-
366
- ├─ JavaScript condition
367
- │ └─ Custom condition
368
- │ ├─ Variable set
369
- │ │ └─ USE: page.wait_for_function('() => window.appReady')
370
- │ ├─ Element content
371
- │ │ └─ USE: page.wait_for_function('() => document.body.innerText.includes("Ready")')
372
- │ └─ Animation complete
373
- │ └─ USE: page.wait_for_function('() => !document.querySelector(".animated")')
374
-
375
- ├─ Fixed time (avoid if possible)
376
- │ └─ Known delay
377
- │ └─ USE: page.wait_for_timeout(1000)
378
- │ → Only use when no other option works
379
-
380
- └─ Multiple conditions
381
- └─ Combine waits
382
- ├─ Sequential: wait_for_selector() then wait_for_function()
383
- └─ Parallel: Use Promise.all() in async context
384
- ```
385
-
386
- ## Environment Selection Decision Tree
387
-
388
- ```
389
- Setting up test environment
390
-
391
- What environment do you need?
392
- ├─ Local development
393
- │ ├─ Testing during development
394
- │ │ ├─ Server: npm run dev (hot reload)
395
- │ │ ├─ Port: 3000 (dev port)
396
- │ │ └─ Database: Local SQLite/Postgres
397
- │ └─ Quick iteration cycle
398
-
399
- ├─ CI/CD pipeline
400
- │ ├─ Automated testing
401
- │ │ ├─ Server: npm run build && npm start
402
- │ │ ├─ Port: Any available port
403
- │ │ ├─ Database: Test database / fixtures
404
- │ │ └─ Headless: Always true
405
- │ └─ Environment variables from CI secrets
406
-
407
- ├─ Staging
408
- │ ├─ Pre-production testing
409
- │ │ ├─ Server: Remote staging URL
410
- │ │ ├─ Database: Staging database
411
- │ │ └─ Real API keys (staging)
412
- │ └─ Similar to production
413
-
414
- └─ Production (careful!)
415
- ├─ Read-only tests only
416
- ├─ No data modification
417
- └─ Minimal load generation
418
- ```
419
-
420
- ## Testing Approach Decision Tree
421
-
422
- ```
423
- What kind of test do you need?
424
-
425
- ├─ Unit test (single function/component)
426
- │ └─ NOT this skill
427
- │ → Use testing framework (Jest, pytest)
428
-
429
- ├─ Integration test (multiple components)
430
- │ └─ Do components interact via UI?
431
- │ ├─ Yes → Use this skill (Playwright)
432
- │ └─ No → Use API testing or unit tests
433
-
434
- ├─ End-to-end test (full user flow)
435
- │ └─ USE THIS SKILL
436
- │ ├─ Start server(s) with with_server.py
437
- │ ├─ Write Playwright script for user journey
438
- │ └─ Test complete workflow
439
-
440
- ├─ Visual regression test
441
- │ └─ USE THIS SKILL + Screenshot comparison
442
- │ ├─ Capture baseline: page.screenshot()
443
- │ ├─ Capture current: page.screenshot()
444
- │ └─ Compare images (external tool)
445
-
446
- ├─ Performance test
447
- │ └─ What metrics?
448
- │ ├─ Page load time
449
- │ │ └─ Measure: page.goto() timing
450
- │ ├─ API response time
451
- │ │ └─ Monitor: page.on("response")
452
- │ └─ Heavy load
453
- │ → Not this skill, use load testing tool
454
-
455
- └─ Accessibility test
456
- └─ USE THIS SKILL + axe-core
457
- ├─ Inject axe: page.evaluate()
458
- └─ Run audit: Check ARIA, contrast, etc.
459
- ```