mindsystem-cc 4.2.0 → 4.3.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.
Files changed (37) hide show
  1. package/README.md +19 -1
  2. package/agents/ms-browser-verifier.md +95 -40
  3. package/agents/ms-compounder.md +2 -2
  4. package/agents/ms-researcher.md +2 -1
  5. package/agents/ms-roadmapper.md +33 -0
  6. package/commands/ms/add-todo.md +4 -4
  7. package/commands/ms/adhoc.md +2 -1
  8. package/commands/ms/audit-milestone.md +3 -2
  9. package/commands/ms/complete-milestone.md +2 -3
  10. package/commands/ms/compound.md +3 -3
  11. package/commands/ms/config.md +3 -4
  12. package/commands/ms/create-roadmap.md +25 -14
  13. package/commands/ms/design-phase.md +13 -14
  14. package/commands/ms/execute-phase.md +31 -10
  15. package/commands/ms/help.md +1 -0
  16. package/commands/ms/map-codebase.md +1 -2
  17. package/commands/ms/new-milestone.md +3 -7
  18. package/commands/ms/new-project.md +6 -9
  19. package/commands/ms/progress.md +8 -62
  20. package/commands/ms/remove-phase.md +2 -9
  21. package/commands/ms/research-milestone.md +3 -8
  22. package/commands/ms/research-phase.md +17 -17
  23. package/commands/ms/verify-work.md +8 -2
  24. package/mindsystem/references/browser-verification.md +76 -9
  25. package/mindsystem/references/prework-status.md +2 -1
  26. package/mindsystem/references/routing/next-phase-routing.md +6 -5
  27. package/mindsystem/workflows/adhoc.md +14 -15
  28. package/mindsystem/workflows/compound.md +28 -17
  29. package/mindsystem/workflows/define-requirements.md +2 -1
  30. package/mindsystem/workflows/discuss-phase.md +11 -32
  31. package/mindsystem/workflows/execute-phase.md +57 -13
  32. package/mindsystem/workflows/execute-plan.md +3 -1
  33. package/mindsystem/workflows/map-codebase.md +4 -1
  34. package/mindsystem/workflows/mockup-generation.md +3 -2
  35. package/mindsystem/workflows/verify-work.md +21 -2
  36. package/package.json +1 -1
  37. package/scripts/ms-tools.py +27 -4
package/README.md CHANGED
@@ -187,11 +187,13 @@ You approve the plan structure and can adjust granularity.
187
187
 
188
188
  Runs without intervention. Each plan runs in a fresh subagent with the full context window available. Goal-backward verification checks that the phase achieved its intended outcome, not just that tasks got marked complete.
189
189
 
190
+ For web projects, browser verification launches a real browser against your dev server, derives a checklist from execution summaries, and verifies each route visually and programmatically. Clear mismatches get fixed inline; issues beyond visual fixes are reported with screenshot evidence for verify-work.
191
+
190
192
  Configurable code review produces separate commits for review changes. Patch files are generated for manual inspection.
191
193
 
192
194
  After execution, knowledge consolidation updates subsystem-scoped knowledge files. Future phases touching the same subsystems start with accumulated context: decisions made, patterns established, pitfalls encountered.
193
195
 
194
- **Creates:** `SUMMARY.md`, `VERIFICATION.md`, `.patch` files, knowledge file updates.
196
+ **Creates:** `SUMMARY.md`, `VERIFICATION.md`, `.patch` files, screenshots, knowledge file updates.
195
197
 
196
198
  ### 9. Verify work
197
199
 
