mindsystem-cc 4.3.1 → 4.4.0
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 +24 -31
- package/agents/ms-browser-verifier.md +54 -31
- package/commands/ms/add-phase.md +90 -46
- package/commands/ms/config.md +34 -4
- package/commands/ms/help.md +11 -11
- package/commands/ms/insert-phase.md +87 -49
- package/commands/ms/new-milestone.md +1 -1
- package/commands/ms/plan-phase.md +4 -4
- package/mindsystem/references/browser-verification.md +30 -21
- package/mindsystem/references/derive-phase-specification.md +147 -0
- package/mindsystem/templates/config.json +2 -1
- package/mindsystem/templates/roadmap.md +8 -2
- package/mindsystem/workflows/adhoc.md +1 -1
- package/mindsystem/workflows/discuss-phase.md +2 -2
- package/mindsystem/workflows/execute-phase.md +3 -3
- package/mindsystem/workflows/plan-phase.md +45 -6
- package/package.json +1 -1
|
@@ -6,19 +6,21 @@ allowed-tools:
|
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
8
8
|
- Bash
|
|
9
|
+
- AskUserQuestion
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
<objective>
|
|
12
|
-
Insert a decimal phase for urgent work discovered mid-milestone that must be completed between existing integer phases.
|
|
13
|
+
Insert a decimal phase for urgent work discovered mid-milestone that must be completed between existing integer phases, fully specified with goal, success criteria, and requirements.
|
|
13
14
|
|
|
14
|
-
Uses decimal numbering (72.1, 72.2, etc.) to preserve the logical sequence of planned phases while accommodating urgent insertions.
|
|
15
|
+
Uses decimal numbering (72.1, 72.2, etc.) to preserve the logical sequence of planned phases while accommodating urgent insertions. The phase is set up identically to phases created by the roadmapper — downstream commands work without degradation.
|
|
15
16
|
|
|
16
|
-
Purpose: Handle urgent work discovered during execution without renumbering entire roadmap.
|
|
17
|
+
Purpose: Handle urgent work discovered during execution without renumbering entire roadmap, with full pipeline support.
|
|
17
18
|
</objective>
|
|
18
19
|
|
|
19
20
|
<execution_context>
|
|
20
21
|
@.planning/ROADMAP.md
|
|
21
22
|
@.planning/STATE.md
|
|
23
|
+
@.planning/REQUIREMENTS.md
|
|
22
24
|
</execution_context>
|
|
23
25
|
|
|
24
26
|
<process>
|
|
@@ -59,8 +61,8 @@ fi
|
|
|
59
61
|
|
|
60
62
|
</step>
|
|
61
63
|
|
|
62
|
-
<step name="
|
|
63
|
-
Load
|
|
64
|
+
<step name="load_context">
|
|
65
|
+
Load project context:
|
|
64
66
|
|
|
65
67
|
```bash
|
|
66
68
|
if [ -f .planning/ROADMAP.md ]; then
|
|
@@ -69,9 +71,33 @@ else
|
|
|
69
71
|
echo "ERROR: No roadmap found (.planning/ROADMAP.md)"
|
|
70
72
|
exit 1
|
|
71
73
|
fi
|
|
74
|
+
|
|
75
|
+
if [ ! -f .planning/REQUIREMENTS.md ]; then
|
|
76
|
+
echo "ERROR: No REQUIREMENTS.md found"
|
|
77
|
+
exit 1
|
|
78
|
+
fi
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
If REQUIREMENTS.md is missing, display:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Phase insertion requires an active milestone with requirements tracking.
|
|
85
|
+
No .planning/REQUIREMENTS.md found.
|
|
86
|
+
|
|
87
|
+
Instead, consider:
|
|
88
|
+
- `/ms:new-milestone` — start a new milestone with requirements
|
|
89
|
+
- `/ms:create-roadmap` — if milestone context exists but roadmap wasn't created yet
|
|
90
|
+
- `/ms:adhoc "<description>"` — for work that doesn't need milestone tracking
|
|
72
91
|
```
|
|
73
92
|
|
|
74
|
-
|
|
93
|
+
Exit command.
|
|
94
|
+
|
|
95
|
+
Read ROADMAP.md and REQUIREMENTS.md.
|
|
96
|
+
|
|
97
|
+
From REQUIREMENTS.md, extract:
|
|
98
|
+
- Existing REQ-ID categories and their prefixes (e.g., AUTH, SUB, CONTENT)
|
|
99
|
+
- Highest REQ-ID number per category (e.g., AUTH-04 → next is AUTH-05)
|
|
100
|
+
- Traceability table structure
|
|
75
101
|
</step>
|
|
76
102
|
|
|
77
103
|
<step name="verify_target_phase">
|
|
@@ -88,7 +114,7 @@ Verify that the target phase exists in the roadmap:
|
|
|
88
114
|
Exit.
|
|
89
115
|
|
|
90
116
|
3. Verify phase is in current milestone (not completed/archived)
|
|
91
|
-
|
|
117
|
+
</step>
|
|
92
118
|
|
|
93
119
|
<step name="find_existing_decimals">
|
|
94
120
|
Find existing decimal phases after the target phase:
|
|
@@ -107,6 +133,14 @@ Examples:
|
|
|
107
133
|
Store as: `decimal_phase="$(printf "%02d" $after_phase).${next_decimal}"`
|
|
108
134
|
</step>
|
|
109
135
|
|
|
136
|
+
<step name="derive_phase_specification">
|
|
137
|
+
Read `~/.claude/mindsystem/references/derive-phase-specification.md` and follow its algorithm.
|
|
138
|
+
|
|
139
|
+
Variables: `{PHASE_ID}` = `{decimal_phase}`, `{PHASE_MARKER}` = `(INSERTED)`.
|
|
140
|
+
|
|
141
|
+
Input: user's description + project context (PROJECT.md, ROADMAP.md phases, REQUIREMENTS.md categories).
|
|
142
|
+
</step>
|
|
143
|
+
|
|
110
144
|
<step name="generate_slug">
|
|
111
145
|
Convert the phase description to a kebab-case slug:
|
|
112
146
|
|
|
@@ -129,46 +163,44 @@ mkdir -p "$phase_dir"
|
|
|
129
163
|
Confirm: "Created directory: $phase_dir"
|
|
130
164
|
</step>
|
|
131
165
|
|
|
132
|
-
<step name="
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
1. Find insertion point: immediately after Phase {after_phase}'s content (before next phase heading or "---")
|
|
166
|
+
<step name="update_requirements">
|
|
167
|
+
Follow the requirements update procedure in `~/.claude/mindsystem/references/derive-phase-specification.md`.
|
|
136
168
|
|
|
137
|
-
|
|
169
|
+
Use Phase `{decimal_phase}` for traceability table references and footer dating.
|
|
170
|
+
</step>
|
|
138
171
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
rename-only refactor, config-only change, pure deletion/cleanup).
|
|
172
|
+
<step name="update_roadmap">
|
|
173
|
+
Insert the new phase entry into the roadmap:
|
|
142
174
|
|
|
143
|
-
|
|
144
|
-
dashboards, or multi-screen flows. Unlikely for backend-only, API, infrastructure,
|
|
145
|
-
or established UI patterns.
|
|
175
|
+
**1. Find insertion point:** immediately after Phase {after_phase}'s content (and any existing decimals), before next integer phase heading or "---".
|
|
146
176
|
|
|
147
|
-
|
|
148
|
-
libraries/frameworks, or unclear technical approach. Unlikely for established
|
|
149
|
-
internal patterns or well-documented conventions.
|
|
177
|
+
**2. Add phase details:**
|
|
150
178
|
|
|
151
|
-
|
|
179
|
+
Insert full phase entry matching roadmapper format with (INSERTED) marker:
|
|
152
180
|
|
|
153
|
-
|
|
181
|
+
```
|
|
182
|
+
### Phase {decimal_phase}: {Name} (INSERTED)
|
|
183
|
+
**Goal**: {approved goal}
|
|
184
|
+
**Depends on**: Phase {after_phase}
|
|
185
|
+
**Requirements**: {REQ-IDs comma-separated}
|
|
186
|
+
**Success Criteria** (what must be TRUE):
|
|
187
|
+
1. {criterion}
|
|
188
|
+
2. {criterion}
|
|
189
|
+
3. {criterion}
|
|
190
|
+
**Discuss**: {Likely (reason) | Unlikely (reason)}
|
|
191
|
+
**Discuss topics**: {topics} ← only if Likely
|
|
192
|
+
**Design**: {Likely (reason) | Unlikely (reason)}
|
|
193
|
+
**Design focus**: {focus} ← only if Likely
|
|
194
|
+
**Research**: {Likely (reason) | Unlikely (reason)}
|
|
195
|
+
**Research topics**: {topics} ← only if Likely
|
|
196
|
+
```
|
|
154
197
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
**Depends on:** Phase {after_phase}
|
|
160
|
-
**Discuss**: {Likely (reason) | Unlikely (reason)}
|
|
161
|
-
**Discuss topics**: {topics} ← only if Likely
|
|
162
|
-
**Design**: {Likely (reason) | Unlikely (reason)}
|
|
163
|
-
**Design focus**: {focus} ← only if Likely
|
|
164
|
-
**Research**: {Likely (reason) | Unlikely (reason)}
|
|
165
|
-
**Research topics**: {topics} ← only if Likely
|
|
166
|
-
|
|
167
|
-
**Details:**
|
|
168
|
-
[To be added during planning]
|
|
169
|
-
```
|
|
198
|
+
**3. Update progress table** — insert row in correct position:
|
|
199
|
+
```
|
|
200
|
+
| {decimal_phase}. {Name} (INSERTED) | Not started | - |
|
|
201
|
+
```
|
|
170
202
|
|
|
171
|
-
|
|
203
|
+
Write updated roadmap back to file.
|
|
172
204
|
|
|
173
205
|
The "(INSERTED)" marker helps identify decimal phases as urgent insertions.
|
|
174
206
|
|
|
@@ -194,14 +226,17 @@ Present completion summary:
|
|
|
194
226
|
|
|
195
227
|
```
|
|
196
228
|
Phase {decimal_phase} inserted after Phase {after_phase}:
|
|
197
|
-
-
|
|
229
|
+
- Goal: {goal}
|
|
230
|
+
- Requirements: {REQ-IDs}
|
|
231
|
+
- Success criteria: {count}
|
|
198
232
|
- Directory: .planning/phases/{decimal-phase}-{slug}/
|
|
199
233
|
- Status: Not planned yet
|
|
200
234
|
- Marker: (INSERTED) - indicates urgent work
|
|
201
235
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
236
|
+
Files updated:
|
|
237
|
+
- .planning/ROADMAP.md
|
|
238
|
+
- .planning/REQUIREMENTS.md
|
|
239
|
+
- .planning/STATE.md
|
|
205
240
|
```
|
|
206
241
|
|
|
207
242
|
Read `~/.claude/mindsystem/references/routing/next-phase-routing.md` and follow its instructions
|
|
@@ -227,15 +262,18 @@ ms-tools set-last-command "ms:insert-phase $ARGUMENTS"
|
|
|
227
262
|
- Don't modify the target phase content
|
|
228
263
|
- Don't create plans yet (that's /ms:plan-phase)
|
|
229
264
|
- Don't commit changes (user decides when to commit)
|
|
230
|
-
|
|
265
|
+
- Don't write skeletal "[To be planned]" entries — derive a real goal and success criteria
|
|
266
|
+
</anti_patterns>
|
|
231
267
|
|
|
232
268
|
<success_criteria>
|
|
233
269
|
Phase insertion is complete when:
|
|
234
270
|
|
|
235
|
-
- [ ]
|
|
236
|
-
- [ ]
|
|
237
|
-
- [ ] Phase
|
|
271
|
+
- [ ] Specification derived with outcome-focused goal and 2-5 observable success criteria
|
|
272
|
+
- [ ] Requirements derived with REQ-IDs and REQUIREMENTS.md updated with traceability mapping
|
|
273
|
+
- [ ] Phase directory and roadmap entry created with (INSERTED) marker and correct decimal number
|
|
274
|
+
- [ ] Phase inserted after target phase, before next integer phase
|
|
275
|
+
- [ ] Roadmap entry matches roadmapper format (Goal, Requirements, Success Criteria, pre-work flags)
|
|
238
276
|
- [ ] STATE.md updated with roadmap evolution note
|
|
239
|
-
- [ ]
|
|
277
|
+
- [ ] User approved specification before writing
|
|
240
278
|
- [ ] User informed of next steps and dependency implications
|
|
241
|
-
|
|
279
|
+
</success_criteria>
|
|
@@ -130,7 +130,7 @@ Milestone name: $ARGUMENTS (optional — will emerge during discovery if not pro
|
|
|
130
130
|
|
|
131
131
|
6. **Adaptive depth based on response clarity:**
|
|
132
132
|
|
|
133
|
-
- **Clear, detailed response** → brief confirmation ("Sounds like you want X, Y, Z — let me confirm a few things"), then
|
|
133
|
+
- **Clear, detailed response** → brief confirmation ("Sounds like you want X, Y, Z — let me confirm a few things"), then build on what they shared rather than re-asking
|
|
134
134
|
- **Vague response** → probe with AskUserQuestion, explore features, challenge vagueness
|
|
135
135
|
- **External context shared** → integrate it, clarify implications, ask follow-ups
|
|
136
136
|
|
|
@@ -19,7 +19,7 @@ allowed-tools:
|
|
|
19
19
|
Create executable phase prompt with discovery, context injection, and task breakdown.
|
|
20
20
|
|
|
21
21
|
Purpose: Break down roadmap phases into concrete, executable PLAN.md files that Claude can execute.
|
|
22
|
-
Output:
|
|
22
|
+
Output: PLAN.md file(s) in the phase directory (single plan by default; multiple when multi_plan enabled)
|
|
23
23
|
|
|
24
24
|
</objective>
|
|
25
25
|
|
|
@@ -86,7 +86,7 @@ Check for `.planning/codebase/` and load relevant documents based on phase type.
|
|
|
86
86
|
- Perform mandatory discovery (Level 0-3 as appropriate)
|
|
87
87
|
- Scan project history via context scanner script (prior decisions, issues, debug resolutions, adhoc learnings, cross-milestone patterns)
|
|
88
88
|
- Break phase into tasks
|
|
89
|
-
-
|
|
89
|
+
- Determine plan grouping (single plan by default; multi-plan with user confirmation when enabled)
|
|
90
90
|
- Discover relevant project skills, confirm with user
|
|
91
91
|
- Hand off tasks + proposed grouping + confirmed skills to plan-writer subagent
|
|
92
92
|
- Create PLAN.md file(s) with executable structure
|
|
@@ -94,7 +94,7 @@ Check for `.planning/codebase/` and load relevant documents based on phase type.
|
|
|
94
94
|
6. **Update last command:** `ms-tools set-last-command "ms:plan-phase $ARGUMENTS"`
|
|
95
95
|
|
|
96
96
|
7. **Risk assessment**
|
|
97
|
-
- Calculate risk score from context already loaded (task count,
|
|
97
|
+
- Calculate risk score from context already loaded (task count, external services, CONTEXT.md, cross-cutting concerns, new deps, complex domains)
|
|
98
98
|
- Present score + top factors via AskUserQuestion
|
|
99
99
|
- Tier-based recommendation: Skip (0-39), Optional (40-69), Verify (70+)
|
|
100
100
|
- If user chooses verify: spawn ms-plan-checker, surface results
|
|
@@ -103,7 +103,7 @@ Check for `.planning/codebase/` and load relevant documents based on phase type.
|
|
|
103
103
|
|
|
104
104
|
<success_criteria>
|
|
105
105
|
|
|
106
|
-
-
|
|
106
|
+
- PLAN.md file(s) created in .planning/phases/XX-name/
|
|
107
107
|
- Each plan has: Context, Changes, Verification, Must-Haves (pure markdown format)
|
|
108
108
|
- Must-Haves derived as markdown checklist of user-observable truths
|
|
109
109
|
- Changes are specific enough for Claude to execute
|
|
@@ -32,7 +32,7 @@ Store the result as `{dev_url}`.
|
|
|
32
32
|
If `HAS_STATE`:
|
|
33
33
|
1. Open app headless at `{dev_url}`
|
|
34
34
|
2. Check current URL — if redirected to a login/auth path, auth has expired
|
|
35
|
-
3. If still on app pages: auth valid, proceed to Derive
|
|
35
|
+
3. If still on app pages: auth valid, proceed to Derive User Journeys
|
|
36
36
|
|
|
37
37
|
If `NO_STATE` or auth expired:
|
|
38
38
|
1. Close headless browser
|
|
@@ -47,9 +47,9 @@ If `NO_STATE` or auth expired:
|
|
|
47
47
|
```
|
|
48
48
|
5. If user skips: proceed to code_review, skip browser verification
|
|
49
49
|
|
|
50
|
-
## Derive
|
|
50
|
+
## Derive User Journeys
|
|
51
51
|
|
|
52
|
-
Transform SUMMARY.md accomplishments into
|
|
52
|
+
Transform SUMMARY.md accomplishments into user journeys for the browser verifier.
|
|
53
53
|
|
|
54
54
|
**Step 1: Read summaries**
|
|
55
55
|
|
|
@@ -62,29 +62,38 @@ For each SUMMARY, extract:
|
|
|
62
62
|
- **mock_hints** frontmatter (if present) — specifically `external_data` entries
|
|
63
63
|
- **key-files** frontmatter (if present) — for route inference
|
|
64
64
|
|
|
65
|
-
**Step 3: Derive
|
|
65
|
+
**Step 3: Derive user journeys**
|
|
66
66
|
|
|
67
|
-
For each user-observable accomplishment, derive:
|
|
68
|
-
- `name`:
|
|
69
|
-
- `
|
|
70
|
-
- `
|
|
71
|
-
- `
|
|
67
|
+
For each user-observable accomplishment, derive a journey:
|
|
68
|
+
- `name`: verb-first — what the user is trying to accomplish (e.g., "Create a new project via the Add button")
|
|
69
|
+
- `start`: page reachable via sidebar/nav (NOT a deep URL)
|
|
70
|
+
- `steps`: ordered actions — click, fill, submit, verify state change
|
|
71
|
+
- `success`: what should be true after completing the journey
|
|
72
72
|
- `needs_backend_data`: true/false (from mock_hints `external_data` entries)
|
|
73
73
|
|
|
74
|
+
**Derivation rules:**
|
|
75
|
+
- New pages/routes: journey starts from parent page, navigates via UI
|
|
76
|
+
- Forms: MUST include fill AND submit
|
|
77
|
+
- Toggles/filters: MUST include activate AND deactivate
|
|
78
|
+
- CRUD: one journey per built operation
|
|
79
|
+
- Modals: open, interact, confirm — not just "modal opens"
|
|
80
|
+
|
|
74
81
|
**Step 4: Filter**
|
|
75
82
|
|
|
76
|
-
Include: UI renders, navigation, forms, data display, visual states, user interactions.
|
|
83
|
+
Include: UI renders, navigation, forms, data display, visual states, user interactions — each as a complete journey.
|
|
77
84
|
Exclude: refactors, type changes, API internals, test files, build config, non-visual changes.
|
|
78
85
|
|
|
79
86
|
**Step 5: Group and format**
|
|
80
87
|
|
|
81
|
-
Group
|
|
88
|
+
Group journeys by starting area for efficient navigation. Format as a numbered list:
|
|
82
89
|
|
|
83
90
|
```
|
|
84
91
|
1. **{name}**
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
Start: {start page/area}
|
|
93
|
+
Steps:
|
|
94
|
+
- {action 1}
|
|
95
|
+
- {action 2}
|
|
96
|
+
Success: {what should be true after}
|
|
88
97
|
Needs backend data: {yes/no}
|
|
89
98
|
|
|
90
99
|
2. **{name}**
|
|
@@ -93,7 +102,7 @@ Group items by route for efficient navigation. Format as a numbered list:
|
|
|
93
102
|
|
|
94
103
|
## Spawn
|
|
95
104
|
|
|
96
|
-
Spawn the browser verifier agent after auth is established and
|
|
105
|
+
Spawn the browser verifier agent after auth is established and journeys are derived:
|
|
97
106
|
|
|
98
107
|
```
|
|
99
108
|
Task(
|
|
@@ -104,16 +113,16 @@ Dev URL: {dev_url}
|
|
|
104
113
|
Auth state: .agent-browser-state.json
|
|
105
114
|
Screenshots directory: {phase_dir}/screenshots
|
|
106
115
|
|
|
107
|
-
##
|
|
116
|
+
## User Journeys
|
|
108
117
|
|
|
109
|
-
{
|
|
118
|
+
{derived_journeys}
|
|
110
119
|
|
|
111
120
|
## Backend Context
|
|
112
121
|
|
|
113
|
-
{summary of which
|
|
114
|
-
|
|
122
|
+
{summary of which journeys need real backend data — from mock_hints external_data entries.
|
|
123
|
+
Journeys needing backend data may show empty states or errors — mark as ENVIRONMENT_BLOCKED, not ISSUE.}
|
|
115
124
|
|
|
116
|
-
|
|
125
|
+
Complete each user journey end-to-end. Save all screenshots to {phase_dir}/screenshots/.
|
|
117
126
|
Fix trivial issues inline. Return structured report.",
|
|
118
127
|
subagent_type="ms-browser-verifier"
|
|
119
128
|
)
|
|
@@ -138,6 +147,6 @@ Report: "Browser verification: {N} issues found (see screenshots in {phase_dir}/
|
|
|
138
147
|
Note issues for verify-work — these are candidates for manual UAT.
|
|
139
148
|
|
|
140
149
|
**`all_passed`:**
|
|
141
|
-
Report: "Browser verification: all {N}
|
|
150
|
+
Report: "Browser verification: all {N} journeys passed"
|
|
142
151
|
|
|
143
152
|
</browser_verification>
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Phase Specification Derivation
|
|
2
|
+
|
|
3
|
+
Shared algorithm for deriving goal, success criteria, requirements, and pre-work flags from a user's phase description. Used by `add-phase` and `insert-phase`.
|
|
4
|
+
|
|
5
|
+
## Variables
|
|
6
|
+
|
|
7
|
+
Set by calling command before loading this reference:
|
|
8
|
+
|
|
9
|
+
- `{PHASE_ID}` — phase number (integer like `7` or decimal like `06.1`)
|
|
10
|
+
- `{PHASE_MARKER}` — empty for add-phase, `(INSERTED)` for insert-phase
|
|
11
|
+
|
|
12
|
+
## Input Assessment
|
|
13
|
+
|
|
14
|
+
Read `.planning/PROJECT.md` for vision and domain context (target audience, project scope).
|
|
15
|
+
|
|
16
|
+
Proceed directly when the user's description provides enough context to derive a confident specification — clear domain, identifiable user outcomes, enough scope to define 2-5 success criteria.
|
|
17
|
+
|
|
18
|
+
When scope is ambiguous or domain is unclear, ask targeted clarifying questions before deriving. Keep asking until confident.
|
|
19
|
+
|
|
20
|
+
Use AskUserQuestion with concrete options derived from PROJECT.md/ROADMAP.md context:
|
|
21
|
+
- header: "Phase Clarification"
|
|
22
|
+
- question: specific ambiguity identified
|
|
23
|
+
- options: 2-4 concrete interpretations plus "Something else"
|
|
24
|
+
|
|
25
|
+
Examples of when to ask:
|
|
26
|
+
- "Add notifications" → notifications for what? (new content, billing events, system alerts, all of these?)
|
|
27
|
+
- "Fix performance" → which user-facing flow? (page load, search, data export?)
|
|
28
|
+
- "Add settings" → which settings? (account, preferences, integrations?)
|
|
29
|
+
|
|
30
|
+
Examples of when to proceed directly:
|
|
31
|
+
- "Add dark mode toggle to settings page" → clear scope, clear UI, clear outcome
|
|
32
|
+
- "Add Stripe subscription billing with plan selection" → clear domain, clear integration
|
|
33
|
+
|
|
34
|
+
## Derivation Algorithm
|
|
35
|
+
|
|
36
|
+
### 1. Goal Statement
|
|
37
|
+
|
|
38
|
+
Transform the description into an outcome-focused goal:
|
|
39
|
+
|
|
40
|
+
- Good: "Users can manage subscription billing without edge-case failures"
|
|
41
|
+
- Good: "Content creators can schedule posts for future publication"
|
|
42
|
+
- Good: "Administrators can monitor system health through a real-time dashboard"
|
|
43
|
+
- Bad: "Fix subscription billing" (task, not outcome)
|
|
44
|
+
- Bad: "Add scheduling feature" (feature label, not user outcome)
|
|
45
|
+
- Bad: "Implement admin dashboard" (implementation task, not user value)
|
|
46
|
+
|
|
47
|
+
Use existing phase goals from ROADMAP.md as style reference.
|
|
48
|
+
|
|
49
|
+
### 2. Success Criteria (2-5)
|
|
50
|
+
|
|
51
|
+
Ask: "What must be TRUE for users when this phase completes?"
|
|
52
|
+
|
|
53
|
+
- Each criterion must be verifiable by a human using the application
|
|
54
|
+
- Observable user behaviors, not implementation tasks
|
|
55
|
+
- Good: "User sees correct prorated amount when changing plans mid-cycle"
|
|
56
|
+
- Good: "User receives email confirmation within 30 seconds of signup"
|
|
57
|
+
- Good: "Dark mode persists across browser sessions"
|
|
58
|
+
- Bad: "Billing calculation is fixed"
|
|
59
|
+
- Bad: "Email service is integrated"
|
|
60
|
+
- Bad: "CSS variables are used for theming"
|
|
61
|
+
|
|
62
|
+
### 3. Requirements with REQ-IDs
|
|
63
|
+
|
|
64
|
+
Create atomic, checkable requirements:
|
|
65
|
+
|
|
66
|
+
- Follow existing category patterns from REQUIREMENTS.md (e.g., if AUTH-01..AUTH-04 exist, continue with AUTH-05)
|
|
67
|
+
- If the work fits an existing category, reuse that prefix and continue numbering
|
|
68
|
+
- If the work introduces a new domain, create a new category prefix
|
|
69
|
+
- User-centric: "User can X" not "System does Y"
|
|
70
|
+
- Each requirement maps to Phase {PHASE_ID}
|
|
71
|
+
|
|
72
|
+
The calling command has already extracted existing REQ-ID categories and highest numbers from REQUIREMENTS.md — use that context.
|
|
73
|
+
|
|
74
|
+
### 4. Pre-work Flags
|
|
75
|
+
|
|
76
|
+
Analyze the description to determine:
|
|
77
|
+
|
|
78
|
+
**Discuss**: Default Likely — enumerate 2-4 assumptions or open questions specific
|
|
79
|
+
to the phase. Unlikely only for fully mechanical zero-decision work (version bump,
|
|
80
|
+
rename-only refactor, config-only change, pure deletion/cleanup).
|
|
81
|
+
|
|
82
|
+
**Design**: Likely when description involves UI work, visual elements, forms,
|
|
83
|
+
dashboards, or multi-screen flows. Unlikely for backend-only, API, infrastructure,
|
|
84
|
+
or established UI patterns.
|
|
85
|
+
|
|
86
|
+
**Research**: Likely when description mentions external APIs/services, new
|
|
87
|
+
libraries/frameworks, or unclear technical approach. Unlikely for established
|
|
88
|
+
internal patterns or well-documented conventions.
|
|
89
|
+
|
|
90
|
+
Use binary Likely/Unlikely with parenthetical reason. Include topics/focus only when Likely.
|
|
91
|
+
|
|
92
|
+
## Presentation & Approval
|
|
93
|
+
|
|
94
|
+
Present the full specification:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
## Phase {PHASE_ID}: {Name} {PHASE_MARKER}
|
|
98
|
+
|
|
99
|
+
**Goal:** {proposed goal}
|
|
100
|
+
|
|
101
|
+
**Success Criteria:**
|
|
102
|
+
1. {criterion}
|
|
103
|
+
2. {criterion}
|
|
104
|
+
3. {criterion}
|
|
105
|
+
|
|
106
|
+
**New Requirements:**
|
|
107
|
+
- [ ] **{CAT}-{NN}**: {description}
|
|
108
|
+
- [ ] **{CAT}-{NN}**: {description}
|
|
109
|
+
|
|
110
|
+
**Pre-work:** Discuss {L/U} | Design {L/U} | Research {L/U}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Use AskUserQuestion:
|
|
114
|
+
- header: "Phase Specification"
|
|
115
|
+
- question: "Does this capture what Phase {PHASE_ID} should deliver?"
|
|
116
|
+
- options:
|
|
117
|
+
- "Approve" — Proceed with this specification
|
|
118
|
+
- "Adjust" — I want to refine the goal, criteria, or requirements
|
|
119
|
+
- "Add context" — I need to provide more detail first
|
|
120
|
+
|
|
121
|
+
If "Adjust": Ask what to change, revise, re-present.
|
|
122
|
+
If "Add context": Get additional detail, re-derive, re-present.
|
|
123
|
+
Loop until approved.
|
|
124
|
+
|
|
125
|
+
## Requirements Update
|
|
126
|
+
|
|
127
|
+
Update REQUIREMENTS.md with the approved requirements:
|
|
128
|
+
|
|
129
|
+
1. Append new requirements under the appropriate category section in `## v1 Requirements`:
|
|
130
|
+
- If category exists: add new requirements after the last requirement in that category
|
|
131
|
+
- If new category: add new category section after last existing category
|
|
132
|
+
|
|
133
|
+
2. Update `## Traceability` table — append rows for each new requirement:
|
|
134
|
+
```
|
|
135
|
+
| {REQ-ID} | Phase {PHASE_ID} | Pending |
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
3. Update coverage counts:
|
|
139
|
+
```
|
|
140
|
+
- v1 requirements: {X + new count} total
|
|
141
|
+
- Mapped to phases: {Y + new count}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
4. Update `*Last updated:*` footer:
|
|
145
|
+
```
|
|
146
|
+
*Last updated: {date} after Phase {PHASE_ID} addition*
|
|
147
|
+
```
|
|
@@ -68,10 +68,16 @@ Decimal phases appear between their surrounding integers in numeric order.
|
|
|
68
68
|
**Research topics**: [What needs investigating]
|
|
69
69
|
|
|
70
70
|
### Phase 2.1: Critical Fix (INSERTED)
|
|
71
|
-
**Goal**: [
|
|
71
|
+
**Goal**: [Outcome-focused goal derived during insertion]
|
|
72
72
|
**Depends on**: Phase 2
|
|
73
|
+
**Requirements**: [REQ-05, REQ-06]
|
|
73
74
|
**Success Criteria** (what must be TRUE):
|
|
74
|
-
1. [
|
|
75
|
+
1. [Observable behavior from user perspective]
|
|
76
|
+
2. [Observable behavior from user perspective]
|
|
77
|
+
**Discuss**: Likely (assumes X, unclear if Y)
|
|
78
|
+
**Discuss topics**: [What to clarify]
|
|
79
|
+
**Design**: Unlikely (backend fix)
|
|
80
|
+
**Research**: Unlikely (known patterns)
|
|
75
81
|
|
|
76
82
|
### Phase 3: [Name]
|
|
77
83
|
**Goal**: [What this phase delivers]
|
|
@@ -87,7 +87,7 @@ Governing principle: each question must save more context than it costs. A quest
|
|
|
87
87
|
- Looks right
|
|
88
88
|
- Some corrections (let me clarify)
|
|
89
89
|
- Let me reframe the task
|
|
90
|
-
- Additional questions (conditional): Only when exploration surfaced genuine behavioral ambiguity the user must resolve. Frame with implementation context discovered during exploration.
|
|
90
|
+
- Additional questions (conditional): Only when exploration surfaced genuine behavioral ambiguity the user must resolve. Frame with implementation context discovered during exploration. Continue until scope is unambiguous — focused work may need one question; multi-area work may need several.
|
|
91
91
|
|
|
92
92
|
**What NOT to ask** (Claude determines these from exploration):
|
|
93
93
|
- Technical approach or patterns
|
|
@@ -208,9 +208,9 @@ Present brief product analysis, then use AskUserQuestion:
|
|
|
208
208
|
- question: "How do you imagine this working?"
|
|
209
209
|
- options: 2-3 interpretations based on phase description, requirements, and industry context + "Let me describe it"
|
|
210
210
|
|
|
211
|
-
**2. Follow the thread
|
|
211
|
+
**2. Follow the thread:**
|
|
212
212
|
|
|
213
|
-
Follow the user's thread. Each round: apply product lens to the topic they raised, then AskUserQuestion with 2-3 interpretations + escape hatch. Use multiSelect for priority/essential questions.
|
|
213
|
+
Follow the user's thread. Each round: apply product lens to the topic they raised, then AskUserQuestion with 2-3 interpretations + escape hatch. Use multiSelect for priority/essential questions. Continue until you could write a CONTEXT.md that plan-phase can act on without clarifying questions — that's the downstream test. Don't ask about edge cases when core behaviors are still undefined; depth over breadth.
|
|
214
214
|
|
|
215
215
|
**3. Decision gate:**
|
|
216
216
|
|
|
@@ -298,12 +298,12 @@ ms-tools browser-check
|
|
|
298
298
|
|
|
299
299
|
**If exit 0 (READY):**
|
|
300
300
|
|
|
301
|
-
Ensure `$PHASE_DIR/*-SUMMARY.md` files are available (needed for
|
|
301
|
+
Ensure `$PHASE_DIR/*-SUMMARY.md` files are available (needed for journey derivation — may already be in context from wave reports).
|
|
302
302
|
|
|
303
303
|
Read `~/.claude/mindsystem/references/browser-verification.md` and follow its sections in order:
|
|
304
304
|
1. **Auth Flow** — establish browser authentication
|
|
305
|
-
2. **Derive
|
|
306
|
-
3. **Spawn** — launch verifier with derived
|
|
305
|
+
2. **Derive User Journeys** — transform SUMMARYs into user journeys
|
|
306
|
+
3. **Spawn** — launch verifier with derived journeys
|
|
307
307
|
4. **Post-Verifier Handling** — route by report status
|
|
308
308
|
|
|
309
309
|
**If exit 1 (MISSING_DEPS):**
|