@sienklogic/plan-build-run 2.34.0 → 2.37.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 (133) hide show
  1. package/CHANGELOG.md +663 -0
  2. package/dashboard/public/css/command-center.css +152 -65
  3. package/dashboard/public/css/explorer.css +22 -41
  4. package/dashboard/public/css/layout.css +119 -1
  5. package/dashboard/public/css/tokens.css +13 -0
  6. package/dashboard/src/components/Layout.tsx +32 -6
  7. package/dashboard/src/components/explorer/tabs/PhasesTab.tsx +11 -1
  8. package/dashboard/src/components/explorer/tabs/TodosTab.tsx +18 -2
  9. package/dashboard/src/components/partials/AttentionPanel.tsx +7 -1
  10. package/dashboard/src/components/partials/CurrentPhaseCard.tsx +26 -24
  11. package/dashboard/src/components/partials/QuickActions.tsx +21 -11
  12. package/dashboard/src/components/partials/StatCardGrid.tsx +67 -0
  13. package/dashboard/src/components/partials/StatusHeader.tsx +1 -0
  14. package/dashboard/src/routes/command-center.routes.tsx +8 -7
  15. package/dashboard/src/routes/index.routes.tsx +32 -29
  16. package/package.json +2 -2
  17. package/plugins/copilot-pbr/agents/audit.agent.md +128 -16
  18. package/plugins/copilot-pbr/agents/codebase-mapper.agent.md +48 -1
  19. package/plugins/copilot-pbr/agents/debugger.agent.md +47 -1
  20. package/plugins/copilot-pbr/agents/executor.agent.md +152 -8
  21. package/plugins/copilot-pbr/agents/general.agent.md +46 -1
  22. package/plugins/copilot-pbr/agents/integration-checker.agent.md +52 -2
  23. package/plugins/copilot-pbr/agents/plan-checker.agent.md +50 -2
  24. package/plugins/copilot-pbr/agents/planner.agent.md +54 -1
  25. package/plugins/copilot-pbr/agents/researcher.agent.md +47 -2
  26. package/plugins/copilot-pbr/agents/synthesizer.agent.md +49 -1
  27. package/plugins/copilot-pbr/agents/verifier.agent.md +86 -2
  28. package/plugins/copilot-pbr/hooks/hooks.json +11 -0
  29. package/plugins/copilot-pbr/plugin.json +1 -1
  30. package/plugins/copilot-pbr/references/agent-contracts.md +27 -0
  31. package/plugins/copilot-pbr/references/checkpoints.md +32 -1
  32. package/plugins/copilot-pbr/references/context-quality-tiers.md +45 -0
  33. package/plugins/copilot-pbr/references/pbr-tools-cli.md +115 -0
  34. package/plugins/copilot-pbr/references/questioning.md +21 -1
  35. package/plugins/copilot-pbr/references/verification-patterns.md +52 -1
  36. package/plugins/copilot-pbr/skills/audit/SKILL.md +19 -3
  37. package/plugins/copilot-pbr/skills/begin/SKILL.md +57 -4
  38. package/plugins/copilot-pbr/skills/build/SKILL.md +39 -2
  39. package/plugins/copilot-pbr/skills/debug/SKILL.md +12 -1
  40. package/plugins/copilot-pbr/skills/explore/SKILL.md +13 -2
  41. package/plugins/copilot-pbr/skills/import/SKILL.md +26 -1
  42. package/plugins/copilot-pbr/skills/milestone/SKILL.md +15 -3
  43. package/plugins/copilot-pbr/skills/plan/SKILL.md +50 -0
  44. package/plugins/copilot-pbr/skills/quick/SKILL.md +21 -0
  45. package/plugins/copilot-pbr/skills/review/SKILL.md +45 -0
  46. package/plugins/copilot-pbr/skills/scan/SKILL.md +20 -0
  47. package/plugins/copilot-pbr/templates/SUMMARY-complex.md.tmpl +95 -0
  48. package/plugins/copilot-pbr/templates/SUMMARY-minimal.md.tmpl +48 -0
  49. package/plugins/cursor-pbr/.cursor-plugin/plugin.json +1 -1
  50. package/plugins/cursor-pbr/agents/audit.md +51 -5
  51. package/plugins/cursor-pbr/agents/codebase-mapper.md +48 -1
  52. package/plugins/cursor-pbr/agents/debugger.md +47 -1
  53. package/plugins/cursor-pbr/agents/executor.md +152 -8
  54. package/plugins/cursor-pbr/agents/general.md +46 -1
  55. package/plugins/cursor-pbr/agents/integration-checker.md +51 -1
  56. package/plugins/cursor-pbr/agents/plan-checker.md +49 -1
  57. package/plugins/cursor-pbr/agents/planner.md +54 -1
  58. package/plugins/cursor-pbr/agents/researcher.md +46 -1
  59. package/plugins/cursor-pbr/agents/synthesizer.md +49 -1
  60. package/plugins/cursor-pbr/agents/verifier.md +85 -1
  61. package/plugins/cursor-pbr/hooks/hooks.json +9 -0
  62. package/plugins/cursor-pbr/references/agent-contracts.md +27 -0
  63. package/plugins/cursor-pbr/references/checkpoints.md +32 -1
  64. package/plugins/cursor-pbr/references/context-quality-tiers.md +45 -0
  65. package/plugins/cursor-pbr/references/pbr-tools-cli.md +115 -0
  66. package/plugins/cursor-pbr/references/questioning.md +21 -1
  67. package/plugins/cursor-pbr/references/verification-patterns.md +52 -1
  68. package/plugins/cursor-pbr/skills/audit/SKILL.md +19 -3
  69. package/plugins/cursor-pbr/skills/begin/SKILL.md +57 -4
  70. package/plugins/cursor-pbr/skills/build/SKILL.md +37 -2
  71. package/plugins/cursor-pbr/skills/debug/SKILL.md +12 -1
  72. package/plugins/cursor-pbr/skills/explore/SKILL.md +13 -2
  73. package/plugins/cursor-pbr/skills/import/SKILL.md +26 -1
  74. package/plugins/cursor-pbr/skills/milestone/SKILL.md +15 -3
  75. package/plugins/cursor-pbr/skills/plan/SKILL.md +50 -0
  76. package/plugins/cursor-pbr/skills/quick/SKILL.md +21 -0
  77. package/plugins/cursor-pbr/skills/review/SKILL.md +45 -0
  78. package/plugins/cursor-pbr/skills/scan/SKILL.md +20 -0
  79. package/plugins/cursor-pbr/templates/SUMMARY-complex.md.tmpl +95 -0
  80. package/plugins/cursor-pbr/templates/SUMMARY-minimal.md.tmpl +48 -0
  81. package/plugins/pbr/.claude-plugin/plugin.json +1 -1
  82. package/plugins/pbr/agents/audit.md +44 -0
  83. package/plugins/pbr/agents/codebase-mapper.md +47 -0
  84. package/plugins/pbr/agents/debugger.md +46 -0
  85. package/plugins/pbr/agents/executor.md +150 -6
  86. package/plugins/pbr/agents/general.md +45 -0
  87. package/plugins/pbr/agents/integration-checker.md +50 -0
  88. package/plugins/pbr/agents/plan-checker.md +48 -0
  89. package/plugins/pbr/agents/planner.md +51 -0
  90. package/plugins/pbr/agents/researcher.md +45 -0
  91. package/plugins/pbr/agents/synthesizer.md +48 -0
  92. package/plugins/pbr/agents/verifier.md +84 -0
  93. package/plugins/pbr/hooks/hooks.json +9 -0
  94. package/plugins/pbr/references/agent-contracts.md +27 -0
  95. package/plugins/pbr/references/checkpoints.md +32 -0
  96. package/plugins/pbr/references/context-quality-tiers.md +45 -0
  97. package/plugins/pbr/references/pbr-tools-cli.md +115 -0
  98. package/plugins/pbr/references/questioning.md +21 -0
  99. package/plugins/pbr/references/verification-patterns.md +52 -0
  100. package/plugins/pbr/scripts/check-plan-format.js +13 -1
  101. package/plugins/pbr/scripts/check-state-sync.js +26 -7
  102. package/plugins/pbr/scripts/check-subagent-output.js +30 -2
  103. package/plugins/pbr/scripts/config-schema.json +11 -1
  104. package/plugins/pbr/scripts/context-bridge.js +259 -0
  105. package/plugins/pbr/scripts/lib/config.js +178 -0
  106. package/plugins/pbr/scripts/lib/core.js +578 -0
  107. package/plugins/pbr/scripts/lib/history.js +73 -0
  108. package/plugins/pbr/scripts/lib/init.js +166 -0
  109. package/plugins/pbr/scripts/lib/phase.js +364 -0
  110. package/plugins/pbr/scripts/lib/roadmap.js +175 -0
  111. package/plugins/pbr/scripts/lib/state.js +397 -0
  112. package/plugins/pbr/scripts/pbr-tools.js +346 -1310
  113. package/plugins/pbr/scripts/post-write-dispatch.js +5 -4
  114. package/plugins/pbr/scripts/pre-write-dispatch.js +1 -1
  115. package/plugins/pbr/scripts/progress-tracker.js +1 -1
  116. package/plugins/pbr/scripts/suggest-compact.js +1 -1
  117. package/plugins/pbr/scripts/track-context-budget.js +53 -2
  118. package/plugins/pbr/scripts/validate-task.js +20 -28
  119. package/plugins/pbr/skills/audit/SKILL.md +19 -3
  120. package/plugins/pbr/skills/begin/SKILL.md +48 -2
  121. package/plugins/pbr/skills/build/SKILL.md +39 -2
  122. package/plugins/pbr/skills/debug/SKILL.md +12 -1
  123. package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +12 -1
  124. package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +12 -5
  125. package/plugins/pbr/skills/explore/SKILL.md +13 -2
  126. package/plugins/pbr/skills/import/SKILL.md +26 -1
  127. package/plugins/pbr/skills/milestone/SKILL.md +15 -3
  128. package/plugins/pbr/skills/plan/SKILL.md +52 -2
  129. package/plugins/pbr/skills/quick/SKILL.md +21 -0
  130. package/plugins/pbr/skills/review/SKILL.md +46 -0
  131. package/plugins/pbr/skills/scan/SKILL.md +20 -0
  132. package/plugins/pbr/templates/SUMMARY-complex.md.tmpl +95 -0
  133. package/plugins/pbr/templates/SUMMARY-minimal.md.tmpl +48 -0
