@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,214 @@
1
+ # Deep Questioning Guide
2
+
3
+ Techniques for understanding a user's project vision during `/pbr:begin`. The goal is to build a complete mental model of what needs to be built, not just a feature list.
4
+
5
+ ---
6
+
7
+ ## Core Questioning Techniques
8
+
9
+ ### Challenge Vagueness
10
+
11
+ When the user says something abstract or general, push for specifics.
12
+
13
+ | They say | You ask |
14
+ |----------|---------|
15
+ | "It should be fast" | "Fast how? Page load under 1 second? API response under 200ms? What's the baseline today?" |
16
+ | "A dashboard" | "What's on the dashboard? What data? What can users do with it?" |
17
+ | "User management" | "What can users do? Sign up, log in, reset password? Roles? Permissions? Teams?" |
18
+ | "It needs to scale" | "Scale to what? 100 users? 100,000? What's the growth timeline?" |
19
+
20
+ ### Make Abstract Concrete
21
+
22
+ Ask for examples and walk-throughs.
23
+
24
+ - "Walk me through what a user does when they first open this."
25
+ - "Give me an example of [that feature] in action."
26
+ - "If I were a user right now, what would I see?"
27
+ - "What does a typical session look like from start to finish?"
28
+
29
+ ### Surface Assumptions
30
+
31
+ Expose hidden assumptions the user hasn't stated.
32
+
33
+ - "Why do you assume [X]? Is that a hard requirement?"
34
+ - "Have you considered [alternative]? What made you choose [their approach]?"
35
+ - "What if [assumption] turns out to be wrong?"
36
+ - "Is that because of a technical constraint, or a preference?"
37
+
38
+ ### Find Edges
39
+
40
+ Probe for edge cases and boundary conditions.
41
+
42
+ - "What happens when [unexpected input]?"
43
+ - "What if two users do [action] at the same time?"
44
+ - "What about offline/slow connections?"
45
+ - "What if the user has [unusual state]?"
46
+ - "What's the maximum [items/users/data] this needs to handle?"
47
+
48
+ ### Reveal Motivation
49
+
50
+ Understand the WHY behind features.
51
+
52
+ - "Why does that matter?"
53
+ - "What problem does that solve for the user?"
54
+ - "What happens if we don't build that?"
55
+ - "Who specifically needs this? Why?"
56
+ - "What's the cost of getting this wrong?"
57
+
58
+ ### Prioritize Ruthlessly
59
+
60
+ Force ranking and trade-off decisions.
61
+
62
+ - "If you could only ship three features, which three?"
63
+ - "Would you rather have [A] done well or [A and B] done halfway?"
64
+ - "What's the minimum that would make this useful?"
65
+ - "What would you cut if you had to ship in half the time?"
66
+
67
+ ### Surface Implications
68
+
69
+ When the user states a preference or makes a choice, surface what it implies before moving on. This avoids surprises later and reveals whether the user has thought through the consequences.
70
+
71
+ - "You want real-time updates. That typically means WebSockets, which adds deployment complexity. Are you prepared for that, or would polling work?"
72
+ - "Card-based layout with sort/filter usually means client-side state management. How complex are your filtering needs?"
73
+ - "You mentioned multi-tenant. That affects database design, auth, billing — have you thought through isolation boundaries?"
74
+ - "Self-hosted deployment means you own uptime. Do you have monitoring and on-call plans?"
75
+
76
+ The pattern: **[stated preference] implies [consequence]. Is that acceptable, or should we reconsider?**
77
+
78
+ ### Frame Trade-offs, Not Menus
79
+
80
+ Replace "Do you want A or B?" with trade-off framing that shows real consequences.
81
+
82
+ | Instead of | Ask |
83
+ |------------|-----|
84
+ | "SQL or NoSQL?" | "SQL gives you strong consistency and relationships but needs schema migrations. NoSQL gives you flexible documents but makes joins painful. What matters more for your data?" |
85
+ | "SSR or SPA?" | "SSR gives you better SEO and initial load, but adds server cost. SPA gives you snappier interactions but hurts discoverability. What's the priority?" |
86
+ | "Monolith or microservices?" | "A monolith ships faster and is simpler to debug, but gets harder to scale independently. Microservices scale cleanly but add deployment and coordination overhead. Where are you on that spectrum?" |
87
+
88
+ The pattern: **A gives you X but costs Y. B gives you Z but costs W. What matters more to you?**
89
+
90
+ This produces better answers than binary choices because users reveal their actual priorities.
91
+
92
+ ---
93
+
94
+ ## Required Context Checklist
95
+
96
+ By the end of questioning, you should have clear answers for ALL of these:
97
+
98
+ ### The Problem
99
+ - [ ] What problem is being solved?
100
+ - [ ] Who has this problem? (specific users/personas)
101
+ - [ ] How are they solving it today? (current state)
102
+ - [ ] Why is the current solution inadequate?
103
+
104
+ ### The Solution
105
+ - [ ] What is being built? (concrete description)
106
+ - [ ] What does "done" look like? (at least 3 success criteria)
107
+ - [ ] What are the core features? (prioritized)
108
+ - [ ] What is explicitly NOT being built? (scope boundaries)
109
+
110
+ ### Constraints
111
+ - [ ] Technology choices already made (language, framework, hosting)
112
+ - [ ] Budget constraints (money, time, resources)
113
+ - [ ] Team constraints (size, skill level, availability)
114
+ - [ ] Integration constraints (existing systems, APIs, databases)
115
+ - [ ] Timeline expectations (deadlines, milestones)
116
+
117
+ ### Decisions Already Made
118
+ - [ ] Architecture preferences or requirements
119
+ - [ ] Deployment environment (cloud, self-hosted, serverless)
120
+ - [ ] Authentication approach
121
+ - [ ] Data storage approach
122
+ - [ ] Third-party services to use
123
+
124
+ ### Edge Cases and Concerns
125
+ - [ ] What keeps them up at night about this project?
126
+ - [ ] What's the hardest part?
127
+ - [ ] What might go wrong?
128
+ - [ ] What are they unsure about?
129
+
130
+ ---
131
+
132
+ ## Progressive Depth Layers
133
+
134
+ Structure the conversation as deepening layers. Each layer builds on the previous one. You do not need to complete every layer in every project, but the order matters — do not jump to Layer 3 before Layer 1 is solid.
135
+
136
+ ### Layer 1: Shape — "What are you building?"
137
+ Establish the broad outline. What is it, who is it for, what does it do?
138
+ - Core purpose and user personas
139
+ - Primary features and workflows
140
+ - Technology preferences or constraints
141
+
142
+ ### Layer 2: Feel — "How should users experience this?"
143
+ Move from structure to experience. How does it feel to use?
144
+ - UI expectations, interaction patterns, responsiveness
145
+ - Tone, branding, visual direction
146
+ - Performance expectations from the user's perspective
147
+
148
+ ### Layer 3: Edges — "What happens when things go wrong?"
149
+ Probe failure modes, edge cases, and the unexpected.
150
+ - Error handling, empty states, data conflicts
151
+ - Permission boundaries, rate limits, abuse scenarios
152
+ - What the user has NOT thought about yet
153
+
154
+ ### Layer 4: System — "How does this fit into the bigger picture?"
155
+ Zoom out to the surrounding ecosystem.
156
+ - Integrations, data flows, deployment environment
157
+ - Operational concerns — monitoring, backups, migrations
158
+ - Future evolution and extensibility
159
+
160
+ ---
161
+
162
+ ## Conversation Flow
163
+
164
+ The conversation should feel natural, not like an interrogation. Follow this general arc:
165
+
166
+ ### Opening (1-2 exchanges)
167
+ Start broad and let them paint the picture:
168
+ - "What are you building?"
169
+ - "Tell me about this project."
170
+
171
+ ### Exploration (3-5 exchanges)
172
+ Dive into specifics on each area they mention:
173
+ - Follow their energy — explore what they're excited about
174
+ - Circle back to areas they glossed over
175
+ - Use "tell me more about..." and "what does that mean exactly?"
176
+
177
+ ### Constraints (2-3 exchanges)
178
+ Shift to practical matters:
179
+ - "What are you working with? Language, framework, hosting?"
180
+ - "Any hard constraints I should know about?"
181
+ - "What's the timeline looking like?"
182
+
183
+ ### Prioritization (1-2 exchanges)
184
+ Force trade-offs:
185
+ - "Of everything we discussed, what's the core? What MUST be in v1?"
186
+ - "What can wait for v2?"
187
+
188
+ ### Confirmation (1 exchange)
189
+ Summarize back what you heard and confirm:
190
+ - "Let me play this back: you're building [X] that [does Y] for [users Z]. The core features are [A, B, C]. You're using [stack]. The biggest risk is [concern]. Did I get that right?"
191
+
192
+ ---
193
+
194
+ ## Domain-Aware Probing
195
+
196
+ When the user mentions a specific technology area (e.g., "React app", "REST API", "real-time chat"), use domain-specific follow-up questions to go deeper. General questions miss critical details that only matter in that domain.
197
+
198
+ See **[skills/shared/domain-probes.md](../shared/domain-probes.md)** for technology-specific probing patterns organized by domain (frontend frameworks, databases, APIs, auth, deployment, etc.). Reference those patterns when the conversation enters a technology-specific area rather than relying on generic follow-ups.
199
+
200
+ ---
201
+
202
+ ## Anti-Patterns
203
+
204
+ 1. **DO NOT** present a form and ask users to fill it in
205
+ 2. **DO NOT** ask all questions at once — have a conversation
206
+ 3. **DO NOT** assume you know what they want — ask
207
+ 4. **DO NOT** suggest technologies before understanding the problem
208
+ 5. **DO NOT** skip edge case exploration
209
+ 6. **DO NOT** accept vague answers — push for specifics
210
+ 7. **DO NOT** rush through questioning to get to planning
211
+ 8. **DO NOT** ignore concerns or hand-wave them away
212
+ 9. **DO NOT** lead the user toward a particular solution
213
+ 10. **DO NOT** forget to summarize and confirm understanding
214
+ 11. **DO NOT** ask what you already know — track what the user has stated and never re-ask it. If they said "I'm using React", do not later ask "Are you using a frontend framework?" If they said "PostgreSQL", do not ask "What database are you using?" Redundant questions waste exchanges and erode trust. Instead, build on what you know: "You mentioned React — are you using Next.js or plain CRA?"
@@ -0,0 +1,127 @@
1
+ # Reading Verification Reports
2
+
3
+ A user-friendly guide to understanding verification results. For agent-facing patterns, see `verification-patterns.md`.
4
+
5
+ ---
6
+
7
+ ## What Verification Checks
8
+
9
+ After building a phase, Plan-Build-Run runs automated verification to check whether the code actually delivers what was planned. It checks every "must-have" from the plan through three layers:
10
+
11
+ ### Layer 1: Existence
12
+
13
+ **Question**: Does the file/function/route exist at all?
14
+
15
+ This is the most basic check. If the plan said "create `src/auth.ts`" — does that file exist on disk? If it said "add a `/login` route" — can we find it in the codebase?
16
+
17
+ **Common failures**: File was planned but never created, renamed to a different path, or deleted by a later task.
18
+
19
+ ### Layer 2: Substantiveness
20
+
21
+ **Question**: Is the code real, or just a stub/placeholder?
22
+
23
+ A file can exist but contain nothing useful — an empty function, a `throw new Error('Not implemented')`, or a component that just renders its own name. This layer catches those cases.
24
+
25
+ **Common failures**: Function body is empty, returns hardcoded test data, or only has a TODO comment.
26
+
27
+ ### Layer 3: Wiring
28
+
29
+ **Question**: Are the pieces connected to each other?
30
+
31
+ Code can exist and be real, but if nothing imports it or calls it, it's dead code. This layer checks that modules are imported where needed, middleware is applied to routes, and components are rendered in the right places.
32
+
33
+ **Common failures**: Module created but never imported, route handler exists but not registered in the router, component built but not used in any page.
34
+
35
+ ---
36
+
37
+ ## Reading the Verification Report
38
+
39
+ A `VERIFICATION.md` file looks like this:
40
+
41
+ ```
42
+ Status: passed (or gaps_found)
43
+ Must-haves checked: 8
44
+ Passed: 7
45
+ Gaps: 1
46
+ ```
47
+
48
+ ### When status is "passed"
49
+
50
+ All must-haves passed all three layers. The phase is complete and you can move on.
51
+
52
+ ### When status is "gaps_found"
53
+
54
+ One or more must-haves failed verification. Each gap includes:
55
+
56
+ - **Must-have**: What was expected (from the plan)
57
+ - **Failed layer**: Which check failed (existence, substantiveness, or wiring)
58
+ - **Evidence**: The specific command output or file content that shows the failure
59
+ - **Suggested fix**: What to do about it
60
+
61
+ ---
62
+
63
+ ## Common Gap Types and What They Mean
64
+
65
+ ### "File not found"
66
+ **Layer**: Existence
67
+ **Meaning**: A planned file was never created or was created at a different path.
68
+ **Fix**: Usually a simple oversight — the executor may have created it with a slightly different name. Check the phase directory for similar files.
69
+
70
+ ### "Function is a stub"
71
+ **Layer**: Substantiveness
72
+ **Meaning**: The file exists but the implementation is incomplete. Common indicators: empty function bodies, `TODO` comments, placeholder return values.
73
+ **Fix**: The executor may have run out of context before finishing. Re-running the build usually resolves this.
74
+
75
+ ### "Module not imported"
76
+ **Layer**: Wiring
77
+ **Meaning**: The code was written correctly but nothing uses it. The import statement is missing from the consuming file.
78
+ **Fix**: Usually a one-line fix — add the import statement to the right file.
79
+
80
+ ### "Test has no assertions"
81
+ **Layer**: Substantiveness
82
+ **Meaning**: A test file exists but doesn't actually test anything — empty `it()` blocks or `expect(true).toBe(true)`.
83
+ **Fix**: Real test assertions need to be written. This usually happens when TDD mode is off and the executor generates placeholder tests.
84
+
85
+ ### "Route not registered"
86
+ **Layer**: Wiring
87
+ **Meaning**: A route handler function was created but never mounted on the Express/Fastify/etc. router.
88
+ **Fix**: Add the route registration (usually `app.use()` or `router.get()`) to the main app file.
89
+
90
+ ---
91
+
92
+ ## How to Close Gaps
93
+
94
+ You have several options:
95
+
96
+ ### Option 1: Re-run the build (most common)
97
+ ```
98
+ /pbr:build <N>
99
+ ```
100
+ The executor will detect what's already complete and only fix what's missing.
101
+
102
+ ### Option 2: Create a gap-closure plan
103
+ ```
104
+ /pbr:plan <N> --gaps
105
+ ```
106
+ This creates a focused plan that targets only the specific gaps found during verification.
107
+
108
+ ### Option 3: Manual fix
109
+ For small gaps (like a missing import), you can fix the code yourself and then re-run verification:
110
+ ```
111
+ /pbr:review <N>
112
+ ```
113
+
114
+ ### Option 4: Override (for false positives)
115
+ If verification flagged something that's actually correct (e.g., a function intentionally returns an empty array), you can override the gap during review. The override is recorded in the verification report.
116
+
117
+ ---
118
+
119
+ ## Understanding Verification Attempts
120
+
121
+ The verification report tracks `attempt` count. If a phase has been verified multiple times:
122
+
123
+ - **Attempt 1**: Normal first verification
124
+ - **Attempt 2**: Gaps were found and fixed, re-verifying
125
+ - **Attempt 3+**: Escalation — Plan-Build-Run will offer additional options like accepting with gaps, switching to debug mode, or re-planning the phase
126
+
127
+ Multiple attempts don't mean something is wrong — complex phases often need a round of gap-closure before passing.
@@ -0,0 +1,160 @@
1
+ # Stub Detection Patterns
2
+
3
+ Technology-aware patterns for detecting incomplete implementations. Used by the verifier during Layer 2 (Substantiveness) checks.
4
+
5
+ Read the project's stack from `.planning/codebase/STACK.md` or `.planning/research/STACK.md` to determine which technology-specific patterns to apply. If no stack file exists, use universal patterns only.
6
+
7
+ ---
8
+
9
+ ## Universal Patterns (always check)
10
+
11
+ - TODO, FIXME, HACK, PLACEHOLDER, "not implemented"
12
+ - `return null`, `return {}`, `return []`, `return undefined`
13
+ - Empty function bodies, functions that only console.log
14
+ - `throw new Error('Not implemented')` or similar
15
+ - Placeholder strings ("lorem ipsum", "sample data", "example")
16
+
17
+ ## React/Next.js Patterns (when stack includes React/Next)
18
+
19
+ - `<div>ComponentName</div>` — component returning only its name
20
+ - `onClick={() => {}}` — empty event handlers
21
+ - `fetch()` without error handling or response processing
22
+ - `useState` with no state updates
23
+ - Components returning `null`, `<></>`, or single placeholder div
24
+
25
+ ## API/Express Patterns (when stack includes Express/Fastify/Koa)
26
+
27
+ - `res.json({ message: "Not implemented" })`
28
+ - Empty middleware: `(req, res, next) => next()`
29
+ - Routes returning hardcoded test data
30
+ - `res.status(501)` responses
31
+
32
+ ## Database Patterns (when stack includes any ORM/database)
33
+
34
+ - Empty migration files
35
+ - Models/schemas with no fields beyond id
36
+ - Repository methods that return empty arrays
37
+
38
+ ## Python Patterns (when stack includes Python)
39
+
40
+ - `pass` in function bodies
41
+ - `raise NotImplementedError`
42
+ - Functions returning `None` without logic
43
+ - `# TODO` in function bodies
44
+
45
+ ## Go Patterns (when stack includes Go)
46
+
47
+ - Functions returning zero values without logic
48
+ - `panic("not implemented")`
49
+ - Empty interface implementations
50
+
51
+ ---
52
+
53
+ ## Detailed Examples
54
+
55
+ ### TypeScript/JavaScript Stubs
56
+
57
+ ```typescript
58
+ // STUB PATTERN: Empty function body
59
+ export function processData() { }
60
+ export function processData() { return; }
61
+ export function processData() { return null; }
62
+ export const processData = () => {};
63
+
64
+ // STUB PATTERN: Placeholder implementation
65
+ export function processData() {
66
+ throw new Error('Not implemented');
67
+ }
68
+ export function processData() {
69
+ throw new Error('TODO');
70
+ }
71
+
72
+ // STUB PATTERN: Hardcoded return value
73
+ export function getUsers(): User[] {
74
+ return [];
75
+ }
76
+ export function getConfig(): Config {
77
+ return {} as Config;
78
+ }
79
+
80
+ // STUB PATTERN: Console.log instead of implementation
81
+ export function saveUser(user: User): void {
82
+ console.log('TODO: implement saveUser', user);
83
+ }
84
+
85
+ // STUB PATTERN: Pass-through without logic
86
+ export function validateInput(input: unknown): boolean {
87
+ return true; // Always passes - no real validation
88
+ }
89
+ ```
90
+
91
+ ### React Component Stubs
92
+
93
+ ```tsx
94
+ // STUB: Null return
95
+ export function Dashboard() { return null; }
96
+
97
+ // STUB: Empty fragment
98
+ export function Dashboard() { return <></>; }
99
+
100
+ // STUB: Placeholder text
101
+ export function Dashboard() { return <div>Dashboard</div>; }
102
+ export function Dashboard() { return <div>Coming soon</div>; }
103
+
104
+ // STUB: Div with just the name
105
+ export function UserProfile() { return <div>UserProfile</div>; }
106
+
107
+ // REAL (NOT a stub): Has actual JSX structure with data binding
108
+ export function Dashboard({ data }: Props) {
109
+ return (
110
+ <div className="dashboard">
111
+ <h1>{data.title}</h1>
112
+ <MetricsGrid metrics={data.metrics} />
113
+ </div>
114
+ );
115
+ }
116
+ ```
117
+
118
+ ### API Route/Handler Stubs
119
+
120
+ ```typescript
121
+ // STUB: Empty response
122
+ app.get('/api/users', (req, res) => { res.json({}); });
123
+
124
+ // STUB: Not implemented status
125
+ app.get('/api/users', (req, res) => { res.status(501).json({ error: 'Not implemented' }); });
126
+
127
+ // STUB: Hardcoded test data
128
+ app.get('/api/users', (req, res) => {
129
+ res.json([{ id: 1, name: 'Test User' }]);
130
+ });
131
+
132
+ // REAL: Database query, error handling, response
133
+ app.get('/api/users', async (req, res) => {
134
+ const { page = 1, limit = 20 } = req.query;
135
+ const users = await db.users.findMany({ skip: (page - 1) * limit, take: limit });
136
+ res.json({ data: users, page, limit });
137
+ });
138
+ ```
139
+
140
+ ### Test Stubs
141
+
142
+ ```typescript
143
+ // STUB: No assertions
144
+ it('should process data', () => {});
145
+
146
+ // STUB: Trivial assertion
147
+ it('should process data', () => { expect(true).toBe(true); });
148
+
149
+ // STUB: Skipped
150
+ it.skip('should process data', () => { /* ... */ });
151
+ xit('should process data', () => { /* ... */ });
152
+
153
+ // REAL: Actual test with meaningful assertions
154
+ it('should process data and return transformed result', () => {
155
+ const input = createTestData();
156
+ const result = processData(input);
157
+ expect(result.items).toHaveLength(3);
158
+ expect(result.total).toBe(150);
159
+ });
160
+ ```
@@ -0,0 +1,119 @@
1
+ # Subagent Coordination Reference
2
+
3
+ Patterns for spawning, monitoring, and consuming output from Task() subagents. Used by skills that delegate work to specialized agents.
4
+
5
+ ---
6
+
7
+ ## When to Spawn vs Inline
8
+
9
+ | Condition | Action |
10
+ |-----------|--------|
11
+ | >50 lines of analysis or code generation needed | Spawn a subagent |
12
+ | Simple state read or file write | Do it inline |
13
+ | Multiple files need reading for a decision | Spawn — protect orchestrator context |
14
+ | User interaction needed (questions, confirmations) | Do it inline |
15
+ | Work needs a fresh context window | Spawn |
16
+
17
+ ---
18
+
19
+ ## Spawning Pattern
20
+
21
+ Always use the modern subagent_type syntax. Agent definitions are auto-loaded by Claude Code — never inline them.
22
+
23
+ ```
24
+ Task({
25
+ subagent_type: "pbr:{agent-name}",
26
+ prompt: <structured prompt with context>
27
+ })
28
+ ```
29
+
30
+ ### Structured Input Format
31
+
32
+ Provide context to subagents using tagged blocks:
33
+
34
+ ```xml
35
+ <phase_context>
36
+ Phase: {NN}-{slug}
37
+ Goal: {goal from ROADMAP.md}
38
+ </phase_context>
39
+
40
+ <prior_work>
41
+ {Frontmatter from relevant SUMMARY.md files}
42
+ </prior_work>
43
+
44
+ <instructions>
45
+ {Specific instructions for this agent invocation}
46
+ </instructions>
47
+ ```
48
+
49
+ ### What NOT to Include in Spawn Prompts
50
+
51
+ - Full agent definition text (auto-loaded via subagent_type)
52
+ - Full SUMMARY.md bodies (agent reads from disk)
53
+ - Full PLAN.md bodies unless the agent needs them (executor does, verifier doesn't)
54
+ - Content from unrelated phases
55
+
56
+ ---
57
+
58
+ ## Reading Output
59
+
60
+ After a subagent completes, read its output file — but only what you need.
61
+
62
+ | Output Type | Orchestrator Reads | Agent Reads Full |
63
+ |-------------|-------------------|-----------------|
64
+ | SUMMARY.md | Frontmatter only (status, key_files, commits) | Yes, from disk |
65
+ | VERIFICATION.md | Frontmatter only (status, must_haves_passed/failed) | Yes, from disk |
66
+ | PLAN.md | Frontmatter only (wave, depends_on, files_modified) | Yes, from disk |
67
+ | RESEARCH.md | Frontmatter + recommendations section | Yes, from disk |
68
+ | Debug files | Latest hypothesis + result only | Yes, from disk |
69
+
70
+ ### Frontmatter-Only Read Pattern
71
+
72
+ ```
73
+ Read the file, extract YAML frontmatter between --- markers.
74
+ Parse: status, key_files, commits, provides.
75
+ Do NOT read past the closing --- of frontmatter.
76
+ ```
77
+
78
+ ---
79
+
80
+ ## State Update After Agent Completion
81
+
82
+ After reading agent output, update STATE.md with minimal information:
83
+ 1. Update phase/plan status
84
+ 2. Record completion timestamp
85
+ 3. Note any blockers or warnings from frontmatter
86
+ 4. Do NOT copy agent output into STATE.md
87
+
88
+ ---
89
+
90
+ ## Error Handling
91
+
92
+ | Scenario | Action |
93
+ |----------|--------|
94
+ | Agent times out | Report to user, suggest retry |
95
+ | Agent produces no output file | Report failure, check for partial work |
96
+ | Output file has `status: failed` | Read failure details, present to user |
97
+ | Agent reports warnings | Continue but show warnings in completion summary |
98
+
99
+ ### Retryable vs Fatal
100
+
101
+ - **Retryable**: Timeout, transient file errors, partial completion
102
+ - **Fatal**: Missing plan files, invalid state, circular dependencies
103
+ - **User decision**: Verification failures, ambiguous requirements
104
+
105
+ ---
106
+
107
+ ## Context Budget Impact
108
+
109
+ Each subagent coordination step has a token cost in the orchestrator:
110
+
111
+ | Step | Approximate Cost |
112
+ |------|-----------------|
113
+ | Reading state before spawn | 200-500 tokens |
114
+ | Constructing spawn prompt | 500-1000 tokens |
115
+ | Reading output frontmatter | 100-300 tokens |
116
+ | Updating STATE.md | 200-400 tokens |
117
+ | **Total per agent cycle** | **1,000-2,200 tokens** |
118
+
119
+ Compare to inlining the same work: 5,000-20,000 tokens. Delegation saves 3-10x.