@@ -251,6 +253,10 @@ Orchestration metadata (wave grouping, dependencies) lives in `EXECUTION-ORDER.m
251
253
 
252
254
  Unnecessary instructions aren't wasted space — they interfere with the ones that matter. Each instruction passes a reliability test: does removing this degrade output in the actual runtime context? Every command, workflow, and agent definition gets audited to cut that interference. Audited agents show 35-39% context reduction with no behavioral regression.
253
255
 
256
+ ### Browser verification
257
+
258
+ During execute-phase, web projects get automatic visual QA via [agent-browser](https://github.com/anthropics/agent-browser). A checklist is derived from execution summaries, then each route is verified with screenshots and programmatic diagnostics (console logs, JS errors, network failures). Clear mismatches get fixed inline; anything deeper is reported with screenshot evidence for verify-work. Enabled by default — disable per-project via `/ms:config`.
259
+
254
260
  ### Built-in code review
255
261
 
256
262
  Configurable per tier: adhoc, phase, or milestone. Runs after execution and produces separate commits for inspection. Ships with structural analysis (`ms-code-reviewer`) and clarity-focused simplification (`ms-code-simplifier`), but you can point any tier at your own custom reviewer agent via `.planning/config.json`.
@@ -296,6 +302,11 @@ Requirements you want but haven't shipped yet are tracked in `PROJECT.md` with o
296
302
  - [uv](https://docs.astral.sh/uv/) — Python package runner used by CLI scripts (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
297
303
  - Python 3.10+ (used by uv for scripts)
298
304
 
305
+ **Optional (for web projects):**
306
+
307
+ - [agent-browser](https://github.com/anthropics/agent-browser) — enables browser verification during execute-phase (`npm install -g agent-browser`)
308
+ - `cwebp` — optimizes verification screenshots to WebP (`brew install webp`)
309
+
299
310
  ---
300
311
 
301
312
  ## Quick start
@@ -452,6 +463,13 @@ Mindsystem stores project config in `.planning/config.json`. Run `/ms:config` to
452
463
  // "auto" (default) | "ask" | "off"
453
464
  "open_mockups": "auto",
454
465
 
466
+ // Browser verification during execute-phase (web projects only).
467
+ // Launches a real browser, derives checklist from summaries,
468
+ // screenshots + console/network diagnostics.
469
+ "browser_verification": {
470
+ "enabled": true // default: true for web projects
471
+ },
472
+
455
473
  // External task tracker integration (Linear only for now).
456
474
  // null → disabled (default)
457
475
  "task_tracker": {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ms-browser-verifier
3
- description: Automated functional verification via browser. Tests observable truths, fixes issues inline, reports patterns for knowledge compounding.
3
+ description: Visual PR review via browser. Verifies delivered UI against a checklist, fixes trivial issues inline, reports blockers with screenshot evidence.
4
4
  model: sonnet
5
5
  tools: Read, Write, Edit, Bash, Grep, Glob
6
6
  skills:
@@ -9,9 +9,9 @@ color: green
9
9
  ---
10
10
 
11
11
  <role>
12
- You are a Mindsystem browser verifier. You test observable truths from VERIFICATION.md by interacting with the app in a real browser. When you find issues, you fix them inline and re-verify.
12
+ You are a senior engineer doing a visual PR review. You receive a browser checklist from the orchestrator and verify each item by navigating to the app, taking screenshots, and evaluating what you see. Fix clear visual mismatches in project source code. Report blockers with screenshot evidence.
13
13
 
14
- **Critical mindset:** Test what users see, not what code claims. A passing structural check means files existyou verify they actually work in the browser.
14
+ **Critical mindset:** Verify delivered views, not framework internals. If your investigation leads outside project source files, stopthat's an ISSUE to report, not a rabbit hole to explore.
15
15
  </role>
16
16
 
17
17
  <process>
@@ -31,72 +31,127 @@ Auth is handled by the orchestrator before spawning this agent. If the orchestra
31
31
  Open the app URL headless. If redirected to login, report auth failure and exit — do not attempt to automate auth.
32
32
  </step>
33
33
 
34
- <step name="extract_testable_truths">
35
- Read VERIFICATION.md from the phase directory. Extract observable truths and filter for browser-testable ones.
34
+ <step name="environment_preflight">
35
+ Navigate to the app's main route. Screenshot `00-preflight.png`.
36
36
 
37
- Read plans and summaries to understand pages, routes, and components involved.
37
+ Read diagnostics:
38
+ ```bash
39
+ agent-browser console
40
+ agent-browser errors
41
+ agent-browser network requests
42
+ ```
38
43
 
39
- **Browser-testable:** UI renders, navigation works, form submission succeeds, data displays correctly, interactions produce expected state changes.
44
+ Evaluate:
45
+ - Does the app load visually?
46
+ - Console errors or uncaught exceptions?
47
+ - Failed network requests (4xx/5xx)?
48
+ - Blank page?
40
49
 
41
- **Not browser-testable:** API internals, database state, background job execution, server-side logging.
50
+ **If systemic issue** (app won't load, white screen, critical error, cascade of failed requests):
51
+ - Screenshot the failure
52
+ - Return `environment_blocked` report to orchestrator with screenshot and diagnostic output
53
+ - Stop — no point testing individual items
54
+
55
+ **If app loads with minor warnings:**
56
+ - Note warnings and proceed to checklist verification
42
57
  </step>
43
58
 
44
- <step name="verify_each_truth">
59
+ <step name="verify_checklist">
60
+ Single loop over all checklist items with an integrated decision tree.
61
+
45
62
  Create the screenshots directory:
46
63
 
47
64
  ```bash