@@ -226,6 +226,14 @@ For each researcher, construct the prompt by reading the template and filling in
226
226
 
227
227
  Read `skills/begin/templates/researcher-prompt.md.tmpl` for the prompt structure.
228
228
 
229
+ **Prepend this block to the researcher prompt before sending:**
230
+ ```
231
+ <files_to_read>
232
+ CRITICAL: Read these files BEFORE any other action:
233
+ 1. .planning/REQUIREMENTS.md — scoped requirements (if exists)
234
+ </files_to_read>
235
+ ```
236
+
229
237
  **Placeholders to fill:**
230
238
  - `{project name from questioning}` — project name gathered in Step 2
231
239
  - `{2-3 sentence description from questioning}` — project description from Step 2
@@ -268,6 +276,11 @@ Read `skills/begin/templates/researcher-prompt.md.tmpl` for the prompt structure
268
276
  - When all complete: "All {N} researchers finished. Proceeding to synthesis."
269
277
  - Wait for all to complete before proceeding
270
278
 
279
+ **After each researcher completes**, check the agent output for a completion marker:
280
+ - If `## RESEARCH COMPLETE` is present: researcher finished successfully, proceed
281
+ - If `## RESEARCH BLOCKED` is present: warn the user that research could not complete, ask if they want to proceed with limited context or stop
282
+ - If neither marker is present: warn that researcher may not have completed successfully, but proceed if output files exist on disk
283
+
271
284
  ---
