maxsimcli 4.0.0 → 4.0.2
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.
- package/README.md +43 -17
- package/dist/assets/CHANGELOG.md +60 -0
- package/dist/assets/templates/skills/batch-worktree/SKILL.md +38 -85
- package/dist/assets/templates/skills/brainstorming/SKILL.md +44 -114
- package/dist/assets/templates/skills/code-review/SKILL.md +43 -71
- package/dist/assets/templates/skills/memory-management/SKILL.md +36 -100
- package/dist/assets/templates/skills/roadmap-writing/SKILL.md +39 -73
- package/dist/assets/templates/skills/sdd/SKILL.md +36 -85
- package/dist/assets/templates/skills/simplify/SKILL.md +96 -139
- package/dist/assets/templates/skills/systematic-debugging/SKILL.md +41 -74
- package/dist/assets/templates/skills/tdd/SKILL.md +32 -65
- package/dist/assets/templates/skills/using-maxsim/SKILL.md +26 -39
- package/dist/assets/templates/skills/verification-before-completion/SKILL.md +37 -56
- package/dist/mcp-server.cjs +22489 -32
- package/dist/mcp-server.cjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,40 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: code-review
|
|
3
|
-
description:
|
|
3
|
+
description: >-
|
|
4
|
+
Reviews all changed code for security vulnerabilities, interface correctness,
|
|
5
|
+
error handling, test coverage, and quality before sign-off. Use when completing
|
|
6
|
+
a phase, reviewing implementation, or before approving changes for merge.
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# Code Review
|
|
7
10
|
|
|
8
11
|
Shipping unreviewed code is shipping unknown risk. Review before sign-off.
|
|
9
12
|
|
|
10
|
-
**
|
|
13
|
+
**HARD GATE: NO PHASE SIGN-OFF WITHOUT REVIEWING ALL CHANGED CODE.** If every diff introduced in this phase has not been read, the phase cannot be marked complete. Passing tests do not prove code quality.
|
|
11
14
|
|
|
12
|
-
##
|
|
15
|
+
## Process
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
NO PHASE SIGN-OFF WITHOUT REVIEWING ALL CHANGED CODE.
|
|
16
|
-
If you have not read every diff introduced in this phase, you CANNOT mark it complete.
|
|
17
|
-
"It works" is not "it's correct." Passing tests do not prove code quality.
|
|
18
|
-
Violating this rule is a violation — not a shortcut.
|
|
19
|
-
</HARD-GATE>
|
|
17
|
+
Follow these steps in order before approving any phase or significant implementation.
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
### 1. SCOPE -- Identify All Changes
|
|
22
20
|
|
|
23
|
-
|
|
21
|
+
- Diff against the phase starting point to see every changed file
|
|
22
|
+
- List all new, modified, and deleted files
|
|
23
|
+
- Do not skip generated files, config changes, or minor edits
|
|
24
24
|
|
|
25
|
-
###
|
|
26
|
-
|
|
27
|
-
- Run `git diff` against the phase's starting point to see every changed file
|
|
28
|
-
- List all new files, modified files, and deleted files
|
|
29
|
-
- Do NOT skip generated files, config changes, or "minor" edits
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
# Example: see all changes since phase branch point
|
|
33
|
-
git diff --stat main...HEAD
|
|
34
|
-
git diff main...HEAD
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### 2. SECURITY — Check for Vulnerabilities
|
|
25
|
+
### 2. SECURITY -- Check for Vulnerabilities
|
|
38
26
|
|
|
39
27
|
Review every changed file for:
|
|
40
28
|
|
|
@@ -48,75 +36,47 @@ Review every changed file for:
|
|
|
48
36
|
|
|
49
37
|
**Any security issue is a blocking finding. No exceptions.**
|
|
50
38
|
|
|
51
|
-
### 3. INTERFACES
|
|
39
|
+
### 3. INTERFACES -- Verify API Contracts
|
|
52
40
|
|
|
53
41
|
- Do public function signatures match their documentation?
|
|
54
42
|
- Are return types accurate and complete?
|
|
55
43
|
- Do error types cover all failure modes?
|
|
56
44
|
- Are breaking changes documented and intentional?
|
|
57
|
-
- Do exported interfaces maintain backward compatibility
|
|
45
|
+
- Do exported interfaces maintain backward compatibility?
|
|
58
46
|
|
|
59
|
-
### 4. ERROR HANDLING
|
|
47
|
+
### 4. ERROR HANDLING -- Check Failure Paths
|
|
60
48
|
|
|
61
|
-
- Are all external calls
|
|
49
|
+
- Are all external calls wrapped in error handling?
|
|
62
50
|
- Do error messages provide enough context to diagnose the issue?
|
|
63
51
|
- Are errors propagated correctly (not swallowed silently)?
|
|
64
52
|
- Are edge cases handled (empty input, null values, boundary conditions)?
|
|
65
53
|
|
|
66
|
-
### 5. TESTS
|
|
54
|
+
### 5. TESTS -- Evaluate Coverage
|
|
67
55
|
|
|
68
56
|
- Does every new public function have corresponding tests?
|
|
69
57
|
- Do tests cover both success and failure paths?
|
|
70
|
-
- Are edge cases tested
|
|
58
|
+
- Are edge cases tested?
|
|
71
59
|
- Do tests verify behavior, not implementation details?
|
|
72
60
|
|
|
73
|
-
### 6. QUALITY
|
|
61
|
+
### 6. QUALITY -- Assess Maintainability
|
|
74
62
|
|
|
75
|
-
- Is naming consistent with
|
|
76
|
-
- Are there
|
|
63
|
+
- Is naming consistent with existing codebase conventions?
|
|
64
|
+
- Are there duplication opportunities that should be extracted?
|
|
77
65
|
- Is the complexity justified by the requirements?
|
|
78
|
-
- Are comments present where logic is non-obvious
|
|
79
|
-
|
|
80
|
-
## Critical Issues — Block Phase Sign-Off
|
|
81
|
-
|
|
82
|
-
These categories MUST be resolved before the phase can be marked complete:
|
|
83
|
-
|
|
84
|
-
| Severity | Category | Example |
|
|
85
|
-
|----------|----------|---------|
|
|
86
|
-
| **Blocker** | Security vulnerability | SQL injection, XSS, hardcoded secrets |
|
|
87
|
-
| **Blocker** | Broken interface | Public API returns wrong type, missing required field |
|
|
88
|
-
| **Blocker** | Missing error handling | Unhandled promise rejection, swallowed exceptions on I/O |
|
|
89
|
-
| **Blocker** | Data loss risk | Destructive operation without confirmation, missing transaction |
|
|
90
|
-
| **High** | Performance regression | O(n^2) where O(n) is trivial, unbounded memory allocation |
|
|
91
|
-
| **High** | Missing critical tests | No tests for error paths, no tests for new public API |
|
|
92
|
-
| **Medium** | Naming inconsistency | Convention mismatch with existing codebase |
|
|
93
|
-
| **Medium** | Dead code | Unreachable branches, unused imports, commented-out code |
|
|
94
|
-
|
|
95
|
-
**Blocker and High severity issues block sign-off. Medium issues should be filed for follow-up.**
|
|
66
|
+
- Are comments present where logic is non-obvious?
|
|
96
67
|
|
|
97
|
-
## Common
|
|
68
|
+
## Common Pitfalls
|
|
98
69
|
|
|
99
|
-
|
|
|
100
|
-
|
|
70
|
+
| Issue | Reality |
|
|
71
|
+
|-------|---------|
|
|
101
72
|
| "Tests pass, so the code is fine" | Tests verify behavior, not code quality. Review is separate. |
|
|
102
73
|
| "I wrote it, so I know it's correct" | Author bias is real. Review as if someone else wrote it. |
|
|
103
|
-
| "It's just a small change" | Small changes cause large outages.
|
|
104
|
-
| "We'll clean it up later" | "Later" accumulates. Fix blockers now, file medium issues. |
|
|
105
|
-
| "The deadline is tight" | Shipping broken code costs more time than reviewing. |
|
|
74
|
+
| "It's just a small change" | Small changes cause large outages. |
|
|
106
75
|
| "Generated code doesn't need review" | Generated code has the same bugs. Review it. |
|
|
107
76
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
- Skipping files because they "look fine" from the diff stat
|
|
111
|
-
- Approving without reading the actual code changes
|
|
112
|
-
- Ignoring a gut feeling that something is wrong
|
|
113
|
-
- Rushing through review to meet a deadline
|
|
114
|
-
- Assuming tests cover everything without checking
|
|
115
|
-
- Skipping error handling review because "the happy path works"
|
|
116
|
-
|
|
117
|
-
**If any red flag triggers: STOP. Go back to step 1 (SCOPE) and review properly.**
|
|
77
|
+
Stop if you catch yourself skipping files because they "look fine," approving without reading actual code, or rushing through review to meet a deadline.
|
|
118
78
|
|
|
119
|
-
## Verification
|
|
79
|
+
## Verification
|
|
120
80
|
|
|
121
81
|
Before signing off on a phase, confirm:
|
|
122
82
|
|
|
@@ -128,9 +88,21 @@ Before signing off on a phase, confirm:
|
|
|
128
88
|
- [ ] Naming and style are consistent with codebase conventions
|
|
129
89
|
- [ ] No blocker or high severity issues remain open
|
|
130
90
|
|
|
131
|
-
|
|
91
|
+
### Severity Reference
|
|
92
|
+
|
|
93
|
+
| Severity | Category | Example |
|
|
94
|
+
|----------|----------|---------|
|
|
95
|
+
| Blocker | Security vulnerability | SQL injection, XSS, hardcoded secrets |
|
|
96
|
+
| Blocker | Broken interface | Public API returns wrong type |
|
|
97
|
+
| Blocker | Data loss risk | Destructive operation without confirmation |
|
|
98
|
+
| High | Performance regression | O(n^2) where O(n) is trivial |
|
|
99
|
+
| High | Missing critical tests | No tests for error paths or new public API |
|
|
100
|
+
| Medium | Naming inconsistency | Convention mismatch with existing codebase |
|
|
101
|
+
| Medium | Dead code | Unreachable branches, unused imports |
|
|
102
|
+
|
|
103
|
+
Blocker and High severity issues block sign-off. Medium issues should be filed for follow-up.
|
|
132
104
|
|
|
133
|
-
|
|
105
|
+
### Review Output Format
|
|
134
106
|
|
|
135
107
|
```
|
|
136
108
|
REVIEW SCOPE: [number] files changed, [number] additions, [number] deletions
|
|
@@ -142,7 +114,7 @@ QUALITY: PASS | ISSUES FOUND (list)
|
|
|
142
114
|
VERDICT: APPROVED | BLOCKED (list blocking issues)
|
|
143
115
|
```
|
|
144
116
|
|
|
145
|
-
##
|
|
117
|
+
## MAXSIM Integration
|
|
146
118
|
|
|
147
119
|
Code review applies at phase boundaries:
|
|
148
120
|
- After all tasks in a phase are complete, run this review before marking the phase done
|
|
@@ -1,28 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: memory-management
|
|
3
|
-
description:
|
|
3
|
+
description: "Persists recurring patterns, error solutions, and architectural decisions to project memory files for cross-session continuity. Use when encountering the same error twice, making significant decisions, or discovering non-obvious conventions."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Memory Management
|
|
7
7
|
|
|
8
8
|
Context dies with each session. Patterns discovered but not saved are patterns lost.
|
|
9
9
|
|
|
10
|
-
**If you encountered it twice, save it. You will encounter it again
|
|
10
|
+
**HARD GATE** -- If you encountered it twice, save it. You will encounter it again. "I'll remember" is a lie -- your context resets. Write it down. Violating this rule guarantees repeated mistakes across sessions.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## Process
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
RECURRING PATTERNS MUST BE PERSISTED.
|
|
16
|
-
If you have seen the same error, pattern, or decision twice in this session or across sessions, you MUST save it.
|
|
17
|
-
"I'll remember" is a lie — your context resets. Write it down.
|
|
18
|
-
Violating this rule guarantees repeated mistakes across sessions.
|
|
19
|
-
</HARD-GATE>
|
|
14
|
+
### 1. Detect -- Recognize Save Triggers
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
### Auto-Save Triggers (MUST save)
|
|
24
|
-
|
|
25
|
-
These situations require immediate memory persistence:
|
|
16
|
+
Save immediately when any of these occur:
|
|
26
17
|
|
|
27
18
|
| Trigger | Threshold | What to Save |
|
|
28
19
|
|---------|-----------|-------------|
|
|
@@ -33,36 +24,17 @@ These situations require immediate memory persistence:
|
|
|
33
24
|
| Workaround for tooling/framework quirk | Once | The quirk and the workaround |
|
|
34
25
|
| Project-specific pattern confirmed | 2+ uses | The pattern and when to apply it |
|
|
35
26
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- Session-specific context (current task details, in-progress work)
|
|
39
|
-
- Information already in CLAUDE.md or project documentation
|
|
40
|
-
- Speculative conclusions from reading a single file
|
|
41
|
-
- Temporary workarounds that will be removed
|
|
42
|
-
- Obvious patterns that any developer would know
|
|
43
|
-
|
|
44
|
-
## Where to Save
|
|
45
|
-
|
|
46
|
-
Memory files live in `.claude/memory/` (for Claude Code) or the equivalent runtime memory directory.
|
|
27
|
+
Do NOT save: session-specific context, information already in CLAUDE.md, speculative conclusions, temporary workarounds, or obvious patterns.
|
|
47
28
|
|
|
48
|
-
###
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
.claude/memory/
|
|
52
|
-
MEMORY.md # Index file — always loaded into context
|
|
53
|
-
patterns.md # Code patterns and conventions
|
|
54
|
-
errors.md # Error patterns and solutions
|
|
55
|
-
architecture.md # Architectural decisions and rationale
|
|
56
|
-
tooling.md # Tool quirks and workarounds
|
|
57
|
-
```
|
|
29
|
+
### 2. Check -- Avoid Duplicates
|
|
58
30
|
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
31
|
+
- Read existing memory files before writing
|
|
32
|
+
- If the pattern is already documented, update it (do not duplicate)
|
|
33
|
+
- If it contradicts existing memory, investigate which is correct
|
|
62
34
|
|
|
63
|
-
###
|
|
35
|
+
### 3. Write -- Persist the Memory
|
|
64
36
|
|
|
65
|
-
|
|
37
|
+
Add to the appropriate topic file using this entry format:
|
|
66
38
|
|
|
67
39
|
```markdown
|
|
68
40
|
## [Short descriptive title]
|
|
@@ -73,83 +45,47 @@ Each entry should follow this structure:
|
|
|
73
45
|
**Evidence:** How this was confirmed (dates, occurrences, test results)
|
|
74
46
|
```
|
|
75
47
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
When you encounter something worth remembering:
|
|
79
|
-
|
|
80
|
-
### 1. DETECT — Recognize the Pattern
|
|
81
|
-
|
|
82
|
-
- Is this the same error/pattern you saw before?
|
|
83
|
-
- Is this a decision that will affect future work?
|
|
84
|
-
- Is this a non-obvious convention or quirk?
|
|
85
|
-
|
|
86
|
-
### 2. CHECK — Avoid Duplicates
|
|
87
|
-
|
|
88
|
-
- Read the existing memory files first
|
|
89
|
-
- If the pattern is already documented, update it (don't duplicate)
|
|
90
|
-
- If it contradicts existing memory, investigate which is correct
|
|
91
|
-
|
|
92
|
-
### 3. WRITE — Persist the Memory
|
|
93
|
-
|
|
94
|
-
- Add to the appropriate topic file
|
|
95
|
-
- Update MEMORY.md index if adding a new topic
|
|
96
|
-
- Keep entries concise — future you needs the answer, not the journey
|
|
97
|
-
|
|
98
|
-
### 4. VERIFY — Confirm the Save
|
|
48
|
+
### 4. Verify -- Confirm the Save
|
|
99
49
|
|
|
100
50
|
- Re-read the file to confirm the entry was written correctly
|
|
101
|
-
- Ensure the entry is actionable (someone reading it can act on it)
|
|
51
|
+
- Ensure the entry is actionable (someone reading it can act on it immediately)
|
|
102
52
|
|
|
103
|
-
##
|
|
53
|
+
## File Organization
|
|
104
54
|
|
|
105
|
-
|
|
55
|
+
Memory files live in `.claude/memory/` (or the equivalent runtime memory directory).
|
|
106
56
|
|
|
107
57
|
```
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
58
|
+
.claude/memory/
|
|
59
|
+
MEMORY.md # Index file -- always loaded into context
|
|
60
|
+
patterns.md # Code patterns and conventions
|
|
61
|
+
errors.md # Error patterns and solutions
|
|
62
|
+
architecture.md # Architectural decisions and rationale
|
|
63
|
+
tooling.md # Tool quirks and workarounds
|
|
111
64
|
```
|
|
112
65
|
|
|
113
|
-
|
|
66
|
+
- **MEMORY.md** is the index: keep it under 200 lines, link to topic files for details
|
|
67
|
+
- Topic files hold detailed notes organized by subject
|
|
68
|
+
- Use headers and bullet points for scannability
|
|
114
69
|
|
|
115
|
-
|
|
116
|
-
```markdown
|
|
117
|
-
## Vitest "cannot find module" for path aliases
|
|
70
|
+
## Error Escalation
|
|
118
71
|
|
|
119
|
-
**Context:** When running tests that import from `@maxsim/core`
|
|
120
|
-
**Error:** `Cannot find module '@maxsim/core/types'`
|
|
121
|
-
**Fix:** Add `resolve.alias` to `vitest.config.ts` matching tsconfig paths
|
|
122
|
-
**Evidence:** Hit 3 times across phases 01-03 (Feb 2026)
|
|
123
72
|
```
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
## Test error
|
|
128
|
-
There was an error with tests. Fixed it by changing config.
|
|
73
|
+
Error seen once -- Note it, move on
|
|
74
|
+
Error seen twice -- Save to errors.md with pattern and fix
|
|
75
|
+
Error seen 3+ times -- Save AND add to MEMORY.md index for immediate visibility
|
|
129
76
|
```
|
|
130
77
|
|
|
131
|
-
## Common
|
|
132
|
-
|
|
133
|
-
| Excuse | Why It Violates the Rule |
|
|
134
|
-
|--------|--------------------------|
|
|
135
|
-
| "I'll remember this" | No you won't. Context resets. Write it down. |
|
|
136
|
-
| "It's too specific to save" | Specific is good. Generic memories are useless. |
|
|
137
|
-
| "Memory files are messy" | Organize them. Messy files > lost knowledge. |
|
|
138
|
-
| "This only applies to this project" | Project memory IS project-scoped. Save it. |
|
|
139
|
-
| "Someone else documented this" | If it's not in your memory files, you won't find it next session. |
|
|
140
|
-
| "I'll save it later" | You'll forget to. Save it now. |
|
|
141
|
-
|
|
142
|
-
## Red Flags — STOP If You Catch Yourself:
|
|
78
|
+
## Common Pitfalls
|
|
143
79
|
|
|
144
|
-
- Encountering the same error
|
|
80
|
+
- Encountering the same error a second time without saving it
|
|
145
81
|
- Making the same architectural decision you made in a previous session
|
|
146
82
|
- Debugging a problem you already solved before
|
|
147
83
|
- Saying "I think we fixed this before" without finding the memory entry
|
|
148
84
|
- Leaving a session without updating memory for patterns discovered
|
|
149
85
|
|
|
150
|
-
|
|
86
|
+
If any of these occur: stop, write the memory entry now, then continue.
|
|
151
87
|
|
|
152
|
-
## Verification
|
|
88
|
+
## Verification
|
|
153
89
|
|
|
154
90
|
Before ending a work session:
|
|
155
91
|
|
|
@@ -160,12 +96,12 @@ Before ending a work session:
|
|
|
160
96
|
- [ ] No duplicate entries were created
|
|
161
97
|
- [ ] All entries follow the format (Context, Pattern, Solution, Evidence)
|
|
162
98
|
|
|
163
|
-
## Integration
|
|
99
|
+
## MAXSIM Integration
|
|
164
100
|
|
|
165
|
-
During plan execution,
|
|
101
|
+
During plan execution, agents load memory files at startup:
|
|
166
102
|
- **Executor:** Reads MEMORY.md to avoid known pitfalls before implementing
|
|
167
103
|
- **Researcher:** Saves findings to memory for future phases
|
|
168
|
-
- **Debugger:** Checks error memories before starting investigation
|
|
104
|
+
- **Debugger:** Checks error memories before starting investigation -- the fix may already be known
|
|
169
105
|
|
|
170
106
|
Memory persistence happens at natural breakpoints:
|
|
171
107
|
- After resolving a bug (save to errors.md)
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: roadmap-writing
|
|
3
|
-
description:
|
|
3
|
+
description: >-
|
|
4
|
+
Creates structured project roadmaps with phased planning, dependency graphs,
|
|
5
|
+
and testable success criteria in MAXSIM-compatible format. Use when creating a
|
|
6
|
+
new roadmap, restructuring project phases, or planning milestones.
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# Roadmap Writing
|
|
7
10
|
|
|
8
11
|
A roadmap without success criteria is a wish list. Define what done looks like for every phase.
|
|
9
12
|
|
|
10
|
-
**
|
|
13
|
+
**HARD GATE: No phase without success criteria and dependencies. Every phase must have a number, name, goal, testable success criteria, and explicit dependencies. Violating this rule is a violation, not flexibility.**
|
|
11
14
|
|
|
12
|
-
##
|
|
15
|
+
## Process
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
NO PHASE WITHOUT SUCCESS CRITERIA AND DEPENDENCIES.
|
|
16
|
-
Every phase MUST have: a number, a name, a goal, success criteria (testable statements), and explicit dependencies.
|
|
17
|
-
"We'll figure it out as we go" is not planning — it is drifting.
|
|
18
|
-
Violating this rule is a violation — not flexibility.
|
|
19
|
-
</HARD-GATE>
|
|
20
|
-
|
|
21
|
-
## The Gate Function
|
|
22
|
-
|
|
23
|
-
Follow these steps IN ORDER when creating or restructuring a roadmap.
|
|
24
|
-
|
|
25
|
-
### 1. SCOPE — Understand the Project
|
|
17
|
+
### 1. SCOPE -- Understand the Project
|
|
26
18
|
|
|
27
19
|
Before writing phases, understand what you are planning:
|
|
28
20
|
|
|
@@ -31,26 +23,18 @@ Before writing phases, understand what you are planning:
|
|
|
31
23
|
- Check existing STATE.md for decisions and blockers
|
|
32
24
|
- Identify the delivery target (MVP, v1, v2, etc.)
|
|
33
25
|
|
|
34
|
-
|
|
35
|
-
# Load project context
|
|
36
|
-
node ~/.claude/maxsim/bin/maxsim-tools.cjs state read --raw
|
|
37
|
-
|
|
38
|
-
# Check existing roadmap (if any)
|
|
39
|
-
node ~/.claude/maxsim/bin/maxsim-tools.cjs roadmap read --raw
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 2. DECOMPOSE — Break Into Phases
|
|
26
|
+
### 2. DECOMPOSE -- Break Into Phases
|
|
43
27
|
|
|
44
28
|
Each phase should be:
|
|
45
29
|
|
|
46
30
|
| Property | Requirement |
|
|
47
31
|
|----------|------------|
|
|
48
|
-
| **Independently deliverable** | The phase produces a working increment
|
|
32
|
+
| **Independently deliverable** | The phase produces a working increment, not a half-built feature |
|
|
49
33
|
| **1-3 days of work** | Larger phases should be split; smaller ones should be merged |
|
|
50
34
|
| **Clear boundary** | You can tell when the phase is done without ambiguity |
|
|
51
35
|
| **Ordered by dependency** | No phase depends on a later phase |
|
|
52
36
|
|
|
53
|
-
|
|
37
|
+
Phase numbering convention:
|
|
54
38
|
|
|
55
39
|
| Format | When to Use |
|
|
56
40
|
|--------|------------|
|
|
@@ -58,54 +42,51 @@ Each phase should be:
|
|
|
58
42
|
| `01A`, `01B` | Parallel sub-phases that can execute concurrently |
|
|
59
43
|
| `01.1`, `01.2` | Sequential sub-phases within a parent phase |
|
|
60
44
|
|
|
61
|
-
Sort order: `01
|
|
45
|
+
Sort order: `01` then `01A` then `01B` then `01.1` then `01.2` then `02`.
|
|
62
46
|
|
|
63
|
-
### 3. DEFINE
|
|
47
|
+
### 3. DEFINE -- Write Each Phase
|
|
64
48
|
|
|
65
|
-
Every phase
|
|
49
|
+
Every phase must include all of these fields:
|
|
66
50
|
|
|
67
51
|
```markdown
|
|
68
52
|
### Phase {number}: {name}
|
|
69
|
-
**Goal**: {one sentence
|
|
53
|
+
**Goal**: {one sentence -- what this phase achieves}
|
|
70
54
|
**Depends on**: {phase numbers, or "Nothing" for the first phase}
|
|
71
55
|
**Requirements**: {requirement IDs from REQUIREMENTS.md, if applicable}
|
|
72
56
|
**Success Criteria** (what must be TRUE):
|
|
73
|
-
1. {Testable statement
|
|
57
|
+
1. {Testable statement -- can be verified with a command, test, or inspection}
|
|
74
58
|
2. {Testable statement}
|
|
75
59
|
3. {Testable statement}
|
|
76
60
|
**Plans**: TBD
|
|
77
61
|
```
|
|
78
62
|
|
|
79
|
-
|
|
80
|
-
- Each criterion must be testable
|
|
63
|
+
Success criteria rules:
|
|
64
|
+
- Each criterion must be testable -- "code is clean" is not testable; "no lint warnings" is testable
|
|
81
65
|
- Include at least 2 criteria per phase
|
|
82
66
|
- At least one criterion should be verifiable by running a command (test, build, lint)
|
|
83
|
-
- Criteria describe the
|
|
67
|
+
- Criteria describe the end state, not the process ("tests pass" not "write tests")
|
|
84
68
|
|
|
85
|
-
### 4. CONNECT
|
|
69
|
+
### 4. CONNECT -- Map Dependencies
|
|
86
70
|
|
|
87
|
-
Draw the dependency graph:
|
|
88
71
|
- Which phases can run in parallel? (Use letter suffixes: `03A`, `03B`)
|
|
89
72
|
- Which phases are strictly sequential? (Use number suffixes: `03.1`, `03.2`)
|
|
90
|
-
- Are there any circular dependencies? (This is a design error
|
|
73
|
+
- Are there any circular dependencies? (This is a design error -- restructure)
|
|
91
74
|
|
|
92
|
-
|
|
75
|
+
Every phase except the first must declare at least one dependency.
|
|
93
76
|
|
|
94
|
-
### 5. MILESTONE
|
|
77
|
+
### 5. MILESTONE -- Group Into Milestones
|
|
95
78
|
|
|
96
|
-
Group phases into milestones that represent user-visible releases
|
|
79
|
+
Group phases into milestones that represent user-visible releases. Each milestone should be a coherent deliverable that could ship independently.
|
|
97
80
|
|
|
98
81
|
```markdown
|
|
99
82
|
## Milestones
|
|
100
83
|
|
|
101
|
-
- **v1.0 MVP**
|
|
102
|
-
- **v1.1 Polish**
|
|
103
|
-
- **v2.0 Scale**
|
|
84
|
+
- **v1.0 MVP** -- Phases 1-4
|
|
85
|
+
- **v1.1 Polish** -- Phases 5-7
|
|
86
|
+
- **v2.0 Scale** -- Phases 8-10
|
|
104
87
|
```
|
|
105
88
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
### 6. WRITE — Produce the Roadmap
|
|
89
|
+
### 6. WRITE -- Produce the Roadmap
|
|
109
90
|
|
|
110
91
|
Assemble the complete ROADMAP.md:
|
|
111
92
|
|
|
@@ -118,7 +99,7 @@ Assemble the complete ROADMAP.md:
|
|
|
118
99
|
|
|
119
100
|
## Milestones
|
|
120
101
|
|
|
121
|
-
-
|
|
102
|
+
- **{milestone name}** -- Phases {range} ({status})
|
|
122
103
|
|
|
123
104
|
## Phases
|
|
124
105
|
|
|
@@ -135,47 +116,32 @@ Assemble the complete ROADMAP.md:
|
|
|
135
116
|
**Plans**: TBD
|
|
136
117
|
```
|
|
137
118
|
|
|
138
|
-
### 7. VALIDATE
|
|
119
|
+
### 7. VALIDATE -- Check the Roadmap
|
|
139
120
|
|
|
140
121
|
Before finalizing, verify:
|
|
141
122
|
|
|
142
|
-
```bash
|
|
143
|
-
# Write the roadmap (creates or overwrites .planning/ROADMAP.md)
|
|
144
|
-
# Then verify phase structure
|
|
145
|
-
node ~/.claude/maxsim/bin/maxsim-tools.cjs roadmap read --raw
|
|
146
|
-
```
|
|
147
|
-
|
|
148
123
|
| Check | How to Verify |
|
|
149
124
|
|-------|--------------|
|
|
150
125
|
| Every phase has success criteria | Read each phase detail section |
|
|
151
|
-
| Dependencies are acyclic | Trace the dependency chain
|
|
126
|
+
| Dependencies are acyclic | Trace the dependency chain -- no loops |
|
|
152
127
|
| Phase numbering is sequential | Numbers increase, no gaps larger than 1 |
|
|
153
128
|
| Milestones cover all phases | Every phase appears in exactly one milestone |
|
|
154
129
|
| Success criteria are testable | Each criterion can be verified by command, test, or inspection |
|
|
155
130
|
|
|
156
|
-
## Common
|
|
131
|
+
## Common Pitfalls
|
|
157
132
|
|
|
158
|
-
|
|
|
159
|
-
|
|
133
|
+
| Pitfall | Why It Fails |
|
|
134
|
+
|---------|-------------|
|
|
160
135
|
| "We don't know enough to plan" | Plan what you know. Unknown phases get a research spike first. |
|
|
161
|
-
| "The roadmap will change anyway" | Plans change
|
|
136
|
+
| "The roadmap will change anyway" | Plans change -- that is expected. No plan guarantees drift. |
|
|
162
137
|
| "Success criteria are too rigid" | Vague criteria are useless. Rigid criteria are adjustable. |
|
|
163
138
|
| "One big phase is simpler" | Big phases hide complexity and delay feedback. Split them. |
|
|
164
139
|
| "Dependencies are obvious" | Obvious to you now. Not obvious to the agent running phase 5 next week. |
|
|
165
140
|
| "We'll add details later" | Later never comes. Write the details now while context is fresh. |
|
|
166
141
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
- Writing a phase without success criteria
|
|
170
|
-
- Creating phases longer than 3 days of work
|
|
171
|
-
- Skipping dependency declarations
|
|
172
|
-
- Writing vague criteria like "code is good" or "feature works"
|
|
173
|
-
- Creating circular dependencies between phases
|
|
174
|
-
- Putting all work in one or two massive phases
|
|
175
|
-
|
|
176
|
-
**If any red flag triggers: STOP. Review the phase structure and fix it.**
|
|
142
|
+
Stop if you catch yourself writing a phase without success criteria, creating phases longer than 3 days of work, skipping dependency declarations, writing vague criteria like "code is good", creating circular dependencies, or putting all work in one or two massive phases.
|
|
177
143
|
|
|
178
|
-
## Verification
|
|
144
|
+
## Verification
|
|
179
145
|
|
|
180
146
|
Before finalizing a roadmap, confirm:
|
|
181
147
|
|
|
@@ -188,11 +154,11 @@ Before finalizing a roadmap, confirm:
|
|
|
188
154
|
- [ ] ROADMAP.md matches the expected format for MAXSIM CLI parsing
|
|
189
155
|
- [ ] Overview section summarizes the project and delivery strategy
|
|
190
156
|
|
|
191
|
-
##
|
|
157
|
+
## MAXSIM Integration
|
|
192
158
|
|
|
193
159
|
Roadmap writing integrates with the MAXSIM lifecycle:
|
|
194
|
-
- Use during project initialization
|
|
160
|
+
- Use during project initialization to create the initial roadmap
|
|
195
161
|
- Use when restructuring after a significant scope change or pivot
|
|
196
|
-
- The roadmap is read by MAXSIM agents via `roadmap read`
|
|
162
|
+
- The roadmap is read by MAXSIM agents via `roadmap read` -- format compliance is mandatory
|
|
197
163
|
- Phase numbering must be parseable by `normalizePhaseName()` and `comparePhaseNum()` in core
|
|
198
164
|
- Config `model_profile` in `.planning/config.json` affects agent assignment per phase
|