claude-mpm 5.4.36__py3-none-any.whl → 5.4.62__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/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +5 -0
- claude_mpm/agents/PM_INSTRUCTIONS.md +489 -177
- claude_mpm/agents/base_agent.json +1 -1
- claude_mpm/agents/frontmatter_validator.py +2 -2
- claude_mpm/cli/commands/configure_agent_display.py +12 -0
- claude_mpm/cli/commands/mpm_init/core.py +72 -0
- claude_mpm/cli/commands/profile.py +276 -0
- claude_mpm/cli/commands/skills.py +14 -18
- claude_mpm/cli/executor.py +10 -0
- claude_mpm/cli/parsers/base_parser.py +7 -0
- claude_mpm/cli/parsers/profile_parser.py +147 -0
- claude_mpm/cli/parsers/skills_parser.py +0 -6
- claude_mpm/cli/startup.py +433 -147
- claude_mpm/commands/mpm-config.md +13 -250
- claude_mpm/commands/mpm-doctor.md +9 -22
- claude_mpm/commands/mpm-help.md +5 -206
- claude_mpm/commands/mpm-init.md +81 -507
- claude_mpm/commands/mpm-monitor.md +15 -402
- claude_mpm/commands/mpm-organize.md +61 -441
- claude_mpm/commands/mpm-postmortem.md +6 -108
- claude_mpm/commands/mpm-session-resume.md +12 -363
- claude_mpm/commands/mpm-status.md +5 -69
- claude_mpm/commands/mpm-ticket-view.md +52 -495
- claude_mpm/commands/mpm-version.md +5 -107
- claude_mpm/core/optimized_startup.py +61 -0
- claude_mpm/core/shared/config_loader.py +3 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.DWzvg0-y.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.ThTw9_ym.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CWc5urbQ.js → 4TdZjIqw.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/5shd3_w0.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B0uc0UOD.js +36 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B7RN905-.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B7xVLGWV.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BIF9m_hv.js +61 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BKjSRqUr.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BPYeabCQ.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BQaXIfA_.js +331 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{uj46x2Wr.js → BSNlmTZj.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Be7GpZd6.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Bh0LDWpI.js +145 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BofRWZRR.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BovzEFCE.js +30 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C30mlcqg.js +165 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C4B-KCzX.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C4JcI4KD.js +122 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CBBdVcY8.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CDuw-vjf.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C_Usid8X.js +15 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cfqx1Qun.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CiIAseT4.js +128 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CmKTTxBW.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CnA0NrzZ.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cs_tUR18.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cu_Erd72.js +261 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CyWMqx4W.js +43 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CzZX-COe.js +220 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CzeYkLYB.js +65 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D3k0OPJN.js +4 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9lljYKQ.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DGkLK5U1.js +267 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DI7hHRFL.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DLVjFsZ3.js +139 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DUrLdbGD.js +89 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DVp1hx9R.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DY1XQ8fi.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DZX00Y4g.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Da0KfYnO.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DaimHw_p.js +68 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dfy6j1xT.js +323 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dhb8PKl3.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dle-35c7.js +64 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DmxopI1J.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DwBR2MJi.js +60 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/GYwsonyD.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Gi6I4Gst.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DjhvlsAc.js → NqQ1dWOy.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/RJiighC3.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{N4qtv3Hx.js → Vzk33B_K.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/ZGh7QtNv.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/bT1r9zLR.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/bTOqqlTd.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/eNVUfhuA.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/iEWssX7S.js +162 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/sQeU3Y1z.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uuIeMWc-.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.D6-I5TpK.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.NWzMBYRp.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/{0.CAGBuiOw.js → 0.m1gL8KXf.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.CgNOuw-d.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.C0GcWctS.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -1
- claude_mpm/dashboard/static/svelte-build/index.html +10 -10
- claude_mpm/dashboard-svelte/node_modules/katex/src/fonts/generate_fonts.py +58 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_tfms.py +114 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_ttfs.py +122 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/format_json.py +28 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/parse_tfm.py +211 -0
- claude_mpm/hooks/kuzu_memory_hook.py +5 -5
- claude_mpm/init.py +276 -0
- claude_mpm/services/agents/agent_builder.py +3 -3
- claude_mpm/services/agents/deployment/agent_deployment.py +22 -0
- claude_mpm/services/agents/deployment/agent_discovery_service.py +3 -1
- claude_mpm/services/agents/deployment/agent_format_converter.py +25 -13
- claude_mpm/services/agents/deployment/agent_template_builder.py +37 -17
- claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
- claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +149 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +47 -26
- claude_mpm/services/agents/git_source_manager.py +21 -2
- claude_mpm/services/agents/sources/git_source_sync_service.py +116 -5
- claude_mpm/services/monitor/management/lifecycle.py +7 -1
- claude_mpm/services/pm_skills_deployer.py +711 -0
- claude_mpm/services/profile_manager.py +337 -0
- claude_mpm/services/skills/git_skill_source_manager.py +148 -11
- claude_mpm/services/skills/selective_skill_deployer.py +97 -48
- claude_mpm/services/skills_deployer.py +161 -65
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
- 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 +112 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
- 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 +81 -0
- 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 +152 -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/systematic-debugging/CREATION-LOG.md +119 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -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 +499 -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/main/artifacts-builder/SKILL.md +86 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
- 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/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/pm/pm-delegation-patterns/SKILL.md +167 -0
- claude_mpm/skills/bundled/pm/pm-git-file-tracking/SKILL.md +113 -0
- claude_mpm/skills/bundled/pm/pm-pr-workflow/SKILL.md +124 -0
- claude_mpm/skills/bundled/pm/pm-ticketing-integration/SKILL.md +154 -0
- claude_mpm/skills/bundled/pm/pm-verification-protocols/SKILL.md +198 -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/security-scanning.md +112 -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 +119 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -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 +140 -0
- 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/SKILL.md +184 -0
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- 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/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
- claude_mpm/skills/skill_manager.py +98 -3
- claude_mpm/templates/.pre-commit-config.yaml +112 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.62.dist-info}/METADATA +3 -2
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.62.dist-info}/RECORD +244 -68
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +0 -2
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +0 -2
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +0 -10
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.62.dist-info}/WHEEL +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.62.dist-info}/entry_points.txt +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.62.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.62.dist-info}/licenses/LICENSE-FAQ.md +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.62.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
# Tracing Techniques
|
|
2
|
+
|
|
3
|
+
Complete methodology for tracing bugs backward through call chains to find original triggers.
|
|
4
|
+
|
|
5
|
+
## The Tracing Methodology
|
|
6
|
+
|
|
7
|
+
### Overview
|
|
8
|
+
|
|
9
|
+
Root cause tracing follows a systematic approach to walk backward through code execution until you find where bad data or invalid state originated.
|
|
10
|
+
|
|
11
|
+
**Key insight:** The place where an error manifests is rarely where the bug actually lives.
|
|
12
|
+
|
|
13
|
+
## Manual Tracing Process
|
|
14
|
+
|
|
15
|
+
### Step 1: Observe the Symptom
|
|
16
|
+
|
|
17
|
+
**What to capture:**
|
|
18
|
+
- Exact error message
|
|
19
|
+
- Stack trace (if available)
|
|
20
|
+
- Failed operation
|
|
21
|
+
- Wrong value/state
|
|
22
|
+
- Location where error occurred
|
|
23
|
+
|
|
24
|
+
**Example:**
|
|
25
|
+
```
|
|
26
|
+
Error: git init failed in /Users/jesse/project/packages/core
|
|
27
|
+
at WorktreeManager.createSessionWorktree (worktree-manager.ts:45)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Questions to ask:**
|
|
31
|
+
- What operation failed?
|
|
32
|
+
- What was the expected behavior?
|
|
33
|
+
- What value/state is wrong?
|
|
34
|
+
- Where did the error manifest?
|
|
35
|
+
|
|
36
|
+
### Step 2: Find Immediate Cause
|
|
37
|
+
|
|
38
|
+
Look at the code where the error occurs.
|
|
39
|
+
|
|
40
|
+
**Example:**
|
|
41
|
+
```typescript
|
|
42
|
+
async function createSessionWorktree(projectDir: string, sessionId: string) {
|
|
43
|
+
// This is where it fails
|
|
44
|
+
await execFileAsync('git', ['init'], { cwd: projectDir });
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Questions to ask:**
|
|
49
|
+
- What code directly causes this error?
|
|
50
|
+
- What parameters does it receive?
|
|
51
|
+
- What assumptions does it make?
|
|
52
|
+
- Are the parameters valid?
|
|
53
|
+
|
|
54
|
+
### Step 3: Identify the Caller
|
|
55
|
+
|
|
56
|
+
Trace one level up the call stack.
|
|
57
|
+
|
|
58
|
+
**From stack trace:**
|
|
59
|
+
```
|
|
60
|
+
at WorktreeManager.createSessionWorktree (worktree-manager.ts:45)
|
|
61
|
+
at Session.initializeWorkspace (session.ts:78)
|
|
62
|
+
at Session.create (session.ts:34)
|
|
63
|
+
at Test.<anonymous> (project.test.ts:12)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Manual code inspection:**
|
|
67
|
+
```typescript
|
|
68
|
+
// In session.ts
|
|
69
|
+
static async create(name: string, projectDir: string) {
|
|
70
|
+
const session = new Session(name);
|
|
71
|
+
await session.initializeWorkspace(projectDir); // ← Caller
|
|
72
|
+
return session;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Questions to ask:**
|
|
77
|
+
- What function called this?
|
|
78
|
+
- What value did it pass?
|
|
79
|
+
- Where did that value come from?
|
|
80
|
+
|
|
81
|
+
### Step 4: Continue Tracing Up
|
|
82
|
+
|
|
83
|
+
Repeat step 3 for each caller until you find the source.
|
|
84
|
+
|
|
85
|
+
**Trace chain example:**
|
|
86
|
+
```
|
|
87
|
+
Test code (project.test.ts:12)
|
|
88
|
+
→ Project.create(name, context.tempDir)
|
|
89
|
+
→ Session.create(name, projectDir)
|
|
90
|
+
→ Session.initializeWorkspace(projectDir)
|
|
91
|
+
→ WorktreeManager.createSessionWorktree(projectDir, sessionId)
|
|
92
|
+
→ execFileAsync('git', ['init'], { cwd: projectDir })
|
|
93
|
+
→ ERROR: projectDir is empty string
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Working backward:**
|
|
97
|
+
- Where did `projectDir = ''` come from? → Session.create()
|
|
98
|
+
- Where did Session.create() get it? → Project.create()
|
|
99
|
+
- Where did Project.create() get it? → Test code
|
|
100
|
+
- Where did test code get it? → `context.tempDir`
|
|
101
|
+
- Where did `context.tempDir = ''` come from? → **ROOT CAUSE FOUND**
|
|
102
|
+
|
|
103
|
+
### Step 5: Identify Root Cause
|
|
104
|
+
|
|
105
|
+
The root cause is where bad data/state originates.
|
|
106
|
+
|
|
107
|
+
**Common root causes:**
|
|
108
|
+
- Uninitialized variables accessed too early
|
|
109
|
+
- Configuration not loaded
|
|
110
|
+
- Null/undefined not handled
|
|
111
|
+
- Wrong default value
|
|
112
|
+
- Timing issue (race condition)
|
|
113
|
+
- Environment-specific behavior
|
|
114
|
+
|
|
115
|
+
**In our example:**
|
|
116
|
+
```typescript
|
|
117
|
+
// Root cause: Getter returns empty string before initialization
|
|
118
|
+
function setupCoreTest() {
|
|
119
|
+
let _tempDir = ''; // ← BAD: Empty string default
|
|
120
|
+
|
|
121
|
+
beforeEach(() => {
|
|
122
|
+
_tempDir = createTempDir(); // ← Set later
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
return { tempDir: _tempDir }; // ← Returns '' initially!
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Test code runs at module load time
|
|
129
|
+
const context = setupCoreTest();
|
|
130
|
+
const PROJECT_DIR = context.tempDir; // ← '' before beforeEach runs!
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Tracing Patterns
|
|
134
|
+
|
|
135
|
+
### Pattern 1: Data Flow Tracing
|
|
136
|
+
|
|
137
|
+
**When to use:** Invalid data appears somewhere in execution
|
|
138
|
+
|
|
139
|
+
**Process:**
|
|
140
|
+
1. Identify the invalid data at error point
|
|
141
|
+
2. Trace backward to find where it was set
|
|
142
|
+
3. Continue to where it originated
|
|
143
|
+
4. Fix at origin
|
|
144
|
+
|
|
145
|
+
**Example:**
|
|
146
|
+
```
|
|
147
|
+
userId = 0 (invalid) at database query
|
|
148
|
+
← from request.userId
|
|
149
|
+
← from parseRequest(req)
|
|
150
|
+
← from req.headers['user-id']
|
|
151
|
+
← ROOT: Header not validated/defaulted
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Pattern 2: Call Chain Tracing
|
|
155
|
+
|
|
156
|
+
**When to use:** Error happens deep in call stack
|
|
157
|
+
|
|
158
|
+
**Process:**
|
|
159
|
+
1. Start at error location
|
|
160
|
+
2. Examine immediate caller
|
|
161
|
+
3. Move up one level
|
|
162
|
+
4. Repeat until finding where invalid call originates
|
|
163
|
+
|
|
164
|
+
**Example:**
|
|
165
|
+
```
|
|
166
|
+
Error in database.execute(query)
|
|
167
|
+
← from UserService.findUser(id)
|
|
168
|
+
← from AuthMiddleware.authenticate()
|
|
169
|
+
← from Router.handleRequest()
|
|
170
|
+
← ROOT: No authentication check before calling
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Pattern 3: State Mutation Tracing
|
|
174
|
+
|
|
175
|
+
**When to use:** Object/variable has wrong value at some point
|
|
176
|
+
|
|
177
|
+
**Process:**
|
|
178
|
+
1. Identify when state is wrong
|
|
179
|
+
2. Find all places that mutate state
|
|
180
|
+
3. Trace backward to find which mutation caused it
|
|
181
|
+
4. Find why that mutation happened
|
|
182
|
+
|
|
183
|
+
**Example:**
|
|
184
|
+
```
|
|
185
|
+
config.database = undefined at startup
|
|
186
|
+
← config.database set to undefined in validateConfig()
|
|
187
|
+
← because env.DATABASE_URL is undefined
|
|
188
|
+
← ROOT: Environment variable not set
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Pattern 4: Timing/Ordering Tracing
|
|
192
|
+
|
|
193
|
+
**When to use:** Issue involves race conditions or execution order
|
|
194
|
+
|
|
195
|
+
**Process:**
|
|
196
|
+
1. Identify operations that ran in wrong order
|
|
197
|
+
2. Trace why the order is wrong
|
|
198
|
+
3. Find what controls the ordering
|
|
199
|
+
4. Fix ordering logic
|
|
200
|
+
|
|
201
|
+
**Example:**
|
|
202
|
+
```
|
|
203
|
+
Database query before connection established
|
|
204
|
+
← query() called in constructor
|
|
205
|
+
← constructor runs immediately
|
|
206
|
+
← connection.connect() called async in initialize()
|
|
207
|
+
← ROOT: Constructor doesn't wait for async initialization
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Decision Trees
|
|
211
|
+
|
|
212
|
+
### When Manual Tracing is Sufficient
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
Can you see the code path?
|
|
216
|
+
→ Yes: Use manual tracing
|
|
217
|
+
→ Stack trace available?
|
|
218
|
+
→ Yes: Follow stack trace
|
|
219
|
+
→ No: Inspect caller manually
|
|
220
|
+
→ No: Add instrumentation (see advanced-techniques.md)
|
|
221
|
+
|
|
222
|
+
Is error reproducible?
|
|
223
|
+
→ Yes: Can trace reliably
|
|
224
|
+
→ No: Must make reproducible first
|
|
225
|
+
→ Add logging to capture when it happens
|
|
226
|
+
→ Use instrumentation to understand timing
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### How Deep to Trace
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
Found where bad value originates?
|
|
233
|
+
→ Yes: Root cause found
|
|
234
|
+
→ No: Continue tracing
|
|
235
|
+
→ At system boundary (entry point)?
|
|
236
|
+
→ Yes: Root cause is at boundary
|
|
237
|
+
→ No: Keep tracing backward
|
|
238
|
+
|
|
239
|
+
Multiple callers with same issue?
|
|
240
|
+
→ Yes: Root cause is in shared caller
|
|
241
|
+
→ No: Root cause is in specific caller path
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Fixing vs Adding Defense
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
Found root cause?
|
|
248
|
+
→ Yes:
|
|
249
|
+
→ Fix at source: YES
|
|
250
|
+
→ Add validation at intermediate layers: YES
|
|
251
|
+
→ Fix only at error point: NO
|
|
252
|
+
→ No:
|
|
253
|
+
→ Add defense at error point: TEMPORARY
|
|
254
|
+
→ Continue tracing: YES
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Common Tracing Challenges
|
|
258
|
+
|
|
259
|
+
### Challenge 1: Long Call Chains
|
|
260
|
+
|
|
261
|
+
**Problem:** 10+ levels in call stack
|
|
262
|
+
**Solution:**
|
|
263
|
+
- Use binary search: check middle of chain first
|
|
264
|
+
- Skip obviously correct intermediate calls
|
|
265
|
+
- Focus on where data changes
|
|
266
|
+
|
|
267
|
+
### Challenge 2: Async/Callback Hell
|
|
268
|
+
|
|
269
|
+
**Problem:** Callbacks and promises obscure call chain
|
|
270
|
+
**Solution:**
|
|
271
|
+
- Use async stack traces (Node.js: `--async-stack-traces`)
|
|
272
|
+
- Add trace IDs to log all operations
|
|
273
|
+
- Use debugger to step through promises
|
|
274
|
+
|
|
275
|
+
### Challenge 3: Multiple Code Paths
|
|
276
|
+
|
|
277
|
+
**Problem:** Error could come from multiple callers
|
|
278
|
+
**Solution:**
|
|
279
|
+
- Add conditional logging at error point
|
|
280
|
+
- Use instrumentation to capture caller info
|
|
281
|
+
- Reproduce with minimal test case
|
|
282
|
+
|
|
283
|
+
### Challenge 4: External Dependencies
|
|
284
|
+
|
|
285
|
+
**Problem:** Issue might be in third-party library
|
|
286
|
+
**Solution:**
|
|
287
|
+
- Verify inputs to library are correct
|
|
288
|
+
- Check library version/compatibility
|
|
289
|
+
- Read library source if needed
|
|
290
|
+
- Consider if misusing library API
|
|
291
|
+
|
|
292
|
+
### Challenge 5: No Stack Trace
|
|
293
|
+
|
|
294
|
+
**Problem:** Error doesn't produce stack trace
|
|
295
|
+
**Solution:**
|
|
296
|
+
- Add stack capture: `new Error().stack`
|
|
297
|
+
- Use debugger to pause at error point
|
|
298
|
+
- Add logging at suspected callers
|
|
299
|
+
- Use process of elimination
|
|
300
|
+
|
|
301
|
+
## Tips for Effective Tracing
|
|
302
|
+
|
|
303
|
+
### Use Your Tools
|
|
304
|
+
|
|
305
|
+
**IDE navigation:**
|
|
306
|
+
- "Find References" to see all callers
|
|
307
|
+
- "Go to Definition" to jump to implementation
|
|
308
|
+
- Call hierarchy view
|
|
309
|
+
- Type hierarchy for inheritance
|
|
310
|
+
|
|
311
|
+
**Debugger:**
|
|
312
|
+
- Set breakpoint at error point
|
|
313
|
+
- Step out to see caller
|
|
314
|
+
- Examine call stack panel
|
|
315
|
+
- Watch variables as they change
|
|
316
|
+
|
|
317
|
+
**Version control:**
|
|
318
|
+
- `git blame` to see when code changed
|
|
319
|
+
- `git log` to see recent changes
|
|
320
|
+
- `git bisect` to find when bug was introduced
|
|
321
|
+
|
|
322
|
+
### Document Your Trace
|
|
323
|
+
|
|
324
|
+
As you trace, write down the call chain:
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
ERROR: git init in wrong directory
|
|
328
|
+
← execFileAsync('git', ['init'], { cwd: '' })
|
|
329
|
+
← WorktreeManager.createSessionWorktree(projectDir='')
|
|
330
|
+
← Session.initializeWorkspace(projectDir='')
|
|
331
|
+
← Session.create(name, projectDir='')
|
|
332
|
+
← Project.create(name, context.tempDir='')
|
|
333
|
+
← Test: const PROJECT_DIR = context.tempDir
|
|
334
|
+
← ROOT: setupCoreTest() returns { tempDir: '' } before beforeEach
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
This helps you:
|
|
338
|
+
- Remember where you are in the trace
|
|
339
|
+
- Communicate findings to others
|
|
340
|
+
- Verify your understanding
|
|
341
|
+
- Identify patterns
|
|
342
|
+
|
|
343
|
+
### Know When to Stop Tracing
|
|
344
|
+
|
|
345
|
+
**Stop when you find:**
|
|
346
|
+
- The origin of bad data
|
|
347
|
+
- The first place where invariant is violated
|
|
348
|
+
- The entry point where validation should happen
|
|
349
|
+
- The configuration/initialization that sets wrong value
|
|
350
|
+
|
|
351
|
+
**Don't stop at:**
|
|
352
|
+
- Where error manifests
|
|
353
|
+
- Where symptom is visible
|
|
354
|
+
- Intermediate validation that fails
|
|
355
|
+
- Defensive checks that catch the issue
|
|
356
|
+
|
|
357
|
+
## Verification After Tracing
|
|
358
|
+
|
|
359
|
+
Once you think you've found the root cause:
|
|
360
|
+
|
|
361
|
+
1. **Verify understanding:**
|
|
362
|
+
- Can you explain how the bug happens?
|
|
363
|
+
- Does your explanation match all symptoms?
|
|
364
|
+
- Can you predict what will happen if you fix it?
|
|
365
|
+
|
|
366
|
+
2. **Test your hypothesis:**
|
|
367
|
+
- Add temporary fix at suspected root cause
|
|
368
|
+
- Does it resolve the issue?
|
|
369
|
+
- Does it resolve ALL instances of the issue?
|
|
370
|
+
|
|
371
|
+
3. **Implement proper fix:**
|
|
372
|
+
- Fix at root cause
|
|
373
|
+
- Add tests for root cause
|
|
374
|
+
- Add defense-in-depth at intermediate layers
|
|
375
|
+
- Verify no regressions
|
|
376
|
+
|
|
377
|
+
## Summary
|
|
378
|
+
|
|
379
|
+
**Manual tracing process:**
|
|
380
|
+
1. Observe symptom → 2. Find immediate cause → 3. Identify caller → 4. Trace up → 5. Find root cause
|
|
381
|
+
|
|
382
|
+
**Key principles:**
|
|
383
|
+
- Trace backward from symptom to source
|
|
384
|
+
- Don't stop at first "cause" - find original trigger
|
|
385
|
+
- Fix at source, add defense at layers
|
|
386
|
+
- Document your trace for clarity
|
|
387
|
+
|
|
388
|
+
**When to use advanced techniques:**
|
|
389
|
+
- Can't manually trace (see advanced-techniques.md)
|
|
390
|
+
- Need to identify which test pollutes (see advanced-techniques.md)
|
|
391
|
+
- Multiple async operations involved (see advanced-techniques.md)
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Creation Log: Systematic Debugging Skill
|
|
2
|
+
|
|
3
|
+
Reference example of extracting, structuring, and bulletproofing a critical skill.
|
|
4
|
+
|
|
5
|
+
## Source Material
|
|
6
|
+
|
|
7
|
+
Extracted debugging framework from `/Users/jesse/.claude/CLAUDE.md`:
|
|
8
|
+
- 4-phase systematic process (Investigation → Pattern Analysis → Hypothesis → Implementation)
|
|
9
|
+
- Core mandate: ALWAYS find root cause, NEVER fix symptoms
|
|
10
|
+
- Rules designed to resist time pressure and rationalization
|
|
11
|
+
|
|
12
|
+
## Extraction Decisions
|
|
13
|
+
|
|
14
|
+
**What to include:**
|
|
15
|
+
- Complete 4-phase framework with all rules
|
|
16
|
+
- Anti-shortcuts ("NEVER fix symptom", "STOP and re-analyze")
|
|
17
|
+
- Pressure-resistant language ("even if faster", "even if I seem in a hurry")
|
|
18
|
+
- Concrete steps for each phase
|
|
19
|
+
|
|
20
|
+
**What to leave out:**
|
|
21
|
+
- Project-specific context
|
|
22
|
+
- Repetitive variations of same rule
|
|
23
|
+
- Narrative explanations (condensed to principles)
|
|
24
|
+
|
|
25
|
+
## Structure Following skill-creation/SKILL.md
|
|
26
|
+
|
|
27
|
+
1. **Rich when_to_use** - Included symptoms and anti-patterns
|
|
28
|
+
2. **Type: technique** - Concrete process with steps
|
|
29
|
+
3. **Keywords** - "root cause", "symptom", "workaround", "debugging", "investigation"
|
|
30
|
+
4. **Flowchart** - Decision point for "fix failed" → re-analyze vs add more fixes
|
|
31
|
+
5. **Phase-by-phase breakdown** - Scannable checklist format
|
|
32
|
+
6. **Anti-patterns section** - What NOT to do (critical for this skill)
|
|
33
|
+
|
|
34
|
+
## Bulletproofing Elements
|
|
35
|
+
|
|
36
|
+
Framework designed to resist rationalization under pressure:
|
|
37
|
+
|
|
38
|
+
### Language Choices
|
|
39
|
+
- "ALWAYS" / "NEVER" (not "should" / "try to")
|
|
40
|
+
- "even if faster" / "even if I seem in a hurry"
|
|
41
|
+
- "STOP and re-analyze" (explicit pause)
|
|
42
|
+
- "Don't skip past" (catches the actual behavior)
|
|
43
|
+
|
|
44
|
+
### Structural Defenses
|
|
45
|
+
- **Phase 1 required** - Can't skip to implementation
|
|
46
|
+
- **Single hypothesis rule** - Forces thinking, prevents shotgun fixes
|
|
47
|
+
- **Explicit failure mode** - "IF your first fix doesn't work" with mandatory action
|
|
48
|
+
- **Anti-patterns section** - Shows exactly what shortcuts look like
|
|
49
|
+
|
|
50
|
+
### Redundancy
|
|
51
|
+
- Root cause mandate in overview + when_to_use + Phase 1 + implementation rules
|
|
52
|
+
- "NEVER fix symptom" appears 4 times in different contexts
|
|
53
|
+
- Each phase has explicit "don't skip" guidance
|
|
54
|
+
|
|
55
|
+
## Testing Approach
|
|
56
|
+
|
|
57
|
+
Created 4 validation tests following skills/meta/testing-skills-with-subagents:
|
|
58
|
+
|
|
59
|
+
### Test 1: Academic Context (No Pressure)
|
|
60
|
+
- Simple bug, no time pressure
|
|
61
|
+
- **Result:** Perfect compliance, complete investigation
|
|
62
|
+
|
|
63
|
+
### Test 2: Time Pressure + Obvious Quick Fix
|
|
64
|
+
- User "in a hurry", symptom fix looks easy
|
|
65
|
+
- **Result:** Resisted shortcut, followed full process, found real root cause
|
|
66
|
+
|
|
67
|
+
### Test 3: Complex System + Uncertainty
|
|
68
|
+
- Multi-layer failure, unclear if can find root cause
|
|
69
|
+
- **Result:** Systematic investigation, traced through all layers, found source
|
|
70
|
+
|
|
71
|
+
### Test 4: Failed First Fix
|
|
72
|
+
- Hypothesis doesn't work, temptation to add more fixes
|
|
73
|
+
- **Result:** Stopped, re-analyzed, formed new hypothesis (no shotgun)
|
|
74
|
+
|
|
75
|
+
**All tests passed.** No rationalizations found.
|
|
76
|
+
|
|
77
|
+
## Iterations
|
|
78
|
+
|
|
79
|
+
### Initial Version
|
|
80
|
+
- Complete 4-phase framework
|
|
81
|
+
- Anti-patterns section
|
|
82
|
+
- Flowchart for "fix failed" decision
|
|
83
|
+
|
|
84
|
+
### Enhancement 1: TDD Reference
|
|
85
|
+
- Added link to skills/testing/test-driven-development
|
|
86
|
+
- Note explaining TDD's "simplest code" ≠ debugging's "root cause"
|
|
87
|
+
- Prevents confusion between methodologies
|
|
88
|
+
|
|
89
|
+
## Final Outcome
|
|
90
|
+
|
|
91
|
+
Bulletproof skill that:
|
|
92
|
+
- ✅ Clearly mandates root cause investigation
|
|
93
|
+
- ✅ Resists time pressure rationalization
|
|
94
|
+
- ✅ Provides concrete steps for each phase
|
|
95
|
+
- ✅ Shows anti-patterns explicitly
|
|
96
|
+
- ✅ Tested under multiple pressure scenarios
|
|
97
|
+
- ✅ Clarifies relationship to TDD
|
|
98
|
+
- ✅ Ready for use
|
|
99
|
+
|
|
100
|
+
## Key Insight
|
|
101
|
+
|
|
102
|
+
**Most important bulletproofing:** Anti-patterns section showing exact shortcuts that feel justified in the moment. When Claude thinks "I'll just add this one quick fix", seeing that exact pattern listed as wrong creates cognitive friction.
|
|
103
|
+
|
|
104
|
+
## Usage Example
|
|
105
|
+
|
|
106
|
+
When encountering a bug:
|
|
107
|
+
1. Load skill: skills/debugging/systematic-debugging
|
|
108
|
+
2. Read overview (10 sec) - reminded of mandate
|
|
109
|
+
3. Follow Phase 1 checklist - forced investigation
|
|
110
|
+
4. If tempted to skip - see anti-pattern, stop
|
|
111
|
+
5. Complete all phases - root cause found
|
|
112
|
+
|
|
113
|
+
**Time investment:** 5-10 minutes
|
|
114
|
+
**Time saved:** Hours of symptom-whack-a-mole
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
*Created: 2025-10-03*
|
|
119
|
+
*Purpose: Reference example for skill extraction and bulletproofing*
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: systematic-debugging
|
|
3
|
+
description: Methodical debugging instead of random changes
|
|
4
|
+
version: 2.2.0
|
|
5
|
+
category: debugging
|
|
6
|
+
author: Jesse Vincent
|
|
7
|
+
license: MIT
|
|
8
|
+
source: https://github.com/obra/superpowers-skills/tree/main/skills/debugging/systematic-debugging
|
|
9
|
+
progressive_disclosure:
|
|
10
|
+
entry_point:
|
|
11
|
+
summary: "Replace random code changes with systematic problem diagnosis using four-phase investigation framework"
|
|
12
|
+
when_to_use: "When user reports bugs, errors, test failures, or unexpected behavior. ESPECIALLY when under time pressure or 'quick fixes' seem obvious."
|
|
13
|
+
quick_start: "1. Read error messages completely 2. Reproduce consistently 3. Form specific hypothesis 4. Test with single change 5. Verify fix"
|
|
14
|
+
references:
|
|
15
|
+
- workflow.md
|
|
16
|
+
- examples.md
|
|
17
|
+
- troubleshooting.md
|
|
18
|
+
- anti-patterns.md
|
|
19
|
+
context_limit: 800
|
|
20
|
+
tags:
|
|
21
|
+
- debugging
|
|
22
|
+
- problem-solving
|
|
23
|
+
- root-cause
|
|
24
|
+
- systematic
|
|
25
|
+
requires_tools:
|
|
26
|
+
- debugger
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# Systematic Debugging
|
|
30
|
+
|
|
31
|
+
## Overview
|
|
32
|
+
|
|
33
|
+
Random fixes waste time and create new bugs. Quick patches mask underlying issues.
|
|
34
|
+
|
|
35
|
+
**Core principle:** ALWAYS find root cause before attempting fixes. Symptom fixes are failure.
|
|
36
|
+
|
|
37
|
+
This skill enforces a four-phase systematic approach that ensures root cause investigation before any fix attempt. Violating the letter of this process is violating the spirit of debugging.
|
|
38
|
+
|
|
39
|
+
## When to Use This Skill
|
|
40
|
+
|
|
41
|
+
Activate when:
|
|
42
|
+
- User reports a bug or error
|
|
43
|
+
- Test failures occur
|
|
44
|
+
- Code behaves unexpectedly
|
|
45
|
+
- Performance problems arise
|
|
46
|
+
- Build or integration failures
|
|
47
|
+
- User says "it's not working"
|
|
48
|
+
|
|
49
|
+
**Use this ESPECIALLY when:**
|
|
50
|
+
- Under time pressure (emergencies make guessing tempting)
|
|
51
|
+
- "Just one quick fix" seems obvious
|
|
52
|
+
- You've already tried multiple fixes
|
|
53
|
+
- Previous fix didn't work
|
|
54
|
+
|
|
55
|
+
## The Iron Law
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
If you haven't completed Phase 1, you cannot propose fixes.
|
|
62
|
+
|
|
63
|
+
## Core Principles
|
|
64
|
+
|
|
65
|
+
1. **Reproduce First**: Ensure you can reliably reproduce the issue
|
|
66
|
+
2. **One Change at a Time**: Change only one thing between tests
|
|
67
|
+
3. **Hypothesis-Driven**: Form hypotheses before making changes
|
|
68
|
+
4. **Verify Fixes**: Confirm the fix works and doesn't break anything else
|
|
69
|
+
|
|
70
|
+
## Quick Start
|
|
71
|
+
|
|
72
|
+
1. **Read Error Messages**: Read completely, including stack traces
|
|
73
|
+
2. **Reproduce Consistently**: Create reliable reproduction steps
|
|
74
|
+
3. **Gather Evidence**: Add diagnostic instrumentation in multi-component systems
|
|
75
|
+
4. **Form Hypothesis**: State clearly "I think X because Y"
|
|
76
|
+
5. **Test Minimally**: Make smallest possible change
|
|
77
|
+
6. **Verify Fix**: Confirm resolution and no regressions
|
|
78
|
+
|
|
79
|
+
## The Four Phases
|
|
80
|
+
|
|
81
|
+
### Phase 1: Root Cause Investigation
|
|
82
|
+
|
|
83
|
+
**BEFORE attempting ANY fix:**
|
|
84
|
+
- Read error messages carefully (they often contain the solution)
|
|
85
|
+
- Reproduce consistently
|
|
86
|
+
- Check recent changes
|
|
87
|
+
- Gather evidence in multi-component systems
|
|
88
|
+
- Trace data flow back to source
|
|
89
|
+
|
|
90
|
+
### Phase 2: Pattern Analysis
|
|
91
|
+
|
|
92
|
+
Find working examples, compare against references, identify differences, understand dependencies.
|
|
93
|
+
|
|
94
|
+
### Phase 3: Hypothesis and Testing
|
|
95
|
+
|
|
96
|
+
Form single hypothesis, test minimally (one variable at a time), verify before continuing.
|
|
97
|
+
|
|
98
|
+
### Phase 4: Implementation
|
|
99
|
+
|
|
100
|
+
Create failing test case, implement single fix addressing root cause, verify fix works.
|
|
101
|
+
|
|
102
|
+
**If 3+ fixes fail:** STOP and question the architecture - this indicates architectural problems, not failed hypotheses.
|
|
103
|
+
|
|
104
|
+
## Navigation
|
|
105
|
+
|
|
106
|
+
For detailed information:
|
|
107
|
+
- **[Workflow](references/workflow.md)**: Complete four-phase debugging workflow with decision trees and detailed steps
|
|
108
|
+
- **[Examples](references/examples.md)**: Real-world debugging scenarios with step-by-step walkthroughs
|
|
109
|
+
- **[Troubleshooting](references/troubleshooting.md)**: Common debugging challenges and how to overcome them
|
|
110
|
+
- **[Anti-patterns](references/anti-patterns.md)**: Common mistakes, rationalizations, and red flags
|
|
111
|
+
|
|
112
|
+
## Key Reminders
|
|
113
|
+
|
|
114
|
+
- NEVER make random changes hoping they'll work
|
|
115
|
+
- ALWAYS reproduce the issue before attempting fixes
|
|
116
|
+
- Form hypothesis BEFORE making changes
|
|
117
|
+
- Change ONE thing at a time
|
|
118
|
+
- Verify fix actually resolves the issue
|
|
119
|
+
- Check for regressions after fixing
|
|
120
|
+
- If 3+ fixes fail, question the architecture
|
|
121
|
+
|
|
122
|
+
## Red Flags - STOP and Follow Process
|
|
123
|
+
|
|
124
|
+
If you catch yourself thinking:
|
|
125
|
+
- "Quick fix for now, investigate later"
|
|
126
|
+
- "Just try changing X and see if it works"
|
|
127
|
+
- "It's probably X, let me fix that"
|
|
128
|
+
- "I don't fully understand but this might work"
|
|
129
|
+
- "One more fix attempt" (when already tried 2+)
|
|
130
|
+
- Each fix reveals new problem in different place
|
|
131
|
+
|
|
132
|
+
**ALL of these mean: STOP. Return to Phase 1.**
|
|
133
|
+
|
|
134
|
+
## Integration with Other Skills
|
|
135
|
+
|
|
136
|
+
- **root-cause-tracing**: How to trace back through call stack
|
|
137
|
+
- **defense-in-depth**: Add validation after finding root cause
|
|
138
|
+
- **condition-based-waiting**: Replace timeouts identified in Phase 2
|
|
139
|
+
- **verification-before-completion**: Verify fix worked before claiming success
|
|
140
|
+
- **test-driven-development**: Create failing test case in Phase 4
|
|
141
|
+
|
|
142
|
+
## Real-World Impact
|
|
143
|
+
|
|
144
|
+
From debugging sessions:
|
|
145
|
+
- Systematic approach: 15-30 minutes to fix
|
|
146
|
+
- Random fixes approach: 2-3 hours of thrashing
|
|
147
|
+
- First-time fix rate: 95% vs 40%
|
|
148
|
+
- New bugs introduced: Near zero vs common
|