claude-mpm 4.15.6__py3-none-any.whl → 4.21.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_ENGINEER.md +286 -0
- claude_mpm/agents/BASE_PM.md +272 -23
- claude_mpm/agents/PM_INSTRUCTIONS.md +49 -0
- claude_mpm/agents/agent_loader.py +4 -4
- claude_mpm/agents/templates/engineer.json +5 -1
- claude_mpm/agents/templates/php-engineer.json +10 -4
- claude_mpm/agents/templates/python_engineer.json +8 -3
- claude_mpm/agents/templates/rust_engineer.json +12 -7
- claude_mpm/agents/templates/svelte-engineer.json +225 -0
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +525 -0
- claude_mpm/cli/commands/mpm_init/display.py +341 -0
- claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
- claude_mpm/cli/commands/mpm_init/modes.py +397 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
- claude_mpm/cli/commands/mpm_init_cli.py +396 -0
- claude_mpm/cli/commands/mpm_init_handler.py +67 -1
- claude_mpm/cli/commands/skills.py +488 -0
- claude_mpm/cli/executor.py +2 -0
- claude_mpm/cli/parsers/base_parser.py +7 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skills_parser.py +137 -0
- claude_mpm/cli/startup.py +57 -0
- claude_mpm/commands/mpm-auto-configure.md +52 -0
- claude_mpm/commands/mpm-help.md +6 -0
- claude_mpm/commands/mpm-init.md +112 -6
- claude_mpm/commands/mpm-resume.md +372 -0
- claude_mpm/commands/mpm-version.md +113 -0
- claude_mpm/commands/mpm.md +2 -0
- claude_mpm/config/agent_config.py +2 -2
- claude_mpm/constants.py +12 -0
- claude_mpm/core/config.py +42 -0
- claude_mpm/core/factories.py +1 -1
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/optimized_agent_loader.py +3 -3
- claude_mpm/hooks/__init__.py +8 -0
- claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
- claude_mpm/hooks/session_resume_hook.py +121 -0
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/services/agents/auto_config_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
- claude_mpm/services/agents/deployment/agent_validator.py +17 -1
- claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
- claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
- claude_mpm/services/agents/local_template_manager.py +1 -1
- claude_mpm/services/agents/recommender.py +47 -0
- claude_mpm/services/cli/resume_service.py +617 -0
- claude_mpm/services/cli/session_manager.py +87 -0
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +372 -0
- claude_mpm/services/core/base.py +26 -11
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/models/agent_config.py +3 -0
- claude_mpm/services/core/models/process.py +4 -0
- claude_mpm/services/core/path_resolver.py +1 -1
- claude_mpm/services/diagnostics/models.py +21 -0
- claude_mpm/services/event_bus/relay.py +23 -7
- claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
- claude_mpm/services/local_ops/__init__.py +2 -0
- claude_mpm/services/mcp_config_manager.py +7 -131
- claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
- claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
- claude_mpm/services/memory/failure_tracker.py +19 -4
- claude_mpm/services/session_manager.py +205 -1
- claude_mpm/services/unified/deployment_strategies/local.py +1 -1
- claude_mpm/services/version_service.py +104 -1
- claude_mpm/skills/__init__.py +21 -0
- claude_mpm/skills/agent_skills_injector.py +324 -0
- claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- 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/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/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/database-migration.md +199 -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/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -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/mcp-builder/scripts/connections.py +157 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +425 -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/main/skill-creator/scripts/init_skill.py +303 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +113 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +72 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +567 -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/refactoring-patterns.md +180 -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 +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -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/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/examples/console_logging.py +35 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +44 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -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/scripts/with_server.py +129 -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/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- claude_mpm/skills/registry.py +97 -9
- claude_mpm/skills/skills_registry.py +348 -0
- claude_mpm/skills/skills_service.py +739 -0
- claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/utils/agent_dependency_loader.py +2 -2
- {claude_mpm-4.15.6.dist-info → claude_mpm-4.21.3.dist-info}/METADATA +211 -33
- {claude_mpm-4.15.6.dist-info → claude_mpm-4.21.3.dist-info}/RECORD +206 -64
- claude_mpm/agents/INSTRUCTIONS_OLD_DEPRECATED.md +0 -602
- claude_mpm/cli/commands/mpm_init.py +0 -2008
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- {claude_mpm-4.15.6.dist-info → claude_mpm-4.21.3.dist-info}/WHEEL +0 -0
- {claude_mpm-4.15.6.dist-info → claude_mpm-4.21.3.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.15.6.dist-info → claude_mpm-4.21.3.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.15.6.dist-info → claude_mpm-4.21.3.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Writing Plans
|
|
3
|
+
description: Create detailed implementation plans with bite-sized tasks for engineers with zero codebase context
|
|
4
|
+
when_to_use: when design is complete and you need detailed implementation tasks for engineers with zero codebase context
|
|
5
|
+
version: 2.2.0
|
|
6
|
+
progressive_disclosure:
|
|
7
|
+
level: 1
|
|
8
|
+
references:
|
|
9
|
+
- path: references/plan-structure-templates.md
|
|
10
|
+
title: Plan Structure & Templates
|
|
11
|
+
description: Standard headers, task templates, and structure examples
|
|
12
|
+
- path: references/best-practices.md
|
|
13
|
+
title: Best Practices & Guidelines
|
|
14
|
+
description: Writing for zero-context engineers, code completeness, test design patterns
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Writing Plans
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Write comprehensive implementation plans assuming the engineer has zero context for our codebase and questionable taste. Document everything they need to know: which files to touch for each task, code, testing, docs they might need to check, how to test it. Give them the whole plan as bite-sized tasks. DRY. YAGNI. TDD. Frequent commits.
|
|
22
|
+
|
|
23
|
+
Assume they are a skilled developer, but know almost nothing about our toolset or problem domain. Assume they don't know good test design very well.
|
|
24
|
+
|
|
25
|
+
**Announce at start:** "I'm using the Writing Plans skill to create the implementation plan."
|
|
26
|
+
|
|
27
|
+
**Context:** This should be run in a dedicated worktree (created by brainstorming skill).
|
|
28
|
+
|
|
29
|
+
**Save plans to:** `docs/plans/YYYY-MM-DD-<feature-name>.md`
|
|
30
|
+
|
|
31
|
+
## Quick Reference
|
|
32
|
+
|
|
33
|
+
**Plan header template:** See [Plan Structure & Templates](references/plan-structure-templates.md#standard-plan-document-header)
|
|
34
|
+
|
|
35
|
+
**Task template:** See [Plan Structure & Templates](references/plan-structure-templates.md#task-template-structure)
|
|
36
|
+
|
|
37
|
+
**Granularity guide:** Each step = 2-5 minutes. See [Best Practices](references/best-practices.md#bite-sized-task-granularity)
|
|
38
|
+
|
|
39
|
+
## Core Principles
|
|
40
|
+
|
|
41
|
+
- **Exact file paths always** - Not "in the user module" but "`src/models/user.py`"
|
|
42
|
+
- **Complete code in plan** - Not "add validation" but show the validation code
|
|
43
|
+
- **Exact commands with expected output** - "`pytest tests/file.py -v`" with what you'll see
|
|
44
|
+
- **Reference relevant skills** - Use @ syntax: `@skills/category/skill-name`
|
|
45
|
+
- **DRY, YAGNI, TDD, frequent commits** - Every task follows this pattern
|
|
46
|
+
|
|
47
|
+
For detailed guidance: [Best Practices & Guidelines](references/best-practices.md)
|
|
48
|
+
|
|
49
|
+
## Execution Handoff
|
|
50
|
+
|
|
51
|
+
After saving the plan, offer execution choice:
|
|
52
|
+
|
|
53
|
+
**"Plan complete and saved to `docs/plans/<filename>.md`. Two execution options:**
|
|
54
|
+
|
|
55
|
+
**1. Subagent-Driven (this session)** - I dispatch fresh subagent per task, review between tasks, fast iteration
|
|
56
|
+
|
|
57
|
+
**2. Parallel Session (separate)** - Open new session with executing-plans, batch execution with checkpoints
|
|
58
|
+
|
|
59
|
+
**Which approach?"**
|
|
60
|
+
|
|
61
|
+
**If Subagent-Driven chosen:**
|
|
62
|
+
- Use @skills/collaboration/subagent-driven-development
|
|
63
|
+
- Stay in this session
|
|
64
|
+
- Fresh subagent per task + code review
|
|
65
|
+
|
|
66
|
+
**If Parallel Session chosen:**
|
|
67
|
+
- Guide them to open new session in worktree
|
|
68
|
+
- New session uses @skills/collaboration/executing-plans
|
|
69
|
+
|
|
70
|
+
## Remember
|
|
71
|
+
|
|
72
|
+
- Write for zero-context engineers (specify everything)
|
|
73
|
+
- Complete code blocks, not instructions
|
|
74
|
+
- Exact commands with expected output
|
|
75
|
+
- Test first, then implement, then commit
|
|
76
|
+
- Reference existing patterns in codebase
|
|
77
|
+
- Keep tasks bite-sized (2-5 minutes each)
|
|
78
|
+
|
|
79
|
+
**Need examples?** See [Plan Structure & Templates](references/plan-structure-templates.md) for complete task examples.
|
|
80
|
+
|
|
81
|
+
**Need patterns?** See [Best Practices](references/best-practices.md) for error handling, logging, test design, and more.
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
# Plan Writing Best Practices
|
|
2
|
+
|
|
3
|
+
## Core Principles
|
|
4
|
+
|
|
5
|
+
### DRY (Don't Repeat Yourself)
|
|
6
|
+
- Extract common patterns into utilities
|
|
7
|
+
- Reuse existing functions and classes
|
|
8
|
+
- Create shared helpers for repeated logic
|
|
9
|
+
- Never copy-paste code in the plan
|
|
10
|
+
|
|
11
|
+
### YAGNI (You Aren't Gonna Need It)
|
|
12
|
+
- Build only what's required by the design
|
|
13
|
+
- No speculative features
|
|
14
|
+
- No "future-proofing" unless explicitly required
|
|
15
|
+
- Start simple, extend when needed
|
|
16
|
+
|
|
17
|
+
### TDD (Test-Driven Development)
|
|
18
|
+
- Write test first, always
|
|
19
|
+
- Watch it fail before implementing
|
|
20
|
+
- Implement minimal code to pass
|
|
21
|
+
- Refactor after green
|
|
22
|
+
|
|
23
|
+
### Frequent Commits
|
|
24
|
+
- Commit after each passing test
|
|
25
|
+
- One feature per commit
|
|
26
|
+
- Clear, descriptive commit messages
|
|
27
|
+
- Never commit broken code
|
|
28
|
+
|
|
29
|
+
## Writing for Zero-Context Engineers
|
|
30
|
+
|
|
31
|
+
### Assume They Know
|
|
32
|
+
- Core programming concepts
|
|
33
|
+
- The programming language syntax
|
|
34
|
+
- Basic development tools (git, pytest, npm)
|
|
35
|
+
- General software patterns
|
|
36
|
+
|
|
37
|
+
### Assume They DON'T Know
|
|
38
|
+
- Your specific codebase structure
|
|
39
|
+
- Domain-specific terminology
|
|
40
|
+
- Project conventions and patterns
|
|
41
|
+
- Where files should go
|
|
42
|
+
- Which existing utilities to use
|
|
43
|
+
- Your testing strategy
|
|
44
|
+
|
|
45
|
+
### Therefore, Always Specify
|
|
46
|
+
- **Exact file paths** - not "in the user module" but "`src/models/user.py`"
|
|
47
|
+
- **Complete code** - not "add validation" but show the validation code
|
|
48
|
+
- **Exact commands** - not "run tests" but "`pytest tests/models/test_user.py -v`"
|
|
49
|
+
- **Expected output** - what should happen when they run the command
|
|
50
|
+
- **Line numbers** for modifications - "`src/config.py:45-52`"
|
|
51
|
+
|
|
52
|
+
## Complete Code, Not Instructions
|
|
53
|
+
|
|
54
|
+
❌ **Bad (vague instructions):**
|
|
55
|
+
```markdown
|
|
56
|
+
**Step 3: Add validation**
|
|
57
|
+
|
|
58
|
+
Add email validation to the User model.
|
|
59
|
+
Make sure to check for valid format.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
✅ **Good (complete code):**
|
|
63
|
+
```markdown
|
|
64
|
+
**Step 3: Add validation to User model**
|
|
65
|
+
|
|
66
|
+
In `src/models/user.py`, add this method after line 12:
|
|
67
|
+
```python
|
|
68
|
+
def __post_init__(self):
|
|
69
|
+
if not validate_email(self.email):
|
|
70
|
+
raise ValueError(f"Invalid email: {self.email}")
|
|
71
|
+
if self.created_at is None:
|
|
72
|
+
self.created_at = datetime.utcnow()
|
|
73
|
+
```
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Exact Commands with Expected Output
|
|
77
|
+
|
|
78
|
+
❌ **Bad (vague):**
|
|
79
|
+
```markdown
|
|
80
|
+
**Step 2: Run the test**
|
|
81
|
+
|
|
82
|
+
Run the test and make sure it fails.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
✅ **Good (specific):**
|
|
86
|
+
```markdown
|
|
87
|
+
**Step 2: Run test to verify it fails**
|
|
88
|
+
|
|
89
|
+
Run: `pytest tests/models/test_user.py::test_user_creation -v`
|
|
90
|
+
Expected output:
|
|
91
|
+
```
|
|
92
|
+
FAILED tests/models/test_user.py::test_user_creation - ModuleNotFoundError: No module named 'models.user'
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
This is expected! We haven't created the module yet.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## File Path Precision
|
|
99
|
+
|
|
100
|
+
### For New Files
|
|
101
|
+
```markdown
|
|
102
|
+
**Files:**
|
|
103
|
+
- Create: `src/api/handlers/users.py`
|
|
104
|
+
- Create: `tests/api/test_users.py`
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### For Modifications
|
|
108
|
+
```markdown
|
|
109
|
+
**Files:**
|
|
110
|
+
- Modify: `src/api/routes.py:15` (add import)
|
|
111
|
+
- Modify: `src/api/routes.py:45` (add route registration)
|
|
112
|
+
- Modify: `src/config.py:12-18` (update database config)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### For Referenced Files
|
|
116
|
+
```markdown
|
|
117
|
+
**Documentation to check:**
|
|
118
|
+
- See: `docs/api-design.md` (endpoint specification)
|
|
119
|
+
- Reference: `src/api/handlers/auth.py:25-40` (similar pattern)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Test Design for Zero-Context Engineers
|
|
123
|
+
|
|
124
|
+
Many engineers struggle with test design. Help them by:
|
|
125
|
+
|
|
126
|
+
### Show What to Test
|
|
127
|
+
```markdown
|
|
128
|
+
**Test coverage needed:**
|
|
129
|
+
1. Happy path (valid input → expected output)
|
|
130
|
+
2. Invalid input (error handling)
|
|
131
|
+
3. Edge cases (empty, null, boundary values)
|
|
132
|
+
4. Integration (does it work with real dependencies?)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Provide Complete Test Examples
|
|
136
|
+
```python
|
|
137
|
+
# Happy path
|
|
138
|
+
def test_create_user_success():
|
|
139
|
+
user = create_user("alice", "alice@example.com")
|
|
140
|
+
assert user.username == "alice"
|
|
141
|
+
assert user.email == "alice@example.com"
|
|
142
|
+
|
|
143
|
+
# Invalid input
|
|
144
|
+
def test_create_user_invalid_email():
|
|
145
|
+
with pytest.raises(ValueError, match="Invalid email"):
|
|
146
|
+
create_user("alice", "not-an-email")
|
|
147
|
+
|
|
148
|
+
# Edge case
|
|
149
|
+
def test_create_user_empty_username():
|
|
150
|
+
with pytest.raises(ValueError, match="Username cannot be empty"):
|
|
151
|
+
create_user("", "alice@example.com")
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Explain Test Strategy
|
|
155
|
+
```markdown
|
|
156
|
+
**Why these tests:**
|
|
157
|
+
- `test_create_user_success`: Verifies basic functionality works
|
|
158
|
+
- `test_create_user_invalid_email`: Ensures we reject bad data
|
|
159
|
+
- `test_create_user_empty_username`: Prevents edge case bugs
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Referencing Existing Code
|
|
163
|
+
|
|
164
|
+
### Use @ Syntax for Skills
|
|
165
|
+
```markdown
|
|
166
|
+
For authentication patterns, see @skills/security/implementing-auth
|
|
167
|
+
For API design, reference @skills/api/rest-endpoints
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Reference Codebase Files
|
|
171
|
+
```markdown
|
|
172
|
+
**Similar implementations:**
|
|
173
|
+
- `src/api/handlers/auth.py:25-40` - shows JWT validation pattern
|
|
174
|
+
- `src/utils/validators.py:10-15` - email validation we can reuse
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Point to Documentation
|
|
178
|
+
```markdown
|
|
179
|
+
**Required reading:**
|
|
180
|
+
- `docs/architecture/database-schema.md` - understand our user model
|
|
181
|
+
- `docs/api/authentication.md` - see auth requirements
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Handling Dependencies and Setup
|
|
185
|
+
|
|
186
|
+
### External Dependencies
|
|
187
|
+
```markdown
|
|
188
|
+
**Dependencies needed:**
|
|
189
|
+
|
|
190
|
+
Add to `requirements.txt`:
|
|
191
|
+
```
|
|
192
|
+
bcrypt==4.0.1
|
|
193
|
+
PyJWT==2.8.0
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Install:
|
|
197
|
+
```bash
|
|
198
|
+
pip install -r requirements.txt
|
|
199
|
+
```
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Configuration Changes
|
|
203
|
+
```markdown
|
|
204
|
+
**Configuration update:**
|
|
205
|
+
|
|
206
|
+
In `src/config.py`, add:
|
|
207
|
+
```python
|
|
208
|
+
JWT_SECRET = os.environ.get("JWT_SECRET", "dev-secret-key")
|
|
209
|
+
JWT_EXPIRATION_HOURS = 24
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
In `.env.example`:
|
|
213
|
+
```
|
|
214
|
+
JWT_SECRET=your-secret-key-here
|
|
215
|
+
```
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Common Patterns to Include
|
|
219
|
+
|
|
220
|
+
### Error Handling Pattern
|
|
221
|
+
```python
|
|
222
|
+
try:
|
|
223
|
+
result = risky_operation()
|
|
224
|
+
return result
|
|
225
|
+
except SpecificError as e:
|
|
226
|
+
logger.error(f"Operation failed: {e}")
|
|
227
|
+
raise ValueError(f"Cannot complete operation: {e}")
|
|
228
|
+
except Exception as e:
|
|
229
|
+
logger.exception("Unexpected error")
|
|
230
|
+
raise
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Resource Cleanup Pattern
|
|
234
|
+
```python
|
|
235
|
+
def process_file(filepath):
|
|
236
|
+
file_handle = None
|
|
237
|
+
try:
|
|
238
|
+
file_handle = open(filepath, 'r')
|
|
239
|
+
data = file_handle.read()
|
|
240
|
+
return process_data(data)
|
|
241
|
+
finally:
|
|
242
|
+
if file_handle:
|
|
243
|
+
file_handle.close()
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Logging Pattern
|
|
247
|
+
```python
|
|
248
|
+
import logging
|
|
249
|
+
|
|
250
|
+
logger = logging.getLogger(__name__)
|
|
251
|
+
|
|
252
|
+
def important_operation():
|
|
253
|
+
logger.info("Starting operation")
|
|
254
|
+
try:
|
|
255
|
+
result = do_work()
|
|
256
|
+
logger.info(f"Operation completed: {result}")
|
|
257
|
+
return result
|
|
258
|
+
except Exception as e:
|
|
259
|
+
logger.error(f"Operation failed: {e}", exc_info=True)
|
|
260
|
+
raise
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Documentation in Plans
|
|
264
|
+
|
|
265
|
+
### When to Include Inline Docs
|
|
266
|
+
```markdown
|
|
267
|
+
**Step 3: Implement user creation with docstring**
|
|
268
|
+
|
|
269
|
+
```python
|
|
270
|
+
def create_user(username: str, email: str) -> User:
|
|
271
|
+
"""
|
|
272
|
+
Create a new user with validation.
|
|
273
|
+
|
|
274
|
+
Args:
|
|
275
|
+
username: User's chosen username (must be unique)
|
|
276
|
+
email: User's email address (must be valid format)
|
|
277
|
+
|
|
278
|
+
Returns:
|
|
279
|
+
User: The created user object
|
|
280
|
+
|
|
281
|
+
Raises:
|
|
282
|
+
ValueError: If username/email invalid or user exists
|
|
283
|
+
"""
|
|
284
|
+
if not username:
|
|
285
|
+
raise ValueError("Username cannot be empty")
|
|
286
|
+
if not validate_email(email):
|
|
287
|
+
raise ValueError(f"Invalid email: {email}")
|
|
288
|
+
|
|
289
|
+
return User(username=username, email=email)
|
|
290
|
+
```
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### When to Update Separate Docs
|
|
294
|
+
```markdown
|
|
295
|
+
**Step 10: Update API documentation**
|
|
296
|
+
|
|
297
|
+
In `docs/api/endpoints.md`, add:
|
|
298
|
+
```markdown
|
|
299
|
+
### POST /users
|
|
300
|
+
|
|
301
|
+
Create a new user account.
|
|
302
|
+
|
|
303
|
+
**Request:**
|
|
304
|
+
```json
|
|
305
|
+
{
|
|
306
|
+
"username": "alice",
|
|
307
|
+
"email": "alice@example.com"
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**Response:** 201 Created
|
|
312
|
+
```json
|
|
313
|
+
{
|
|
314
|
+
"id": 1,
|
|
315
|
+
"username": "alice",
|
|
316
|
+
"email": "alice@example.com",
|
|
317
|
+
"created_at": "2025-01-15T10:30:00Z"
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
```
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## Commit Message Guidelines
|
|
324
|
+
|
|
325
|
+
### Format
|
|
326
|
+
```
|
|
327
|
+
type: brief description
|
|
328
|
+
|
|
329
|
+
- Detail 1
|
|
330
|
+
- Detail 2
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Types
|
|
334
|
+
- `feat:` - New feature
|
|
335
|
+
- `fix:` - Bug fix
|
|
336
|
+
- `test:` - Add/update tests
|
|
337
|
+
- `refactor:` - Code restructuring
|
|
338
|
+
- `docs:` - Documentation only
|
|
339
|
+
- `chore:` - Tooling, dependencies
|
|
340
|
+
|
|
341
|
+
### Examples
|
|
342
|
+
```bash
|
|
343
|
+
git commit -m "feat: add user email validation"
|
|
344
|
+
git commit -m "test: add edge cases for user creation"
|
|
345
|
+
git commit -m "fix: handle empty username in user model"
|
|
346
|
+
git commit -m "refactor: extract validation to utils module"
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## Quality Checklist for Plans
|
|
350
|
+
|
|
351
|
+
Before saving the plan, verify:
|
|
352
|
+
|
|
353
|
+
- [ ] All file paths are exact and absolute
|
|
354
|
+
- [ ] All code blocks are complete (not pseudocode)
|
|
355
|
+
- [ ] All commands include expected output
|
|
356
|
+
- [ ] Tests are written before implementation
|
|
357
|
+
- [ ] Each step is 2-5 minutes of work
|
|
358
|
+
- [ ] Dependencies and setup are documented
|
|
359
|
+
- [ ] Error handling is included
|
|
360
|
+
- [ ] Commit messages are descriptive
|
|
361
|
+
- [ ] Referenced skills use @ syntax
|
|
362
|
+
- [ ] Header follows standard template
|