@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,283 @@
1
+ # Plan Format Reference
2
+
3
+ Complete reference for the XML task specification used in Plan-Build-Run plan files.
4
+
5
+ ---
6
+
7
+ ## Plan File Structure
8
+
9
+ Every plan file has two sections:
10
+ 1. **YAML Frontmatter** — metadata about the plan
11
+ 2. **XML Tasks** — the executable task specifications
12
+
13
+ ---
14
+
15
+ ## YAML Frontmatter
16
+
17
+ ```yaml
18
+ ---
19
+ phase: "02-authentication"
20
+ plan: "02-01"
21
+ type: "feature"
22
+ wave: 1
23
+ depends_on: []
24
+ files_modified:
25
+ - "src/auth/discord.ts"
26
+ - "src/middleware/auth.ts"
27
+ autonomous: true
28
+ discovery: 1
29
+ gap_closure: false
30
+ must_haves:
31
+ truths:
32
+ - "User can authenticate via Discord OAuth"
33
+ - "JWT token is set in httpOnly cookie"
34
+ artifacts:
35
+ - "src/auth/discord.ts: >50 lines"
36
+ - "src/middleware/auth.ts: >30 lines"
37
+ key_links:
38
+ - "Auth middleware applied to protected routes"
39
+ - "Login button calls authenticateWithDiscord()"
40
+ provides:
41
+ - "AuthService class"
42
+ - "POST /api/auth/login endpoint"
43
+ - "requireAuth() middleware"
44
+ consumes:
45
+ - "Database connection (from plan 01-01)"
46
+ ---
47
+ ```
48
+
49
+ ### Frontmatter Fields
50
+
51
+ | Field | Required | Type | Description |
52
+ |-------|----------|------|-------------|
53
+ | `phase` | YES | string | Phase directory name (e.g., "02-authentication") |
54
+ | `plan` | YES | string | Plan ID: `{phase_num}-{plan_num}` (e.g., "02-01") |
55
+ | `type` | YES | enum | `feature`, `bugfix`, `refactor`, `infrastructure`, `docs` |
56
+ | `wave` | YES | int | Execution wave (1 = independent, 2+ = has deps) |
57
+ | `depends_on` | YES | array | Plan IDs that must complete first. `[]` if Wave 1. |
58
+ | `files_modified` | YES | array | All files this plan creates or modifies |
59
+ | `autonomous` | YES | bool | `true` if no human checkpoints |
60
+ | `discovery` | NO | int | Research level: 0=skip, 1=quick, 2=standard, 3=deep. Default: 1 |
61
+ | `gap_closure` | NO | bool | `true` if this is a gap-closure plan. Default: false |
62
+ | `must_haves` | YES | object | Goal-backward derivation |
63
+ | `must_haves.truths` | YES | array | Observable truths that must be true when done |
64
+ | `must_haves.artifacts` | YES | array | Files/modules that must exist. Append `: >N lines` for size hints. |
65
+ | `must_haves.key_links` | YES | array | Connections between components. Append `: grep command` for verification. |
66
+ | `provides` | NO | array | What this plan exports for other plans to consume (classes, endpoints, modules) |
67
+ | `consumes` | NO | array | What this plan needs from prior plans. Format: `"Thing (from plan XX-YY)"` |
68
+ | `dependency_fingerprints` | NO | object | Hashes of dependency phase SUMMARY.md files at plan-creation time. Used to detect stale plans. |
69
+
70
+ ---
71
+
72
+ ## Summary Section
73
+
74
+ Every plan file MUST end with a `## Summary` section after all XML tasks. This section provides a compact overview (~500 tokens) for injection into executor prompts, avoiding the need to inline the full plan (~1,500 tokens).
75
+
76
+ Format:
77
+
78
+ ```
79
+ ## Summary
80
+
81
+ **Plan {plan_id}**: {1-sentence description of what this plan does}
82
+
83
+ **Tasks:**
84
+ 1. {task_id}: {task name} -- {files touched}
85
+ 2. {task_id}: {task name} -- {files touched}
86
+ 3. {task_id}: {task name} -- {files touched}
87
+
88
+ **Key files:** {comma-separated list of all files_modified}
89
+
90
+ **Must-haves:** {comma-separated list of truths from frontmatter}
91
+
92
+ **Provides:** {comma-separated list from provides field}
93
+
94
+ **Consumes:** {comma-separated list from consumes field, or "None"}
95
+ ```
96
+
97
+ The Summary section is generated by the planner agent at plan creation time. It is a denormalized view of plan metadata -- if the plan is revised, the Summary must also be updated.
98
+
99
+ ---
100
+
101
+ ## Task Types
102
+
103
+ ### Standard Auto Task
104
+
105
+ ```xml
106
+ <task id="02-01-T1" type="auto" complexity="medium">
107
+ <name>Create Discord OAuth client module</name>
108
+ <files>
109
+ src/auth/discord.ts
110
+ src/auth/types.ts
111
+ </files>
112
+ <action>
113
+ 1. Create file `src/auth/types.ts`
114
+ - Export interface `DiscordUser` with fields: id, username, avatar, email
115
+ - Export interface `AuthTokens` with fields: accessToken, refreshToken, expiresAt
116
+
117
+ 2. Create file `src/auth/discord.ts`
118
+ - Import `OAuth2Client` from `discord-oauth2`
119
+ - Import `DiscordUser`, `AuthTokens` from `./types`
120
+ - Export async function `authenticateWithDiscord(code: string): Promise<DiscordUser>`
121
+ - Create OAuth2Client with DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET from env
122
+ - Exchange authorization code for access token
123
+ - Fetch user profile: GET /api/users/@me
124
+ - Return DiscordUser object
125
+ - Export function `getDiscordAuthUrl(): string`
126
+ - Build OAuth2 URL with scopes: identify, email
127
+ - Include DISCORD_REDIRECT_URI from env
128
+
129
+ 3. Add to `.env.example`:
130
+ DISCORD_CLIENT_ID=
131
+ DISCORD_CLIENT_SECRET=
132
+ DISCORD_REDIRECT_URI=http://localhost:3000/auth/callback
133
+ </action>
134
+ <verify>
135
+ npx tsc --noEmit
136
+ ls src/auth/discord.ts
137
+ ls src/auth/types.ts
138
+ </verify>
139
+ <done>Discord OAuth client module exists and compiles without errors</done>
140
+ </task>
141
+ ```
142
+
143
+ ### TDD Task
144
+
145
+ ```xml
146
+ <task id="02-01-T2" type="auto" tdd="true" complexity="medium">
147
+ <name>Implement auth middleware with TDD</name>
148
+ <files>
149
+ src/middleware/auth.ts
150
+ tests/middleware/auth.test.ts
151
+ </files>
152
+ <action>
153
+ RED:
154
+ 1. Create `tests/middleware/auth.test.ts`
155
+ - Test: "rejects request without token" — expect 401
156
+ - Test: "rejects request with invalid token" — expect 401
157
+ - Test: "passes request with valid token" — expect next() called
158
+
159
+ GREEN:
160
+ 2. Create `src/middleware/auth.ts`
161
+ - Export function `requireAuth(req, res, next)`
162
+ - Extract JWT from httpOnly cookie
163
+ - Verify token with jsonwebtoken
164
+ - If valid: attach user to req, call next()
165
+ - If invalid: respond 401
166
+
167
+ REFACTOR:
168
+ 3. Extract token verification into `verifyToken()` helper
169
+ </action>
170
+ <verify>
171
+ npm test -- --grep "auth middleware"
172
+ </verify>
173
+ <done>Auth middleware rejects invalid tokens and passes valid tokens</done>
174
+ </task>
175
+ ```
176
+
177
+ ### Checkpoint: Human Verify
178
+
179
+ ```xml
180
+ <task id="03-02-T3" type="checkpoint:human-verify">
181
+ <name>Verify OAuth callback flow</name>
182
+ <files>
183
+ src/pages/auth/callback.ts
184
+ </files>
185
+ <action>
186
+ 1. Create the OAuth callback page at `src/pages/auth/callback.ts`
187
+ 2. Wire it to call `authenticateWithDiscord()` with the authorization code
188
+ 3. On success: set JWT cookie and redirect to dashboard
189
+ 4. On failure: redirect to login with error message
190
+ </action>
191
+ <verify>
192
+ what-built: OAuth callback page that exchanges Discord auth code for JWT
193
+ how-to-verify: |
194
+ 1. Click "Login with Discord" button
195
+ 2. Authorize the application in Discord
196
+ 3. Verify you are redirected to the dashboard
197
+ 4. Check browser cookies for JWT token
198
+ resume-signal: "User confirms OAuth flow works end-to-end"
199
+ </verify>
200
+ <done>User can complete full Discord OAuth login flow</done>
201
+ </task>
202
+ ```
203
+
204
+ ### Checkpoint: Decision
205
+
206
+ ```xml
207
+ <task id="04-01-T1" type="checkpoint:decision">
208
+ <name>Choose database migration strategy</name>
209
+ <files></files>
210
+ <action>
211
+ Present the user with the migration strategy options after research.
212
+ </action>
213
+ <verify>
214
+ decision: "Which migration strategy to use for production database?"
215
+ context: "We need to decide how to handle schema changes in production."
216
+ options: |
217
+ A) Prisma Migrate — automatic migrations, good for development, requires care in production
218
+ B) Manual SQL — full control, more work, explicit about what changes
219
+ C) TypeORM migrations — auto-generated from entities, reversible
220
+ resume-signal: "User selects option A, B, or C"
221
+ </verify>
222
+ <done>Database migration strategy decided and documented in CONTEXT.md</done>
223
+ </task>
224
+ ```
225
+
226
+ ### Checkpoint: Human Action
227
+
228
+ ```xml
229
+ <task id="05-03-T2" type="checkpoint:human-action">
230
+ <name>Configure production environment</name>
231
+ <files>
232
+ .env.production
233
+ </files>
234
+ <action>
235
+ 1. Create `.env.production.example` with all required variables listed
236
+ 2. Document each variable's purpose in comments
237
+ </action>
238
+ <verify>
239
+ what-needed: "Production environment variables must be set"
240
+ how-to-do: |
241
+ 1. Copy `.env.production.example` to `.env.production`
242
+ 2. Fill in production values for:
243
+ - DATABASE_URL (production database connection string)
244
+ - DISCORD_CLIENT_ID (production Discord app)
245
+ - DISCORD_CLIENT_SECRET (production Discord app)
246
+ - JWT_SECRET (generate with: openssl rand -base64 32)
247
+ resume-signal: "User confirms .env.production is configured"
248
+ </verify>
249
+ <done>Production environment is configured with real credentials</done>
250
+ </task>
251
+ ```
252
+
253
+ ---
254
+
255
+ ## The 5 Mandatory Elements
256
+
257
+ Every task MUST have ALL 5. No exceptions.
258
+
259
+ | Element | Purpose | Rules |
260
+ |---------|---------|-------|
261
+ | `<name>` | What the task does | Imperative verb phrase. Short. |
262
+ | `<files>` | Files touched | One per line. Actual file paths. |
263
+ | `<action>` | How to do it | Numbered steps. Specific. Code snippets for complex work. |
264
+ | `<verify>` | How to check | Executable shell commands. Or checkpoint format. |
265
+ | `<done>` | How to know it worked | Observable user/system behavior. Maps to a must-have. |
266
+
267
+ ---
268
+
269
+ ## Task ID Format
270
+
271
+ ```
272
+ {plan_id}-T{sequential_number}
273
+
274
+ Examples:
275
+ 02-01-T1 — Phase 02, Plan 01, Task 1
276
+ 02-01-T2 — Phase 02, Plan 01, Task 2
277
+ 03-02-T1 — Phase 03, Plan 02, Task 1
278
+ ```
279
+
280
+ Task IDs are unique within a phase. They are used for:
281
+ - Commit message references
282
+ - Checkpoint continuation references
283
+ - SUMMARY.md task result tracking
@@ -0,0 +1,213 @@
1
+ # Planning Config Reference
2
+
3
+ Schema, fields, defaults, and behavioral effects of Plan-Build-Run's `config.json`.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Plan-Build-Run's configuration lives at `.planning/config.json` in the project root. It is created by `/pbr:begin` and can be modified via `/pbr:config` or by editing the file directly. The config controls workflow behavior, model selection, parallelization, git integration, and confirmation gates.
10
+
11
+ ---
12
+
13
+ ## Schema Version
14
+
15
+ ```json
16
+ { "version": 2 }
17
+ ```
18
+
19
+ The `version` field tracks schema migrations. Current version is `2`. When loading a config with an older version, Plan-Build-Run runs automatic migration (e.g., v1 to v2 adds missing fields with defaults, renames `model_profile` to per-agent `models` object).
20
+
21
+ ---
22
+
23
+ ## Top-Level Fields
24
+
25
+ | Field | Type | Default | Description |
26
+ |-------|------|---------|-------------|
27
+ | `version` | number | `2` | Config schema version |
28
+ | `context_strategy` | string | `"aggressive"` | Context budget strategy: `aggressive`, `balanced`, `minimal` |
29
+ | `mode` | string | `"interactive"` | Workflow mode: `interactive` |
30
+ | `depth` | string | `"standard"` | Research/planning depth: `quick`, `standard`, `comprehensive` |
31
+
32
+ ### depth
33
+
34
+ Controls how thorough research and planning phases are:
35
+
36
+ | Value | Behavior |
37
+ |-------|----------|
38
+ | `quick` | Minimal research, smaller plans, faster execution |
39
+ | `standard` | Balanced research depth, standard plan detail |
40
+ | `comprehensive` | Deep research with multiple sources, detailed plans with more tasks |
41
+
42
+ ### context_strategy
43
+
44
+ Controls how aggressively Plan-Build-Run manages context budget:
45
+
46
+ | Value | Behavior |
47
+ |-------|----------|
48
+ | `aggressive` | Proactive compaction warnings, strict context isolation, minimal file reads in main context |
49
+ | `balanced` | Moderate context management with some inline reads |
50
+ | `minimal` | Relaxed context management, more inline content allowed |
51
+
52
+ ---
53
+
54
+ ## features
55
+
56
+ Boolean toggles that enable or disable specific workflow capabilities.
57
+
58
+ | Field | Default | Description |
59
+ |-------|---------|-------------|
60
+ | `structured_planning` | `true` | Use phased planning with ROADMAP and plan files |
61
+ | `goal_verification` | `true` | Run verifier agent after builds to check goals are met |
62
+ | `integration_verification` | `true` | Run cross-phase integration checks |
63
+ | `context_isolation` | `true` | Isolate work into subagents to protect main context |
64
+ | `atomic_commits` | `true` | Require one commit per task (vs. batched commits) |
65
+ | `session_persistence` | `true` | Persist state across sessions via STATE.md |
66
+ | `research_phase` | `true` | Run research before planning |
67
+ | `plan_checking` | `true` | Run plan-checker agent before execution |
68
+ | `tdd_mode` | `false` | Enable Test-Driven Development for all tasks (Red-Green-Refactor) |
69
+ | `status_line` | `true` | Show status line in session UI |
70
+ | `auto_continue` | `false` | Write `.auto-next` signal on phase completion for automatic continuation |
71
+ | `auto_advance` | `false` | Chain build→review→plan automatically in autonomous mode (requires `mode: autonomous`) |
72
+ | `team_discussions` | `false` | Enable team-based discussion workflows (never used for execution) |
73
+ | `inline_verify` | `false` | Run per-task verification after each executor commit (opt-in, adds latency) |
74
+
75
+ ### Notable interactions
76
+
77
+ - `goal_verification: false` skips the post-build verification step. The build skill appends a note suggesting `/pbr:review` manually.
78
+ - `tdd_mode: true` causes all task types to follow Red-Green-Refactor, producing 3 commits per task instead of 1.
79
+ - `auto_continue: true` writes a `.planning/.auto-next` file containing the next command (e.g., `/pbr:plan 4`), allowing wrapper scripts to chain phases.
80
+ - `auto_advance: true` + `mode: autonomous` enables full phase cycling: build completes → auto-invoke review → if verification passes → auto-invoke plan for next phase. Hard stops at: checkpoints, verification gaps, errors, milestone boundaries.
81
+ - `inline_verify: true` spawns a haiku-model verifier after each plan completes within a wave. Adds ~10-20s latency per plan but catches issues before dependent plans run.
82
+
83
+ ---
84
+
85
+ ## models
86
+
87
+ Per-agent model selection. See `references/model-profiles.md` for full details.
88
+
89
+ ```json
90
+ {
91
+ "models": {
92
+ "researcher": "sonnet",
93
+ "planner": "inherit",
94
+ "executor": "inherit",
95
+ "verifier": "sonnet",
96
+ "integration_checker": "sonnet",
97
+ "debugger": "inherit",
98
+ "mapper": "sonnet",
99
+ "synthesizer": "haiku"
100
+ }
101
+ }
102
+ ```
103
+
104
+ Valid values: `sonnet`, `opus`, `haiku`, `inherit`.
105
+
106
+ ---
107
+
108
+ ## parallelization
109
+
110
+ Controls whether and how plans execute concurrently.
111
+
112
+ | Field | Type | Default | Description |
113
+ |-------|------|---------|-------------|
114
+ | `enabled` | boolean | `true` | Enable parallel plan execution within a wave |
115
+ | `plan_level` | boolean | `true` | Parallelize at plan level (multiple plans in same wave) |
116
+ | `task_level` | boolean | `false` | Parallelize at task level within a plan (not currently used) |
117
+ | `max_concurrent_agents` | number | `3` | Maximum simultaneous executor subagents |
118
+ | `min_plans_for_parallel` | number | `2` | Minimum plans in a wave to trigger parallel execution |
119
+ | `use_teams` | boolean | `false` | Use Agent Teams for coordination (discussion only, never execution) |
120
+
121
+ ### Behavior
122
+
123
+ When `enabled: true` and a wave has >= `min_plans_for_parallel` plans, the build orchestrator spawns up to `max_concurrent_agents` executor Task() calls in parallel using `run_in_background: true`.
124
+
125
+ When `enabled: false` or a wave has only 1 plan, executors run sequentially.
126
+
127
+ Git lock conflicts can occur with parallel execution. Executors handle this with retry logic (wait 2s, max 3 attempts). If conflicts persist, reduce `max_concurrent_agents` to 1.
128
+
129
+ ---
130
+
131
+ ## planning
132
+
133
+ Controls planning behavior and documentation.
134
+
135
+ | Field | Type | Default | Description |
136
+ |-------|------|---------|-------------|
137
+ | `commit_docs` | boolean | `true` | Commit planning docs (SUMMARY, VERIFICATION) after builds |
138
+ | `max_tasks_per_plan` | number | `3` | Maximum tasks per plan (keeps plans focused and atomic) |
139
+ | `search_gitignored` | boolean | `false` | Include gitignored files in codebase scanning |
140
+
141
+ ### commit_docs
142
+
143
+ When `true`, after all plans in a phase complete, the build orchestrator stages and commits planning artifacts:
144
+ ```
145
+ docs({phase}): add build summaries and verification
146
+ ```
147
+
148
+ When `false`, planning docs remain unstaged/uncommitted.
149
+
150
+ ---
151
+
152
+ ## git
153
+
154
+ Controls git integration and branching.
155
+
156
+ | Field | Type | Default | Description |
157
+ |-------|------|---------|-------------|
158
+ | `branching` | string | `"none"` | Branching strategy: `none`, `phase`, `milestone`, `disabled` |
159
+ | `commit_format` | string | `"{type}({phase}-{plan}): {description}"` | Commit message template |
160
+ | `phase_branch_template` | string | `"plan-build-run/phase-{phase}-{slug}"` | Phase branch naming |
161
+ | `milestone_branch_template` | string | `"plan-build-run/{milestone}-{slug}"` | Milestone branch naming |
162
+ | `mode` | string | `"enabled"` | Git mode: `enabled` or `disabled` |
163
+
164
+ See `references/git-integration.md` for full branching strategy details.
165
+
166
+ ### mode: disabled
167
+
168
+ When `git.mode` is `"disabled"`, no git commands are run at all -- no commits, no branching, no hook validation. Useful for prototyping or non-git projects.
169
+
170
+ ---
171
+
172
+ ## gates
173
+
174
+ Confirmation gates that pause execution to ask the user before proceeding.
175
+
176
+ | Field | Default | When Triggered |
177
+ |-------|---------|----------------|
178
+ | `confirm_project` | `true` | Before creating a new Plan-Build-Run project (`/pbr:begin`) |
179
+ | `confirm_roadmap` | `true` | Before finalizing a roadmap |
180
+ | `confirm_plan` | `true` | Before finalizing plans for a phase |
181
+ | `confirm_execute` | `false` | Before starting phase execution (`/pbr:build`) |
182
+ | `confirm_transition` | `true` | Before transitioning to the next phase |
183
+ | `issues_review` | `true` | Before proceeding when issues are detected |
184
+
185
+ Setting a gate to `false` makes that step automatic (no user prompt).
186
+
187
+ ---
188
+
189
+ ## safety
190
+
191
+ Safety controls for destructive or external operations.
192
+
193
+ | Field | Type | Default | Description |
194
+ |-------|------|---------|-------------|
195
+ | `always_confirm_destructive` | boolean | `true` | Always ask before destructive git operations |
196
+ | `always_confirm_external_services` | boolean | `true` | Always ask before calling external APIs or services |
197
+
198
+ These cannot be disabled via `/pbr:config` -- they require manual editing of `config.json` as a deliberate action.
199
+
200
+ ---
201
+
202
+ ## Validation Rules
203
+
204
+ When modifying config (via `/pbr:config` or direct edit):
205
+
206
+ | Field | Valid Values |
207
+ |-------|-------------|
208
+ | `depth` | `quick`, `standard`, `comprehensive` |
209
+ | `models.*` | `sonnet`, `inherit`, `haiku`, `opus` |
210
+ | `context_strategy` | `aggressive`, `balanced`, `minimal` |
211
+ | `git.branching` | `none`, `phase`, `milestone`, `disabled` |
212
+ | `git.mode` | `enabled`, `disabled` |
213
+ | All boolean fields | `true`, `false` |