@sienklogic/plan-build-run 2.0.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 (221) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/CLAUDE.md +149 -0
  3. package/LICENSE +21 -0
  4. package/README.md +247 -0
  5. package/dashboard/bin/cli.js +25 -0
  6. package/dashboard/package.json +34 -0
  7. package/dashboard/public/.gitkeep +0 -0
  8. package/dashboard/public/css/layout.css +406 -0
  9. package/dashboard/public/css/status-colors.css +98 -0
  10. package/dashboard/public/js/htmx-title.js +5 -0
  11. package/dashboard/public/js/sidebar-toggle.js +20 -0
  12. package/dashboard/src/app.js +78 -0
  13. package/dashboard/src/middleware/errorHandler.js +52 -0
  14. package/dashboard/src/middleware/notFoundHandler.js +9 -0
  15. package/dashboard/src/repositories/planning.repository.js +128 -0
  16. package/dashboard/src/routes/events.routes.js +40 -0
  17. package/dashboard/src/routes/index.routes.js +31 -0
  18. package/dashboard/src/routes/pages.routes.js +195 -0
  19. package/dashboard/src/server.js +42 -0
  20. package/dashboard/src/services/dashboard.service.js +222 -0
  21. package/dashboard/src/services/phase.service.js +167 -0
  22. package/dashboard/src/services/project.service.js +57 -0
  23. package/dashboard/src/services/roadmap.service.js +171 -0
  24. package/dashboard/src/services/sse.service.js +58 -0
  25. package/dashboard/src/services/todo.service.js +254 -0
  26. package/dashboard/src/services/watcher.service.js +48 -0
  27. package/dashboard/src/views/coming-soon.ejs +11 -0
  28. package/dashboard/src/views/error.ejs +13 -0
  29. package/dashboard/src/views/index.ejs +5 -0
  30. package/dashboard/src/views/layout.ejs +1 -0
  31. package/dashboard/src/views/partials/dashboard-content.ejs +77 -0
  32. package/dashboard/src/views/partials/footer.ejs +3 -0
  33. package/dashboard/src/views/partials/head.ejs +21 -0
  34. package/dashboard/src/views/partials/header.ejs +12 -0
  35. package/dashboard/src/views/partials/layout-bottom.ejs +15 -0
  36. package/dashboard/src/views/partials/layout-top.ejs +8 -0
  37. package/dashboard/src/views/partials/phase-content.ejs +181 -0
  38. package/dashboard/src/views/partials/phases-content.ejs +117 -0
  39. package/dashboard/src/views/partials/roadmap-content.ejs +142 -0
  40. package/dashboard/src/views/partials/sidebar.ejs +38 -0
  41. package/dashboard/src/views/partials/todo-create-content.ejs +53 -0
  42. package/dashboard/src/views/partials/todo-detail-content.ejs +38 -0
  43. package/dashboard/src/views/partials/todos-content.ejs +53 -0
  44. package/dashboard/src/views/phase-detail.ejs +5 -0
  45. package/dashboard/src/views/phases.ejs +5 -0
  46. package/dashboard/src/views/roadmap.ejs +5 -0
  47. package/dashboard/src/views/todo-create.ejs +5 -0
  48. package/dashboard/src/views/todo-detail.ejs +5 -0
  49. package/dashboard/src/views/todos.ejs +5 -0
  50. package/package.json +57 -0
  51. package/plugins/pbr/.claude-plugin/plugin.json +13 -0
  52. package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -0
  53. package/plugins/pbr/agents/codebase-mapper.md +271 -0
  54. package/plugins/pbr/agents/debugger.md +281 -0
  55. package/plugins/pbr/agents/executor.md +407 -0
  56. package/plugins/pbr/agents/general.md +164 -0
  57. package/plugins/pbr/agents/integration-checker.md +141 -0
  58. package/plugins/pbr/agents/plan-checker.md +280 -0
  59. package/plugins/pbr/agents/planner.md +358 -0
  60. package/plugins/pbr/agents/researcher.md +363 -0
  61. package/plugins/pbr/agents/synthesizer.md +230 -0
  62. package/plugins/pbr/agents/verifier.md +454 -0
  63. package/plugins/pbr/commands/begin.md +5 -0
  64. package/plugins/pbr/commands/build.md +5 -0
  65. package/plugins/pbr/commands/config.md +5 -0
  66. package/plugins/pbr/commands/continue.md +5 -0
  67. package/plugins/pbr/commands/debug.md +5 -0
  68. package/plugins/pbr/commands/discuss.md +5 -0
  69. package/plugins/pbr/commands/explore.md +5 -0
  70. package/plugins/pbr/commands/health.md +5 -0
  71. package/plugins/pbr/commands/help.md +5 -0
  72. package/plugins/pbr/commands/import.md +5 -0
  73. package/plugins/pbr/commands/milestone.md +5 -0
  74. package/plugins/pbr/commands/note.md +5 -0
  75. package/plugins/pbr/commands/pause.md +5 -0
  76. package/plugins/pbr/commands/plan.md +5 -0
  77. package/plugins/pbr/commands/quick.md +5 -0
  78. package/plugins/pbr/commands/resume.md +5 -0
  79. package/plugins/pbr/commands/review.md +5 -0
  80. package/plugins/pbr/commands/scan.md +5 -0
  81. package/plugins/pbr/commands/setup.md +5 -0
  82. package/plugins/pbr/commands/status.md +5 -0
  83. package/plugins/pbr/commands/todo.md +5 -0
  84. package/plugins/pbr/contexts/dev.md +27 -0
  85. package/plugins/pbr/contexts/research.md +28 -0
  86. package/plugins/pbr/contexts/review.md +36 -0
  87. package/plugins/pbr/hooks/hooks.json +183 -0
  88. package/plugins/pbr/references/agent-anti-patterns.md +24 -0
  89. package/plugins/pbr/references/agent-interactions.md +134 -0
  90. package/plugins/pbr/references/agent-teams.md +54 -0
  91. package/plugins/pbr/references/checkpoints.md +157 -0
  92. package/plugins/pbr/references/common-bug-patterns.md +13 -0
  93. package/plugins/pbr/references/continuation-format.md +212 -0
  94. package/plugins/pbr/references/deviation-rules.md +112 -0
  95. package/plugins/pbr/references/git-integration.md +226 -0
  96. package/plugins/pbr/references/integration-patterns.md +117 -0
  97. package/plugins/pbr/references/model-profiles.md +99 -0
  98. package/plugins/pbr/references/model-selection.md +31 -0
  99. package/plugins/pbr/references/pbr-rules.md +193 -0
  100. package/plugins/pbr/references/plan-authoring.md +181 -0
  101. package/plugins/pbr/references/plan-format.md +283 -0
  102. package/plugins/pbr/references/planning-config.md +213 -0
  103. package/plugins/pbr/references/questioning.md +214 -0
  104. package/plugins/pbr/references/reading-verification.md +127 -0
  105. package/plugins/pbr/references/stub-patterns.md +160 -0
  106. package/plugins/pbr/references/subagent-coordination.md +119 -0
  107. package/plugins/pbr/references/ui-formatting.md +399 -0
  108. package/plugins/pbr/references/verification-patterns.md +198 -0
  109. package/plugins/pbr/references/wave-execution.md +95 -0
  110. package/plugins/pbr/scripts/auto-continue.js +80 -0
  111. package/plugins/pbr/scripts/check-dangerous-commands.js +136 -0
  112. package/plugins/pbr/scripts/check-doc-sprawl.js +102 -0
  113. package/plugins/pbr/scripts/check-phase-boundary.js +196 -0
  114. package/plugins/pbr/scripts/check-plan-format.js +270 -0
  115. package/plugins/pbr/scripts/check-roadmap-sync.js +252 -0
  116. package/plugins/pbr/scripts/check-skill-workflow.js +262 -0
  117. package/plugins/pbr/scripts/check-state-sync.js +476 -0
  118. package/plugins/pbr/scripts/check-subagent-output.js +144 -0
  119. package/plugins/pbr/scripts/config-schema.json +251 -0
  120. package/plugins/pbr/scripts/context-budget-check.js +287 -0
  121. package/plugins/pbr/scripts/event-handler.js +151 -0
  122. package/plugins/pbr/scripts/event-logger.js +92 -0
  123. package/plugins/pbr/scripts/hook-logger.js +76 -0
  124. package/plugins/pbr/scripts/hooks-schema.json +79 -0
  125. package/plugins/pbr/scripts/log-subagent.js +152 -0
  126. package/plugins/pbr/scripts/log-tool-failure.js +88 -0
  127. package/plugins/pbr/scripts/pbr-tools.js +1301 -0
  128. package/plugins/pbr/scripts/post-write-dispatch.js +66 -0
  129. package/plugins/pbr/scripts/post-write-quality.js +207 -0
  130. package/plugins/pbr/scripts/pre-bash-dispatch.js +56 -0
  131. package/plugins/pbr/scripts/pre-write-dispatch.js +62 -0
  132. package/plugins/pbr/scripts/progress-tracker.js +228 -0
  133. package/plugins/pbr/scripts/session-cleanup.js +254 -0
  134. package/plugins/pbr/scripts/status-line.js +285 -0
  135. package/plugins/pbr/scripts/suggest-compact.js +119 -0
  136. package/plugins/pbr/scripts/task-completed.js +45 -0
  137. package/plugins/pbr/scripts/track-context-budget.js +119 -0
  138. package/plugins/pbr/scripts/validate-commit.js +200 -0
  139. package/plugins/pbr/scripts/validate-plugin-structure.js +172 -0
  140. package/plugins/pbr/skills/begin/SKILL.md +545 -0
  141. package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -0
  142. package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -0
  143. package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -0
  144. package/plugins/pbr/skills/begin/templates/config.json.tmpl +63 -0
  145. package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -0
  146. package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -0
  147. package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -0
  148. package/plugins/pbr/skills/build/SKILL.md +962 -0
  149. package/plugins/pbr/skills/config/SKILL.md +241 -0
  150. package/plugins/pbr/skills/continue/SKILL.md +127 -0
  151. package/plugins/pbr/skills/debug/SKILL.md +489 -0
  152. package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -0
  153. package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -0
  154. package/plugins/pbr/skills/discuss/SKILL.md +338 -0
  155. package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -0
  156. package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -0
  157. package/plugins/pbr/skills/explore/SKILL.md +362 -0
  158. package/plugins/pbr/skills/health/SKILL.md +186 -0
  159. package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -0
  160. package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -0
  161. package/plugins/pbr/skills/help/SKILL.md +140 -0
  162. package/plugins/pbr/skills/import/SKILL.md +490 -0
  163. package/plugins/pbr/skills/milestone/SKILL.md +673 -0
  164. package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -0
  165. package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -0
  166. package/plugins/pbr/skills/note/SKILL.md +212 -0
  167. package/plugins/pbr/skills/pause/SKILL.md +235 -0
  168. package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -0
  169. package/plugins/pbr/skills/plan/SKILL.md +628 -0
  170. package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -0
  171. package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -0
  172. package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -0
  173. package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -0
  174. package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -0
  175. package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -0
  176. package/plugins/pbr/skills/quick/SKILL.md +335 -0
  177. package/plugins/pbr/skills/resume/SKILL.md +388 -0
  178. package/plugins/pbr/skills/review/SKILL.md +652 -0
  179. package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -0
  180. package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -0
  181. package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -0
  182. package/plugins/pbr/skills/scan/SKILL.md +269 -0
  183. package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -0
  184. package/plugins/pbr/skills/setup/SKILL.md +227 -0
  185. package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -0
  186. package/plugins/pbr/skills/shared/config-loading.md +102 -0
  187. package/plugins/pbr/skills/shared/context-budget.md +40 -0
  188. package/plugins/pbr/skills/shared/context-loader-task.md +86 -0
  189. package/plugins/pbr/skills/shared/digest-select.md +79 -0
  190. package/plugins/pbr/skills/shared/domain-probes.md +125 -0
  191. package/plugins/pbr/skills/shared/error-reporting.md +79 -0
  192. package/plugins/pbr/skills/shared/gate-prompts.md +388 -0
  193. package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -0
  194. package/plugins/pbr/skills/shared/progress-display.md +53 -0
  195. package/plugins/pbr/skills/shared/revision-loop.md +81 -0
  196. package/plugins/pbr/skills/shared/state-loading.md +62 -0
  197. package/plugins/pbr/skills/shared/state-update.md +161 -0
  198. package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -0
  199. package/plugins/pbr/skills/status/SKILL.md +353 -0
  200. package/plugins/pbr/skills/todo/SKILL.md +181 -0
  201. package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -0
  202. package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -0
  203. package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -0
  204. package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -0
  205. package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -0
  206. package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -0
  207. package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -0
  208. package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -0
  209. package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -0
  210. package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -0
  211. package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -0
  212. package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -0
  213. package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -0
  214. package/plugins/pbr/templates/continue-here.md.tmpl +73 -0
  215. package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -0
  216. package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -0
  217. package/plugins/pbr/templates/research/STACK.md.tmpl +71 -0
  218. package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -0
  219. package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -0
  220. package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -0
  221. package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +36 -0