48
65
  mkdir -p {screenshots_dir}
49
66
  ```
50
67
 
51
- For each testable truth:
52
- 1. Navigate to the relevant page/route
53
- 2. Take a screenshot, save to `{screenshots_dir}/{truth-slug}.png`
54
- 3. Interact as needed (click, type, submit)
55
- 4. Wait for `networkidle` before verifying expected state
56
- 5. Verify expected state (element exists, text matches, route changed)
57
- 6. Take a post-verification screenshot: `{screenshots_dir}/{truth-slug}-result.png`
68
+ For each checklist item:
58
69
 
59
- **Critical:** Re-snapshot after every DOM change. Element references go stale after navigation or dynamic updates.
60
- </step>
70
+ ```
71
+ agent-browser errors --clear ← isolate errors per item
72
+
73
+ Navigate to route → Screenshot → Evaluate
74
+
75
+ Match expected?
76
+ YES → PASSED, next item
77
+ NO → Read diagnostics:
78
+ agent-browser errors
79
+ agent-browser console
80
+ agent-browser network requests
81
+
82
+ Environment issue? (uncaught exception, failed API request, 4xx/5xx, empty data)
83
+ YES → ENVIRONMENT_BLOCKED for this item
84
+ Same error on 2+ consecutive items? → stop, return report
85
+ Otherwise → next item
86
+ NO → Investigate in project source files (diagnostics narrow the search)
87
+ → Hit a stop signal? (see Investigation boundaries + Fix discipline) → ISSUE with screenshot and diagnostic evidence, next item
88
+ → Root cause found → Fix attempt → re-screenshot
89
+ Fix worked? → FIXED (commit), next item
90
+ Fix failed? → Different root-cause theory available?
91
+ YES → Second fix attempt (same flow)
92
+ NO → revert all changes (git checkout -- {files}), ISSUE, next item
93
+ ```
61
94
 
62
- <step name="fix_issues">
63
- If an issue is found:
64
- 1. Investigate: read source files for the component/page
65
- 2. Fix: use Edit/Write to correct the issue
66
- 3. Wait for hot reload (probe dev server)
67
- 4. Re-verify in browser
68
- 5. If fixed: commit with `fix({phase}-browser): {description}`
69
- 6. If fix fails after one retry: flag as unresolved, continue to next truth
95
+ **Per-item screenshots:**
96
+ - `{NN}-{item-slug}.webp` initial state (`.png` if cwebp unavailable)
97
+ - `{NN}-{item-slug}-result.webp` after interaction (if applicable)
98
+ - `{NN}-{item-slug}-fixed.webp` after fix (if applicable)
99
+
100
+ **Interactions:** If the checklist item includes an interaction (click, type, submit), perform it and screenshot the result.
70
101
  </step>
71
102
 
72
103
  <step name="close_and_report">
73
- Close the browser when all truths are verified.
74
-
75
- Return a structured report to the orchestrator:
104
+ Close the browser. Return a structured report to the orchestrator:
76
105
 
77
106
  ```
78
107
  ## Browser Verification Report
79
108
 
80
- **Tested:** {count} | **Passed:** {count} | **Fixed:** {count} | **Unresolved:** {count}
109
+ **Status:** {all_passed | has_issues | has_fixes | environment_blocked}
110
+ **Tested:** {count} | **Passed:** {count} | **Fixed:** {count} | **Issues:** {count} | **Blocked:** {count}
111
+
112
+ ### Screenshots
113
+
114
+ | # | Item | Status | Screenshot |
115
+ |---|------|--------|------------|
116
+ | 1 | {name} | PASSED | {filename} |
117
+ | 2 | {name} | FIXED | {filename} |
118
+ | 3 | {name} | ISSUE | {filename} |
81
119
 
82
120
  ### Fixes Applied
83
- - {what was wrong} → {what was fixed} | Files: {changed files}
121
+ - {what was wrong} → {what was fixed} | Commit: {hash}
84
122
 
85
- ### Unresolved Issues
86
- - {description} | Attempted: {what was tried}
123
+ ### Issues Found
124
+ - {description} | Screenshot: {filename} | Evidence: {what the screenshot shows} | Diagnostics: {console errors, failed network requests, or "none"}
87
125
 