272
285
 
273
286
  ### Step 6: Synthesis (delegated to agent)
@@ -284,12 +297,38 @@ Invoke the `@synthesizer` agent with the synthesis prompt.
284
297
 
285
298
  Read `skills/begin/templates/synthesis-prompt.md.tmpl` for the prompt structure.
286
299
 
300
+ **Prepend this block to the synthesizer prompt before sending:**
301
+ ```
302
+ <files_to_read>
303
+ CRITICAL: Read these files BEFORE any other action:
304
+ 1. .planning/research/*.md — all research output files from Step 5
305
+ </files_to_read>
306
+ ```
307
+
287
308
  **Placeholders to fill:**
288
309
  - `{List all .planning/research/*.md files that were created}` — list the research files produced in Step 5
289
310
 
290
- **After the synthesizer completes**, display:
311
+ **After the synthesizer completes**, check for completion markers in the Task() output:
312
+
313
+ - If `## SYNTHESIS COMPLETE` is present: proceed normally
314
+ - If `## SYNTHESIS BLOCKED` is present: warn the user and offer to proceed without synthesis:
315
+ ```
316
+ ⚠ Synthesizer reported BLOCKED: {reason from output}
317
+ Research files are still available individually in .planning/research/.
318
+ ```
319
+ Use AskUserQuestion (pattern: yes-no from `skills/shared/gate-prompts.md`):
320
+ question: "Synthesis was blocked. Continue without synthesis?"
321
+ header: "Blocked"
322
+ options:
323
+ - label: "Yes" description: "Proceed to requirements — use individual research files"
324
+ - label: "No" description: "Stop and investigate"
325
+ - If "Yes": proceed to Step 7 without SUMMARY.md
326
+ - If "No": stop and suggest reviewing .planning/research/ files
327
+ - If neither marker is found: warn the user that the synthesizer may not have completed successfully, but proceed if SUMMARY.md exists on disk
328
+
329
+ If synthesis succeeded, display:
291
330
  ```
292
- Research synthesis complete — see .planning/research/SUMMARY.md
331
+ Research synthesis complete — see .planning/research/SUMMARY.md
293
332
  ```
294
333
 
295
334
  ---
@@ -353,12 +392,26 @@ Invoke the `@planner` agent in roadmap mode with the roadmap prompt.
353
392
 
354
393
  Read `skills/begin/templates/roadmap-prompt.md.tmpl` for the prompt structure.
355
394
 
395
+ **Prepend this block to the roadmap planner prompt before sending:**
396
+ ```
397
+ <files_to_read>
398
+ CRITICAL: Read these files BEFORE any other action:
399
+ 1. .planning/REQUIREMENTS.md — scoped requirements for phase planning
400
+ 2. .planning/research/SUMMARY.md — research synthesis (if exists)
401
+ </files_to_read>
402
+ ```
403
+
356
404
  **Placeholders to fill:**
357
405
  - `{project name}` — project name from Step 2
358
406
  - `{description}` — project description from Step 2
359
407
  - `{quick|standard|comprehensive}` — depth setting from Step 3
360
408
 
361
- **After the planner completes:**
409
+ **After the planner completes**, check the agent output for a completion marker:
410
+ - If `## PLANNING COMPLETE` is present: planner finished successfully, proceed
411
+ - If `## PLANNING FAILED` is present: warn the user that planning could not complete, display the reason, and offer to retry or abort
412
+ - If neither marker is present: warn that planner may not have completed successfully, but proceed if ROADMAP.md exists on disk
413
+
414
+ - **Spot-check:** Verify `.planning/ROADMAP.md` exists on disk using Glob before attempting to read it. If missing, the planner may have failed silently — warn: `⚠ ROADMAP.md not found after planner completed. Re-spawning planner...` and retry once.
362
415
  - Read `.planning/ROADMAP.md`
363
416
  - Count the phases and milestones from the roadmap content
364
417
  - Display:
