mindforge-cc 2.0.0 → 2.1.1

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 (323) hide show
  1. package/.agent/bin/lib/commands.cjs +959 -0
  2. package/.agent/bin/lib/config.cjs +421 -0
  3. package/.agent/bin/lib/core.cjs +1166 -0
  4. package/.agent/bin/lib/frontmatter.cjs +307 -0
  5. package/.agent/bin/lib/init.cjs +1336 -0
  6. package/.agent/bin/lib/milestone.cjs +252 -0
  7. package/.agent/bin/lib/model-profiles.cjs +68 -0
  8. package/.agent/bin/lib/phase.cjs +888 -0
  9. package/.agent/bin/lib/profile-output.cjs +952 -0
  10. package/.agent/bin/lib/profile-pipeline.cjs +539 -0
  11. package/.agent/bin/lib/roadmap.cjs +329 -0
  12. package/.agent/bin/lib/security.cjs +356 -0
  13. package/.agent/bin/lib/state.cjs +969 -0
  14. package/.agent/bin/lib/template.cjs +222 -0
  15. package/.agent/bin/lib/uat.cjs +189 -0
  16. package/.agent/bin/lib/verify.cjs +851 -0
  17. package/.agent/bin/lib/workstream.cjs +491 -0
  18. package/.agent/bin/mindforge-tools.cjs +897 -0
  19. package/.agent/file-manifest.json +219 -0
  20. package/.agent/hooks/mindforge-check-update.js +114 -0
  21. package/.agent/hooks/mindforge-context-monitor.js +156 -0
  22. package/.agent/hooks/mindforge-prompt-guard.js +96 -0
  23. package/.agent/hooks/mindforge-statusline.js +119 -0
  24. package/.agent/hooks/mindforge-workflow-guard.js +94 -0
  25. package/.agent/mindforge/add-backlog.md +32 -0
  26. package/.agent/mindforge/agent.md +31 -0
  27. package/.agent/mindforge/discuss-phase.md +1 -1
  28. package/.agent/mindforge/do.md +31 -0
  29. package/.agent/mindforge/help.md +1 -1
  30. package/.agent/mindforge/learn.md +3 -2
  31. package/.agent/mindforge/note.md +35 -0
  32. package/.agent/mindforge/plant-seed.md +31 -0
  33. package/.agent/mindforge/research.md +3 -2
  34. package/.agent/mindforge/review-backlog.md +34 -0
  35. package/.agent/mindforge/session-report.md +39 -0
  36. package/.agent/mindforge/steer.md +1 -1
  37. package/.agent/mindforge/ui-phase.md +34 -0
  38. package/.agent/mindforge/ui-review.md +36 -0
  39. package/.agent/mindforge/validate-phase.md +31 -0
  40. package/.agent/mindforge/workstreams.md +35 -0
  41. package/.agent/settings.json +38 -0
  42. package/.agent/skills/mindforge-add-backlog/SKILL.md +72 -0
  43. package/.agent/skills/mindforge-add-phase/SKILL.md +39 -0
  44. package/.agent/skills/mindforge-add-tests/SKILL.md +28 -0
  45. package/.agent/skills/mindforge-add-todo/SKILL.md +42 -0
  46. package/.agent/skills/mindforge-audit-milestone/SKILL.md +29 -0
  47. package/.agent/skills/mindforge-audit-uat/SKILL.md +20 -0
  48. package/.agent/skills/mindforge-autonomous/SKILL.md +33 -0
  49. package/.agent/skills/mindforge-check-todos/SKILL.md +40 -0
  50. package/.agent/skills/mindforge-cleanup/SKILL.md +19 -0
  51. package/.agent/skills/mindforge-complete-milestone/SKILL.md +131 -0
  52. package/.agent/skills/mindforge-debug/SKILL.md +163 -0
  53. package/.agent/skills/mindforge-discuss-phase/SKILL.md +54 -0
  54. package/.agent/skills/mindforge-do/SKILL.md +26 -0
  55. package/.agent/skills/mindforge-execute-phase/SKILL.md +49 -0
  56. package/.agent/skills/mindforge-fast/SKILL.md +23 -0
  57. package/.agent/skills/mindforge-forensics/SKILL.md +49 -0
  58. package/.agent/skills/mindforge-health/SKILL.md +17 -0
  59. package/.agent/skills/mindforge-help/SKILL.md +23 -0
  60. package/.agent/skills/mindforge-insert-phase/SKILL.md +28 -0
  61. package/.agent/skills/mindforge-join-discord/SKILL.md +19 -0
  62. package/.agent/skills/mindforge-list-phase-assumptions/SKILL.md +41 -0
  63. package/.agent/skills/mindforge-list-workspaces/SKILL.md +17 -0
  64. package/.agent/skills/mindforge-manager/SKILL.md +32 -0
  65. package/.agent/skills/mindforge-map-codebase/SKILL.md +64 -0
  66. package/.agent/skills/mindforge-milestone-summary/SKILL.md +44 -0
  67. package/.agent/skills/mindforge-new-milestone/SKILL.md +38 -0
  68. package/.agent/skills/mindforge-new-project/SKILL.md +36 -0
  69. package/.agent/skills/mindforge-new-workspace/SKILL.md +39 -0
  70. package/.agent/skills/mindforge-next/SKILL.md +19 -0
  71. package/.agent/skills/mindforge-note/SKILL.md +29 -0
  72. package/.agent/skills/mindforge-pause-work/SKILL.md +35 -0
  73. package/.agent/skills/mindforge-plan-milestone-gaps/SKILL.md +28 -0
  74. package/.agent/skills/mindforge-plan-phase/SKILL.md +37 -0
  75. package/.agent/skills/mindforge-plant-seed/SKILL.md +22 -0
  76. package/.agent/skills/mindforge-pr-branch/SKILL.md +21 -0
  77. package/.agent/skills/mindforge-profile-user/SKILL.md +38 -0
  78. package/.agent/skills/mindforge-progress/SKILL.md +19 -0
  79. package/.agent/skills/mindforge-quick/SKILL.md +38 -0
  80. package/.agent/skills/mindforge-reapply-patches/SKILL.md +124 -0
  81. package/.agent/skills/mindforge-remove-phase/SKILL.md +26 -0
  82. package/.agent/skills/mindforge-remove-workspace/SKILL.md +22 -0
  83. package/.agent/skills/mindforge-research-phase/SKILL.md +186 -0
  84. package/.agent/skills/mindforge-resume-work/SKILL.md +35 -0
  85. package/.agent/skills/mindforge-review/SKILL.md +31 -0
  86. package/.agent/skills/mindforge-review-backlog/SKILL.md +58 -0
  87. package/.agent/skills/mindforge-session-report/SKILL.md +16 -0
  88. package/.agent/skills/mindforge-set-profile/SKILL.md +9 -0
  89. package/.agent/skills/mindforge-settings/SKILL.md +32 -0
  90. package/.agent/skills/mindforge-ship/SKILL.md +16 -0
  91. package/.agent/skills/mindforge-stats/SKILL.md +16 -0
  92. package/.agent/skills/mindforge-thread/SKILL.md +123 -0
  93. package/.agent/skills/mindforge-ui-phase/SKILL.md +24 -0
  94. package/.agent/skills/mindforge-ui-review/SKILL.md +24 -0
  95. package/.agent/skills/mindforge-update/SKILL.md +35 -0
  96. package/.agent/skills/mindforge-validate-phase/SKILL.md +26 -0
  97. package/.agent/skills/mindforge-verify-work/SKILL.md +30 -0
  98. package/.agent/skills/mindforge-workstreams/SKILL.md +65 -0
  99. package/.agent/workflows/mindforge-add-phase.md +112 -0
  100. package/.agent/workflows/mindforge-add-tests.md +351 -0
  101. package/.agent/workflows/mindforge-add-todo.md +158 -0
  102. package/.agent/workflows/mindforge-audit-milestone.md +332 -0
  103. package/.agent/workflows/mindforge-audit-uat.md +109 -0
  104. package/.agent/workflows/mindforge-autonomous.md +815 -0
  105. package/.agent/workflows/mindforge-check-todos.md +177 -0
  106. package/.agent/workflows/mindforge-cleanup.md +152 -0
  107. package/.agent/workflows/mindforge-complete-milestone.md +766 -0
  108. package/.agent/workflows/mindforge-diagnose-issues.md +220 -0
  109. package/.agent/workflows/mindforge-discovery-phase.md +289 -0
  110. package/.agent/workflows/mindforge-discuss-phase-assumptions.md +645 -0
  111. package/.agent/workflows/mindforge-discuss-phase.md +1047 -0
  112. package/.agent/workflows/mindforge-do.md +104 -0
  113. package/.agent/workflows/mindforge-execute-phase.md +838 -0
  114. package/.agent/workflows/mindforge-execute-plan.md +509 -0
  115. package/.agent/workflows/mindforge-fast.md +105 -0
  116. package/.agent/workflows/mindforge-forensics.md +265 -0
  117. package/.agent/workflows/mindforge-health.md +181 -0
  118. package/.agent/workflows/mindforge-help.md +606 -0
  119. package/.agent/workflows/mindforge-insert-phase.md +130 -0
  120. package/.agent/workflows/mindforge-list-phase-assumptions.md +178 -0
  121. package/.agent/workflows/mindforge-list-workspaces.md +56 -0
  122. package/.agent/workflows/mindforge-manager.md +360 -0
  123. package/.agent/workflows/mindforge-map-codebase.md +370 -0
  124. package/.agent/workflows/mindforge-milestone-summary.md +223 -0
  125. package/.agent/workflows/mindforge-new-milestone.md +469 -0
  126. package/.agent/workflows/mindforge-new-project.md +1226 -0
  127. package/.agent/workflows/mindforge-new-workspace.md +237 -0
  128. package/.agent/workflows/mindforge-next.md +97 -0
  129. package/.agent/workflows/mindforge-node-repair.md +92 -0
  130. package/.agent/workflows/mindforge-note.md +156 -0
  131. package/.agent/workflows/mindforge-pause-work.md +176 -0
  132. package/.agent/workflows/mindforge-plan-milestone-gaps.md +273 -0
  133. package/.agent/workflows/mindforge-plan-phase.md +848 -0
  134. package/.agent/workflows/mindforge-plant-seed.md +169 -0
  135. package/.agent/workflows/mindforge-pr-branch.md +129 -0
  136. package/.agent/workflows/mindforge-profile-user.md +450 -0
  137. package/.agent/workflows/mindforge-progress.md +507 -0
  138. package/.agent/workflows/mindforge-quick.md +732 -0
  139. package/.agent/workflows/mindforge-remove-phase.md +155 -0
  140. package/.agent/workflows/mindforge-remove-workspace.md +90 -0
  141. package/.agent/workflows/mindforge-research-phase.md +74 -0
  142. package/.agent/workflows/mindforge-resume-project.md +325 -0
  143. package/.agent/workflows/mindforge-review.md +228 -0
  144. package/.agent/workflows/mindforge-session-report.md +146 -0
  145. package/.agent/workflows/mindforge-settings.md +283 -0
  146. package/.agent/workflows/mindforge-ship.md +228 -0
  147. package/.agent/workflows/mindforge-stats.md +60 -0
  148. package/.agent/workflows/mindforge-transition.md +671 -0
  149. package/.agent/workflows/mindforge-ui-phase.md +290 -0
  150. package/.agent/workflows/mindforge-ui-review.md +157 -0
  151. package/.agent/workflows/mindforge-update.md +323 -0
  152. package/.agent/workflows/mindforge-validate-phase.md +167 -0
  153. package/.agent/workflows/mindforge-verify-phase.md +254 -0
  154. package/.agent/workflows/mindforge-verify-work.md +623 -0
  155. package/.claude/commands/mindforge/add-backlog.md +32 -0
  156. package/.claude/commands/mindforge/agent.md +31 -0
  157. package/.claude/commands/mindforge/approve.md +27 -15
  158. package/.claude/commands/mindforge/audit.md +30 -26
  159. package/.claude/commands/mindforge/auto.md +29 -18
  160. package/.claude/commands/mindforge/benchmark.md +26 -29
  161. package/.claude/commands/mindforge/browse.md +24 -22
  162. package/.claude/commands/mindforge/complete-milestone.md +28 -14
  163. package/.claude/commands/mindforge/costs.md +26 -9
  164. package/.claude/commands/mindforge/cross-review.md +27 -13
  165. package/.claude/commands/mindforge/dashboard.md +35 -98
  166. package/.claude/commands/mindforge/debug.md +34 -126
  167. package/.claude/commands/mindforge/discuss-phase.md +36 -138
  168. package/.claude/commands/mindforge/do.md +31 -0
  169. package/.claude/commands/mindforge/execute-phase.md +37 -190
  170. package/.claude/commands/mindforge/health.md +27 -17
  171. package/.claude/commands/mindforge/help.md +25 -19
  172. package/.claude/commands/mindforge/init-org.md +37 -131
  173. package/.claude/commands/mindforge/init-project.md +40 -155
  174. package/.claude/commands/mindforge/install-skill.md +32 -15
  175. package/.claude/commands/mindforge/learn.md +36 -142
  176. package/.claude/commands/mindforge/map-codebase.md +36 -298
  177. package/.claude/commands/mindforge/marketplace.md +33 -120
  178. package/.claude/commands/mindforge/metrics.md +29 -18
  179. package/.claude/commands/mindforge/migrate.md +33 -40
  180. package/.claude/commands/mindforge/milestone.md +35 -12
  181. package/.claude/commands/mindforge/new-runtime.md +25 -15
  182. package/.claude/commands/mindforge/next.md +34 -105
  183. package/.claude/commands/mindforge/note.md +35 -0
  184. package/.claude/commands/mindforge/plan-phase.md +34 -125
  185. package/.claude/commands/mindforge/plant-seed.md +31 -0
  186. package/.claude/commands/mindforge/plugins.md +30 -36
  187. package/.claude/commands/mindforge/pr-review.md +32 -41
  188. package/.claude/commands/mindforge/profile-team.md +26 -19
  189. package/.claude/commands/mindforge/publish-skill.md +28 -17
  190. package/.claude/commands/mindforge/qa.md +27 -12
  191. package/.claude/commands/mindforge/quick.md +35 -135
  192. package/.claude/commands/mindforge/release.md +27 -8
  193. package/.claude/commands/mindforge/remember.md +25 -10
  194. package/.claude/commands/mindforge/research.md +27 -9
  195. package/.claude/commands/mindforge/retrospective.md +28 -22
  196. package/.claude/commands/mindforge/review-backlog.md +34 -0
  197. package/.claude/commands/mindforge/review.md +37 -157
  198. package/.claude/commands/mindforge/security-scan.md +34 -233
  199. package/.claude/commands/mindforge/session-report.md +39 -0
  200. package/.claude/commands/mindforge/ship.md +34 -100
  201. package/.claude/commands/mindforge/skills.md +36 -141
  202. package/.claude/commands/mindforge/status.md +30 -104
  203. package/.claude/commands/mindforge/steer.md +25 -10
  204. package/.claude/commands/mindforge/sync-confluence.md +28 -9
  205. package/.claude/commands/mindforge/sync-jira.md +32 -12
  206. package/.claude/commands/mindforge/tokens.md +25 -6
  207. package/.claude/commands/mindforge/ui-phase.md +34 -0
  208. package/.claude/commands/mindforge/ui-review.md +36 -0
  209. package/.claude/commands/mindforge/update.md +33 -42
  210. package/.claude/commands/mindforge/validate-phase.md +31 -0
  211. package/.claude/commands/mindforge/verify-phase.md +30 -62
  212. package/.claude/commands/mindforge/workspace.md +28 -25
  213. package/.claude/commands/mindforge/workstreams.md +35 -0
  214. package/.mindforge/memory/decision-library.jsonl +0 -0
  215. package/.mindforge/memory/knowledge-base.jsonl +7 -0
  216. package/.mindforge/memory/pattern-library.jsonl +1 -0
  217. package/.mindforge/memory/team-preferences.jsonl +4 -0
  218. package/.mindforge/personas/advisor-researcher.md +89 -0
  219. package/.mindforge/personas/analyst.md +112 -52
  220. package/.mindforge/personas/architect.md +100 -67
  221. package/.mindforge/personas/assumptions-analyzer-extend.md +87 -0
  222. package/.mindforge/personas/assumptions-analyzer.md +109 -0
  223. package/.mindforge/personas/codebase-mapper-extend.md +93 -0
  224. package/.mindforge/personas/codebase-mapper.md +770 -0
  225. package/.mindforge/personas/coverage-specialist.md +104 -0
  226. package/.mindforge/personas/debug-specialist.md +118 -52
  227. package/.mindforge/personas/debugger.md +97 -0
  228. package/.mindforge/personas/decision-architect.md +102 -0
  229. package/.mindforge/personas/developer.md +97 -85
  230. package/.mindforge/personas/executor.md +88 -0
  231. package/.mindforge/personas/integration-checker.md +92 -0
  232. package/.mindforge/personas/nyquist-auditor.md +84 -0
  233. package/.mindforge/personas/phase-researcher.md +107 -0
  234. package/.mindforge/personas/plan-checker.md +92 -0
  235. package/.mindforge/personas/planner.md +105 -0
  236. package/.mindforge/personas/project-researcher.md +99 -0
  237. package/.mindforge/personas/qa-engineer.md +113 -61
  238. package/.mindforge/personas/release-manager.md +102 -64
  239. package/.mindforge/personas/research-agent.md +109 -24
  240. package/.mindforge/personas/research-synthesizer.md +101 -0
  241. package/.mindforge/personas/roadmapper-extend.md +100 -0
  242. package/.mindforge/personas/roadmapper.md +103 -0
  243. package/.mindforge/personas/security-reviewer.md +114 -91
  244. package/.mindforge/personas/tech-writer.md +118 -51
  245. package/.mindforge/personas/ui-auditor.md +94 -0
  246. package/.mindforge/personas/ui-checker.md +89 -0
  247. package/.mindforge/personas/ui-researcher.md +99 -0
  248. package/.mindforge/personas/user-profiler.md +93 -0
  249. package/.mindforge/personas/verifier.md +101 -0
  250. package/.planning/ROADMAP.md +10 -0
  251. package/.planning/browser-daemon.log +32 -0
  252. package/.planning/phases/01-migrate-gsd-to-mindforge/.gitkeep +0 -0
  253. package/CHANGELOG.md +41 -0
  254. package/MINDFORGE.md +2 -0
  255. package/README.md +40 -3
  256. package/bin/installer-core.js +3 -4
  257. package/docs/PERSONAS.md +611 -0
  258. package/docs/commands-reference.md +1 -0
  259. package/docs/{Context → context}/Master-Context.md +6 -13
  260. package/docs/references/checkpoints.md +778 -0
  261. package/docs/{reference → references}/commands.md +53 -43
  262. package/docs/references/continuation-format.md +249 -0
  263. package/docs/references/decimal-phase-calculation.md +64 -0
  264. package/docs/references/git-integration.md +295 -0
  265. package/docs/references/git-planning-commit.md +38 -0
  266. package/docs/references/model-profile-resolution.md +36 -0
  267. package/docs/references/model-profiles.md +139 -0
  268. package/docs/references/phase-argument-parsing.md +61 -0
  269. package/docs/references/planning-config.md +202 -0
  270. package/docs/references/questioning.md +162 -0
  271. package/docs/references/tdd.md +263 -0
  272. package/docs/references/ui-brand.md +160 -0
  273. package/docs/references/user-profiling.md +681 -0
  274. package/docs/references/verification-patterns.md +612 -0
  275. package/docs/references/workstream-flag.md +58 -0
  276. package/docs/skills-authoring-guide.md +1 -1
  277. package/docs/templates/Agents/CLAUDE-MD.md +122 -0
  278. package/docs/templates/Agents/COPILOT-INSTRUCTIONS.md +7 -0
  279. package/docs/templates/Agents/DEBUGGER-PROMPT.md +91 -0
  280. package/docs/templates/Agents/PLANNER-PROMPT.md +117 -0
  281. package/docs/templates/Execution/CONTINUE-HERE.md +78 -0
  282. package/docs/templates/Execution/DISCUSSION-LOG.md +63 -0
  283. package/docs/templates/Execution/PHASE-PROMPT.md +610 -0
  284. package/docs/templates/Execution/STATE.md +176 -0
  285. package/docs/templates/Execution/SUMMARY-COMPLEX.md +59 -0
  286. package/docs/templates/Execution/SUMMARY-MINIMAL.md +41 -0
  287. package/docs/templates/Execution/SUMMARY-STANDARD.md +48 -0
  288. package/docs/templates/Execution/SUMMARY.md +248 -0
  289. package/docs/templates/Profile/DEV-PREFERENCES.md +21 -0
  290. package/docs/templates/Profile/USER-PROFILE.md +146 -0
  291. package/docs/templates/Profile/USER-SETUP.md +311 -0
  292. package/docs/templates/Project/DISCOVERY.md +146 -0
  293. package/docs/templates/Project/MILESTONE-ARCHIVE.md +123 -0
  294. package/docs/templates/Project/MILESTONE.md +115 -0
  295. package/docs/templates/Project/PROJECT.md +206 -0
  296. package/docs/templates/Project/REQUIREMENTS.md +231 -0
  297. package/docs/templates/Project/RETROSPECTIVE.md +54 -0
  298. package/docs/templates/Project/ROADMAP.md +202 -0
  299. package/docs/templates/Quality/DEBUG.md +164 -0
  300. package/docs/templates/Quality/UAT.md +280 -0
  301. package/docs/templates/Quality/UI-SPEC.md +100 -0
  302. package/docs/templates/Quality/VALIDATION.md +76 -0
  303. package/docs/templates/Quality/VERIFICATION-REPORT.md +322 -0
  304. package/docs/templates/System/CONFIG.json +43 -0
  305. package/docs/templates/System/CONTEXT.md +352 -0
  306. package/docs/templates/codebase/architecture.md +255 -0
  307. package/docs/templates/codebase/concerns.md +310 -0
  308. package/docs/templates/codebase/conventions.md +307 -0
  309. package/docs/templates/codebase/integrations.md +280 -0
  310. package/docs/templates/codebase/stack.md +186 -0
  311. package/docs/templates/codebase/structure.md +285 -0
  312. package/docs/templates/codebase/testing.md +480 -0
  313. package/docs/templates/research/ARCHITECTURE.md +204 -0
  314. package/docs/templates/research/FEATURES.md +147 -0
  315. package/docs/templates/research/PITFALLS.md +200 -0
  316. package/docs/templates/research/STACK.md +120 -0
  317. package/docs/templates/research/SUMMARY.md +170 -0
  318. package/docs/user-guide.md +1 -1
  319. package/package.json +7 -2
  320. /package/docs/{reference → references}/audit-events.md +0 -0
  321. /package/docs/{reference → references}/config-reference.md +0 -0
  322. /package/docs/{reference → references}/sdk-api.md +0 -0
  323. /package/docs/{reference → references}/skills-api.md +0 -0
@@ -0,0 +1,848 @@
1
+ <purpose>
2
+ Create executable phase prompts (PLAN.md files) for a roadmap phase with integrated research and verification. Default flow: Research (if needed) -> Plan -> Verify -> Done. Orchestrates mindforge-phase-researcher, mindforge-planner, and mindforge-plan-checker agents with a revision loop (max 3 iterations).
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ Read all files referenced by the invoking prompt's execution_context before starting.
7
+
8
+ @.agent/references/ui-brand.md
9
+ </required_reading>
10
+
11
+ <available_agent_types>
12
+ Valid MindForge subagent types (use exact names — do not fall back to 'general-purpose'):
13
+ - mindforge-phase-researcher — Researches technical approaches for a phase
14
+ - mindforge-planner — Creates detailed plans from phase scope
15
+ - mindforge-plan-checker — Reviews plan quality before execution
16
+ </available_agent_types>
17
+
18
+ <process>
19
+
20
+ ## 1. Initialize
21
+
22
+ Load all context in one call (paths only to minimize orchestrator context):
23
+
24
+ ```bash
25
+ INIT=$(node ".agent/bin/mindforge-tools.cjs" init plan-phase "$PHASE")
26
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
27
+ ```
28
+
29
+ Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `nyquist_validation_enabled`, `commit_docs`, `text_mode`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_reviews`, `has_plans`, `plan_count`, `planning_exists`, `roadmap_exists`, `phase_req_ids`.
30
+
31
+ **File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`, `reviews_path`. These are null if files don't exist.
32
+
33
+ **If `planning_exists` is false:** Error — run `/mindforge-new-project` first.
34
+
35
+ ## 2. Parse and Normalize Arguments
36
+
37
+ Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--gaps`, `--skip-verify`, `--prd <filepath>`, `--reviews`, `--text`).
38
+
39
+ Set `TEXT_MODE=true` if `--text` is present in $ARGUMENTS OR `text_mode` from init JSON is `true`. When `TEXT_MODE` is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for Claude Code remote sessions (`/rc` mode) where TUI menus don't work through the the agent App.
40
+
41
+ Extract `--prd <filepath>` from $ARGUMENTS. If present, set PRD_FILE to the filepath.
42
+
43
+ **If no phase number:** Detect next unplanned phase from roadmap.
44
+
45
+ **If `phase_found` is false:** Validate phase exists in ROADMAP.md. If valid, create the directory using `phase_slug` and `padded_phase` from init:
46
+ ```bash
47
+ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
48
+ ```
49
+
50
+ **Existing artifacts from init:** `has_research`, `has_plans`, `plan_count`.
51
+
52
+ ## 2.5. Validate `--reviews` Prerequisite
53
+
54
+ **Skip if:** No `--reviews` flag.
55
+
56
+ **If `--reviews` AND `--gaps`:** Error — cannot combine `--reviews` with `--gaps`. These are conflicting modes.
57
+
58
+ **If `--reviews` AND `has_reviews` is false (no REVIEWS.md in phase dir):**
59
+
60
+ Error:
61
+ ```
62
+ No REVIEWS.md found for Phase {N}. Run reviews first:
63
+
64
+ /mindforge-review --phase {N}
65
+
66
+ Then re-run /mindforge-plan-phase {N} --reviews
67
+ ```
68
+ Exit workflow.
69
+
70
+ ## 3. Validate Phase
71
+
72
+ ```bash
73
+ PHASE_INFO=$(node ".agent/bin/mindforge-tools.cjs" roadmap get-phase "${PHASE}")
74
+ ```
75
+
76
+ **If `found` is false:** Error with available phases. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
77
+
78
+ ## 3.5. Handle PRD Express Path
79
+
80
+ **Skip if:** No `--prd` flag in arguments.
81
+
82
+ **If `--prd <filepath>` provided:**
83
+
84
+ 1. Read the PRD file:
85
+ ```bash
86
+ PRD_CONTENT=$(cat "$PRD_FILE" 2>/dev/null)
87
+ if [ -z "$PRD_CONTENT" ]; then
88
+ echo "Error: PRD file not found: $PRD_FILE"
89
+ exit 1
90
+ fi
91
+ ```
92
+
93
+ 2. Display banner:
94
+ ```
95
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
96
+ MindForge ► PRD EXPRESS PATH
97
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
98
+
99
+ Using PRD: {PRD_FILE}
100
+ Generating CONTEXT.md from requirements...
101
+ ```
102
+
103
+ 3. Parse the PRD content and generate CONTEXT.md. The orchestrator should:
104
+ - Extract all requirements, user stories, acceptance criteria, and constraints from the PRD
105
+ - Map each to a locked decision (everything in the PRD is treated as a locked decision)
106
+ - Identify any areas the PRD doesn't cover and mark as "the agent's Discretion"
107
+ - **Extract canonical refs** from ROADMAP.md for this phase, plus any specs/ADRs referenced in the PRD — expand to full file paths (MANDATORY)
108
+ - Create CONTEXT.md in the phase directory
109
+
110
+ 4. Write CONTEXT.md:
111
+ ```markdown
112
+ # Phase [X]: [Name] - Context
113
+
114
+ **Gathered:** [date]
115
+ **Status:** Ready for planning
116
+ **Source:** PRD Express Path ({PRD_FILE})
117
+
118
+ <domain>
119
+ ## Phase Boundary
120
+
121
+ [Extracted from PRD — what this phase delivers]
122
+
123
+ </domain>
124
+
125
+ <decisions>
126
+ ## Implementation Decisions
127
+
128
+ {For each requirement/story/criterion in the PRD:}
129
+ ### [Category derived from content]
130
+ - [Requirement as locked decision]
131
+
132
+ ### the agent's Discretion
133
+ [Areas not covered by PRD — implementation details, technical choices]
134
+
135
+ </decisions>
136
+
137
+ <canonical_refs>
138
+ ## Canonical References
139
+
140
+ **Downstream agents MUST read these before planning or implementing.**
141
+
142
+ [MANDATORY. Extract from ROADMAP.md and any docs referenced in the PRD.
143
+ Use full relative paths. Group by topic area.]
144
+
145
+ ### [Topic area]
146
+ - `path/to/spec-or-adr.md` — [What it decides/defines]
147
+
148
+ [If no external specs: "No external specs — requirements fully captured in decisions above"]
149
+
150
+ </canonical_refs>
151
+
152
+ <specifics>
153
+ ## Specific Ideas
154
+
155
+ [Any specific references, examples, or concrete requirements from PRD]
156
+
157
+ </specifics>
158
+
159
+ <deferred>
160
+ ## Deferred Ideas
161
+
162
+ [Items in PRD explicitly marked as future/v2/out-of-scope]
163
+ [If none: "None — PRD covers phase scope"]
164
+
165
+ </deferred>
166
+
167
+ ---
168
+
169
+ *Phase: XX-name*
170
+ *Context gathered: [date] via PRD Express Path*
171
+ ```
172
+
173
+ 5. Commit:
174
+ ```bash
175
+ node ".agent/bin/mindforge-tools.cjs" commit "docs(${padded_phase}): generate context from PRD" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
176
+ ```
177
+
178
+ 6. Set `context_content` to the generated CONTEXT.md content and continue to step 5 (Handle Research).
179
+
180
+ **Effect:** This completely bypasses step 4 (Load CONTEXT.md) since we just created it. The rest of the workflow (research, planning, verification) proceeds normally with the PRD-derived context.
181
+
182
+ ## 4. Load CONTEXT.md
183
+
184
+ **Skip if:** PRD express path was used (CONTEXT.md already created in step 3.5).
185
+
186
+ Check `context_path` from init JSON.
187
+
188
+ If `context_path` is not null, display: `Using phase context from: ${context_path}`
189
+
190
+ **If `context_path` is null (no CONTEXT.md exists):**
191
+
192
+ Read discuss mode for context gate label:
193
+ ```bash
194
+ DISCUSS_MODE=$(node ".agent/bin/mindforge-tools.cjs" config-get workflow.discuss_mode 2>/dev/null || echo "discuss")
195
+ ```
196
+
197
+ If `TEXT_MODE` is true, present as a plain-text numbered list:
198
+ ```
199
+ No CONTEXT.md found for Phase {X}. Plans will use research and requirements only — your design preferences won't be included.
200
+
201
+ 1. Continue without context — Plan using research + requirements only
202
+ [If DISCUSS_MODE is "assumptions":]
203
+ 2. Gather context (assumptions mode) — Analyze codebase and surface assumptions before planning
204
+ [If DISCUSS_MODE is "discuss" or unset:]
205
+ 2. Run discuss-phase first — Capture design decisions before planning
206
+
207
+ Enter number:
208
+ ```
209
+
210
+ Otherwise use AskUserQuestion:
211
+ - header: "No context"
212
+ - question: "No CONTEXT.md found for Phase {X}. Plans will use research and requirements only — your design preferences won't be included. Continue or capture context first?"
213
+ - options:
214
+ - "Continue without context" — Plan using research + requirements only
215
+ If `DISCUSS_MODE` is `"assumptions"`:
216
+ - "Gather context (assumptions mode)" — Analyze codebase and surface assumptions before planning
217
+ If `DISCUSS_MODE` is `"discuss"` (or unset):
218
+ - "Run discuss-phase first" — Capture design decisions before planning
219
+
220
+ If "Continue without context": Proceed to step 5.
221
+ If "Run discuss-phase first":
222
+ **IMPORTANT:** Do NOT invoke discuss-phase as a nested Skill/Task call — AskUserQuestion
223
+ does not work correctly in nested subcontexts (#1009). Instead, display the command
224
+ and exit so the user runs it as a top-level command:
225
+ ```
226
+ Run this command first, then re-run /mindforge-plan-phase {X} ${MindForge_WS}:
227
+
228
+ /mindforge-discuss-phase {X} ${MindForge_WS}
229
+ ```
230
+ **Exit the plan-phase workflow. Do not continue.**
231
+
232
+ ## 5. Handle Research
233
+
234
+ **Skip if:** `--gaps` flag or `--skip-research` flag or `--reviews` flag.
235
+
236
+ **If `has_research` is true (from init) AND no `--research` flag:** Use existing, skip to step 6.
237
+
238
+ **If RESEARCH.md missing OR `--research` flag:**
239
+
240
+ **If no explicit flag (`--research` or `--skip-research`) and not `--auto`:**
241
+ Ask the user whether to research, with a contextual recommendation based on the phase:
242
+
243
+ If `TEXT_MODE` is true, present as a plain-text numbered list:
244
+ ```
245
+ Research before planning Phase {X}: {phase_name}?
246
+
247
+ 1. Research first (Recommended) — Investigate domain, patterns, and dependencies before planning. Best for new features, unfamiliar integrations, or architectural changes.
248
+ 2. Skip research — Plan directly from context and requirements. Best for bug fixes, simple refactors, or well-understood tasks.
249
+
250
+ Enter number:
251
+ ```
252
+
253
+ Otherwise use AskUserQuestion:
254
+ ```
255
+ AskUserQuestion([
256
+ {
257
+ question: "Research before planning Phase {X}: {phase_name}?",
258
+ header: "Research",
259
+ multiSelect: false,
260
+ options: [
261
+ { label: "Research first (Recommended)", description: "Investigate domain, patterns, and dependencies before planning. Best for new features, unfamiliar integrations, or architectural changes." },
262
+ { label: "Skip research", description: "Plan directly from context and requirements. Best for bug fixes, simple refactors, or well-understood tasks." }
263
+ ]
264
+ }
265
+ ])
266
+ ```
267
+
268
+ If user selects "Skip research": skip to step 6.
269
+
270
+ **If `--auto` and `research_enabled` is false:** Skip research silently (preserves automated behavior).
271
+
272
+ Display banner:
273
+ ```
274
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
275
+ MindForge ► RESEARCHING PHASE {X}
276
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
277
+
278
+ ◆ Spawning researcher...
279
+ ```
280
+
281
+ ### Spawn mindforge-phase-researcher
282
+
283
+ ```bash
284
+ PHASE_DESC=$(node ".agent/bin/mindforge-tools.cjs" roadmap get-phase "${PHASE}" --pick section)
285
+ ```
286
+
287
+ Research prompt:
288
+
289
+ ```markdown
290
+ <objective>
291
+ Research how to implement Phase {phase_number}: {phase_name}
292
+ Answer: "What do I need to know to PLAN this phase well?"
293
+ </objective>
294
+
295
+ <files_to_read>
296
+ - {context_path} (USER DECISIONS from /mindforge-discuss-phase)
297
+ - {requirements_path} (Project requirements)
298
+ - {state_path} (Project decisions and history)
299
+ </files_to_read>
300
+
301
+ <additional_context>
302
+ **Phase description:** {phase_description}
303
+ **Phase requirement IDs (MUST address):** {phase_req_ids}
304
+
305
+ **Project instructions:** Read ./GEMINI.md if exists — follow project-specific guidelines
306
+ **Project skills:** Check .agent/skills/ or .agents/skills/ directory (if either exists) — read SKILL.md files, research should account for project skill patterns
307
+ </additional_context>
308
+
309
+ <output>
310
+ Write to: {phase_dir}/{phase_num}-RESEARCH.md
311
+ </output>
312
+ ```
313
+
314
+ ```
315
+ Task(
316
+ prompt=research_prompt,
317
+ subagent_type="mindforge-phase-researcher",
318
+ model="{researcher_model}",
319
+ description="Research Phase {phase}"
320
+ )
321
+ ```
322
+
323
+ ### Handle Researcher Return
324
+
325
+ - **`## RESEARCH COMPLETE`:** Display confirmation, continue to step 6
326
+ - **`## RESEARCH BLOCKED`:** Display blocker, offer: 1) Provide context, 2) Skip research, 3) Abort
327
+
328
+ ## 5.5. Create Validation Strategy
329
+
330
+ Skip if `nyquist_validation_enabled` is false OR `research_enabled` is false.
331
+
332
+ If `research_enabled` is false and `nyquist_validation_enabled` is true: warn "Nyquist validation enabled but research disabled — VALIDATION.md cannot be created without RESEARCH.md. Plans will lack validation requirements (Dimension 8)." Continue to step 6.
333
+
334
+ **But Nyquist is not applicable for this run** when all of the following are true:
335
+ - `research_enabled` is false
336
+ - `has_research` is false
337
+ - no `--research` flag was provided
338
+
339
+ In that case: **skip validation-strategy creation entirely**. Do **not** expect `RESEARCH.md` or `VALIDATION.md` for this run, and continue to Step 6.
340
+
341
+ ```bash
342
+ grep -l "## Validation Architecture" "${PHASE_DIR}"/*-RESEARCH.md 2>/dev/null
343
+ ```
344
+
345
+ **If found:**
346
+ 1. Read template: `.agent/mindforge/templates/VALIDATION.md`
347
+ 2. Write to `${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md` (use Write tool)
348
+ 3. Fill frontmatter: `{N}` → phase number, `{phase-slug}` → slug, `{date}` → current date
349
+ 4. Verify:
350
+ ```bash
351
+ test -f "${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md" && echo "VALIDATION_CREATED=true" || echo "VALIDATION_CREATED=false"
352
+ ```
353
+ 5. If `VALIDATION_CREATED=false`: STOP — do not proceed to Step 6
354
+ 6. If `commit_docs`: `commit "docs(phase-${PHASE}): add validation strategy"`
355
+
356
+ **If not found:** Warn and continue — plans may fail Dimension 8.
357
+
358
+ ## 5.6. UI Design Contract Gate
359
+
360
+ > Skip if `workflow.ui_phase` is explicitly `false` AND `workflow.ui_safety_gate` is explicitly `false` in `.planning/config.json`. If keys are absent, treat as enabled.
361
+
362
+ ```bash
363
+ UI_PHASE_CFG=$(node ".agent/bin/mindforge-tools.cjs" config-get workflow.ui_phase 2>/dev/null || echo "true")
364
+ UI_GATE_CFG=$(node ".agent/bin/mindforge-tools.cjs" config-get workflow.ui_safety_gate 2>/dev/null || echo "true")
365
+ ```
366
+
367
+ **If both are `false`:** Skip to step 6.
368
+
369
+ Check if phase has frontend indicators:
370
+
371
+ ```bash
372
+ PHASE_SECTION=$(node ".agent/bin/mindforge-tools.cjs" roadmap get-phase "${PHASE}" 2>/dev/null)
373
+ echo "$PHASE_SECTION" | grep -iE "UI|interface|frontend|component|layout|page|screen|view|form|dashboard|widget" > /dev/null 2>&1
374
+ HAS_UI=$?
375
+ ```
376
+
377
+ **If `HAS_UI` is 0 (frontend indicators found):**
378
+
379
+ Check for existing UI-SPEC:
380
+ ```bash
381
+ UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
382
+ ```
383
+
384
+ **If UI-SPEC.md found:** Set `UI_SPEC_PATH=$UI_SPEC_FILE`. Display: `Using UI design contract: ${UI_SPEC_PATH}`
385
+
386
+ **If UI-SPEC.md missing AND `UI_GATE_CFG` is `true`:**
387
+
388
+ If `TEXT_MODE` is true, present as a plain-text numbered list:
389
+ ```
390
+ Phase {N} has frontend indicators but no UI-SPEC.md. Generate a design contract before planning?
391
+
392
+ 1. Generate UI-SPEC first — Run /mindforge-ui-phase {N} then re-run /mindforge-plan-phase {N}
393
+ 2. Continue without UI-SPEC
394
+ 3. Not a frontend phase
395
+
396
+ Enter number:
397
+ ```
398
+
399
+ Otherwise use AskUserQuestion:
400
+ - header: "UI Design Contract"
401
+ - question: "Phase {N} has frontend indicators but no UI-SPEC.md. Generate a design contract before planning?"
402
+ - options:
403
+ - "Generate UI-SPEC first" → Display: "Run `/mindforge-ui-phase {N} ${MindForge_WS}` then re-run `/mindforge-plan-phase {N} ${MindForge_WS}`". Exit workflow.
404
+ - "Continue without UI-SPEC" → Continue to step 6.
405
+ - "Not a frontend phase" → Continue to step 6.
406
+
407
+ **If `HAS_UI` is 1 (no frontend indicators):** Skip silently to step 6.
408
+
409
+ ## 6. Check Existing Plans
410
+
411
+ ```bash
412
+ ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null
413
+ ```
414
+
415
+ **If exists AND `--reviews` flag:** Skip prompt — go straight to replanning (the purpose of `--reviews` is to replan with review feedback).
416
+
417
+ **If exists AND no `--reviews` flag:** Offer: 1) Add more plans, 2) View existing, 3) Replan from scratch.
418
+
419
+ ## 7. Use Context Paths from INIT
420
+
421
+ Extract from INIT JSON:
422
+
423
+ ```bash
424
+ _mindforge_field() { node -e "const o=JSON.parse(process.argv[1]); const v=o[process.argv[2]]; process.stdout.write(v==null?'':String(v))" "$1" "$2"; }
425
+ STATE_PATH=$(_mindforge_field "$INIT" state_path)
426
+ ROADMAP_PATH=$(_mindforge_field "$INIT" roadmap_path)
427
+ REQUIREMENTS_PATH=$(_mindforge_field "$INIT" requirements_path)
428
+ RESEARCH_PATH=$(_mindforge_field "$INIT" research_path)
429
+ VERIFICATION_PATH=$(_mindforge_field "$INIT" verification_path)
430
+ UAT_PATH=$(_mindforge_field "$INIT" uat_path)
431
+ CONTEXT_PATH=$(_mindforge_field "$INIT" context_path)
432
+ REVIEWS_PATH=$(_mindforge_field "$INIT" reviews_path)
433
+ ```
434
+
435
+ ## 7.5. Verify Nyquist Artifacts
436
+
437
+ Skip if `nyquist_validation_enabled` is false OR `research_enabled` is false.
438
+
439
+ Also skip if all of the following are true:
440
+ - `research_enabled` is false
441
+ - `has_research` is false
442
+ - no `--research` flag was provided
443
+
444
+ In that no-research path, Nyquist artifacts are **not required** for this run.
445
+
446
+ ```bash
447
+ VALIDATION_EXISTS=$(ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null | head -1)
448
+ ```
449
+
450
+ If missing and Nyquist is still enabled/applicable — ask user:
451
+ 1. Re-run: `/mindforge-plan-phase {PHASE} --research ${MindForge_WS}`
452
+ 2. Disable Nyquist with the exact command:
453
+ `node ".agent/bin/mindforge-tools.cjs" config-set workflow.nyquist_validation false`
454
+ 3. Continue anyway (plans fail Dimension 8)
455
+
456
+ Proceed to Step 8 only if user selects 2 or 3.
457
+
458
+ ## 8. Spawn mindforge-planner Agent
459
+
460
+ Display banner:
461
+ ```
462
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
463
+ MindForge ► PLANNING PHASE {X}
464
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
465
+
466
+ ◆ Spawning planner...
467
+ ```
468
+
469
+ Planner prompt:
470
+
471
+ ```markdown
472
+ <planning_context>
473
+ **Phase:** {phase_number}
474
+ **Mode:** {standard | gap_closure | reviews}
475
+
476
+ <files_to_read>
477
+ - {state_path} (Project State)
478
+ - {roadmap_path} (Roadmap)
479
+ - {requirements_path} (Requirements)
480
+ - {context_path} (USER DECISIONS from /mindforge-discuss-phase)
481
+ - {research_path} (Technical Research)
482
+ - {verification_path} (Verification Gaps - if --gaps)
483
+ - {uat_path} (UAT Gaps - if --gaps)
484
+ - {reviews_path} (Cross-AI Review Feedback - if --reviews)
485
+ - {UI_SPEC_PATH} (UI Design Contract — visual/interaction specs, if exists)
486
+ </files_to_read>
487
+
488
+ **Phase requirement IDs (every ID MUST appear in a plan's `requirements` field):** {phase_req_ids}
489
+
490
+ **Project instructions:** Read ./GEMINI.md if exists — follow project-specific guidelines
491
+ **Project skills:** Check .agent/skills/ or .agents/skills/ directory (if either exists) — read SKILL.md files, plans should account for project skill rules
492
+ </planning_context>
493
+
494
+ <downstream_consumer>
495
+ Output consumed by /mindforge-execute-phase. Plans need:
496
+ - Frontmatter (wave, depends_on, files_modified, autonomous)
497
+ - Tasks in XML format with read_first and acceptance_criteria fields (MANDATORY on every task)
498
+ - Verification criteria
499
+ - must_haves for goal-backward verification
500
+ </downstream_consumer>
501
+
502
+ <deep_work_rules>
503
+ ## Anti-Shallow Execution Rules (MANDATORY)
504
+
505
+ Every task MUST include these fields — they are NOT optional:
506
+
507
+ 1. **`<read_first>`** — Files the executor MUST read before touching anything. Always include:
508
+ - The file being modified (so executor sees current state, not assumptions)
509
+ - Any "source of truth" file referenced in CONTEXT.md (reference implementations, existing patterns, config files, schemas)
510
+ - Any file whose patterns, signatures, types, or conventions must be replicated or respected
511
+
512
+ 2. **`<acceptance_criteria>`** — Verifiable conditions that prove the task was done correctly. Rules:
513
+ - Every criterion must be checkable with grep, file read, test command, or CLI output
514
+ - NEVER use subjective language ("looks correct", "properly configured", "consistent with")
515
+ - ALWAYS include exact strings, patterns, values, or command outputs that must be present
516
+ - Examples:
517
+ - Code: `auth.py contains def verify_token(` / `test_auth.py exits 0`
518
+ - Config: `.env.example contains DATABASE_URL=` / `Dockerfile contains HEALTHCHECK`
519
+ - Docs: `README.md contains '## Installation'` / `API.md lists all endpoints`
520
+ - Infra: `deploy.yml has rollback step` / `docker-compose.yml has healthcheck for db`
521
+
522
+ 3. **`<action>`** — Must include CONCRETE values, not references. Rules:
523
+ - NEVER say "align X with Y", "match X to Y", "update to be consistent" without specifying the exact target state
524
+ - ALWAYS include the actual values: config keys, function signatures, SQL statements, class names, import paths, env vars, etc.
525
+ - If CONTEXT.md has a comparison table or expected values, copy them into the action verbatim
526
+ - The executor should be able to complete the task from the action text alone, without needing to read CONTEXT.md or reference files (read_first is for verification, not discovery)
527
+
528
+ **Why this matters:** Executor agents work from the plan text. Vague instructions like "update the config to match production" produce shallow one-line changes. Concrete instructions like "add DATABASE_URL=postgresql://... , set POOL_SIZE=20, add REDIS_URL=redis://..." produce complete work. The cost of verbose plans is far less than the cost of re-doing shallow execution.
529
+ </deep_work_rules>
530
+
531
+ <quality_gate>
532
+ - [ ] PLAN.md files created in phase directory
533
+ - [ ] Each plan has valid frontmatter
534
+ - [ ] Tasks are specific and actionable
535
+ - [ ] Every task has `<read_first>` with at least the file being modified
536
+ - [ ] Every task has `<acceptance_criteria>` with grep-verifiable conditions
537
+ - [ ] Every `<action>` contains concrete values (no "align X with Y" without specifying what)
538
+ - [ ] Dependencies correctly identified
539
+ - [ ] Waves assigned for parallel execution
540
+ - [ ] must_haves derived from phase goal
541
+ </quality_gate>
542
+ ```
543
+
544
+ ```
545
+ Task(
546
+ prompt=filled_prompt,
547
+ subagent_type="mindforge-planner",
548
+ model="{planner_model}",
549
+ description="Plan Phase {phase}"
550
+ )
551
+ ```
552
+
553
+ ## 9. Handle Planner Return
554
+
555
+ - **`## PLANNING COMPLETE`:** Display plan count. If `--skip-verify` or `plan_checker_enabled` is false (from init): skip to step 13. Otherwise: step 10.
556
+ - **`## CHECKPOINT REACHED`:** Present to user, get response, spawn continuation (step 12)
557
+ - **`## PLANNING INCONCLUSIVE`:** Show attempts, offer: Add context / Retry / Manual
558
+
559
+ ## 10. Spawn mindforge-plan-checker Agent
560
+
561
+ Display banner:
562
+ ```
563
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
564
+ MindForge ► VERIFYING PLANS
565
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
566
+
567
+ ◆ Spawning plan checker...
568
+ ```
569
+
570
+ Checker prompt:
571
+
572
+ ```markdown
573
+ <verification_context>
574
+ **Phase:** {phase_number}
575
+ **Phase Goal:** {goal from ROADMAP}
576
+
577
+ <files_to_read>
578
+ - {PHASE_DIR}/*-PLAN.md (Plans to verify)
579
+ - {roadmap_path} (Roadmap)
580
+ - {requirements_path} (Requirements)
581
+ - {context_path} (USER DECISIONS from /mindforge-discuss-phase)
582
+ - {research_path} (Technical Research — includes Validation Architecture)
583
+ </files_to_read>
584
+
585
+ **Phase requirement IDs (MUST ALL be covered):** {phase_req_ids}
586
+
587
+ **Project instructions:** Read ./GEMINI.md if exists — verify plans honor project guidelines
588
+ **Project skills:** Check .agent/skills/ or .agents/skills/ directory (if either exists) — verify plans account for project skill rules
589
+ </verification_context>
590
+
591
+ <expected_output>
592
+ - ## VERIFICATION PASSED — all checks pass
593
+ - ## ISSUES FOUND — structured issue list
594
+ </expected_output>
595
+ ```
596
+
597
+ ```
598
+ Task(
599
+ prompt=checker_prompt,
600
+ subagent_type="mindforge-plan-checker",
601
+ model="{checker_model}",
602
+ description="Verify Phase {phase} plans"
603
+ )
604
+ ```
605
+
606
+ ## 11. Handle Checker Return
607
+
608
+ - **`## VERIFICATION PASSED`:** Display confirmation, proceed to step 13.
609
+ - **`## ISSUES FOUND`:** Display issues, check iteration count, proceed to step 12.
610
+
611
+ ## 12. Revision Loop (Max 3 Iterations)
612
+
613
+ Track `iteration_count` (starts at 1 after initial plan + check).
614
+
615
+ **If iteration_count < 3:**
616
+
617
+ Display: `Sending back to planner for revision... (iteration {N}/3)`
618
+
619
+ Revision prompt:
620
+
621
+ ```markdown
622
+ <revision_context>
623
+ **Phase:** {phase_number}
624
+ **Mode:** revision
625
+
626
+ <files_to_read>
627
+ - {PHASE_DIR}/*-PLAN.md (Existing plans)
628
+ - {context_path} (USER DECISIONS from /mindforge-discuss-phase)
629
+ </files_to_read>
630
+
631
+ **Checker issues:** {structured_issues_from_checker}
632
+ </revision_context>
633
+
634
+ <instructions>
635
+ Make targeted updates to address checker issues.
636
+ Do NOT replan from scratch unless issues are fundamental.
637
+ Return what changed.
638
+ </instructions>
639
+ ```
640
+
641
+ ```
642
+ Task(
643
+ prompt=revision_prompt,
644
+ subagent_type="mindforge-planner",
645
+ model="{planner_model}",
646
+ description="Revise Phase {phase} plans"
647
+ )
648
+ ```
649
+
650
+ After planner returns -> spawn checker again (step 10), increment iteration_count.
651
+
652
+ **If iteration_count >= 3:**
653
+
654
+ Display: `Max iterations reached. {N} issues remain:` + issue list
655
+
656
+ Offer: 1) Force proceed, 2) Provide guidance and retry, 3) Abandon
657
+
658
+ ## 13. Requirements Coverage Gate
659
+
660
+ After plans pass the checker (or checker is skipped), verify that all phase requirements are covered by at least one plan.
661
+
662
+ **Skip if:** `phase_req_ids` is null or TBD (no requirements mapped to this phase).
663
+
664
+ **Step 1: Extract requirement IDs claimed by plans**
665
+ ```bash
666
+ # Collect all requirement IDs from plan frontmatter
667
+ PLAN_REQS=$(grep -h "requirements_addressed\|requirements:" ${PHASE_DIR}/*-PLAN.md 2>/dev/null | tr -d '[]' | tr ',' '\n' | sed 's/^[[:space:]]*//' | sort -u)
668
+ ```
669
+
670
+ **Step 2: Compare against phase requirements from ROADMAP**
671
+
672
+ For each REQ-ID in `phase_req_ids`:
673
+ - If REQ-ID appears in `PLAN_REQS` → covered ✓
674
+ - If REQ-ID does NOT appear in any plan → uncovered ✗
675
+
676
+ **Step 3: Check CONTEXT.md features against plan objectives**
677
+
678
+ Read CONTEXT.md `<decisions>` section. Extract feature/capability names. Check each against plan `<objective>` blocks. Features not mentioned in any plan objective → potentially dropped.
679
+
680
+ **Step 4: Report**
681
+
682
+ If all requirements covered and no dropped features:
683
+ ```
684
+ ✓ Requirements coverage: {N}/{N} REQ-IDs covered by plans
685
+ ```
686
+ → Proceed to step 14.
687
+
688
+ If gaps found:
689
+ ```
690
+ ## ⚠ Requirements Coverage Gap
691
+
692
+ {M} of {N} phase requirements are not assigned to any plan:
693
+
694
+ | REQ-ID | Description | Plans |
695
+ |--------|-------------|-------|
696
+ | {id} | {from REQUIREMENTS.md} | None |
697
+
698
+ {K} CONTEXT.md features not found in plan objectives:
699
+ - {feature_name} — described in CONTEXT.md but no plan covers it
700
+
701
+ Options:
702
+ 1. Re-plan to include missing requirements (recommended)
703
+ 2. Move uncovered requirements to next phase
704
+ 3. Proceed anyway — accept coverage gaps
705
+ ```
706
+
707
+ If `TEXT_MODE` is true, present as a plain-text numbered list (options already shown in the block above). Otherwise use AskUserQuestion to present the options.
708
+
709
+ ## 14. Present Final Status
710
+
711
+ Route to `<offer_next>` OR `auto_advance` depending on flags/config.
712
+
713
+ ## 15. Auto-Advance Check
714
+
715
+ Check for auto-advance trigger:
716
+
717
+ 1. Parse `--auto` flag from $ARGUMENTS
718
+ 2. **Sync chain flag with intent** — if user invoked manually (no `--auto`), clear the ephemeral chain flag from any previous interrupted `--auto` chain. This does NOT touch `workflow.auto_advance` (the user's persistent settings preference):
719
+ ```bash
720
+ if [[ ! "$ARGUMENTS" =~ --auto ]]; then
721
+ node ".agent/bin/mindforge-tools.cjs" config-set workflow._auto_chain_active false 2>/dev/null
722
+ fi
723
+ ```
724
+ 3. Read both the chain flag and user preference:
725
+ ```bash
726
+ AUTO_CHAIN=$(node ".agent/bin/mindforge-tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
727
+ AUTO_CFG=$(node ".agent/bin/mindforge-tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
728
+ ```
729
+
730
+ **If `--auto` flag present OR `AUTO_CHAIN` is true OR `AUTO_CFG` is true:**
731
+
732
+ Display banner:
733
+ ```
734
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
735
+ MindForge ► AUTO-ADVANCING TO EXECUTE
736
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
737
+
738
+ Plans ready. Launching execute-phase...
739
+ ```
740
+
741
+ Launch execute-phase using the Skill tool to avoid nested Task sessions (which cause runtime freezes due to deep agent nesting):
742
+ ```
743
+ Skill(skill="mindforge-execute-phase", args="${PHASE} --auto --no-transition ${MindForge_WS}")
744
+ ```
745
+
746
+ The `--no-transition` flag tells execute-phase to return status after verification instead of chaining further. This keeps the auto-advance chain flat — each phase runs at the same nesting level rather than spawning deeper Task agents.
747
+
748
+ **Handle execute-phase return:**
749
+ - **PHASE COMPLETE** → Display final summary:
750
+ ```
751
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
752
+ MindForge ► PHASE ${PHASE} COMPLETE ✓
753
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
754
+
755
+ Auto-advance pipeline finished.
756
+
757
+ Next: /mindforge-discuss-phase ${NEXT_PHASE} --auto ${MindForge_WS}
758
+ ```
759
+ - **GAPS FOUND / VERIFICATION FAILED** → Display result, stop chain:
760
+ ```
761
+ Auto-advance stopped: Execution needs review.
762
+
763
+ Review the output above and continue manually:
764
+ /mindforge-execute-phase ${PHASE} ${MindForge_WS}
765
+ ```
766
+
767
+ **If neither `--auto` nor config enabled:**
768
+ Route to `<offer_next>` (existing behavior).
769
+
770
+ </process>
771
+
772
+ <offer_next>
773
+ Output this markdown directly (not as a code block):
774
+
775
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
776
+ MindForge ► PHASE {X} PLANNED ✓
777
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
778
+
779
+ **Phase {X}: {Name}** — {N} plan(s) in {M} wave(s)
780
+
781
+ | Wave | Plans | What it builds |
782
+ |------|-------|----------------|
783
+ | 1 | 01, 02 | [objectives] |
784
+ | 2 | 03 | [objective] |
785
+
786
+ Research: {Completed | Used existing | Skipped}
787
+ Verification: {Passed | Passed with override | Skipped}
788
+
789
+ ───────────────────────────────────────────────────────────────
790
+
791
+ ## ▶ Next Up
792
+
793
+ **Execute Phase {X}** — run all {N} plans
794
+
795
+ /mindforge-execute-phase {X} ${MindForge_WS}
796
+
797
+ <sub>/clear first → fresh context window</sub>
798
+
799
+ ───────────────────────────────────────────────────────────────
800
+
801
+ **Also available:**
802
+ - cat .planning/phases/{phase-dir}/*-PLAN.md — review plans
803
+ - /mindforge-plan-phase {X} --research — re-research first
804
+ - /mindforge-review --phase {X} --all — peer review plans with external AIs
805
+ - /mindforge-plan-phase {X} --reviews — replan incorporating review feedback
806
+
807
+ ───────────────────────────────────────────────────────────────
808
+ </offer_next>
809
+
810
+ <windows_troubleshooting>
811
+ **Windows users:** If plan-phase freezes during agent spawning (common on Windows due to
812
+ stdio deadlocks with MCP servers — see Claude Code issue anthropics/claude-code#28126):
813
+
814
+ 1. **Force-kill:** Close the terminal (Ctrl+C may not work)
815
+ 2. **Clean up orphaned processes:**
816
+ ```powershell
817
+ # Kill orphaned node processes from stale MCP servers
818
+ Get-Process node -ErrorAction SilentlyContinue | Where-Object {$_.StartTime -lt (Get-Date).AddHours(-1)} | Stop-Process -Force
819
+ ```
820
+ 3. **Clean up stale task directories:**
821
+ ```powershell
822
+ # Remove stale subagent task dirs (Claude Code never cleans these on crash)
823
+ Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\tasks\*" -ErrorAction SilentlyContinue
824
+ ```
825
+ 4. **Reduce MCP server count:** Temporarily disable non-essential MCP servers in settings.json
826
+ 5. **Retry:** Restart Claude Code and run `/mindforge-plan-phase` again
827
+
828
+ If freezes persist, try `--skip-research` to reduce the agent chain from 3 to 2 agents:
829
+ ```
830
+ /mindforge-plan-phase N --skip-research
831
+ ```
832
+ </windows_troubleshooting>
833
+
834
+ <success_criteria>
835
+ - [ ] .planning/ directory validated
836
+ - [ ] Phase validated against roadmap
837
+ - [ ] Phase directory created if needed
838
+ - [ ] CONTEXT.md loaded early (step 4) and passed to ALL agents
839
+ - [ ] Research completed (unless --skip-research or --gaps or exists)
840
+ - [ ] mindforge-phase-researcher spawned with CONTEXT.md
841
+ - [ ] Existing plans checked
842
+ - [ ] mindforge-planner spawned with CONTEXT.md + RESEARCH.md
843
+ - [ ] Plans created (PLANNING COMPLETE or CHECKPOINT handled)
844
+ - [ ] mindforge-plan-checker spawned with CONTEXT.md
845
+ - [ ] Verification passed OR user override OR max iterations with user decision
846
+ - [ ] User sees status between agent spawns
847
+ - [ ] User knows next steps
848
+ </success_criteria>