88
- ### Patterns for Knowledge
89
- - {recurring pattern observed across multiple truths}
126
+ ### Environment Blockers
127
+ - {description} | Screenshot: {filename} | Diagnostics: {error messages, failed requests}
90
128
  ```
91
129
  </step>
92
130
 
93
131
  </process>
94
132
 
95
133
  <rules>
134
+
135
+ ## Screenshots
96
136
  - Save all screenshots to `{screenshots_dir}` — never to temp or working directory
97
- - Re-snapshot after every DOM change (refs go stale)
98
- - Wait for networkidle before verifying
99
- - Do not attempt to automate auth (orchestrator handles it)
100
- - One retry per fix, then flag and move on
101
- - Commit each fix atomically with `fix({phase}-browser):` prefix
137
+ - Re-snapshot after every DOM change (element refs go stale)
138
+ - Wait for networkidle before evaluating
139
+ - Convert screenshots to WebP after capture:
140
+ 1. Check once during preflight: `which cwebp`
141
+ 2. If available, after each screenshot: `cwebp -q 80 {file}.png -o {file}.webp && rm {file}.png`
142
+ 3. If unavailable: keep PNGs as-is
143
+
144
+ ## Investigation boundaries
145
+ - Only read project source files — never node_modules, dist, build output, or generated directories
146
+ - Never read framework/library source to understand why something doesn't work internally
147
+ - Read `agent-browser errors`, `agent-browser console`, and `agent-browser network requests` before investigating source code — if diagnostics show a failed API call or server error, it's ENVIRONMENT_BLOCKED, not a code fix
148
+ - If 2+ consecutive items show the same failure pattern, identify the shared root cause rather than investigating each individually
149
+
150
+ ## Fix discipline
151
+ - Fix the specific visual mismatch — don't restructure, refactor, or "improve" surrounding code
152
+ - A second fix attempt must be based on a different root-cause theory, not a variation of the first
153
+ - After 3 edit-screenshot cycles on one item without resolution, it's an ISSUE regardless
154
+ - Revert all failed fix attempts (`git checkout -- {files}`) before moving on
155
+ - Commit each successful fix atomically with `fix({phase}-browser): {description}` prefix
156
+
102
157
  </rules>
@@ -19,7 +19,7 @@ You are a Mindsystem knowledge compounder spawned by the compound workflow to up
19
19
  ## Required Context (provided by compound workflow)
20
20
 
21
21
  - **Input mode:** `git`, `file`, or `description`
22
- - **Change reference:** Git ref/range (git mode), file path (file mode), or description + exploration summary (description mode)
22
+ - **Change reference:** Git ref/range (git mode), file path (file mode), or description/conversation summary (description mode)
23
23
  - **Affected subsystems:** List confirmed by user in main context
24
24
  - **Subsystem vocabulary:** From config.json (for alignment validation)
25
25
 
@@ -47,7 +47,7 @@ Retrieve the raw changes based on input mode:
47
47
 
48
48
  - **Git mode:** `git show <ref>` for single commit, `git diff <range>` for ranges. Include `--stat` for file overview.
49
49
  - **File mode:** Read the file content. Run `git log --oneline -5 -- <path>` for recent history context.
50
- - **Description mode:** Use the provided exploration summary as change context. No additional reads needed.
50
+ - **Description mode:** Use the provided summary (from exploration or conversation context) as change context. No additional reads needed.
51
51
 
52
52
  ## Step 2: Read Existing Knowledge Files
53
53
 
@@ -483,7 +483,8 @@ Orchestrator provides:
483
483
 
484
484
  ```bash
485
485
  # For phase research, check for CONTEXT.md from discuss-phase
486
- PHASE_DIR=$(ls -d .planning/phases/${PHASE}-* 2>/dev/null | head -1)
486
+ ms-tools find-phase "${PHASE}"
487
+ # Extract PHASE_DIR from the `dir` field of the JSON output
487
488
  if [ -n "$PHASE_DIR" ]; then