@@ -505,7 +558,7 @@ Delete `.planning/.active-skill` if it exists. This must happen on all paths (su
505
558
 
506
559
  After all steps complete, present the final summary using the stage banner format from Read `references/ui-formatting.md`:
507
560
 
508
- Display the `PROJECT INITIALIZED` banner with project name, core value, phase list, and requirement counts. Then display the "Next Up" block (see § "Next Up Block" in ui-formatting.md) pointing to `/pbr:discuss 1` with alternatives: `/pbr:explore`, `/pbr:plan 1`, `/pbr:config`.
561
+ Display the `PROJECT INITIALIZED ✓` banner with project name, core value, phase list, and requirement counts. Then display the "Next Up" block (see § "Next Up Block" in ui-formatting.md) pointing to `/pbr:discuss 1` with alternatives: `/pbr:explore`, `/pbr:plan 1`, `/pbr:milestone new`, `/pbr:config`. Include `<sub>/clear first → fresh context window</sub>` inside the Next Up routing block.
509
562
 
510
563
  ---
511
564
 
@@ -132,6 +132,8 @@ Phase {N} depends on Phase {M}, which is not complete.
132
132
 
133
133
  ### Step 2: Load Config (inline)
134
134
 
135
+ **Init-first pattern**: When spawning agents, pass the output of `node plugins/pbr/scripts/pbr-tools.js init execute-phase {N}` as context rather than having the agent read multiple files separately. This reduces file reads and prevents context-loading failures.
136
+
135
137
  Read configuration values needed for execution. See `skills/shared/config-loading.md` for the full field reference; build uses: `parallelization.*`, `features.goal_verification`, `features.inline_verify`, `features.atomic_commits`, `features.auto_continue`, `features.auto_advance`, `planning.commit_docs`, `git.commit_format`, `git.branching`.
136
138
 
137
139
  ---
@@ -301,6 +303,13 @@ Construct the executor prompt:
301
303
  ```
302
304
  You are the executor agent. Execute the following plan.
303
305
 
306
+ <files_to_read>
307
+ CRITICAL: Read these files BEFORE any other action:
308
+ 1. .planning/phases/{NN}-{slug}/{plan_id}-PLAN.md — the full plan with task details
309
+ 2. .planning/CONTEXT.md — locked decisions and constraints (if exists)
310
+ 3. .planning/STATE.md — current project state and progress
311
+ </files_to_read>
312
+
304
313
  <plan_summary>
305
314
  [Inline only the ## Summary section from PLAN.md]
306
315
  </plan_summary>
@@ -370,7 +379,9 @@ Task({
370
379
  prompt: <executor prompt constructed above>
371
380
  })
372
381
 
373
- NOTE: The pbr:executor agent type auto-loads the agent definition. Do NOT inline it.
382
+ NOTE: The pbr:executor agent type auto-loads the agent definition.
383
+
384
+ After executor completes, check for completion markers: `## PLAN COMPLETE`, `## PLAN FAILED`, or `## CHECKPOINT: {TYPE}`. Route accordingly — PLAN COMPLETE proceeds to next plan, PLAN FAILED triggers failure handling, CHECKPOINT triggers checkpoint flow. Do NOT inline it.
374
385
  ```
375
386
 
376
387
  **Path resolution**: Before constructing the agent prompt, resolve `${PLUGIN_ROOT}` to its absolute path. Do not pass the variable literally in prompts — Task() contexts may not expand it. Use the resolved absolute path for any pbr-tools.js or template references included in the prompt.
@@ -406,6 +417,11 @@ After reading each SUMMARY, perform a lightweight verification:
406
417
  - If ANY spot-check fails, warn the user before proceeding to the next wave:
407
418
  "Spot-check failed for plan {id}: {detail}. Inspect before continuing?"
408
419
 
420
+ **Additional wave spot-checks:**
421
+ - Check for `## Self-Check: FAILED` in SUMMARY.md — if present, warn user before proceeding to next wave
422
+ - Between waves: verify no file conflicts from parallel executors (check `git status` for uncommitted changes)
423
+ - If ANY spot-check fails, present user with: **Retry this plan** / **Continue to next wave** / **Abort build**
424
+
409
425
  **Read executor deviations:**
410
426
 
411
427
  After all executors in the wave complete, read all SUMMARY frontmatter and:
@@ -448,7 +464,14 @@ For each plan that completed successfully in this wave:
448
464
  Task({
449
465
  agent_type: "pbr:verifier",
450
466
  model: "haiku",
451
- prompt: "Targeted inline verification for plan {plan_id}.
467
+ prompt: "<files_to_read>
468
+ CRITICAL: Read these files BEFORE any other action:
469
+ 1. .planning/phases/{NN}-{slug}/{plan_id}-PLAN.md — must-haves to verify against
470
+ 2. .planning/phases/{NN}-{slug}/SUMMARY-{plan_id}.md — what the executor claims was built
471
+ 3. .planning/phases/{NN}-{slug}/VERIFICATION.md — prior verification results (if exists)
472
+ </files_to_read>
473
+
474
+ Targeted inline verification for plan {plan_id}.
452
475
 
453
476
  Verify ONLY these files: {comma-separated key_files list}
454
477
 
@@ -653,6 +676,8 @@ Task({
653
676
  })
654
677
 
655
678
  NOTE: The pbr:verifier agent type auto-loads the agent definition. Do NOT inline it.
679
+
680
+ After verifier completes, check for completion marker: `## VERIFICATION COMPLETE`. Read VERIFICATION.md frontmatter for status.
656
681
  ```
657
682
 
658
683
  **Path resolution**: Before constructing the agent prompt, resolve `${PLUGIN_ROOT}` to its absolute path. Do not pass the variable literally in prompts — Task() contexts may not expand it. Use the resolved absolute path for any pbr-tools.js or template references included in the prompt.
@@ -661,6 +686,16 @@ NOTE: The pbr:verifier agent type auto-loads the agent definition. Do NOT inline
661
686
 
662
687
  Use the same verifier prompt template as defined in `/pbr:review`: read `skills/review/templates/verifier-prompt.md.tmpl` and fill in its placeholders with the phase's PLAN.md must_haves and SUMMARY.md file paths. This avoids maintaining duplicate verifier prompts across skills.
663
688
 
689
+ **Prepend this block to the verifier prompt before sending:**
690
+ ```
691
+ <files_to_read>
692
+ CRITICAL: Read these files BEFORE any other action:
693
+ 1. .planning/phases/{NN}-{slug}/PLAN-*.md — must-haves to verify against
694
+ 2. .planning/phases/{NN}-{slug}/SUMMARY-*.md — executor build summaries
695
+ 3. .planning/phases/{NN}-{slug}/VERIFICATION.md — prior verification results (if exists)
696
+ </files_to_read>
697
+ ```
698
+
664
699
  After the verifier returns, read the VERIFICATION.md frontmatter and display the results:
665
700
 
666
701
  - If status is `passed`: display `✓ Verifier: {X}/{Y} must-haves verified` (where X = `must_haves_passed` and Y = `must_haves_checked`)
@@ -825,6 +860,8 @@ Then present the appropriate branded banner from Read `references/ui-formatting.
825
860
  - **If `passed` + last phase:** Use the "Milestone Complete" template. Fill in phase count.
826
861
  - **If `gaps_found`:** Use the "Gaps Found" template. Fill in phase number, name, score, and gap summaries from VERIFICATION.md.
827
862
 
863
+ Include `<sub>/clear first → fresh context window</sub>` inside the Next Up routing block of the completion template.
864
+
828
865
  **8g. Display USER-SETUP.md (conditional):**
829
866
 
830
867
  Check if `.planning/phases/{NN}-{slug}/USER-SETUP.md` exists. If it does:
@@ -209,7 +209,18 @@ Continuing investigation...
209
209
 
210
210
  ### Step 4: Handle Debugger Results
211
211
 
212
- When the debugger agent completes, display: `✓ Debug session complete {N} hypotheses tested` (read the hypothesis count from the debug file's Hypotheses table).
212
+ When the debugger agent completes, first check for completion markers in the Task() output before routing:
213
+
214
+ | Marker in Task() Output | Route To |
215
+ |--------------------------|----------|
216
+ | `## DEBUG COMPLETE` | ROOT CAUSE FOUND + FIX path |
217
+ | `## ROOT CAUSE FOUND` | ROOT CAUSE FOUND (no fix) path |
218
+ | `## DEBUG SESSION PAUSED` | CHECKPOINT path |
219
+ | No marker found | INCONCLUSIVE path |
220
+
221
+ **Spot-check:** Before routing, verify `.planning/debug/{NNN}-{slug}.md` exists and was recently updated (modified timestamp is newer than the Task() spawn time). If the debug file was not updated, warn: `⚠ Debug file not updated by agent — results may be incomplete.`
222
+
223
+ Display: `✓ Debug session complete — {N} hypotheses tested` (read the hypothesis count from the debug file's Hypotheses table).
213
224
 
214
225
  The debugger returns one of four outcomes:
215
226
 
@@ -118,7 +118,12 @@ Display to the user: `◐ Spawning researcher...`
118
118
  ```
119
119
  Task({
120
120
  subagent_type: "pbr:researcher",
121
- prompt: "<research_assignment>
121
+ prompt: "<files_to_read>
122
+ CRITICAL: Read these files BEFORE any other action:
123
+ 1. .planning/CONTEXT.md — locked decisions and constraints (if exists)
124
+ 2. .planning/STATE.md — current project state (if exists)
125
+ </files_to_read>
126
+ <research_assignment>
122
127
  Topic: {specific research question}
123
128
  Output file: .planning/research/{topic-slug}.md
124
129
  Mode: project-research
@@ -130,7 +135,13 @@ Task({
130
135
  })
131
136
  ```
132
137
 
133
- After the researcher completes, display: `✓ Research complete results in .planning/research/{topic-slug}.md`
138
+ After the researcher completes, check for completion markers in the Task() output:
139
+
140
+ - If `## RESEARCH COMPLETE` is present: proceed normally
141
+ - If `## RESEARCH BLOCKED` is present: display the blocker reason and offer to retry:
142
+ `⚠ Research blocked: {reason}. Try a different angle or continue without research.`
143
+
144
+ Display: `✓ Research complete — results in .planning/research/{topic-slug}.md`
134
145
 
135
146
  Then:
136
147
  - Read ONLY the frontmatter and summary section of the research file (not the full document)
@@ -275,6 +275,13 @@ Task({
275
275
  ```
276
276
  You are the plan-checker agent.
277
277
 
278
+ <files_to_read>
279
+ CRITICAL: Read these files BEFORE any other action:
280
+ 1. .planning/CONTEXT.md — locked decisions and constraints (if exists)
281
+ 2. .planning/STATE.md — current project state and progress
282
+ 3. .planning/ROADMAP.md — phase structure, goals, and dependencies
283
+ </files_to_read>
284
+
278
285
  <plans_to_check>
279
286
  {For each generated PLAN.md:}
280
287
  --- Plan File: {filename} ---
@@ -305,7 +312,15 @@ Run all verification dimensions on these plans. Return your structured report.
305
312
  Do NOT write any files. Return your findings as your response text.
306
313
  ```
307
314
 
308
- **Process checker results — revision loop:**
315
+ **Process checker results — completion marker check:**
316
+
317
+ After the plan-checker completes, check for completion markers in the Task() output:
318
+
319
+ - If `## CHECK PASSED` is present: skip the revision loop entirely and proceed to Step 7.
320
+ - If `## ISSUES FOUND` is present: enter the revision loop below.
321
+ - If neither marker is found: treat as issues found and enter the revision loop.
322
+
323
+ **Revision loop:**
309
324
 
310
325
  Reference: `skills/shared/revision-loop.md` for the full Check-Revise-Escalate pattern (max 3 iterations).
311
326
 
@@ -325,6 +340,16 @@ If existing plans are being replaced (user confirmed in Step 1):
325
340
 
326
341
  ---
327
342
 
343
+ **Step 7b — Spot-check artifacts:**
344
+
345
+ After writing plan files, verify they landed on disk:
346
+
347
+ 1. Glob `.planning/phases/{NN}-{slug}/PLAN-*.md` to confirm files exist
348
+ 2. Count matches — must equal the number of plans generated in Step 5
349
+ 3. If any are missing: re-attempt the write. If still missing, display an error listing the missing files.
350
+
351
+ ---
352
+
328
353
  ### Step 8: Update All State (inline)
329
354
 
330
355
  Perform all state updates in this order:
@@ -486,6 +486,12 @@ Verify milestone completion with cross-phase integration checks.
486
486
  ```
487
487
  You are integration-checker. Perform cross-phase integration verification.
488
488
 
489
+ <files_to_read>
490
+ CRITICAL: Read these files BEFORE any other action:
491
+ 1. .planning/ROADMAP.md — phase structure, goals, and dependencies
492
+ 2. .planning/phases/{NN}-{slug}/SUMMARY.md — for each milestone phase (read all)
493
+ </files_to_read>
494
+
489
495
  Milestone: {version or "current"}
490
496
  Phases to check: {list of phase directories}
491
497
 
@@ -505,20 +511,26 @@ Verify milestone completion with cross-phase integration checks.
505
511
  5. Return findings as a structured report
506
512
  ```
507
513
 
508
- 4. **Check requirements coverage:**
514
+ 4. **Check integration-checker completion:**
515
+
516
+ After the integration-checker completes, check for `## INTEGRATION CHECK COMPLETE` in the Task() output. If the marker is absent, warn: `⚠ Integration checker did not return completion marker — results may be incomplete.` Proceed with whatever findings were returned but note the incomplete status in the audit report.
517
+
518
+ 5. **Check requirements coverage:**
509
519
  - Read REQUIREMENTS.md
510
520
  - For each requirement tagged for this milestone:
511
521
  - Search VERIFICATION.md files for coverage
512
522
  - Search SUMMARY.md `provides` fields
513
523
  - Flag uncovered requirements
514
524
 
515
- 5. **Write audit report:**
525
+ 6. **Write audit report:**
516
526
 
517
527
  Create `.planning/{version}-MILESTONE-AUDIT.md` using the template:
518
528
 
519
529
  Read `skills/milestone/templates/audit-report.md.tmpl` for the audit report format. Fill in all `{variable}` placeholders with actual data from the audit.
520
530
 
521
- 6. **Report to user** using branded banners:
531
+ **Spot-check:** After writing, verify `.planning/{version}-MILESTONE-AUDIT.md` exists on disk using Glob. If missing, re-attempt the write. If still missing, display an error and include findings inline.
532
+
533
+ 7. **Report to user** using branded banners:
522
534
 
523
535
  **If PASSED:**
524
536
  ```
@@ -3,6 +3,8 @@ name: plan
3
3
  description: "Create a detailed plan for a phase. Research, plan, and verify before building."
4
4
  ---
5
5
 
6
+ **STOP — DO NOT READ THIS FILE. You are already reading it. This prompt was injected into your context by Claude Code's plugin system. Using the Read tool on this SKILL.md file wastes ~7,600 tokens. Begin executing Step 1 immediately.**
7
+
6
8
  # /pbr:plan — Phase Planning
7
9
 
8
10
  You are the orchestrator for `/pbr:plan`. This skill creates detailed, executable plans for a specific phase. Plans are the bridge between the roadmap and actual code — they must be specific enough for an executor agent to follow mechanically. Your job is to stay lean, delegate heavy work to agents, and keep the user's main context window clean.
@@ -135,6 +137,8 @@ Reference: `skills/shared/config-loading.md` for the tooling shortcut (`state lo
135
137
 
136
138
  ### Step 2: Load Context (inline)
137
139
 
140
+ **Init-first pattern**: When spawning agents, pass the output of `node plugins/pbr/scripts/pbr-tools.js init plan-phase {N}` as context rather than having the agent read multiple files separately. This reduces file reads and prevents context-loading failures.
141
+
138
142
  Read context file PATHS and metadata. Build lean context bundles for agent prompts — include paths and one-line descriptions, NOT full file bodies. Agents have the Read tool and will pull file contents on-demand.
139
143
 
140
144
  ```
@@ -221,8 +225,22 @@ Read `skills/plan/templates/researcher-prompt.md.tmpl` and use it as the prompt
221
225
  - `{dependencies from roadmap}` - dependency list
222
226
  - Fill `<project_context>` and `<prior_work>` blocks per the shared partial (`templates/prompt-partials/phase-project-context.md.tmpl`): Decision Summary for context, manifest table for prior work
223
227
 
228
+ **Prepend this block to the researcher prompt before sending:**
229
+ ```
230
+ <files_to_read>
231
+ CRITICAL: Read these files BEFORE any other action:
232
+ 1. .planning/ROADMAP.md — phase goals, dependencies, and structure
233
+ 2. .planning/REQUIREMENTS.md — scoped requirements for this phase (if exists)
234
+ </files_to_read>
235
+ ```
236
+
224
237
  Wait for the researcher to complete before proceeding.
225
238
 
239
+ After the researcher completes, check the agent output for a completion marker:
240
+ - If `## RESEARCH COMPLETE` is present: proceed to planner
241
+ - If `## RESEARCH BLOCKED` is present: warn the user that research could not complete, ask if they want to proceed with limited context or stop
242
+ - If neither marker is present: warn that researcher may not have completed successfully, but proceed
243
+
226
244
  ---
227
245
 
228
246
  ### Step 4.5: Seed Scanning (inline, before planning)
@@ -336,6 +354,16 @@ Read `skills/plan/templates/planner-prompt.md.tmpl` and use it as the prompt tem
336
354
  - `<config>` - max tasks, parallelization, TDD mode from config.json
337
355
  - `<planning_instructions>` - phase-specific planning rules and output path
338
356
 
357
+ **Prepend this block to the planner prompt before sending:**
358
+ ```
359
+ <files_to_read>
360
+ CRITICAL: Read these files BEFORE any other action:
361
+ 1. .planning/CONTEXT.md — locked decisions and constraints (if exists)
362
+ 2. .planning/ROADMAP.md — phase goals, dependencies, and structure
363
+ 3. .planning/phases/{NN}-{slug}/RESEARCH.md — research findings (if exists)
364
+ </files_to_read>
365
+ ```
366
+
339
367
  Wait for the planner to complete.
340
368
 
341
369
  After the planner returns, read the plan files it created to extract counts. Display a completion summary:
@@ -346,6 +374,17 @@ Planner created {N} plan(s) across {M} wave(s)
346
374
 
347
375
  Where `{N}` is the number of PLAN.md files written and `{M}` is the number of distinct wave values across those plans (from frontmatter).
348
376
 
377
+ ### Step 5b: Spot-Check Planner Output
378
+
379
+ CRITICAL: Verify planner output before proceeding.
380
+
381
+ 1. **PLAN files exist**: Check `.planning/phases/{NN}-{slug}/PLAN-*.md` files exist on disk
382
+ 2. **Valid frontmatter**: Read first 20 lines of each PLAN file — verify `depends_on`, `files_modified`, `must_haves` fields present
383
+ 3. **Task structure**: Verify at least one `<task>` block exists in each plan file
384
+ 4. **Plan count matches**: Number of PLAN files matches what the planner reported
385
+
386
+ If ANY spot-check fails, present the user with options: **Retry** / **Continue anyway** / **Abort**
387
+
349
388
  ---
350
389
 
351
390
  ### Step 6: Plan Validation (delegated, conditional)
@@ -372,6 +411,15 @@ Read `skills/plan/templates/checker-prompt.md.tmpl` and use it as the prompt tem
372
411
  - `<phase_context>` - phase goal and requirement IDs
373
412
  - `<context>` - file paths to project-level and phase-level CONTEXT.md files (checker reads via Read tool)
374
413
 
414
+ **Prepend this block to the checker prompt before sending:**
415
+ ```
416
+ <files_to_read>
417
+ CRITICAL: Read these files BEFORE any other action:
418
+ 1. .planning/phases/{NN}-{slug}/PLAN-*.md — plan files to validate
419
+ 2. .planning/CONTEXT.md — locked decisions to check against (if exists)
420
+ </files_to_read>
421
+ ```
422
+
375
423
  **Process checker results:**
376
424
 
377
425
  After the plan checker returns, display its result:
@@ -463,6 +511,8 @@ Use the approve-revise-abort pattern from `skills/shared/gate-prompts.md`:
463
511
  5. Update the `Status` column to `planned`
464
512
  6. Save the file — do NOT skip this step
465
513
  - Update STATE.md **(CRITICAL — update BOTH frontmatter AND body)**: set `status: "planned"`, `plans_total`, `last_command` in frontmatter AND update `Status:`, `Plan:` lines in body `## Current Position`
514
+
515
+ **Tooling shortcut**: `node ${PLUGIN_ROOT}/scripts/pbr-tools.js state patch '{"status":"planned","last_command":"/pbr:plan {N}"}'`
466
516
  - **If `features.auto_advance` is `true` AND `mode` is `autonomous`:** Chain directly to build. This continues the build->review->plan->build cycle automatically.
467
517
  - **Otherwise:** Suggest next action: `/pbr:build {N}`
468
518
 
@@ -44,6 +44,8 @@ Additionally for this skill:
44
44
 
45
45
  ### Step 1: Check Project Context
46
46
 
47
+ **Init-first pattern**: When spawning agents, pass the output of `node plugins/pbr/scripts/pbr-tools.js init quick "{description}"` as context rather than having the agent read multiple files separately. This reduces file reads and prevents context-loading failures.
48
+
47
49
  1. Check if `.planning/` directory exists
48
50
  - If yes: read config.json for settings
49
51
  - If no: create **both** `.planning/` and `.planning/quick/` directories, then warn "No Plan-Build-Run project found. This will create a standalone quick task. Consider running `/pbr:begin` first for full project tracking."
@@ -167,9 +169,17 @@ Display to the user: `◐ Spawning executor...`
167
169
 
168
170
  Spawn a `Task(agent_type: "pbr:executor")` with the following prompt:
169
171
 
172
+ > **Completion markers**: After executor completes, check for `## PLAN COMPLETE` or `## PLAN FAILED`. Route accordingly.
173
+
170
174
  ```
171
175
  You are executor. Execute the following quick task plan.
172
176
 
177
+ <files_to_read>
178
+ CRITICAL: Read these files BEFORE any other action:
179
+ 1. .planning/quick/{NNN}-{slug}/PLAN.md — the quick task plan with task details
180
+ 2. .planning/STATE.md — current project state and progress (if exists)
181
+ </files_to_read>
182
+
173
183
  Plan file: .planning/quick/{NNN}-{slug}/PLAN.md
174
184
  Phase: quick
175
185
  Plan ID: {NNN}
@@ -192,6 +202,17 @@ After the executor completes:
192
202
  - `partial` — some tasks completed, others failed
193
203
  - `failed` — task failed entirely
194
204
 
205
+ ### Step 8b: Spot-Check Executor Output
206
+
207
+ CRITICAL: Verify executor output before proceeding.
208
+
209
+ 1. **SUMMARY.md exists**: Check `.planning/quick/{NNN}-{slug}/SUMMARY.md` exists
210
+ 2. **Key files exist**: Verify first 2 files from SUMMARY.md `key_files` frontmatter exist on disk
211
+ 3. **Commits present**: Run `git log --oneline -5` and verify at least one commit matches the task scope
212
+ 4. **Self-check status**: Look for `## Self-Check: FAILED` in SUMMARY.md — if present, warn the user
213
+
214
+ If ANY spot-check fails, present the user with options: **Retry** / **Continue anyway** / **Abort**
215
+
195
216
  ### Step 9: Update STATE.md
196
217
 
197
218
  If STATE.md exists, update the Quick Tasks section.
@@ -60,6 +60,8 @@ Execute these steps in order.
60
60
 
61
61
  ### Step 1: Parse and Validate (inline)
62
62
 
63
+ **Init-first pattern**: When spawning agents, pass the output of `node plugins/pbr/scripts/pbr-tools.js init verify-work {N}` as context rather than having the agent read multiple files separately. This reduces file reads and prevents context-loading failures.
64
+
63
65
  1. Parse `$ARGUMENTS` for phase number and `--auto-fix` flag
64
66
  2. Read `.planning/config.json`
65
67
  **CRITICAL: Write .active-skill NOW.** Write the text "review" to `.planning/.active-skill` using the Write tool.
@@ -154,6 +156,16 @@ Invoke the `@verifier` agent to run three-layer checks.
154
156
 
155
157
  Read `skills/review/templates/verifier-prompt.md.tmpl` and use its content as the verifier prompt.
156
158
 
159
+ **Prepend this block to the verifier prompt before sending:**
160
+ ```
161
+ <files_to_read>
162
+ CRITICAL: Read these files BEFORE any other action:
163
+ 1. .planning/phases/{NN}-{slug}/PLAN-*.md — must-haves to verify against
164
+ 2. .planning/phases/{NN}-{slug}/SUMMARY-*.md — executor build summaries
165
+ 3. .planning/phases/{NN}-{slug}/VERIFICATION.md — prior verification results (if exists)
166
+ </files_to_read>
167
+ ```
168
+
157
169
  **Placeholders to fill before sending:**
158
170
  - `{For each PLAN.md file in the phase directory:}` — inline each plan's must_haves frontmatter block
159
171
  - `{For each SUMMARY.md file in the phase directory:}` — provide manifest table with file paths and status from frontmatter. The verifier reads full content from disk via Read tool.
@@ -180,6 +192,17 @@ Then show a brief table of must-haves with pass/fail status:
180
192
 
181
193
  Then display the overall verdict (`PASSED`, `GAPS FOUND`, or `HUMAN NEEDED`) before proceeding to the full results presentation.
182
194
 
195
+ ### Step 3a: Spot-Check Verifier Output
196
+
197
+ CRITICAL: Verify verifier output before proceeding.
198
+
199
+ 1. **VERIFICATION.md exists**: Check `.planning/phases/{NN}-{slug}/VERIFICATION.md` exists on disk
200
+ 2. **Status field present**: Read VERIFICATION.md frontmatter — verify `status` field is present and is one of: pass, fail, partial
201
+ 3. **Must-haves checked**: Verify `must_haves_checked` count > 0 in frontmatter
202
+ 4. **Completion marker**: Look for `## VERIFICATION COMPLETE` in the Task() output
203
+
204
+ If ANY spot-check fails, present the user with options: **Retry** / **Continue anyway** / **Abort**
205
+
183
206
  ---
184
207
 
185
208
  ### Step 3b: Local LLM Verification Quality Check (optional, advisory)
@@ -367,6 +390,16 @@ Invoke the `@debugger` agent to analyze each failure.
367
390
 
368
391
  Read `skills/review/templates/debugger-prompt.md.tmpl` and use its content as the debugger prompt.
369
392
 
393
+ **Prepend this block to the debugger prompt before sending:**
394
+ ```
395
+ <files_to_read>
396
+ CRITICAL: Read these files BEFORE any other action:
397
+ 1. .planning/phases/{NN}-{slug}/VERIFICATION.md — gaps and failure details
398
+ 2. .planning/phases/{NN}-{slug}/SUMMARY-*.md — what was built
399
+ 3. .planning/phases/{NN}-{slug}/PLAN-*.md — original plan must-haves
400
+ </files_to_read>
401
+ ```
402
+
370
403
  **Placeholders to fill before sending:**
371
404
  - `[Inline the VERIFICATION.md content]` — provide file path; debugger reads via Read tool
372
405
  - `[Inline all SUMMARY.md files for the phase]` — provide manifest table of file paths
@@ -382,6 +415,16 @@ Invoke the `@planner` agent in gap-closure mode.
382
415
 
383
416
  Read `skills/review/templates/gap-planner-prompt.md.tmpl` and use its content as the gap planner prompt.
384
417
 
418
+ **Prepend this block to the gap planner prompt before sending:**
419
+ ```
420
+ <files_to_read>
421
+ CRITICAL: Read these files BEFORE any other action:
422
+ 1. .planning/phases/{NN}-{slug}/VERIFICATION.md — gaps to close
423
+ 2. .planning/phases/{NN}-{slug}/PLAN-*.md — existing plans for context
424
+ 3. .planning/CONTEXT.md — locked decisions and constraints (if exists)
425
+ </files_to_read>
426
+ ```
427
+
385
428
  **Placeholders to fill before sending:**
386
429
  - `[Inline VERIFICATION.md]` — provide file path; planner reads via Read tool
387
430
  - `[Inline the debugger's root cause analysis]` — keep inline (already in conversation context)
@@ -562,6 +605,8 @@ After review completes, always present a clear next action using the completion
562
605
  - **If gaps remain:** Use the "Gaps Found" template. Fill in phase number, name, gap count, and gap summaries.
563
606
  - **If final phase:** Use the "Milestone Complete" template. Fill in phase count.
564
607
 
608
+ Include `<sub>/clear first → fresh context window</sub>` inside the Next Up routing block of the completion template.
609
+
565
610
  ---
566
611
 
567
612
  ## Notes
@@ -123,6 +123,14 @@ For each agent, read `skills/scan/templates/mapper-prompt.md.tmpl` and fill in t
123
123
  - `{scale}`: detected scale from Step 2
124
124
  - `{output_path}`: `.planning/codebase/`
125
125
 
126
+ **Prepend this block to each mapper prompt before sending:**
127
+ ```
128
+ <files_to_read>
129
+ CRITICAL: Read these files BEFORE any other action:
130
+ 1. .planning/codebase/RECON.md — baseline reconnaissance data (if exists)
131
+ </files_to_read>
132
+ ```
133
+
126
134
  | Agent | Focus | Output Files | When |
127
135
  |-------|-------|-------------|------|
128
136
  | 1 | tech | STACK.md, INTEGRATIONS.md | Always |
@@ -142,6 +150,18 @@ All agents run in parallel. As each completes, display:
142
150
 
143
151
  (Only display lines for the focus areas that were actually spawned.)
144
152
 
153
+ ### Step 4b: Check Completion Markers
154
+
155
+ After each codebase-mapper Task() completes, check the Task() output for the `## MAPPING COMPLETE` marker:
156
+
157
+ - If `## MAPPING COMPLETE` is present: the mapper finished successfully, proceed normally
158
+ - If the marker is missing: warn the user that the mapper may not have completed successfully:
159
+ ```
160
+ ⚠ Codebase mapper ({focus_area}) did not report MAPPING COMPLETE.
161
+ Output may be incomplete — check .planning/codebase/ for partial results.
162
+ ```
163
+ Continue to Step 5 verification regardless (the file existence checks will catch truly missing output).
164
+
145
165
  ### Step 5: Verify Output
146
166
 
147
167
  After all agents complete, verify the expected files exist: