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,412 @@
|
|
|
1
|
+
# Code Review Examples
|
|
2
|
+
|
|
3
|
+
## Complete Review Example
|
|
4
|
+
|
|
5
|
+
### Context
|
|
6
|
+
Task 2 completed: Added verification and repair functions for conversation index
|
|
7
|
+
|
|
8
|
+
**Git range:** `a7981ec..3df7661`
|
|
9
|
+
|
|
10
|
+
**What was implemented:** Verification and repair functions for conversation index
|
|
11
|
+
|
|
12
|
+
**Plan reference:** Task 2 from docs/plans/deployment-plan.md
|
|
13
|
+
|
|
14
|
+
### Good Review Output
|
|
15
|
+
|
|
16
|
+
```markdown
|
|
17
|
+
### Strengths
|
|
18
|
+
- Clean database schema with proper migrations (db.ts:15-42)
|
|
19
|
+
- Comprehensive test coverage (18 tests, all edge cases)
|
|
20
|
+
- Good error handling with fallbacks (summarizer.ts:85-92)
|
|
21
|
+
- Real integration tests, not just mocks (test-integration.ts)
|
|
22
|
+
- Clear separation of concerns (verification vs repair logic)
|
|
23
|
+
|
|
24
|
+
### Issues
|
|
25
|
+
|
|
26
|
+
#### Important (Should Fix)
|
|
27
|
+
1. **Missing help text in CLI wrapper**
|
|
28
|
+
- File: index-conversations:1-31
|
|
29
|
+
- Issue: No --help flag, users won't discover --concurrency
|
|
30
|
+
- Why it matters: Poor user experience, hidden features
|
|
31
|
+
- Fix: Add --help case with usage examples showing all options
|
|
32
|
+
|
|
33
|
+
2. **Date validation missing**
|
|
34
|
+
- File: search.ts:25-27
|
|
35
|
+
- Issue: Invalid dates silently return no results
|
|
36
|
+
- Why it matters: Silent failures confuse users
|
|
37
|
+
- Fix: Validate ISO format, throw error with example format
|
|
38
|
+
|
|
39
|
+
3. **Progress indicators missing**
|
|
40
|
+
- File: indexer.ts:130
|
|
41
|
+
- Issue: No "X of Y" counter for long operations
|
|
42
|
+
- Why it matters: Users don't know how long to wait
|
|
43
|
+
- Fix: Add `console.log(\`Processing \${i+1}/\${total}\`)` in loop
|
|
44
|
+
|
|
45
|
+
#### Minor (Nice to Have)
|
|
46
|
+
1. **Magic number for reporting interval**
|
|
47
|
+
- File: indexer.ts:145
|
|
48
|
+
- Issue: Hardcoded 100 for progress reporting
|
|
49
|
+
- Impact: Low, but config would be cleaner
|
|
50
|
+
- Fix: Extract to constant `PROGRESS_INTERVAL = 100`
|
|
51
|
+
|
|
52
|
+
### Recommendations
|
|
53
|
+
- Add progress reporting for better user experience
|
|
54
|
+
- Consider config file for excluded projects (improves portability)
|
|
55
|
+
- Documentation looks good, but add troubleshooting section
|
|
56
|
+
|
|
57
|
+
### Assessment
|
|
58
|
+
|
|
59
|
+
**Ready to merge: With fixes**
|
|
60
|
+
|
|
61
|
+
**Reasoning:** Core implementation is solid with good architecture and comprehensive tests. Important issues (help text, date validation, progress indicators) are easily fixed in 10-15 minutes and don't affect core functionality. Minor issues can be addressed later.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Acting on This Review
|
|
65
|
+
|
|
66
|
+
**Fix Important issues:**
|
|
67
|
+
```bash
|
|
68
|
+
# Fix 1: Add help text
|
|
69
|
+
# Edit index-conversations, add help flag
|
|
70
|
+
|
|
71
|
+
# Fix 2: Add date validation
|
|
72
|
+
# Edit search.ts:25-27, add format check
|
|
73
|
+
|
|
74
|
+
# Fix 3: Add progress indicators
|
|
75
|
+
# Edit indexer.ts:130, add counter
|
|
76
|
+
|
|
77
|
+
# Test fixes
|
|
78
|
+
pytest tests/ -v
|
|
79
|
+
|
|
80
|
+
# Commit
|
|
81
|
+
git add .
|
|
82
|
+
git commit -m "fix: add help text, date validation, and progress indicators"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Continue to next task** after fixes verified.
|
|
86
|
+
|
|
87
|
+
## Good vs Bad Review Requests
|
|
88
|
+
|
|
89
|
+
### ❌ Bad Request: Vague
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
Can you review my code?
|
|
93
|
+
|
|
94
|
+
BASE_SHA: abc123
|
|
95
|
+
HEAD_SHA: def456
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Problems:**
|
|
99
|
+
- No context on what was implemented
|
|
100
|
+
- No requirements to check against
|
|
101
|
+
- No description of changes
|
|
102
|
+
- Reviewer has to reverse-engineer everything
|
|
103
|
+
|
|
104
|
+
### ✅ Good Request: Specific
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
Review Task 3: User Authentication Implementation
|
|
108
|
+
|
|
109
|
+
WHAT_WAS_IMPLEMENTED:
|
|
110
|
+
- JWT-based authentication middleware
|
|
111
|
+
- Login/logout endpoints
|
|
112
|
+
- Password hashing with bcrypt
|
|
113
|
+
- Session management
|
|
114
|
+
|
|
115
|
+
PLAN_OR_REQUIREMENTS:
|
|
116
|
+
See Task 3 in docs/plans/2025-01-15-user-auth.md
|
|
117
|
+
Key requirements:
|
|
118
|
+
- Secure password storage (bcrypt)
|
|
119
|
+
- JWT tokens with 24hr expiration
|
|
120
|
+
- Logout invalidates token
|
|
121
|
+
- All endpoints require auth except /login
|
|
122
|
+
|
|
123
|
+
BASE_SHA: a7981ec
|
|
124
|
+
HEAD_SHA: 3df7661
|
|
125
|
+
|
|
126
|
+
DESCRIPTION:
|
|
127
|
+
Added authentication system with JWT tokens. Implemented password hashing,
|
|
128
|
+
login/logout endpoints, and auth middleware. All tests passing.
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Why it's good:**
|
|
132
|
+
- Clear context on what was built
|
|
133
|
+
- Specific requirements to verify
|
|
134
|
+
- Git range for diff
|
|
135
|
+
- Brief summary of changes
|
|
136
|
+
|
|
137
|
+
## Review Workflow Examples
|
|
138
|
+
|
|
139
|
+
### Example 1: Subagent-Driven Development (After Each Task)
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
[Task 2 completed: Email validation]
|
|
143
|
+
|
|
144
|
+
PM: Let me request code review before proceeding.
|
|
145
|
+
|
|
146
|
+
BASE_SHA=$(git log --oneline | grep "Task 1" | head -1 | awk '{print $1}')
|
|
147
|
+
HEAD_SHA=$(git rev-parse HEAD)
|
|
148
|
+
|
|
149
|
+
[Dispatch code-reviewer subagent]
|
|
150
|
+
WHAT_WAS_IMPLEMENTED: Email validation in User model
|
|
151
|
+
PLAN_OR_REQUIREMENTS: Task 2 from docs/plans/user-system-plan.md
|
|
152
|
+
BASE_SHA: abc123
|
|
153
|
+
HEAD_SHA: def456
|
|
154
|
+
DESCRIPTION: Added validate_email() utility and integrated into User model
|
|
155
|
+
|
|
156
|
+
[Subagent returns]:
|
|
157
|
+
Strengths: Clean validator, good tests
|
|
158
|
+
Issues:
|
|
159
|
+
Important: Missing edge case for emails with + signs
|
|
160
|
+
Minor: Could extract regex to constant
|
|
161
|
+
Assessment: Fix + sign handling, then proceed
|
|
162
|
+
|
|
163
|
+
PM: [Fix + sign edge case]
|
|
164
|
+
[Add test for alice+spam@example.com]
|
|
165
|
+
[Verify all tests pass]
|
|
166
|
+
[Commit fix]
|
|
167
|
+
|
|
168
|
+
PM: Ready to proceed to Task 3
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Example 2: Before Merging Major Feature
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
[Feature branch: user-authentication complete]
|
|
175
|
+
|
|
176
|
+
PM: Let me get a final review before merging to main.
|
|
177
|
+
|
|
178
|
+
BASE_SHA=$(git merge-base origin/main HEAD)
|
|
179
|
+
HEAD_SHA=$(git rev-parse HEAD)
|
|
180
|
+
|
|
181
|
+
[Dispatch code-reviewer subagent]
|
|
182
|
+
WHAT_WAS_IMPLEMENTED: Complete user authentication system
|
|
183
|
+
PLAN_OR_REQUIREMENTS: docs/plans/2025-01-15-user-auth.md (all tasks)
|
|
184
|
+
BASE_SHA: a7981ec (merge-base with main)
|
|
185
|
+
HEAD_SHA: 3df7661
|
|
186
|
+
DESCRIPTION: Full auth system: registration, login, JWT, password hashing, session management
|
|
187
|
+
|
|
188
|
+
[Subagent returns]:
|
|
189
|
+
Strengths: Complete implementation, excellent test coverage, secure
|
|
190
|
+
Issues:
|
|
191
|
+
Critical: JWT secret in code, should use environment variable
|
|
192
|
+
Important: No rate limiting on login endpoint
|
|
193
|
+
Minor: Could add password strength requirements
|
|
194
|
+
Assessment: NOT ready to merge - fix Critical immediately
|
|
195
|
+
|
|
196
|
+
PM: [Move JWT secret to environment variable]
|
|
197
|
+
[Add .env.example with JWT_SECRET]
|
|
198
|
+
[Update config to read from env]
|
|
199
|
+
[Verify tests still pass]
|
|
200
|
+
[Commit: "fix: move JWT secret to environment variable"]
|
|
201
|
+
|
|
202
|
+
PM: Rate limiting is Important but can be separate task.
|
|
203
|
+
PM: Password strength can be future enhancement.
|
|
204
|
+
|
|
205
|
+
[Request review again with fix]
|
|
206
|
+
Issues: None
|
|
207
|
+
Assessment: Ready to merge
|
|
208
|
+
|
|
209
|
+
PM: [Merge to main]
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Example 3: When Stuck (Fresh Perspective)
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
[Debugging weird test failure for 2 hours]
|
|
216
|
+
|
|
217
|
+
PM: I'm stuck. Let me get a code review for fresh eyes.
|
|
218
|
+
|
|
219
|
+
BASE_SHA=$(git rev-parse HEAD~3) # Before I started debugging
|
|
220
|
+
HEAD_SHA=$(git rev-parse HEAD)
|
|
221
|
+
|
|
222
|
+
[Dispatch code-reviewer subagent]
|
|
223
|
+
WHAT_WAS_IMPLEMENTED: Attempted fix for test_user_creation flakiness
|
|
224
|
+
PLAN_OR_REQUIREMENTS: Test should pass consistently
|
|
225
|
+
BASE_SHA: abc123
|
|
226
|
+
HEAD_SHA: def456
|
|
227
|
+
DESCRIPTION: Test fails intermittently, added logging, tried various fixes
|
|
228
|
+
|
|
229
|
+
[Subagent returns]:
|
|
230
|
+
Issue found: test_user_creation:15 - race condition
|
|
231
|
+
The test creates user and immediately queries, but database write is async
|
|
232
|
+
Fix: Add await or use synchronous test database
|
|
233
|
+
|
|
234
|
+
PM: Ah! That's it. The async write wasn't flushing.
|
|
235
|
+
[Add await db.flush() before query]
|
|
236
|
+
[Test passes consistently]
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## Common Review Scenarios
|
|
240
|
+
|
|
241
|
+
### Scenario: All Critical Issues
|
|
242
|
+
|
|
243
|
+
```markdown
|
|
244
|
+
### Issues
|
|
245
|
+
|
|
246
|
+
#### Critical (Must Fix)
|
|
247
|
+
1. **SQL injection vulnerability**
|
|
248
|
+
- File: users.py:45
|
|
249
|
+
- Issue: Raw string interpolation in query
|
|
250
|
+
- Fix: Use parameterized query
|
|
251
|
+
|
|
252
|
+
2. **Plaintext password storage**
|
|
253
|
+
- File: models.py:23
|
|
254
|
+
- Issue: Passwords stored without hashing
|
|
255
|
+
- Fix: Use bcrypt before saving
|
|
256
|
+
|
|
257
|
+
### Assessment
|
|
258
|
+
|
|
259
|
+
**Ready to merge: NO**
|
|
260
|
+
|
|
261
|
+
**Reasoning:** Critical security issues must be fixed before any deployment.
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**Action:** Fix immediately, don't proceed.
|
|
265
|
+
|
|
266
|
+
### Scenario: Mix of Severities
|
|
267
|
+
|
|
268
|
+
```markdown
|
|
269
|
+
### Issues
|
|
270
|
+
|
|
271
|
+
#### Important (Should Fix)
|
|
272
|
+
1. **Missing error handling**
|
|
273
|
+
- File: api.py:67
|
|
274
|
+
- Issue: Network call can throw, not caught
|
|
275
|
+
- Fix: Wrap in try/except, return 500
|
|
276
|
+
|
|
277
|
+
#### Minor (Nice to Have)
|
|
278
|
+
1. **Magic number**
|
|
279
|
+
- File: config.py:12
|
|
280
|
+
- Issue: Hardcoded timeout value
|
|
281
|
+
- Fix: Extract to named constant
|
|
282
|
+
|
|
283
|
+
### Assessment
|
|
284
|
+
|
|
285
|
+
**Ready to merge: With fixes**
|
|
286
|
+
|
|
287
|
+
**Reasoning:** Error handling is important but localized fix. Magic number can be addressed later.
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**Action:** Fix Important, note Minor for future, proceed.
|
|
291
|
+
|
|
292
|
+
### Scenario: Clean Implementation
|
|
293
|
+
|
|
294
|
+
```markdown
|
|
295
|
+
### Strengths
|
|
296
|
+
- Excellent test coverage (95%)
|
|
297
|
+
- Clean separation of concerns
|
|
298
|
+
- Good error handling throughout
|
|
299
|
+
- Well-documented edge cases
|
|
300
|
+
|
|
301
|
+
### Issues
|
|
302
|
+
|
|
303
|
+
#### Minor (Nice to Have)
|
|
304
|
+
1. **Could add type hints**
|
|
305
|
+
- File: helpers.py
|
|
306
|
+
- Impact: Very low, code is clear
|
|
307
|
+
- Fix: Add -> str type hints
|
|
308
|
+
|
|
309
|
+
### Recommendations
|
|
310
|
+
- Consider adding performance tests for large datasets
|
|
311
|
+
- Documentation is great, maybe add architecture diagram
|
|
312
|
+
|
|
313
|
+
### Assessment
|
|
314
|
+
|
|
315
|
+
**Ready to merge: YES**
|
|
316
|
+
|
|
317
|
+
**Reasoning:** Implementation is production-ready. Minor improvements can be separate tasks.
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
**Action:** Merge, create tickets for nice-to-haves.
|
|
321
|
+
|
|
322
|
+
## Severity Guidelines
|
|
323
|
+
|
|
324
|
+
### Critical (Must Fix)
|
|
325
|
+
- Security vulnerabilities
|
|
326
|
+
- Data loss risks
|
|
327
|
+
- Broken core functionality
|
|
328
|
+
- Production crashes
|
|
329
|
+
- Memory leaks
|
|
330
|
+
|
|
331
|
+
**Action:** Stop everything, fix immediately, re-review.
|
|
332
|
+
|
|
333
|
+
### Important (Should Fix)
|
|
334
|
+
- Missing features from requirements
|
|
335
|
+
- Poor error handling
|
|
336
|
+
- Architectural issues
|
|
337
|
+
- Test coverage gaps
|
|
338
|
+
- Performance problems
|
|
339
|
+
|
|
340
|
+
**Action:** Fix before proceeding to next major task.
|
|
341
|
+
|
|
342
|
+
### Minor (Nice to Have)
|
|
343
|
+
- Code style inconsistencies
|
|
344
|
+
- Optimization opportunities
|
|
345
|
+
- Documentation improvements
|
|
346
|
+
- Magic numbers
|
|
347
|
+
- Variable naming
|
|
348
|
+
|
|
349
|
+
**Action:** Note for later, proceed if time-constrained.
|
|
350
|
+
|
|
351
|
+
## Pushing Back on Reviews
|
|
352
|
+
|
|
353
|
+
Sometimes reviewers are wrong. Push back with **technical reasoning**:
|
|
354
|
+
|
|
355
|
+
### Example: Reviewer Wrong About Performance
|
|
356
|
+
|
|
357
|
+
```
|
|
358
|
+
Reviewer: "This loop is inefficient, use map() instead"
|
|
359
|
+
|
|
360
|
+
Your response:
|
|
361
|
+
"I tested both approaches with 10k items:
|
|
362
|
+
- Current loop: 45ms
|
|
363
|
+
- Map approach: 43ms (2ms faster)
|
|
364
|
+
|
|
365
|
+
The readability gain of explicit loop outweighs 2ms difference.
|
|
366
|
+
Performance requirement is <100ms, we're at 45ms.
|
|
367
|
+
Keeping current implementation."
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### Example: Reviewer Misunderstood Requirements
|
|
371
|
+
|
|
372
|
+
```
|
|
373
|
+
Reviewer: "Missing validation for phone numbers"
|
|
374
|
+
|
|
375
|
+
Your response:
|
|
376
|
+
"Plan requirement (docs/plans/user-plan.md:45):
|
|
377
|
+
'Phone number is optional and will be validated in Phase 2'
|
|
378
|
+
|
|
379
|
+
Current task only requires email validation.
|
|
380
|
+
Phone validation is tracked in Task 7."
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### Example: Reviewer Right, You Missed Something
|
|
384
|
+
|
|
385
|
+
```
|
|
386
|
+
Reviewer: "No test for empty email"
|
|
387
|
+
|
|
388
|
+
Your response:
|
|
389
|
+
"You're right, I missed that edge case.
|
|
390
|
+
Adding test now:
|
|
391
|
+
|
|
392
|
+
def test_create_user_empty_email():
|
|
393
|
+
with pytest.raises(ValueError, match="Email required"):
|
|
394
|
+
create_user("alice", "")
|
|
395
|
+
|
|
396
|
+
Fixed and committed."
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
## Red Flags in Your Own Code
|
|
400
|
+
|
|
401
|
+
Before requesting review, self-check:
|
|
402
|
+
|
|
403
|
+
- [ ] All tests passing locally
|
|
404
|
+
- [ ] No commented-out code
|
|
405
|
+
- [ ] No debug print statements
|
|
406
|
+
- [ ] No hardcoded secrets or credentials
|
|
407
|
+
- [ ] All requirements from plan implemented
|
|
408
|
+
- [ ] Error handling in place
|
|
409
|
+
- [ ] Edge cases tested
|
|
410
|
+
- [ ] Commit messages clear
|
|
411
|
+
|
|
412
|
+
If any ❌, fix before requesting review.
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill_id: stacked-prs
|
|
3
|
+
skill_version: 1.0.0
|
|
4
|
+
description: Create and manage stacked (dependent) pull requests for complex features
|
|
5
|
+
tags: [git, pull-requests, branching, workflow, collaboration]
|
|
6
|
+
related_agents: [version-control]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Stacked Pull Requests
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
Stacked PRs are dependent pull requests where each PR builds on the previous one. Use this pattern for complex features that need logical separation and parallel review.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
### ✅ Use Stacked PRs When:
|
|
18
|
+
- User explicitly requests "stacked PRs" or "dependent PRs"
|
|
19
|
+
- Large feature needs to be split into logical phases
|
|
20
|
+
- Each phase has clear dependencies on previous phases
|
|
21
|
+
- User is comfortable with rebase workflows
|
|
22
|
+
|
|
23
|
+
### ❌ Use Main-Based PRs When (Default):
|
|
24
|
+
- Features are independent
|
|
25
|
+
- Simple bug fixes or enhancements
|
|
26
|
+
- Multiple agents working in parallel
|
|
27
|
+
- User doesn't specify preference
|
|
28
|
+
|
|
29
|
+
**DEFAULT: Always prefer main-based PRs unless user explicitly requests stacking.**
|
|
30
|
+
|
|
31
|
+
## Branch Naming Convention
|
|
32
|
+
|
|
33
|
+
Use sequential numbering to show dependencies:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
feature/001-base-authentication # PR-001 (base)
|
|
37
|
+
feature/002-user-profile # PR-002 (depends on 001)
|
|
38
|
+
feature/003-admin-panel # PR-003 (depends on 002)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Alternative patterns:
|
|
42
|
+
```bash
|
|
43
|
+
auth/01-foundation
|
|
44
|
+
auth/02-user-flow
|
|
45
|
+
auth/03-admin-features
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Creating Stacked PRs
|
|
49
|
+
|
|
50
|
+
### Step 1: Create Base PR (PR-001)
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Start from main
|
|
54
|
+
git checkout main
|
|
55
|
+
git pull origin main
|
|
56
|
+
|
|
57
|
+
# Create base branch
|
|
58
|
+
git checkout -b feature/001-base-auth
|
|
59
|
+
|
|
60
|
+
# Implement base functionality
|
|
61
|
+
# ... work ...
|
|
62
|
+
|
|
63
|
+
# Push and create PR
|
|
64
|
+
git push -u origin feature/001-base-auth
|
|
65
|
+
|
|
66
|
+
# Create PR in GitHub/GitLab
|
|
67
|
+
# Title: "[1/3] Base authentication foundation"
|
|
68
|
+
# Base: main
|
|
69
|
+
# Description: Include stack overview (see template below)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Step 2: Create Dependent PR (PR-002)
|
|
73
|
+
|
|
74
|
+
**CRITICAL: Base on previous feature branch, NOT main**
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Start from PR-001's branch
|
|
78
|
+
git checkout feature/001-base-auth
|
|
79
|
+
git pull origin feature/001-base-auth
|
|
80
|
+
|
|
81
|
+
# Create dependent branch
|
|
82
|
+
git checkout -b feature/002-user-profile
|
|
83
|
+
|
|
84
|
+
# Implement dependent functionality
|
|
85
|
+
# ... work ...
|
|
86
|
+
|
|
87
|
+
# Push and create PR
|
|
88
|
+
git push -u origin feature/002-user-profile
|
|
89
|
+
|
|
90
|
+
# Create PR in GitHub/GitLab
|
|
91
|
+
# Title: "[2/3] User profile management"
|
|
92
|
+
# Base: feature/001-base-auth ← NOT main!
|
|
93
|
+
# Description: "Depends on PR #123"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Step 3: Create Final PR (PR-003)
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Start from PR-002's branch
|
|
100
|
+
git checkout feature/002-user-profile
|
|
101
|
+
git pull origin feature/002-user-profile
|
|
102
|
+
|
|
103
|
+
# Create final branch
|
|
104
|
+
git checkout -b feature/003-admin-panel
|
|
105
|
+
|
|
106
|
+
# Implement final functionality
|
|
107
|
+
# ... work ...
|
|
108
|
+
|
|
109
|
+
# Push and create PR
|
|
110
|
+
git push -u origin feature/003-admin-panel
|
|
111
|
+
|
|
112
|
+
# Create PR in GitHub/GitLab
|
|
113
|
+
# Title: "[3/3] Admin panel with full auth"
|
|
114
|
+
# Base: feature/002-user-profile ← NOT main!
|
|
115
|
+
# Description: "Depends on PR #124"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## PR Description Template
|
|
119
|
+
|
|
120
|
+
Use this template for stacked PRs:
|
|
121
|
+
|
|
122
|
+
```markdown
|
|
123
|
+
## This PR
|
|
124
|
+
[Brief description of changes in THIS PR only]
|
|
125
|
+
|
|
126
|
+
## Depends On
|
|
127
|
+
- PR #123 (feature/001-base-auth) - Must merge first
|
|
128
|
+
- Builds on top of authentication foundation
|
|
129
|
+
|
|
130
|
+
## Stack Overview
|
|
131
|
+
1. PR #123: Base authentication (feature/001-base-auth) ← MERGE FIRST
|
|
132
|
+
2. PR #124: User profile (feature/002-user-profile) ← THIS PR
|
|
133
|
+
3. PR #125: Admin panel (feature/003-admin-panel) - Coming next
|
|
134
|
+
|
|
135
|
+
## Review Guidance
|
|
136
|
+
To see ONLY this PR's changes:
|
|
137
|
+
```bash
|
|
138
|
+
git diff feature/001-base-auth...feature/002-user-profile
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Or on GitHub: Compare `feature/002-user-profile...feature/001-base-auth` (three dots)
|
|
142
|
+
|
|
143
|
+
## Testing
|
|
144
|
+
- Tested in combination with PR #123
|
|
145
|
+
- Includes tests for user profile functionality
|
|
146
|
+
- Integration tests pass with base auth layer
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Managing Rebase Chains
|
|
150
|
+
|
|
151
|
+
### When Base PR Changes (Review Feedback)
|
|
152
|
+
|
|
153
|
+
If PR-001 gets updated, you must rebase dependent PRs:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Update PR-001 (base)
|
|
157
|
+
git checkout feature/001-base-auth
|
|
158
|
+
git pull origin feature/001-base-auth
|
|
159
|
+
|
|
160
|
+
# Rebase PR-002 on updated base
|
|
161
|
+
git checkout feature/002-user-profile
|
|
162
|
+
git rebase feature/001-base-auth
|
|
163
|
+
git push --force-with-lease origin feature/002-user-profile
|
|
164
|
+
|
|
165
|
+
# Rebase PR-003 on updated PR-002
|
|
166
|
+
git checkout feature/003-admin-panel
|
|
167
|
+
git rebase feature/002-user-profile
|
|
168
|
+
git push --force-with-lease origin feature/003-admin-panel
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**IMPORTANT: Use `--force-with-lease` not `--force` for safety**
|
|
172
|
+
|
|
173
|
+
### Merge Strategy
|
|
174
|
+
|
|
175
|
+
**Option A: Sequential Merging (Recommended)**
|
|
176
|
+
1. Merge PR-001 to main
|
|
177
|
+
2. Change PR-002's base to main (GitHub: "Edit" button on PR)
|
|
178
|
+
3. Merge PR-002 to main
|
|
179
|
+
4. Change PR-003's base to main
|
|
180
|
+
5. Merge PR-003 to main
|
|
181
|
+
|
|
182
|
+
**Option B: Keep Stack Until End**
|
|
183
|
+
1. Merge PR-001 to main
|
|
184
|
+
2. Keep PR-002 based on feature/001 until PR-001 fully merged
|
|
185
|
+
3. Then rebase PR-002 onto main
|
|
186
|
+
4. Repeat for PR-003
|
|
187
|
+
|
|
188
|
+
## Common Pitfalls
|
|
189
|
+
|
|
190
|
+
### ❌ WRONG: All PRs from main
|
|
191
|
+
```bash
|
|
192
|
+
git checkout main
|
|
193
|
+
git checkout -b feature/001-base
|
|
194
|
+
# PR: feature/001-base → main
|
|
195
|
+
|
|
196
|
+
git checkout main # ← WRONG
|
|
197
|
+
git checkout -b feature/002-next
|
|
198
|
+
# PR: feature/002-next → main # ← WRONG (independent, not stacked)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### ✅ CORRECT: Each PR from previous
|
|
202
|
+
```bash
|
|
203
|
+
git checkout main
|
|
204
|
+
git checkout -b feature/001-base
|
|
205
|
+
# PR: feature/001-base → main
|
|
206
|
+
|
|
207
|
+
git checkout feature/001-base # ← CORRECT
|
|
208
|
+
git checkout -b feature/002-next
|
|
209
|
+
# PR: feature/002-next → feature/001-base # ← CORRECT (stacked)
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Agent Instructions
|
|
213
|
+
|
|
214
|
+
When delegating stacked PR creation to version-control agent:
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
Task: Create stacked PR branch structure
|
|
218
|
+
|
|
219
|
+
Stack Sequence:
|
|
220
|
+
1. PR-001: feature/001-base-auth → main (base layer)
|
|
221
|
+
2. PR-002: feature/002-user-profile → feature/001-base-auth (depends on 001)
|
|
222
|
+
3. PR-003: feature/003-admin-panel → feature/002-user-profile (depends on 002)
|
|
223
|
+
|
|
224
|
+
Requirements:
|
|
225
|
+
- Each branch MUST be based on previous feature branch
|
|
226
|
+
- Use sequential numbering (001, 002, 003)
|
|
227
|
+
- Include "depends on" notes in commit messages
|
|
228
|
+
- Create PR description with stack overview
|
|
229
|
+
|
|
230
|
+
CRITICAL: PR-002 bases on feature/001-base-auth, NOT on main
|
|
231
|
+
CRITICAL: PR-003 bases on feature/002-user-profile, NOT on main
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Verification Checklist
|
|
235
|
+
|
|
236
|
+
Before creating stacked PRs:
|
|
237
|
+
|
|
238
|
+
- [ ] User explicitly requested stacked PRs
|
|
239
|
+
- [ ] Feature has clear logical phases
|
|
240
|
+
- [ ] Each phase has dependency on previous
|
|
241
|
+
- [ ] User understands rebase workflow
|
|
242
|
+
- [ ] Branch names use sequential numbering
|
|
243
|
+
- [ ] Each branch created from correct base (previous feature branch)
|
|
244
|
+
- [ ] PR descriptions include dependency information
|
|
245
|
+
- [ ] Stack overview documented in each PR
|
|
246
|
+
|
|
247
|
+
## Related Skills
|
|
248
|
+
|
|
249
|
+
- `git-worktrees` - Work on multiple PRs simultaneously
|
|
250
|
+
- `git-workflow` - General git branching patterns
|
|
251
|
+
- `code-review` - Review strategies for stacked PRs
|