488
489
  cat "${PHASE_DIR}"/*-CONTEXT.md 2>/dev/null
489
490
  fi
@@ -534,6 +534,19 @@ Verify 100% requirement mapping:
534
534
 
535
535
  If gaps found, include in draft for user decision.
536
536
 
537
+ ## Step 6b: Evaluate Subsystem Coverage
538
+
539
+ Compare phase domains against config.json `subsystems` array. Phases may introduce domains not in the current subsystem vocabulary.
540
+
541
+ 1. Parse `subsystems` from config.json (provided in planning context)
542
+ 2. For each phase, identify its primary domain (e.g., "Payment Processing" maps to `payments`)
543
+ 3. Match against existing subsystems — exact or close synonym counts as covered
544
+ 4. Collect unmatched domains as proposed additions
545
+
546
+ Include proposals in the return under `### Subsystem Proposals`. Do not modify config.json — the orchestrator handles confirmation and update.
547
+
548
+ If all phase domains map to existing subsystems, omit the section.
549
+
537
550
  ## Step 7: Write Files Immediately
538
551
 
539
552
  **Write files first, then return.** This ensures artifacts persist even if context is lost.
@@ -613,6 +626,16 @@ When files are written and returning to orchestrator:
613
626
 
614
627
  {For phases with Likely recommendations, include topics/focus}
615
628
 
629
+ {If new subsystems proposed:}
630
+
631
+ ### Subsystem Proposals
632
+
633
+ New domains detected that don't match existing subsystems:
634
+
635
+ | Proposed | Source Phase | Rationale |
636
+ |----------|-------------|-----------|
637
+ | {name} | Phase {N}: {phase-name} | {why this needs its own subsystem} |
638
+
616
639
  ### Files Ready for Review
617
640
 
618
641
  User can review actual files:
@@ -644,6 +667,16 @@ After incorporating user feedback and updating files:
644
667
  - .planning/ROADMAP.md
645
668
  - .planning/STATE.md (if needed)
646
669
 
670
+ {If new subsystems proposed:}
671
+
672
+ ### Subsystem Proposals
673
+
674
+ New domains detected that don't match existing subsystems:
675
+
676
+ | Proposed | Source Phase | Rationale |
677
+ |----------|-------------|-----------|
678
+ | {name} | Phase {N}: {phase-name} | {why this needs its own subsystem} |
679
+
647
680
  ### Updated Summary
648
681
 
649
682
  | Phase | Goal | Requirements |
@@ -101,12 +101,12 @@ subsystem: [from config.json]
101
101
  </step>
102
102
 
103
103
  <step name="git_commit">
104
+
105
+ **Update state and commit:**
106
+
104
107
  ```bash
105
108
  git add .planning/todos/[filename]
106
- git commit -m "$(cat <<'EOF'
107
- todo: [title] [subsystem|priority|estimate]
108
- EOF
109
- )"
109
+ git commit -m "todo: [title] [subsystem|priority|estimate]"
110
110
  ```
111
111
  </step>
112
112
 
@@ -57,7 +57,8 @@ Create execution directory, assemble context, spawn ms-adhoc-planner.
57
57
  </step>
58
58
 
59
59
  <step name="review_plan">
60
- Read generated plan, show summary to user, allow edits.
60
+ Read generated plan, show summary to user.
61
+ AskUserQuestion: approve, request edits, or abort.
61
62
  </step>
62
63
 
63
64
  <step name="spawn_executor">
@@ -373,10 +373,11 @@ After code review (all sources now available), generate or update `.planning/TEC
373
373
  5. **Assign `TD-{N}` IDs** continuing from highest existing ID
374
374
  6. **Write/update** `.planning/TECH-DEBT.md` — group items under `## Critical`, `## High`, `## Medium`, `## Low` sections per template. Omit empty sections.
375
375
 
376
- ## 8. Commit Audit Report
376
+ ## 8. Update state and commit:
377
377
 
378
378
  ```bash
379
- git add .planning/MILESTONE-AUDIT.md .planning/TECH-DEBT.md
379
+ ms-tools set-last-command "ms:audit-milestone $ARGUMENTS"
380
+ git add .planning/MILESTONE-AUDIT.md .planning/TECH-DEBT.md .planning/STATE.md
380
381
  git commit -m "$(cat <<'EOF'
381
382
  docs(milestone): complete {name} audit
382
383
 
@@ -124,16 +124,15 @@ Output: Milestone archived (roadmap + requirements), PROJECT.md evolved.
124
124
  - Update project reference with current core value and next focus
125
125
  - Reset current position for next milestone
126
126
 
127
- 10. **Commit:**
127
+ 10. **Update state and commit:**
128
128
 
129
+ - Run: `ms-tools set-last-command "ms:complete-milestone $ARGUMENTS"`
129
130
  - Stage: MILESTONES.md, PROJECT.md, STATE.md, archive files, deletions
130
131
  - Commit: `chore: archive {{name}} milestone`
131
132
 
132
133
  11. **Offer next steps:**
133
134
  - `/ms:new-milestone` — discover goals and update PROJECT.md
134
135
 
135
- 12. **Update last command:** `ms-tools set-last-command "ms:complete-milestone $ARGUMENTS"`
136
-
137
136
  </process>
138
137
 
139
138
  <success_criteria>
@@ -19,7 +19,7 @@ Input modes:
19
19
  - **Git reference:** SHA, range (`HEAD~3..HEAD`), or any git ref
20
20
  - **File path:** Path to a changed file
21
21
  - **Description:** Free-text description of changes
22
- - **No args:** Infer from current conversation context
22
+ - **No args:** Reflect on current conversation context + git data
23
23
  </objective>
24
24
 
25
25
  <execution_context>
@@ -34,7 +34,7 @@ Validate active project: check `.planning/config.json` exists.
34
34
  </step>
35
35
 
36
36
  <step name="resolve_change_context">
37
- Gather lightweight change context. Git mode: diff stats. File mode: recent git log. Description mode: spawn Explore agents to find relevant changes.
37
+ Gather lightweight change context. Git mode: diff stats. File mode: recent git log. No-args mode: reflect on conversation context + git diff/log; if context is thin, ask user for intent. Description mode: spawn Explore agents to find relevant changes.
38
38
  </step>
39
39
 
40
40
  <step name="determine_subsystems">
@@ -50,7 +50,7 @@ Spawn ms-compounder with input mode, change reference, confirmed subsystems, and
50
50
  </step>
51
51
 
52
52
  <step name="finalize">
53
- Update config.json if new subsystems confirmed. Commit knowledge file changes. Set last command.
53
+ Update config.json if new subsystems confirmed. Commit knowledge file changes. Set last command. Report results.
54
54
  </step>
55
55
 
56
56
  </process>
@@ -268,12 +268,11 @@ Check subsystems in config.json. If empty or missing, note:
268
268
 
269
269
  **Skip if no changes made.**
270
270
 
271
+ **Update state and commit:**
272
+
271
273
  ```bash
272
274
  git add .planning/config.json .gitignore
273
- git commit -m "$(cat <<'EOF'
274
- chore: configure mindsystem preferences
275
- EOF
276
- )"
275
+ git commit -m "chore: configure mindsystem preferences"
277
276
  ```
278
277
 
279
278
  </step>
@@ -136,8 +136,9 @@ Task(
136
136
  5. Map every v1 requirement to exactly one phase
137
137
  6. Derive 2-5 success criteria per phase (observable user behaviors)
138
138
  7. Validate 100% coverage
139
- 8. Write files immediately (REQUIREMENTS.md, ROADMAP.md, STATE.md)
140
- 9. Return ROADMAP CREATED with combined requirements + roadmap summary
139
+ 8. Evaluate subsystem coverage — compare phase domains against config.json subsystems, propose additions for unmatched domains
140
+ 9. Write files immediately (REQUIREMENTS.md, ROADMAP.md, STATE.md)
141
+ 10. Return ROADMAP CREATED with combined requirements + roadmap summary
141
142
 
142
143
  Write files first, then return. This ensures artifacts persist even if context is lost.
143
144
  </instructions>
@@ -200,6 +201,18 @@ Pre-work: Research [Likely/Unlikely] | Discuss [Likely/Unlikely] | Design [Likel
200
201
 
201
202
  [... continue for all phases ...]
202
203
 
204
+ {If roadmapper returned Subsystem Proposals:}
205
+
206
+ ### New Subsystems
207
+
208
+ The roadmap introduces domains not covered by current subsystems:
209
+
210
+ | Proposed | Source Phase | Rationale |
211
+ |----------|-------------|-----------|
212
+ | {name} | Phase {N} | {reason} |
213
+
214
+ These will be added to config.json upon approval.
215
+
203
216
  ---
204
217
  ```
205
218
  </step>
@@ -271,10 +284,15 @@ Return ROADMAP REVISED with changes made.
271
284
  </step>
272
285
 
273
286
  <step name="commit">
274
- After user approval:
287
+
288
+ **Update state and commit:**
275
289
 
276
290
  ```bash
291
+ # For each subsystem proposal the user approved (skip any rejected during revision):
292
+ ms-tools config-set subsystems --append "{subsystem-name}"
293
+
277
294
  git add .planning/REQUIREMENTS.md .planning/ROADMAP.md .planning/STATE.md
295
+ git diff --quiet .planning/config.json 2>/dev/null || git add .planning/config.json
278
296
  git commit -m "$(cat <<'EOF'
279
297
  docs: define requirements and create roadmap
280
298
 
@@ -293,14 +311,13 @@ EOF
293
311
  </step>
294
312
 
295
313
  <step name="create_phase_dirs">
296
- Create phase directories from the roadmap:
297
314
 
298
- ```bash
299
- ms-tools create-phase-dirs
300
- ```
315
+ **Update state and commit:**
301
316
 
302
317
  ```bash
303
- git add .planning/phases/
318
+ ms-tools create-phase-dirs
319
+ ms-tools set-last-command "ms:create-roadmap"
320
+ git add .planning/phases/ .planning/STATE.md
304
321
  git commit -m "chore: create phase directories from roadmap"
305
322
  ```
306
323
  </step>
@@ -318,12 +335,6 @@ Requirements and roadmap created:
318
335
  Read `~/.claude/mindsystem/references/routing/next-phase-routing.md` and follow its instructions to present "Next Up" with pre-work context for Phase $START_PHASE.
319
336
  </step>
320
337
 
321
- <step name="update_last_command">
322
- ```bash
323
- ms-tools set-last-command "ms:create-roadmap"
324
- ```
325
- </step>
326
-
327
338
  </process>
328
339
 
329
340
  <success_criteria>
@@ -30,9 +30,14 @@ Create design specifications for a phase. Spawns ms-designer agent with phase co
30
30
  <context>
31
31
  Phase number: $ARGUMENTS (required)
32
32
 
33
+ Resolve phase directory:
34
+ ```bash
35
+ ms-tools find-phase "$ARGUMENTS"
36
+ ```
37
+
33
38
  Check for existing design:
34
39
  ```bash
35
- ls .planning/phases/${PHASE}-*/*DESIGN.md 2>/dev/null
40
+ ls ${PHASE_DIR}/*DESIGN.md 2>/dev/null
36
41
  ```
37
42
  </context>
38
43
 
@@ -52,8 +57,7 @@ ms-tools find-phase "$ARGUMENTS"
52
57
  ## 2. Check Existing Design
53
58
 
54
59
  ```bash
55
- # Check for existing DESIGN.md
56
- PHASE_DIR=$(ls -d .planning/phases/${PHASE}-* 2>/dev/null | head -1)
60
+ # PHASE_DIR already resolved from find-phase in <context>
57
61
  ls "${PHASE_DIR}"/*-DESIGN.md 2>/dev/null
58
62
  ```
59
63
 
@@ -119,7 +123,7 @@ Extract from ROADMAP.md:
119
123
  **4b. Optional context - CONTEXT.md (from discuss-phase):**
120
124
 
121
125
  ```bash
122
- cat .planning/phases/${PHASE}-*/${PHASE}-CONTEXT.md 2>/dev/null
126
+ cat ${PHASE_DIR}/*-CONTEXT.md 2>/dev/null
123
127
  ```
124
128
 
125
129
  If exists, extract:
@@ -373,10 +377,11 @@ Task(
373
377
 
374
378
  **`## DESIGN COMPLETE`:**
375
379
 
376
- Commit the design file:
380
+ **Update state and commit:**
377
381
 
378
382
  ```bash
379
- git add .planning/phases/${PHASE}-*/*-DESIGN.md
383
+ ms-tools set-last-command "ms:design-phase $ARGUMENTS"
384
+ git add ${PHASE_DIR}/*-DESIGN.md .planning/STATE.md
380
385
  git commit -m "docs: create design for phase ${PHASE}"
381
386
  ```
382
387
 
@@ -386,12 +391,12 @@ Display summary from agent response:
386
391
  - Screens designed
387
392
  - Key design decisions
388
393
 
389
- Then present pre-work status: Read `~/.claude/mindsystem/references/prework-status.md` and show what's done vs still needed for this phase.
390
-
391
394
  Also offer:
392
395
  - **Refine design** — Discuss changes conversationally
393
396
  - **View full design** — Display DESIGN.md
394
397
 
398
+ Read `~/.claude/mindsystem/references/prework-status.md` and present what's done vs still needed for this phase.
399
+
395
400
  **`## DESIGN NEEDS CLARIFICATION`:**
396
401
 
397
402
  Present the question to user. Get response. Spawn continuation with the clarification.
@@ -431,12 +436,6 @@ Read `~/.claude/mindsystem/templates/design-iteration.md` and use the iteration
431
436
  - Verify "what needs improvement" was addressed
432
437
  - Update design version in DESIGN.md frontmatter
433
438
 
434
- ## 9. Update Last Command
435
-
436
- ```bash
437
- ms-tools set-last-command "ms:design-phase $ARGUMENTS"
438
- ```
439
-
440
439
  </process>
441
440
 
442
441
  <success_criteria>
@@ -113,8 +113,8 @@ ms-tools find-phase "$ARGUMENTS"
113
113
  - Write updated REQUIREMENTS.md
114
114
  - Skip if: REQUIREMENTS.md doesn't exist, or phase has no Requirements line
115
115
 
116
- 13. **Commit phase completion**
117
- Bundle all phase metadata updates in one commit:
116
+ 13. **Update state and commit:**
117
+ - Run: `ms-tools set-last-command "ms:execute-phase $ARGUMENTS"`
118
118
  - Stage: `git add .planning/ROADMAP.md .planning/STATE.md`
119
119
  - Stage knowledge files: `git add .planning/knowledge/*.md`
120
120
  - Stage PLAN.md deletions: `git add -u .planning/phases/{phase_dir}/*-PLAN.md`
@@ -123,8 +123,6 @@ ms-tools find-phase "$ARGUMENTS"
123
123
 
124
124
  14. **Offer next steps**
125
125
  - Route to next action (see `<offer_next>`)
126
-
127
- 15. **Update last command:** `ms-tools set-last-command "ms:execute-phase $ARGUMENTS"`
128
126
  </process>
129
127
 
130
128
  <offer_next>
@@ -147,8 +145,10 @@ Then route based on status:
147
145
  | Status | Route |
148
146
  |--------|-------|
149
147
  | `gaps_found` | Route C (gap closure) |
150
- | `passed` + more phases | Route A (next phase) |
151
- | `passed` + last phase | Route B (milestone complete) |
148
+ | `passed` + more phases | Route A (verify + next phase) |
149
+ | `passed` + last phase | Route B (verify + milestone complete) |
150
+
151
+ Thoroughness by default: verify-work is the primary "Next Up" in both routes. Assess skip context per workflow `offer_next` step.
152
152
 
153
153
  ---
154
154
 
@@ -161,19 +161,40 @@ Then route based on status:
161
161
  All {Y} plans finished. Phase goal verified.
162
162
  ```
163
163
 
164
- 2. Read `~/.claude/mindsystem/references/routing/next-phase-routing.md` and follow its instructions to present the "Next Up" section with pre-work context for Phase {Z+1}.
164
+ 2. Assess skip context (see workflow `offer_next` step for criteria).
165
+
166
+ 3. Present verify-work as "Next Up":
167
+ ```
168
+ ## ▶ Next Up
169
+
170
+ `/ms:verify-work {Z}` — validate {phase name} through manual acceptance testing
171
+
172
+ <sub>`/clear` first → fresh context window</sub>
165
173
 
166
- 3. After the "Next Up" section, add:
174
+ {If skip context: "Phase involved only {description} with no user-facing changes — skip if structural verification is sufficient."}
167
175
  ```
176
+
177
+ 4. Read `~/.claude/mindsystem/references/routing/next-phase-routing.md` to determine the most appropriate command for Phase {Z+1}. Present next phase context and options:
178
+ ```
179
+ **Phase {Z+1}: {Name}** — {Goal}
180
+ {If pre-work flagged: brief note about recommendations}
181
+
168
182
  **Also available:**
169
- - `/ms:verify-work {Z}` — manual acceptance testing before continuing
183
+ - `/ms:{suggested} {Z+1}` — {reason}
184
+ - `/ms:plan-phase {Z+1}` — skip pre-work, plan directly
170
185
  ```
171
186
 
172
187
  ---
173
188
 
174
189
  **Route B: Phase verified, milestone complete**
175
190
 
176
- Show phase completion summary, then read `~/.claude/mindsystem/references/routing/milestone-complete-routing.md` and follow its instructions to present the milestone complete section.
191
+ Follow Route A steps 1-3, then present milestone options:
192
+ ```
193
+ **Also available:**
194
+ - `/ms:audit-milestone` — verify requirements, cross-phase integration, E2E flows
195
+ - `/ms:complete-milestone` — skip audit, archive directly
196
+ - `/ms:add-phase <description>` — add another phase first
197
+ ```
177
198
 
178
199
  ---
179
200