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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_PM.md +23 -6
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +1783 -34
- claude_mpm/agents/WORKFLOW.md +75 -2
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/api_qa.json +5 -2
- claude_mpm/agents/templates/circuit_breakers.md +108 -2
- claude_mpm/agents/templates/documentation.json +33 -6
- claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
- claude_mpm/agents/templates/php-engineer.json +10 -4
- claude_mpm/agents/templates/pm_red_flags.md +89 -19
- claude_mpm/agents/templates/project_organizer.json +7 -3
- claude_mpm/agents/templates/qa.json +2 -1
- claude_mpm/agents/templates/react_engineer.json +1 -0
- claude_mpm/agents/templates/research.json +82 -12
- claude_mpm/agents/templates/security.json +4 -4
- claude_mpm/agents/templates/tauri_engineer.json +274 -0
- claude_mpm/agents/templates/ticketing.json +10 -6
- claude_mpm/agents/templates/version_control.json +4 -2
- claude_mpm/agents/templates/web_qa.json +2 -1
- claude_mpm/cli/README.md +253 -0
- claude_mpm/cli/__init__.py +11 -1
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/cleanup.py +1 -1
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mcp_install_commands.py.backup +284 -0
- claude_mpm/cli/commands/mpm_init/README.md +365 -0
- claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +573 -0
- claude_mpm/cli/commands/mpm_init/display.py +341 -0
- claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
- claude_mpm/cli/commands/mpm_init/modes.py +397 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
- claude_mpm/cli/commands/mpm_init_cli.py +396 -0
- claude_mpm/cli/commands/mpm_init_handler.py +67 -1
- claude_mpm/cli/commands/run.py +124 -128
- claude_mpm/cli/commands/skills.py +522 -34
- claude_mpm/cli/executor.py +56 -0
- claude_mpm/cli/interactive/agent_wizard.py +5 -5
- claude_mpm/cli/parsers/base_parser.py +28 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skills_parser.py +138 -0
- claude_mpm/cli/startup.py +111 -8
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/utils.py +1 -1
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/cli_module/refactoring_guide.md +253 -0
- claude_mpm/commands/mpm-help.md +3 -0
- claude_mpm/commands/mpm-init.md +19 -3
- claude_mpm/commands/mpm-resume.md +372 -0
- claude_mpm/commands/mpm-tickets.md +56 -7
- claude_mpm/commands/mpm.md +1 -0
- claude_mpm/config/agent_capabilities.yaml +658 -0
- claude_mpm/config/async_logging_config.yaml +145 -0
- claude_mpm/constants.py +12 -0
- claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +34 -0
- claude_mpm/core/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +14 -1
- claude_mpm/core/config.py +8 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/processors/metadata_processor.py +1 -1
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +48 -3
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +39 -0
- claude_mpm/d2/.gitignore +22 -0
- claude_mpm/d2/ARCHITECTURE_COMPARISON.md +273 -0
- claude_mpm/d2/FLASK_INTEGRATION.md +156 -0
- claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +452 -0
- claude_mpm/d2/QUICKSTART.md +186 -0
- claude_mpm/d2/README.md +232 -0
- claude_mpm/d2/STORE_FIX_SUMMARY.md +167 -0
- claude_mpm/d2/SVELTE5_STORES_GUIDE.md +180 -0
- claude_mpm/d2/TESTING.md +288 -0
- claude_mpm/d2/index.html +118 -0
- claude_mpm/d2/package.json +19 -0
- claude_mpm/d2/src/App.svelte +110 -0
- claude_mpm/d2/src/components/Header.svelte +153 -0
- claude_mpm/d2/src/components/MainContent.svelte +74 -0
- claude_mpm/d2/src/components/Sidebar.svelte +85 -0
- claude_mpm/d2/src/components/tabs/EventsTab.svelte +326 -0
- claude_mpm/d2/src/lib/socketio.js +144 -0
- claude_mpm/d2/src/main.js +7 -0
- claude_mpm/d2/src/stores/events.js +114 -0
- claude_mpm/d2/src/stores/socket.js +108 -0
- claude_mpm/d2/src/stores/theme.js +65 -0
- claude_mpm/d2/svelte.config.js +12 -0
- claude_mpm/d2/vite.config.js +15 -0
- claude_mpm/dashboard/.claude-mpm/memories/README.md +36 -0
- claude_mpm/dashboard/BUILD_NUMBER +1 -0
- claude_mpm/dashboard/README.md +121 -0
- claude_mpm/dashboard/VERSION +1 -0
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +273 -0
- claude_mpm/dashboard/react/components/ErrorBoundary.tsx +75 -0
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +141 -0
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +36 -0
- claude_mpm/dashboard/react/components/shared/FilterBar.tsx +89 -0
- claude_mpm/dashboard/react/contexts/DashboardContext.tsx +215 -0
- claude_mpm/dashboard/react/entries/events.tsx +165 -0
- claude_mpm/dashboard/react/hooks/useEvents.ts +191 -0
- claude_mpm/dashboard/react/hooks/useSocket.ts +225 -0
- claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +170 -0
- claude_mpm/dashboard/static/built/components/activity-tree.js.map +1 -0
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/built/components/agent-inference.js.map +1 -0
- claude_mpm/dashboard/static/built/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/built/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +29 -29
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +24 -24
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +27 -27
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +25 -25
- claude_mpm/dashboard/static/built/components/code-tree.js.map +1 -0
- claude_mpm/dashboard/static/built/components/code-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/built/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/built/components/event-processor.js.map +1 -0
- claude_mpm/dashboard/static/built/components/event-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/export-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +1 -0
- claude_mpm/dashboard/static/built/components/file-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +1 -0
- claude_mpm/dashboard/static/built/components/hud-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/module-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/session-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/socket-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/working-directory.js.map +1 -0
- claude_mpm/dashboard/static/built/connection-manager.js +76 -76
- claude_mpm/dashboard/static/built/dashboard.js.map +1 -0
- claude_mpm/dashboard/static/built/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/built/react/events.js.map +1 -0
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +9 -9
- claude_mpm/dashboard/static/built/shared/event-bus.js +5 -5
- claude_mpm/dashboard/static/built/shared/logger.js +16 -16
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +6 -6
- claude_mpm/dashboard/static/built/socket-client.js.map +1 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/index.html +22 -22
- claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +170 -0
- claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
- claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
- claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
- claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +76 -58
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +9 -9
- claude_mpm/dashboard/static/js/shared/event-bus.js +5 -5
- claude_mpm/dashboard/static/js/shared/logger.js +16 -16
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +6 -6
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/static/navigation-test-results.md +118 -0
- claude_mpm/dashboard/static/production/main.html +21 -21
- claude_mpm/dashboard/static/test-archive/dashboard.html +22 -22
- claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +36 -0
- claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +39 -0
- claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +38 -0
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/hooks/README.md +143 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
- claude_mpm/hooks/claude_hooks/installer.py +45 -0
- claude_mpm/hooks/templates/README.md +180 -0
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/hooks/templates/settings.json.example +147 -0
- claude_mpm/schemas/agent_schema.json +596 -0
- claude_mpm/schemas/frontmatter_schema.json +165 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/loading/framework_agent_loader.py +8 -8
- claude_mpm/services/agents/local_template_manager.py +3 -1
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +36 -16
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/core/base.py +26 -11
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/models/agent_config.py +3 -0
- claude_mpm/services/core/models/process.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
- claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
- claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
- claude_mpm/services/diagnostics/doctor_reporter.py +6 -4
- claude_mpm/services/diagnostics/models.py +21 -0
- claude_mpm/services/event_bus/README.md +244 -0
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/event_bus/event_bus.py +36 -3
- claude_mpm/services/event_bus/relay.py +23 -7
- claude_mpm/services/events/README.md +303 -0
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/framework_claude_md_generator/README.md +119 -0
- claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
- claude_mpm/services/local_ops/__init__.py +2 -0
- claude_mpm/services/local_ops/process_manager.py +1 -1
- claude_mpm/services/local_ops/resource_monitor.py +2 -2
- claude_mpm/services/mcp_gateway/README.md +185 -0
- claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/memory/failure_tracker.py +19 -4
- claude_mpm/services/memory/optimizer.py +1 -1
- claude_mpm/services/model/model_router.py +8 -9
- claude_mpm/services/monitor/daemon.py +1 -1
- claude_mpm/services/monitor/server.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- claude_mpm/services/port_manager.py +1 -1
- claude_mpm/services/project/documentation_manager.py +2 -1
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +1 -0
- claude_mpm/services/self_upgrade_service.py +165 -7
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/handlers/connection.py +1 -1
- claude_mpm/services/socketio/handlers/connection.py.backup +217 -0
- claude_mpm/services/socketio/handlers/git.py +2 -2
- claude_mpm/services/socketio/handlers/hook.py.backup +154 -0
- claude_mpm/services/static/.gitkeep +2 -0
- claude_mpm/services/system_instructions_service.py +1 -3
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
- claude_mpm/services/version_control/VERSION +1 -0
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +3 -3
- claude_mpm/skills/agent_skills_injector.py +42 -49
- claude_mpm/skills/bundled/.gitkeep +2 -0
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +4 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +108 -114
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
- claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +46 -41
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
- claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +36 -73
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +100 -125
- claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +63 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +28 -72
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +11 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +272 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +13 -1
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +54 -0
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +322 -0
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +11 -0
- claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +109 -277
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
- claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +22 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +2 -0
- claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +135 -155
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +13 -12
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
- claude_mpm/skills/bundled/performance-profiling.md +6 -0
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
- claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
- claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
- claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
- claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +21 -25
- claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +158 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +86 -250
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
- claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +145 -57
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +37 -15
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
- claude_mpm/skills/skills_registry.py +44 -48
- claude_mpm/skills/skills_service.py +117 -108
- claude_mpm/templates/questions/EXAMPLES.md +501 -0
- claude_mpm/templates/questions/__init__.py +43 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +314 -0
- claude_mpm/templates/questions/project_init.py +388 -0
- claude_mpm/templates/questions/ticket_mgmt.py +397 -0
- claude_mpm/tools/README_SOCKETIO_DEBUG.md +224 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/tools/code_tree_analyzer/README.md +64 -0
- claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/utils/agent_dependency_loader.py +3 -3
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +241 -0
- claude_mpm/utils/log_cleanup.py +3 -3
- claude_mpm/utils/robust_installer.py +3 -5
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/METADATA +218 -31
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +409 -246
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
- claude_mpm/cli/commands/mpm_init.py +0 -2093
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
- claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
- claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
- claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
- claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
- claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
- claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/react/events.js +0 -30
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- /claude_mpm/skills/bundled/collaboration/requesting-code-review/{code-reviewer.md → references/code-reviewer-template.md} +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/top_level.txt +0 -0
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
name: Writing Plans
|
|
3
3
|
description: Create detailed implementation plans with bite-sized tasks for engineers with zero codebase context
|
|
4
4
|
when_to_use: when design is complete and you need detailed implementation tasks for engineers with zero codebase context
|
|
5
|
-
version: 2.
|
|
5
|
+
version: 2.2.0
|
|
6
|
+
progressive_disclosure:
|
|
7
|
+
level: 1
|
|
8
|
+
references:
|
|
9
|
+
- path: references/plan-structure-templates.md
|
|
10
|
+
title: Plan Structure & Templates
|
|
11
|
+
description: Standard headers, task templates, and structure examples
|
|
12
|
+
- path: references/best-practices.md
|
|
13
|
+
title: Best Practices & Guidelines
|
|
14
|
+
description: Writing for zero-context engineers, code completeness, test design patterns
|
|
6
15
|
---
|
|
7
16
|
|
|
8
17
|
# Writing Plans
|
|
@@ -19,82 +28,23 @@ Assume they are a skilled developer, but know almost nothing about our toolset o
|
|
|
19
28
|
|
|
20
29
|
**Save plans to:** `docs/plans/YYYY-MM-DD-<feature-name>.md`
|
|
21
30
|
|
|
22
|
-
##
|
|
31
|
+
## Quick Reference
|
|
23
32
|
|
|
24
|
-
**
|
|
25
|
-
- "Write the failing test" - step
|
|
26
|
-
- "Run it to make sure it fails" - step
|
|
27
|
-
- "Implement the minimal code to make the test pass" - step
|
|
28
|
-
- "Run the tests and make sure they pass" - step
|
|
29
|
-
- "Commit" - step
|
|
33
|
+
**Plan header template:** See [Plan Structure & Templates](references/plan-structure-templates.md#standard-plan-document-header)
|
|
30
34
|
|
|
31
|
-
|
|
35
|
+
**Task template:** See [Plan Structure & Templates](references/plan-structure-templates.md#task-template-structure)
|
|
32
36
|
|
|
33
|
-
**
|
|
37
|
+
**Granularity guide:** Each step = 2-5 minutes. See [Best Practices](references/best-practices.md#bite-sized-task-granularity)
|
|
34
38
|
|
|
35
|
-
|
|
36
|
-
# [Feature Name] Implementation Plan
|
|
39
|
+
## Core Principles
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
- **Exact file paths always** - Not "in the user module" but "`src/models/user.py`"
|
|
42
|
+
- **Complete code in plan** - Not "add validation" but show the validation code
|
|
43
|
+
- **Exact commands with expected output** - "`pytest tests/file.py -v`" with what you'll see
|
|
44
|
+
- **Reference relevant skills** - Use @ syntax: `@skills/category/skill-name`
|
|
45
|
+
- **DRY, YAGNI, TDD, frequent commits** - Every task follows this pattern
|
|
39
46
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
**Architecture:** [2-3 sentences about approach]
|
|
43
|
-
|
|
44
|
-
**Tech Stack:** [Key technologies/libraries]
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Task Structure
|
|
50
|
-
|
|
51
|
-
```markdown
|
|
52
|
-
### Task N: [Component Name]
|
|
53
|
-
|
|
54
|
-
**Files:**
|
|
55
|
-
- Create: `exact/path/to/file.py`
|
|
56
|
-
- Modify: `exact/path/to/existing.py:123-145`
|
|
57
|
-
- Test: `tests/exact/path/to/test.py`
|
|
58
|
-
|
|
59
|
-
**Step 1: Write the failing test**
|
|
60
|
-
|
|
61
|
-
```python
|
|
62
|
-
def test_specific_behavior():
|
|
63
|
-
result = function(input)
|
|
64
|
-
assert result == expected
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
**Step 2: Run test to verify it fails**
|
|
68
|
-
|
|
69
|
-
Run: `pytest tests/path/test.py::test_name -v`
|
|
70
|
-
Expected: FAIL with "function not defined"
|
|
71
|
-
|
|
72
|
-
**Step 3: Write minimal implementation**
|
|
73
|
-
|
|
74
|
-
```python
|
|
75
|
-
def function(input):
|
|
76
|
-
return expected
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**Step 4: Run test to verify it passes**
|
|
80
|
-
|
|
81
|
-
Run: `pytest tests/path/test.py::test_name -v`
|
|
82
|
-
Expected: PASS
|
|
83
|
-
|
|
84
|
-
**Step 5: Commit**
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
git add tests/path/test.py src/path/file.py
|
|
88
|
-
git commit -m "feat: add specific feature"
|
|
89
|
-
```
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Remember
|
|
93
|
-
- Exact file paths always
|
|
94
|
-
- Complete code in plan (not "add validation")
|
|
95
|
-
- Exact commands with expected output
|
|
96
|
-
- Reference relevant skills with @ syntax
|
|
97
|
-
- DRY, YAGNI, TDD, frequent commits
|
|
47
|
+
For detailed guidance: [Best Practices & Guidelines](references/best-practices.md)
|
|
98
48
|
|
|
99
49
|
## Execution Handoff
|
|
100
50
|
|
|
@@ -109,10 +59,23 @@ After saving the plan, offer execution choice:
|
|
|
109
59
|
**Which approach?"**
|
|
110
60
|
|
|
111
61
|
**If Subagent-Driven chosen:**
|
|
112
|
-
- Use skills/collaboration/subagent-driven-development
|
|
62
|
+
- Use @skills/collaboration/subagent-driven-development
|
|
113
63
|
- Stay in this session
|
|
114
64
|
- Fresh subagent per task + code review
|
|
115
65
|
|
|
116
66
|
**If Parallel Session chosen:**
|
|
117
67
|
- Guide them to open new session in worktree
|
|
118
|
-
- New session uses skills/collaboration/executing-plans
|
|
68
|
+
- New session uses @skills/collaboration/executing-plans
|
|
69
|
+
|
|
70
|
+
## Remember
|
|
71
|
+
|
|
72
|
+
- Write for zero-context engineers (specify everything)
|
|
73
|
+
- Complete code blocks, not instructions
|
|
74
|
+
- Exact commands with expected output
|
|
75
|
+
- Test first, then implement, then commit
|
|
76
|
+
- Reference existing patterns in codebase
|
|
77
|
+
- Keep tasks bite-sized (2-5 minutes each)
|
|
78
|
+
|
|
79
|
+
**Need examples?** See [Plan Structure & Templates](references/plan-structure-templates.md) for complete task examples.
|
|
80
|
+
|
|
81
|
+
**Need patterns?** See [Best Practices](references/best-practices.md) for error handling, logging, test design, and more.
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
# Plan Writing Best Practices
|
|
2
|
+
|
|
3
|
+
## Core Principles
|
|
4
|
+
|
|
5
|
+
### DRY (Don't Repeat Yourself)
|
|
6
|
+
- Extract common patterns into utilities
|
|
7
|
+
- Reuse existing functions and classes
|
|
8
|
+
- Create shared helpers for repeated logic
|
|
9
|
+
- Never copy-paste code in the plan
|
|
10
|
+
|
|
11
|
+
### YAGNI (You Aren't Gonna Need It)
|
|
12
|
+
- Build only what's required by the design
|
|
13
|
+
- No speculative features
|
|
14
|
+
- No "future-proofing" unless explicitly required
|
|
15
|
+
- Start simple, extend when needed
|
|
16
|
+
|
|
17
|
+
### TDD (Test-Driven Development)
|
|
18
|
+
- Write test first, always
|
|
19
|
+
- Watch it fail before implementing
|
|
20
|
+
- Implement minimal code to pass
|
|
21
|
+
- Refactor after green
|
|
22
|
+
|
|
23
|
+
### Frequent Commits
|
|
24
|
+
- Commit after each passing test
|
|
25
|
+
- One feature per commit
|
|
26
|
+
- Clear, descriptive commit messages
|
|
27
|
+
- Never commit broken code
|
|
28
|
+
|
|
29
|
+
## Writing for Zero-Context Engineers
|
|
30
|
+
|
|
31
|
+
### Assume They Know
|
|
32
|
+
- Core programming concepts
|
|
33
|
+
- The programming language syntax
|
|
34
|
+
- Basic development tools (git, pytest, npm)
|
|
35
|
+
- General software patterns
|
|
36
|
+
|
|
37
|
+
### Assume They DON'T Know
|
|
38
|
+
- Your specific codebase structure
|
|
39
|
+
- Domain-specific terminology
|
|
40
|
+
- Project conventions and patterns
|
|
41
|
+
- Where files should go
|
|
42
|
+
- Which existing utilities to use
|
|
43
|
+
- Your testing strategy
|
|
44
|
+
|
|
45
|
+
### Therefore, Always Specify
|
|
46
|
+
- **Exact file paths** - not "in the user module" but "`src/models/user.py`"
|
|
47
|
+
- **Complete code** - not "add validation" but show the validation code
|
|
48
|
+
- **Exact commands** - not "run tests" but "`pytest tests/models/test_user.py -v`"
|
|
49
|
+
- **Expected output** - what should happen when they run the command
|
|
50
|
+
- **Line numbers** for modifications - "`src/config.py:45-52`"
|
|
51
|
+
|
|
52
|
+
## Complete Code, Not Instructions
|
|
53
|
+
|
|
54
|
+
❌ **Bad (vague instructions):**
|
|
55
|
+
```markdown
|
|
56
|
+
**Step 3: Add validation**
|
|
57
|
+
|
|
58
|
+
Add email validation to the User model.
|
|
59
|
+
Make sure to check for valid format.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
✅ **Good (complete code):**
|
|
63
|
+
```markdown
|
|
64
|
+
**Step 3: Add validation to User model**
|
|
65
|
+
|
|
66
|
+
In `src/models/user.py`, add this method after line 12:
|
|
67
|
+
```python
|
|
68
|
+
def __post_init__(self):
|
|
69
|
+
if not validate_email(self.email):
|
|
70
|
+
raise ValueError(f"Invalid email: {self.email}")
|
|
71
|
+
if self.created_at is None:
|
|
72
|
+
self.created_at = datetime.utcnow()
|
|
73
|
+
```
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Exact Commands with Expected Output
|
|
77
|
+
|
|
78
|
+
❌ **Bad (vague):**
|
|
79
|
+
```markdown
|
|
80
|
+
**Step 2: Run the test**
|
|
81
|
+
|
|
82
|
+
Run the test and make sure it fails.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
✅ **Good (specific):**
|
|
86
|
+
```markdown
|
|
87
|
+
**Step 2: Run test to verify it fails**
|
|
88
|
+
|
|
89
|
+
Run: `pytest tests/models/test_user.py::test_user_creation -v`
|
|
90
|
+
Expected output:
|
|
91
|
+
```
|
|
92
|
+
FAILED tests/models/test_user.py::test_user_creation - ModuleNotFoundError: No module named 'models.user'
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
This is expected! We haven't created the module yet.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## File Path Precision
|
|
99
|
+
|
|
100
|
+
### For New Files
|
|
101
|
+
```markdown
|
|
102
|
+
**Files:**
|
|
103
|
+
- Create: `src/api/handlers/users.py`
|
|
104
|
+
- Create: `tests/api/test_users.py`
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### For Modifications
|
|
108
|
+
```markdown
|
|
109
|
+
**Files:**
|
|
110
|
+
- Modify: `src/api/routes.py:15` (add import)
|
|
111
|
+
- Modify: `src/api/routes.py:45` (add route registration)
|
|
112
|
+
- Modify: `src/config.py:12-18` (update database config)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### For Referenced Files
|
|
116
|
+
```markdown
|
|
117
|
+
**Documentation to check:**
|
|
118
|
+
- See: `docs/api-design.md` (endpoint specification)
|
|
119
|
+
- Reference: `src/api/handlers/auth.py:25-40` (similar pattern)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Test Design for Zero-Context Engineers
|
|
123
|
+
|
|
124
|
+
Many engineers struggle with test design. Help them by:
|
|
125
|
+
|
|
126
|
+
### Show What to Test
|
|
127
|
+
```markdown
|
|
128
|
+
**Test coverage needed:**
|
|
129
|
+
1. Happy path (valid input → expected output)
|
|
130
|
+
2. Invalid input (error handling)
|
|
131
|
+
3. Edge cases (empty, null, boundary values)
|
|
132
|
+
4. Integration (does it work with real dependencies?)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Provide Complete Test Examples
|
|
136
|
+
```python
|
|
137
|
+
# Happy path
|
|
138
|
+
def test_create_user_success():
|
|
139
|
+
user = create_user("alice", "alice@example.com")
|
|
140
|
+
assert user.username == "alice"
|
|
141
|
+
assert user.email == "alice@example.com"
|
|
142
|
+
|
|
143
|
+
# Invalid input
|
|
144
|
+
def test_create_user_invalid_email():
|
|
145
|
+
with pytest.raises(ValueError, match="Invalid email"):
|
|
146
|
+
create_user("alice", "not-an-email")
|
|
147
|
+
|
|
148
|
+
# Edge case
|
|
149
|
+
def test_create_user_empty_username():
|
|
150
|
+
with pytest.raises(ValueError, match="Username cannot be empty"):
|
|
151
|
+
create_user("", "alice@example.com")
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Explain Test Strategy
|
|
155
|
+
```markdown
|
|
156
|
+
**Why these tests:**
|
|
157
|
+
- `test_create_user_success`: Verifies basic functionality works
|
|
158
|
+
- `test_create_user_invalid_email`: Ensures we reject bad data
|
|
159
|
+
- `test_create_user_empty_username`: Prevents edge case bugs
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Referencing Existing Code
|
|
163
|
+
|
|
164
|
+
### Use @ Syntax for Skills
|
|
165
|
+
```markdown
|
|
166
|
+
For authentication patterns, see @skills/security/implementing-auth
|
|
167
|
+
For API design, reference @skills/api/rest-endpoints
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Reference Codebase Files
|
|
171
|
+
```markdown
|
|
172
|
+
**Similar implementations:**
|
|
173
|
+
- `src/api/handlers/auth.py:25-40` - shows JWT validation pattern
|
|
174
|
+
- `src/utils/validators.py:10-15` - email validation we can reuse
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Point to Documentation
|
|
178
|
+
```markdown
|
|
179
|
+
**Required reading:**
|
|
180
|
+
- `docs/architecture/database-schema.md` - understand our user model
|
|
181
|
+
- `docs/api/authentication.md` - see auth requirements
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Handling Dependencies and Setup
|
|
185
|
+
|
|
186
|
+
### External Dependencies
|
|
187
|
+
```markdown
|
|
188
|
+
**Dependencies needed:**
|
|
189
|
+
|
|
190
|
+
Add to `requirements.txt`:
|
|
191
|
+
```
|
|
192
|
+
bcrypt==4.0.1
|
|
193
|
+
PyJWT==2.8.0
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Install:
|
|
197
|
+
```bash
|
|
198
|
+
pip install -r requirements.txt
|
|
199
|
+
```
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Configuration Changes
|
|
203
|
+
```markdown
|
|
204
|
+
**Configuration update:**
|
|
205
|
+
|
|
206
|
+
In `src/config.py`, add:
|
|
207
|
+
```python
|
|
208
|
+
JWT_SECRET = os.environ.get("JWT_SECRET", "dev-secret-key")
|
|
209
|
+
JWT_EXPIRATION_HOURS = 24
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
In `.env.example`:
|
|
213
|
+
```
|
|
214
|
+
JWT_SECRET=your-secret-key-here
|
|
215
|
+
```
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Common Patterns to Include
|
|
219
|
+
|
|
220
|
+
### Error Handling Pattern
|
|
221
|
+
```python
|
|
222
|
+
try:
|
|
223
|
+
result = risky_operation()
|
|
224
|
+
return result
|
|
225
|
+
except SpecificError as e:
|
|
226
|
+
logger.error(f"Operation failed: {e}")
|
|
227
|
+
raise ValueError(f"Cannot complete operation: {e}")
|
|
228
|
+
except Exception as e:
|
|
229
|
+
logger.exception("Unexpected error")
|
|
230
|
+
raise
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Resource Cleanup Pattern
|
|
234
|
+
```python
|
|
235
|
+
def process_file(filepath):
|
|
236
|
+
file_handle = None
|
|
237
|
+
try:
|
|
238
|
+
file_handle = open(filepath, 'r')
|
|
239
|
+
data = file_handle.read()
|
|
240
|
+
return process_data(data)
|
|
241
|
+
finally:
|
|
242
|
+
if file_handle:
|
|
243
|
+
file_handle.close()
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Logging Pattern
|
|
247
|
+
```python
|
|
248
|
+
import logging
|
|
249
|
+
|
|
250
|
+
logger = logging.getLogger(__name__)
|
|
251
|
+
|
|
252
|
+
def important_operation():
|
|
253
|
+
logger.info("Starting operation")
|
|
254
|
+
try:
|
|
255
|
+
result = do_work()
|
|
256
|
+
logger.info(f"Operation completed: {result}")
|
|
257
|
+
return result
|
|
258
|
+
except Exception as e:
|
|
259
|
+
logger.error(f"Operation failed: {e}", exc_info=True)
|
|
260
|
+
raise
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Documentation in Plans
|
|
264
|
+
|
|
265
|
+
### When to Include Inline Docs
|
|
266
|
+
```markdown
|
|
267
|
+
**Step 3: Implement user creation with docstring**
|
|
268
|
+
|
|
269
|
+
```python
|
|
270
|
+
def create_user(username: str, email: str) -> User:
|
|
271
|
+
"""
|
|
272
|
+
Create a new user with validation.
|
|
273
|
+
|
|
274
|
+
Args:
|
|
275
|
+
username: User's chosen username (must be unique)
|
|
276
|
+
email: User's email address (must be valid format)
|
|
277
|
+
|
|
278
|
+
Returns:
|
|
279
|
+
User: The created user object
|
|
280
|
+
|
|
281
|
+
Raises:
|
|
282
|
+
ValueError: If username/email invalid or user exists
|
|
283
|
+
"""
|
|
284
|
+
if not username:
|
|
285
|
+
raise ValueError("Username cannot be empty")
|
|
286
|
+
if not validate_email(email):
|
|
287
|
+
raise ValueError(f"Invalid email: {email}")
|
|
288
|
+
|
|
289
|
+
return User(username=username, email=email)
|
|
290
|
+
```
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### When to Update Separate Docs
|
|
294
|
+
```markdown
|
|
295
|
+
**Step 10: Update API documentation**
|
|
296
|
+
|
|
297
|
+
In `docs/api/endpoints.md`, add:
|
|
298
|
+
```markdown
|
|
299
|
+
### POST /users
|
|
300
|
+
|
|
301
|
+
Create a new user account.
|
|
302
|
+
|
|
303
|
+
**Request:**
|
|
304
|
+
```json
|
|
305
|
+
{
|
|
306
|
+
"username": "alice",
|
|
307
|
+
"email": "alice@example.com"
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**Response:** 201 Created
|
|
312
|
+
```json
|
|
313
|
+
{
|
|
314
|
+
"id": 1,
|
|
315
|
+
"username": "alice",
|
|
316
|
+
"email": "alice@example.com",
|
|
317
|
+
"created_at": "2025-01-15T10:30:00Z"
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
```
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## Commit Message Guidelines
|
|
324
|
+
|
|
325
|
+
### Format
|
|
326
|
+
```
|
|
327
|
+
type: brief description
|
|
328
|
+
|
|
329
|
+
- Detail 1
|
|
330
|
+
- Detail 2
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Types
|
|
334
|
+
- `feat:` - New feature
|
|
335
|
+
- `fix:` - Bug fix
|
|
336
|
+
- `test:` - Add/update tests
|
|
337
|
+
- `refactor:` - Code restructuring
|
|
338
|
+
- `docs:` - Documentation only
|
|
339
|
+
- `chore:` - Tooling, dependencies
|
|
340
|
+
|
|
341
|
+
### Examples
|
|
342
|
+
```bash
|
|
343
|
+
git commit -m "feat: add user email validation"
|
|
344
|
+
git commit -m "test: add edge cases for user creation"
|
|
345
|
+
git commit -m "fix: handle empty username in user model"
|
|
346
|
+
git commit -m "refactor: extract validation to utils module"
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## Quality Checklist for Plans
|
|
350
|
+
|
|
351
|
+
Before saving the plan, verify:
|
|
352
|
+
|
|
353
|
+
- [ ] All file paths are exact and absolute
|
|
354
|
+
- [ ] All code blocks are complete (not pseudocode)
|
|
355
|
+
- [ ] All commands include expected output
|
|
356
|
+
- [ ] Tests are written before implementation
|
|
357
|
+
- [ ] Each step is 2-5 minutes of work
|
|
358
|
+
- [ ] Dependencies and setup are documented
|
|
359
|
+
- [ ] Error handling is included
|
|
360
|
+
- [ ] Commit messages are descriptive
|
|
361
|
+
- [ ] Referenced skills use @ syntax
|
|
362
|
+
- [ ] Header follows standard template
|