@@ -0,0 +1,399 @@
1
+ # Plan-Build-Run UI Brand & Formatting Reference
2
+
3
+ Consistent output formatting for all Plan-Build-Run skills. Every skill that produces user-facing output should follow these patterns.
4
+
5
+ ## Stage Banners
6
+
7
+ Use for major workflow transitions. Always use `PLAN-BUILD-RUN` prefix.
8
+
9
+ ```
10
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
11
+ PLAN-BUILD-RUN ► {STAGE NAME}
12
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
13
+ ```
14
+
15
+ **Stage names (uppercase):**
16
+ - `QUESTIONING`
17
+ - `RESEARCHING`
18
+ - `DEFINING REQUIREMENTS`
19
+ - `CREATING ROADMAP`
20
+ - `PLANNING PHASE {N}`
21
+ - `EXECUTING WAVE {N}`
22
+ - `VERIFYING`
23
+ - `PHASE {N} COMPLETE ✓`
24
+ - `MILESTONE COMPLETE 🎉`
25
+ - `SCANNING CODEBASE`
26
+ - `DEBUGGING`
27
+
28
+ ---
29
+
30
+ ## Headers
31
+
32
+ Use these patterns for consistent visual hierarchy within sections:
33
+
34
+ ```
35
+ ## Phase 3: Authentication <- Phase-level header
36
+ ### Plan 01: Database Schema <- Plan-level header
37
+ #### Task 1: Create User Table <- Task-level header
38
+ ```
39
+
40
+ ---
41
+
42
+ ## Status Indicators
43
+
44
+ | Status | Indicator | Usage |
45
+ |--------|-----------|-------|
46
+ | Complete | `✓` | Completed items, passed checks |
47
+ | Failed | `✗` | Failed verification, missing items |
48
+ | Pending | `○` | Not yet started |
49
+ | In Progress | `◐` | Currently executing |
50
+ | Needs Human | `?` | Requires human verification |
51
+ | Warning | `⚠` | Warnings, non-blocking issues |
52
+ | Blocked | `⊘` | Blocked by dependency |
53
+ | Auto-approved | `⚡` | Automatically approved (gates) |
54
+
55
+ ---
56
+
57
+ ## Progress Display
58
+
59
+ **Phase/milestone level:**
60
+ ```
61
+ Progress: ████████░░ 80%
62
+ ```
63
+
64
+ **Phase progress (detailed):**
65
+ ```
66
+ Phase 3 of 5: Authentication
67
+ Progress: [████████░░░░░░░░░░░░] 40%
68
+ Plans: 2/5 complete
69
+ ```
70
+
71
+ **Build progress (wave tracking):**
72
+ ```
73
+ Wave 1: ✓ Plan 01, ✓ Plan 02
74
+ Wave 2: ◐ Plan 03 (executing)
75
+ Wave 3: ○ Plan 04
76
+ ```
77
+
78
+ **Task level:**
79
+ ```
80
+ Tasks: 2/4 complete
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Spawning Indicators
86
+
87
+ Show when agents are being launched:
88
+
89
+ ```
90
+ ◐ Spawning executor...
91
+
92
+ ◐ Spawning 4 executors in parallel...
93
+ → Plan 01: Database Schema
94
+ → Plan 02: Auth Service
95
+ → Plan 03: API Routes
96
+ → Plan 04: Test Suite
97
+
98
+ ✓ Plan 01 complete (2m 14s)
99
+ ```
100
+
101
+ For research agents:
102
+ ```
103
+ ◐ Spawning 4 researchers in parallel...
104
+ → Stack research
105
+ → Features research
106
+ → Architecture research
107
+ → Pitfalls research
108
+
109
+ ✓ Researcher complete: STACK.md written
110
+ ```
111
+
112
+ ---
113
+
114
+ ## Checkpoint Boxes
115
+
116
+ User action required. Use double-line box drawing, 62-character width.
117
+
118
+ ```
119
+ ╔══════════════════════════════════════════════════════════════╗
120
+ ║ CHECKPOINT: {Type} ║
121
+ ╚══════════════════════════════════════════════════════════════╝
122
+
123
+ {Content}
124
+
125
+ ──────────────────────────────────────────────────────────────
126
+ → {ACTION PROMPT}
127
+ ──────────────────────────────────────────────────────────────
128
+ ```
129
+
130
+ **Types:**
131
+ - `CHECKPOINT: Verification Required` → `→ Type "approved" or describe issues`
132
+ - `CHECKPOINT: Decision Required` → `→ Select: option-a / option-b`
133
+ - `CHECKPOINT: Action Required` → `→ Type "done" when complete`
134
+
135
+ ---
136
+
137
+ ## AskUserQuestion Patterns
138
+
139
+ Structured prompts for user decision points. All gate checks use AskUserQuestion instead of
140
+ plain-text "Type approved" prompts. See `skills/shared/gate-prompts.md` for the full
141
+ pattern catalog (21 named AskUserQuestion patterns).
142
+
143
+ ### Structure
144
+
145
+ ```
146
+ AskUserQuestion:
147
+ question: "{contextual question}"
148
+ header: "{max 12 chars}"
149
+ options:
150
+ - label: "{Option 1}" description: "{What happens}"
151
+ - label: "{Option 2}" description: "{What happens}"
152
+ multiSelect: false
153
+ ```
154
+
155
+ ### Rules
156
+
157
+ - **Max 4 options** per call. Split into 2-step flow if more are needed.
158
+ - **Header max 12 characters.** Single word preferred (e.g., "Approve?", "Confirm", "Scope").
159
+ - **multiSelect: false** always. Plan-Build-Run gates require single selection.
160
+ - **Handle "Other"**: Users may type freeform text instead of selecting. Skills must handle this gracefully.
161
+ - **Orchestrator only**: AskUserQuestion cannot be called from subagents.
162
+
163
+ ### Common Patterns
164
+
165
+ **Approval gate** (approve-revise-abort):
166
+ ```
167
+ question: "Approve these plans?"
168
+ header: "Approve?"
169
+ options:
170
+ - label: "Approve" description: "Proceed with execution"
171
+ - label: "Request changes" description: "Discuss adjustments before proceeding"
172
+ - label: "Abort" description: "Cancel this operation"
173
+ ```
174
+
175
+ **Simple confirmation** (yes-no):
176
+ ```
177
+ question: "Re-plan this phase with gap context?"
178
+ header: "Confirm"
179
+ options:
180
+ - label: "Yes" description: "Create gap-closure plans"
181
+ - label: "No" description: "Skip re-planning"
182
+ ```
183
+
184
+ **Category selection** (settings-category-select):
185
+ ```
186
+ question: "What would you like to configure?"
187
+ header: "Configure"
188
+ options:
189
+ - label: "Depth" description: "quick/standard/comprehensive"
190
+ - label: "Model profile" description: "quality/balanced/budget/adaptive"
191
+ - label: "Features" description: "Toggle workflow features and gates"
192
+ - label: "Git settings" description: "branching strategy, commit mode"
193
+ ```
194
+
195
+ **Dynamic routing** (action-routing):
196
+ ```
197
+ question: "What would you like to do next?"
198
+ header: "Next Step"
199
+ options:
200
+ - label: "/pbr:build 3" description: "Execute phase 3 plans"
201
+ - label: "/pbr:review 2" description: "Verify phase 2 results"
202
+ - label: "Something else" description: "Enter a different command"
203
+ ```
204
+
205
+ ### When NOT to Use
206
+
207
+ Do not use AskUserQuestion for:
208
+ - Freeform text input (symptom descriptions, task descriptions, open questions)
209
+ - Socratic discussion (explore, discuss follow-ups)
210
+ - Situations with unbounded response space
211
+
212
+ Use plain conversational prompts for these cases instead.
213
+
214
+ ---
215
+
216
+ ## Next Up Block
217
+
218
+ Always present at end of major completions (phase complete, milestone complete, project init).
219
+
220
+ ```
221
+ ───────────────────────────────────────────────────────────────
222
+
223
+ ## ▶ Next Up
224
+
225
+ **{Identifier}: {Name}** — {one-line description}
226
+
227
+ `{copy-paste command}`
228
+
229
+ <sub>`/clear` first → fresh context window</sub>
230
+
231
+ ───────────────────────────────────────────────────────────────
232
+
233
+ **Also available:**
234
+ - `/pbr:alternative-1` — description
235
+ - `/pbr:alternative-2` — description
236
+
237
+ ───────────────────────────────────────────────────────────────
238
+ ```
239
+
240
+ **Shorter routing (for minor completions):**
241
+ ```
242
+ What's next?
243
+ → /pbr:plan 4 — plan the next phase
244
+ → /pbr:review 3 — review what was just built
245
+ → /pbr:status — see full project status
246
+ ```
247
+
248
+ ---
249
+
250
+ ## Error Box
251
+
252
+ ```
253
+ ╔══════════════════════════════════════════════════════════════╗
254
+ ║ ERROR ║
255
+ ╚══════════════════════════════════════════════════════════════╝
256
+
257
+ {Error description}
258
+
259
+ **To fix:** {Resolution steps}
260
+ ```
261
+
262
+ ---
263
+
264
+ ## Tables
265
+
266
+ Use tables for structured data:
267
+
268
+ ```markdown
269
+ | Phase | Status | Plans | Progress |
270
+ |-------|--------|-------|----------|
271
+ | 1. Foundation | ✓ Complete | 3/3 | 100% |
272
+ | 2. Database | ✓ Complete | 2/2 | 100% |
273
+ | 3. Auth | ◐ Building | 1/3 | 33% |
274
+ | 4. Frontend | ○ Pending | 0/4 | 0% |
275
+ ```
276
+
277
+ ---
278
+
279
+ ## Cost/Token Warnings
280
+
281
+ ```
282
+ ⚠ Budget check: This operation will spawn 4 agents (~400k tokens)
283
+ Estimated: ~20% of 5-hour window
284
+ Continue? [/pbr:config to adjust depth first]
285
+ ```
286
+
287
+ ---
288
+
289
+ ## Completion Summary Templates
290
+
291
+ ### Phase Complete
292
+
293
+ ```
294
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
295
+ PLAN-BUILD-RUN ► PHASE {N} COMPLETE ✓
296
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
297
+
298
+ **Phase {N}: {Name}**
299
+
300
+ {X} plans executed
301
+ Goal verified ✓
302
+
303
+ ───────────────────────────────────────────────────────────────
304
+
305
+ ## ▶ Next Up
306
+
307
+ **Phase {N+1}: {Name}** — {Goal from ROADMAP.md}
308
+
309
+ /pbr:discuss {N+1} — gather context and clarify approach
310
+
311
+ <sub>/clear first → fresh context window</sub>
312
+
313
+ ───────────────────────────────────────────────────────────────
314
+
315
+ **Also available:**
316
+ - /pbr:plan {N+1} — skip discussion, plan directly
317
+ - /pbr:review {N} — manual acceptance testing before continuing
318
+
319
+ ───────────────────────────────────────────────────────────────
320
+ ```
321
+
322
+ ### Milestone Complete
323
+
324
+ ```
325
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
326
+ PLAN-BUILD-RUN ► MILESTONE COMPLETE 🎉
327
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
328
+
329
+ **{version}**
330
+
331
+ {N} phases completed
332
+ All phase goals verified ✓
333
+
334
+ ───────────────────────────────────────────────────────────────
335
+
336
+ ## ▶ Next Up
337
+
338
+ **Audit milestone** — verify requirements, cross-phase integration, E2E flows
339
+
340
+ /pbr:milestone audit
341
+
342
+ <sub>/clear first → fresh context window</sub>
343
+
344
+ ───────────────────────────────────────────────────────────────
345
+
346
+ **Also available:**
347
+ - /pbr:review — manual acceptance testing
348
+ - /pbr:milestone complete — skip audit, archive directly
349
+
350
+ ───────────────────────────────────────────────────────────────
351
+ ```
352
+
353
+ ### Gaps Found
354
+
355
+ ```
356
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
357
+ PLAN-BUILD-RUN ► PHASE {N} GAPS FOUND ⚠
358
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
359
+
360
+ **Phase {N}: {Name}**
361
+
362
+ Score: {X}/{Y} must-haves verified
363
+ Report: .planning/phases/{phase_dir}/VERIFICATION.md
364
+
365
+ ### What's Missing
366
+
367
+ {Extract gap summaries from VERIFICATION.md}
368
+
369
+ ───────────────────────────────────────────────────────────────
370
+
371
+ ## ▶ Next Up
372
+
373
+ **Plan gap closure** — create additional plans to complete the phase
374
+
375
+ /pbr:plan {N} --gaps
376
+
377
+ <sub>/clear first → fresh context window</sub>
378
+
379
+ ───────────────────────────────────────────────────────────────
380
+
381
+ **Also available:**
382
+ - cat .planning/phases/{phase_dir}/VERIFICATION.md — see full report
383
+ - /pbr:review {N} — manual testing before planning
384
+
385
+ ───────────────────────────────────────────────────────────────
386
+ ```
387
+
388
+ ---
389
+
390
+ ## Anti-Patterns
391
+
392
+ Do NOT:
393
+ - Use varying box/banner widths
394
+ - Mix banner styles (`===`, `---`, `***`) with `━━━` banners
395
+ - Skip `PLAN-BUILD-RUN ►` prefix in stage banners
396
+ - Use random emoji (only `🎉` for milestone complete, `✓` for phase complete)
397
+ - Skip the "Next Up" block after major completions
398
+ - Reference non-Plan-Build-Run commands (always use `/dev:*` commands)
399
+ - Use non-Plan-Build-Run branding in banners
@@ -0,0 +1,198 @@
1
+ # Goal-Backward Verification Patterns
2
+
3
+ Reference patterns for deriving verification criteria from goals. Used by the planner to create `<verify>` and `<done>` elements, and by the verifier to check phase completion.
4
+
5
+ ---
6
+
7
+ ## The Three-Layer Check
8
+
9
+ Every must-have is verified through three layers, checked in order:
10
+
11
+ ### Layer 1: Existence
12
+
13
+ Does the artifact exist?
14
+
15
+ ```bash
16
+ # File existence
17
+ ls -la src/auth/discord.ts
18
+
19
+ # Module export existence
20
+ grep -q "export.*authenticateWithDiscord" src/auth/discord.ts
21
+
22
+ # Database table existence
23
+ npx prisma db execute --stdin <<< "SELECT 1 FROM users LIMIT 1"
24
+
25
+ # Route existence
26
+ curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/api/auth/login
27
+ ```
28
+
29
+ ### Layer 2: Substantiveness
30
+
31
+ Is the artifact more than a stub?
32
+
33
+ ```bash
34
+ # File has real content (not just exports)
35
+ wc -l src/auth/discord.ts # Should be > 10 lines for a real implementation
36
+
37
+ # Function has a body (not just a signature)
38
+ grep -A5 "authenticateWithDiscord" src/auth/discord.ts | grep -q "return"
39
+
40
+ # Test file has actual test cases
41
+ grep -c "it(" tests/auth.test.ts # Should be > 0
42
+
43
+ # API returns real data (not just 200 OK)
44
+ curl -s http://localhost:3000/api/health | jq '.status' | grep -q "ok"
45
+ ```
46
+
47
+ ### Layer 3: Wiring
48
+
49
+ Are components connected to each other?
50
+
51
+ ```bash
52
+ # Module is imported where needed
53
+ grep -q "from.*auth/discord" src/routes/auth.ts
54
+
55
+ # Middleware is applied to routes
56
+ grep -q "requireAuth" src/routes/protected.ts
57
+
58
+ # Database is configured in app init
59
+ grep -q "prisma" src/app.ts
60
+
61
+ # Environment variables are referenced
62
+ grep -q "DISCORD_CLIENT_ID" src/auth/discord.ts
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Verification by Feature Type
68
+
69
+ ### API Endpoint
70
+
71
+ ```
72
+ Existence: curl returns non-404 status
73
+ Substance: curl returns expected response shape (correct fields)
74
+ Wiring: endpoint calls the right service, middleware is applied
75
+ ```
76
+
77
+ ### Database Schema
78
+
79
+ ```
80
+ Existence: table/collection exists, can query without error
81
+ Substance: columns/fields match specification, constraints are applied
82
+ Wiring: application code references the schema, migrations run cleanly
83
+ ```
84
+
85
+ ### Authentication
86
+
87
+ ```
88
+ Existence: auth routes exist, auth module exports functions
89
+ Substance: login flow returns token, invalid creds return error
90
+ Wiring: protected routes use auth middleware, tokens are validated
91
+ ```
92
+
93
+ ### UI Component
94
+
95
+ ```
96
+ Existence: component file exists, exports default component
97
+ Substance: component renders expected elements (test or visual check)
98
+ Wiring: component is imported in parent, receives correct props, routes to it
99
+ ```
100
+
101
+ ### Configuration
102
+
103
+ ```
104
+ Existence: config file exists, environment variables documented
105
+ Substance: config values are used (not dead code), defaults are sensible
106
+ Wiring: application reads config at startup, config changes take effect
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Verify Command Patterns
112
+
113
+ ### TypeScript/JavaScript
114
+
115
+ ```bash
116
+ # Type checking
117
+ npx tsc --noEmit
118
+
119
+ # Unit tests
120
+ npm test
121
+ npm test -- --grep "pattern"
122
+ npx jest path/to/test
123
+
124
+ # Linting
125
+ npx eslint src/auth/
126
+
127
+ # Build check
128
+ npm run build
129
+ ```
130
+
131
+ ### Python
132
+
133
+ ```bash
134
+ # Type checking
135
+ mypy src/
136
+
137
+ # Unit tests
138
+ pytest tests/
139
+ pytest tests/test_auth.py -v
140
+ pytest -k "test_login"
141
+
142
+ # Linting
143
+ flake8 src/
144
+ pylint src/auth/
145
+ ```
146
+
147
+ ### General
148
+
149
+ ```bash
150
+ # File existence
151
+ ls -la path/to/file
152
+
153
+ # Content check
154
+ grep -q "pattern" path/to/file
155
+
156
+ # HTTP endpoint
157
+ curl -s -o /dev/null -w "%{http_code}" http://localhost:PORT/path
158
+
159
+ # Process running
160
+ pgrep -f "process-name"
161
+
162
+ # Port listening
163
+ netstat -an | grep LISTEN | grep PORT
164
+ ```
165
+
166
+ ---
167
+
168
+ ## Done Condition Patterns
169
+
170
+ ### Good Done Conditions (Observable, Falsifiable)
171
+
172
+ - "User can log in with Discord and see their dashboard"
173
+ - "API returns paginated list of items with correct total count"
174
+ - "Database migration creates users table with all required columns"
175
+ - "Protected routes return 401 without valid JWT"
176
+ - "Build completes without TypeScript errors"
177
+
178
+ ### Bad Done Conditions (Vague, Not Falsifiable)
179
+
180
+ - "Authentication is implemented" (how do you test this?)
181
+ - "Code is clean" (subjective)
182
+ - "Database is set up" (what does "set up" mean?)
183
+ - "Tests pass" (which tests? what do they test?)
184
+ - "File was created" (created with what content?)
185
+
186
+ ### Transformation Rule
187
+
188
+ ```
189
+ Bad: "Authentication is implemented"
190
+ Good: "User can complete Discord OAuth flow and receive a valid JWT"
191
+
192
+ Bad: "Database is set up"
193
+ Good: "Users table exists with id, email, name columns and can accept INSERT"
194
+
195
+ Bad: "Tests pass"
196
+ Good: "All 5 auth middleware tests pass: valid token, expired token,
197
+ missing token, malformed token, and correct user extraction"
198
+ ```
@@ -0,0 +1,95 @@
1
+ # Wave-Based Execution
2
+
3
+ How Plan-Build-Run parallelizes plan execution within a phase while respecting dependencies.
4
+
5
+ ---
6
+
7
+ ## What Are Waves?
8
+
9
+ Waves are dependency-based groupings of plans within a phase. Plans in the same wave have no dependencies on each other and can execute in parallel. Plans in later waves depend on earlier waves completing first.
10
+
11
+ ```
12
+ Wave 1: [plan-01, plan-02] (no dependencies, can run in parallel)
13
+ Wave 2: [plan-03] (depends on wave 1 plans)
14
+ Wave 3: [plan-04, plan-05] (depends on wave 2)
15
+ ```
16
+
17
+ ## How Wave Numbers Are Assigned
18
+
19
+ Wave numbers come from the `depends_on` field in each plan's YAML frontmatter:
20
+
21
+ ```yaml
22
+ ---
23
+ plan: "03-01"
24
+ wave: 1
25
+ depends_on: [] # No dependencies → Wave 1
26
+ ---
27
+ ```
28
+
29
+ ```yaml
30
+ ---
31
+ plan: "03-03"
32
+ wave: 2
33
+ depends_on: [03-01] # Depends on Wave 1 plan → Wave 2
34
+ ---
35
+ ```
36
+
37
+ **Rules**:
38
+ - Wave 1 plans must have `depends_on: []`
39
+ - Wave 2+ plans must depend only on plans from earlier waves
40
+ - No plan depends on a plan in the same wave (that would require sequential execution within the wave)
41
+
42
+ ## Execution Order
43
+
44
+ 1. All Wave 1 plans execute (in parallel if enabled)
45
+ 2. Wait for all Wave 1 plans to complete
46
+ 3. All Wave 2 plans execute (in parallel if enabled)
47
+ 4. Repeat until all waves complete
48
+
49
+ ## Parallelization Config
50
+
51
+ Controlled by `config.json`:
52
+
53
+ ```json
54
+ {
55
+ "parallelization": {
56
+ "enabled": true,
57
+ "plan_level": true,
58
+ "max_concurrent_agents": 3
59
+ }
60
+ }
61
+ ```
62
+
63
+ | Setting | Effect |
64
+ |---------|--------|
65
+ | `enabled: false` | All plans execute sequentially, regardless of wave |
66
+ | `plan_level: true` | Plans within a wave run in parallel |
67
+ | `max_concurrent_agents` | Cap on simultaneous executor agents (default: 3) |
68
+
69
+ When `enabled: false` or `plan_level: false`, plans execute one at a time within each wave, in plan ID order.
70
+
71
+ ## Git Lock Handling
72
+
73
+ When multiple executors run in parallel, git lock conflicts can occur. Executors handle this with a retry pattern:
74
+
75
+ ```bash
76
+ git commit -m "message" || (sleep 2 && git commit -m "message") || (sleep 2 && git commit -m "message")
77
+ ```
78
+
79
+ Maximum 3 attempts with 2-second delays between retries.
80
+
81
+ ## Checkpoint Manifest
82
+
83
+ The build skill tracks wave progress in `.checkpoint-manifest.json`:
84
+
85
+ ```json
86
+ {
87
+ "plans": ["03-01", "03-02", "03-03"],
88
+ "checkpoints_resolved": ["03-01", "03-02"],
89
+ "wave": 2,
90
+ "commit_log": [...],
91
+ "last_good_commit": "abc1234"
92
+ }
93
+ ```
94
+
95
+ On crash/resume, the manifest tells the build skill which plans are complete and which wave to resume from.