@sienklogic/plan-build-run 2.0.0 → 2.0.2

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 (233) hide show
  1. package/CHANGELOG.md +56 -56
  2. package/CLAUDE.md +149 -149
  3. package/LICENSE +21 -21
  4. package/README.md +247 -247
  5. package/dashboard/bin/cli.js +25 -25
  6. package/dashboard/package.json +34 -34
  7. package/dashboard/public/css/layout.css +406 -406
  8. package/dashboard/public/css/status-colors.css +98 -98
  9. package/dashboard/public/js/htmx-title.js +5 -5
  10. package/dashboard/public/js/sidebar-toggle.js +20 -20
  11. package/dashboard/src/app.js +78 -78
  12. package/dashboard/src/middleware/errorHandler.js +52 -52
  13. package/dashboard/src/middleware/notFoundHandler.js +9 -9
  14. package/dashboard/src/repositories/planning.repository.js +128 -128
  15. package/dashboard/src/routes/events.routes.js +40 -40
  16. package/dashboard/src/routes/index.routes.js +31 -31
  17. package/dashboard/src/routes/pages.routes.js +245 -195
  18. package/dashboard/src/server.js +42 -42
  19. package/dashboard/src/services/dashboard.service.js +222 -222
  20. package/dashboard/src/services/phase.service.js +220 -167
  21. package/dashboard/src/services/project.service.js +57 -57
  22. package/dashboard/src/services/roadmap.service.js +171 -171
  23. package/dashboard/src/services/sse.service.js +58 -58
  24. package/dashboard/src/services/todo.service.js +254 -254
  25. package/dashboard/src/services/watcher.service.js +48 -48
  26. package/dashboard/src/views/coming-soon.ejs +11 -11
  27. package/dashboard/src/views/error.ejs +13 -13
  28. package/dashboard/src/views/index.ejs +5 -5
  29. package/dashboard/src/views/layout.ejs +1 -1
  30. package/dashboard/src/views/partials/dashboard-content.ejs +77 -77
  31. package/dashboard/src/views/partials/footer.ejs +3 -3
  32. package/dashboard/src/views/partials/head.ejs +21 -21
  33. package/dashboard/src/views/partials/header.ejs +12 -12
  34. package/dashboard/src/views/partials/layout-bottom.ejs +15 -15
  35. package/dashboard/src/views/partials/layout-top.ejs +8 -8
  36. package/dashboard/src/views/partials/phase-content.ejs +188 -181
  37. package/dashboard/src/views/partials/phase-doc-content.ejs +38 -0
  38. package/dashboard/src/views/partials/phases-content.ejs +117 -117
  39. package/dashboard/src/views/partials/roadmap-content.ejs +142 -142
  40. package/dashboard/src/views/partials/sidebar.ejs +38 -38
  41. package/dashboard/src/views/partials/todo-create-content.ejs +53 -53
  42. package/dashboard/src/views/partials/todo-detail-content.ejs +38 -38
  43. package/dashboard/src/views/partials/todos-content.ejs +53 -53
  44. package/dashboard/src/views/phase-detail.ejs +5 -5
  45. package/dashboard/src/views/phase-doc.ejs +5 -0
  46. package/dashboard/src/views/phases.ejs +5 -5
  47. package/dashboard/src/views/roadmap.ejs +5 -5
  48. package/dashboard/src/views/todo-create.ejs +5 -5
  49. package/dashboard/src/views/todo-detail.ejs +5 -5
  50. package/dashboard/src/views/todos.ejs +5 -5
  51. package/package.json +57 -57
  52. package/plugins/cursor-pbr/.cursor-plugin/plugin.json +22 -0
  53. package/plugins/cursor-pbr/agents/.gitkeep +0 -0
  54. package/plugins/cursor-pbr/assets/.gitkeep +0 -0
  55. package/plugins/cursor-pbr/hooks/hooks.json +11 -0
  56. package/plugins/cursor-pbr/references/.gitkeep +0 -0
  57. package/plugins/cursor-pbr/rules/.gitkeep +0 -0
  58. package/plugins/cursor-pbr/skills/.gitkeep +0 -0
  59. package/plugins/cursor-pbr/templates/.gitkeep +0 -0
  60. package/plugins/pbr/.claude-plugin/plugin.json +13 -13
  61. package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -61
  62. package/plugins/pbr/agents/codebase-mapper.md +279 -271
  63. package/plugins/pbr/agents/debugger.md +281 -281
  64. package/plugins/pbr/agents/executor.md +428 -407
  65. package/plugins/pbr/agents/general.md +164 -164
  66. package/plugins/pbr/agents/integration-checker.md +169 -141
  67. package/plugins/pbr/agents/plan-checker.md +296 -280
  68. package/plugins/pbr/agents/planner.md +358 -358
  69. package/plugins/pbr/agents/researcher.md +363 -363
  70. package/plugins/pbr/agents/synthesizer.md +230 -230
  71. package/plugins/pbr/agents/verifier.md +489 -454
  72. package/plugins/pbr/commands/begin.md +5 -5
  73. package/plugins/pbr/commands/build.md +5 -5
  74. package/plugins/pbr/commands/config.md +5 -5
  75. package/plugins/pbr/commands/continue.md +5 -5
  76. package/plugins/pbr/commands/debug.md +5 -5
  77. package/plugins/pbr/commands/discuss.md +5 -5
  78. package/plugins/pbr/commands/explore.md +5 -5
  79. package/plugins/pbr/commands/health.md +5 -5
  80. package/plugins/pbr/commands/help.md +5 -5
  81. package/plugins/pbr/commands/import.md +5 -5
  82. package/plugins/pbr/commands/milestone.md +5 -5
  83. package/plugins/pbr/commands/note.md +5 -5
  84. package/plugins/pbr/commands/pause.md +5 -5
  85. package/plugins/pbr/commands/plan.md +5 -5
  86. package/plugins/pbr/commands/quick.md +5 -5
  87. package/plugins/pbr/commands/resume.md +5 -5
  88. package/plugins/pbr/commands/review.md +5 -5
  89. package/plugins/pbr/commands/scan.md +5 -5
  90. package/plugins/pbr/commands/setup.md +5 -5
  91. package/plugins/pbr/commands/status.md +5 -5
  92. package/plugins/pbr/commands/todo.md +5 -5
  93. package/plugins/pbr/contexts/dev.md +27 -27
  94. package/plugins/pbr/contexts/research.md +28 -28
  95. package/plugins/pbr/contexts/review.md +36 -36
  96. package/plugins/pbr/hooks/hooks.json +183 -183
  97. package/plugins/pbr/references/agent-anti-patterns.md +24 -24
  98. package/plugins/pbr/references/agent-interactions.md +134 -134
  99. package/plugins/pbr/references/agent-teams.md +54 -54
  100. package/plugins/pbr/references/checkpoints.md +157 -157
  101. package/plugins/pbr/references/common-bug-patterns.md +13 -13
  102. package/plugins/pbr/references/config-reference.md +441 -0
  103. package/plugins/pbr/references/continuation-format.md +212 -212
  104. package/plugins/pbr/references/deviation-rules.md +112 -112
  105. package/plugins/pbr/references/git-integration.md +226 -226
  106. package/plugins/pbr/references/integration-patterns.md +117 -117
  107. package/plugins/pbr/references/model-profiles.md +99 -99
  108. package/plugins/pbr/references/model-selection.md +31 -31
  109. package/plugins/pbr/references/pbr-rules.md +193 -193
  110. package/plugins/pbr/references/plan-authoring.md +181 -181
  111. package/plugins/pbr/references/plan-format.md +287 -283
  112. package/plugins/pbr/references/planning-config.md +213 -213
  113. package/plugins/pbr/references/questioning.md +214 -214
  114. package/plugins/pbr/references/reading-verification.md +127 -127
  115. package/plugins/pbr/references/stub-patterns.md +160 -160
  116. package/plugins/pbr/references/subagent-coordination.md +119 -119
  117. package/plugins/pbr/references/ui-formatting.md +461 -399
  118. package/plugins/pbr/references/verification-patterns.md +198 -198
  119. package/plugins/pbr/references/wave-execution.md +95 -95
  120. package/plugins/pbr/scripts/auto-continue.js +80 -80
  121. package/plugins/pbr/scripts/check-dangerous-commands.js +136 -136
  122. package/plugins/pbr/scripts/check-doc-sprawl.js +102 -102
  123. package/plugins/pbr/scripts/check-phase-boundary.js +196 -196
  124. package/plugins/pbr/scripts/check-plan-format.js +270 -270
  125. package/plugins/pbr/scripts/check-roadmap-sync.js +322 -252
  126. package/plugins/pbr/scripts/check-skill-workflow.js +262 -262
  127. package/plugins/pbr/scripts/check-state-sync.js +476 -476
  128. package/plugins/pbr/scripts/check-subagent-output.js +144 -144
  129. package/plugins/pbr/scripts/config-schema.json +251 -251
  130. package/plugins/pbr/scripts/context-budget-check.js +287 -287
  131. package/plugins/pbr/scripts/event-handler.js +151 -151
  132. package/plugins/pbr/scripts/event-logger.js +92 -92
  133. package/plugins/pbr/scripts/hook-logger.js +80 -76
  134. package/plugins/pbr/scripts/hooks-schema.json +79 -79
  135. package/plugins/pbr/scripts/log-subagent.js +164 -152
  136. package/plugins/pbr/scripts/log-tool-failure.js +88 -88
  137. package/plugins/pbr/scripts/pbr-tools.js +1378 -1301
  138. package/plugins/pbr/scripts/post-write-dispatch.js +66 -66
  139. package/plugins/pbr/scripts/post-write-quality.js +207 -207
  140. package/plugins/pbr/scripts/pre-bash-dispatch.js +86 -56
  141. package/plugins/pbr/scripts/pre-write-dispatch.js +97 -62
  142. package/plugins/pbr/scripts/progress-tracker.js +281 -228
  143. package/plugins/pbr/scripts/run-hook.js +92 -0
  144. package/plugins/pbr/scripts/session-cleanup.js +254 -254
  145. package/plugins/pbr/scripts/status-line.js +288 -285
  146. package/plugins/pbr/scripts/suggest-compact.js +119 -119
  147. package/plugins/pbr/scripts/task-completed.js +45 -45
  148. package/plugins/pbr/scripts/track-context-budget.js +149 -119
  149. package/plugins/pbr/scripts/validate-commit.js +200 -200
  150. package/plugins/pbr/scripts/validate-plugin-structure.js +183 -172
  151. package/plugins/pbr/scripts/validate-task.js +106 -0
  152. package/plugins/pbr/skills/begin/SKILL.md +594 -545
  153. package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -33
  154. package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -18
  155. package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -49
  156. package/plugins/pbr/skills/begin/templates/config.json.tmpl +64 -63
  157. package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -19
  158. package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -30
  159. package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -16
  160. package/plugins/pbr/skills/build/SKILL.md +943 -962
  161. package/plugins/pbr/skills/config/SKILL.md +256 -241
  162. package/plugins/pbr/skills/continue/SKILL.md +164 -127
  163. package/plugins/pbr/skills/debug/SKILL.md +515 -489
  164. package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -16
  165. package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -27
  166. package/plugins/pbr/skills/discuss/SKILL.md +347 -338
  167. package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -61
  168. package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -9
  169. package/plugins/pbr/skills/explore/SKILL.md +378 -362
  170. package/plugins/pbr/skills/health/SKILL.md +221 -186
  171. package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -30
  172. package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -63
  173. package/plugins/pbr/skills/help/SKILL.md +155 -140
  174. package/plugins/pbr/skills/import/SKILL.md +504 -490
  175. package/plugins/pbr/skills/milestone/SKILL.md +704 -673
  176. package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -48
  177. package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -30
  178. package/plugins/pbr/skills/note/SKILL.md +231 -212
  179. package/plugins/pbr/skills/pause/SKILL.md +249 -235
  180. package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -71
  181. package/plugins/pbr/skills/plan/SKILL.md +685 -628
  182. package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -98
  183. package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -21
  184. package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -32
  185. package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -38
  186. package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -19
  187. package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -23
  188. package/plugins/pbr/skills/quick/SKILL.md +354 -335
  189. package/plugins/pbr/skills/resume/SKILL.md +402 -388
  190. package/plugins/pbr/skills/review/SKILL.md +686 -652
  191. package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -60
  192. package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -40
  193. package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -115
  194. package/plugins/pbr/skills/scan/SKILL.md +304 -269
  195. package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -201
  196. package/plugins/pbr/skills/setup/SKILL.md +253 -227
  197. package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -35
  198. package/plugins/pbr/skills/shared/config-loading.md +102 -102
  199. package/plugins/pbr/skills/shared/context-budget.md +40 -40
  200. package/plugins/pbr/skills/shared/context-loader-task.md +86 -86
  201. package/plugins/pbr/skills/shared/digest-select.md +79 -79
  202. package/plugins/pbr/skills/shared/domain-probes.md +125 -125
  203. package/plugins/pbr/skills/shared/error-reporting.md +79 -79
  204. package/plugins/pbr/skills/shared/gate-prompts.md +388 -388
  205. package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -45
  206. package/plugins/pbr/skills/shared/progress-display.md +53 -53
  207. package/plugins/pbr/skills/shared/revision-loop.md +81 -81
  208. package/plugins/pbr/skills/shared/state-loading.md +62 -62
  209. package/plugins/pbr/skills/shared/state-update.md +161 -161
  210. package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -33
  211. package/plugins/pbr/skills/status/SKILL.md +367 -353
  212. package/plugins/pbr/skills/todo/SKILL.md +198 -181
  213. package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -52
  214. package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -151
  215. package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -97
  216. package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -40
  217. package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -81
  218. package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -116
  219. package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -98
  220. package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -93
  221. package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -104
  222. package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -78
  223. package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -78
  224. package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -80
  225. package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -107
  226. package/plugins/pbr/templates/continue-here.md.tmpl +73 -73
  227. package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -37
  228. package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -124
  229. package/plugins/pbr/templates/research/STACK.md.tmpl +71 -71
  230. package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -112
  231. package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -81
  232. package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -99
  233. package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +36 -36
@@ -1,226 +1,226 @@
1
- # Git Integration Reference
2
-
3
- Plan-Build-Run's commit conventions, commit points, branching strategy, and hook scripts.
4
-
5
- ---
6
-
7
- ## Commit Message Format
8
-
9
- ```
10
- {type}({phase}-{plan}): {description}
11
- ```
12
-
13
- ### Components
14
-
15
- | Part | Description | Example |
16
- |------|-------------|---------|
17
- | `{type}` | Conventional commit type | `feat`, `fix`, `test` |
18
- | `{phase}` | Phase number (zero-padded) | `02` |
19
- | `{plan}` | Plan number | `01` |
20
- | `{description}` | Imperative, lowercase description | `implement discord oauth client` |
21
-
22
- The format is configurable via `config.json` at `git.commit_format`. The default is `{type}({phase}-{plan}): {description}`.
23
-
24
- ### Full Example
25
- ```
26
- feat(02-01): implement discord oauth client
27
- ```
28
-
29
- ---
30
-
31
- ## Commit Types
32
-
33
- | Type | When to Use | Example |
34
- |------|------------|---------|
35
- | `feat` | New feature or functionality | `feat(02-01): implement discord oauth client` |
36
- | `fix` | Bug fix (including during execution) | `fix(02-01): handle null user profile from discord api` |
37
- | `refactor` | Code restructuring, no behavior change | `refactor(02-01): extract token validation into helper` |
38
- | `test` | Adding or modifying tests | `test(02-01): add failing tests for discord oauth flow` |
39
- | `docs` | Documentation changes | `docs(03-02): add api endpoint documentation` |
40
- | `chore` | Build config, dependencies, tooling | `chore(01-01): configure typescript and eslint` |
41
- | `style` | Formatting, whitespace (no logic change) | `style(02-01): fix import ordering` |
42
-
43
- ---
44
-
45
- ## Special Commit Scopes
46
-
47
- Beyond the standard `{phase}-{plan}` scope, Plan-Build-Run recognizes these additional patterns:
48
-
49
- | Pattern | When Used | Example |
50
- |---------|-----------|---------|
51
- | `{type}(quick-{NNN})` | Quick-task commits via `/pbr:quick` | `feat(quick-001): add health endpoint` |
52
- | `docs(planning)` | Planning document commits | `docs(planning): add phase 3 plans` |
53
- | `wip: {desc}` or `wip({area}): {desc}` | Work-in-progress (use sparingly) | `wip(auth): partial oauth implementation` |
54
- | Merge commits | Git merge operations | `Merge branch 'plan-build-run/phase-02-auth'` |
55
-
56
- ---
57
-
58
- ## Commit Body (Optional)
59
-
60
- For commits that need explanation, add a body after a blank line:
61
-
62
- ```
63
- feat(02-01): implement discord oauth client
64
-
65
- - Uses discord-oauth2 library for token exchange
66
- - Stores tokens in httpOnly cookies for security
67
- - Supports identify and email OAuth scopes
68
-
69
- Deviation: Added null check for user.email (Rule 3 -- critical gap)
70
- ```
71
-
72
- ---
73
-
74
- ## Commit Points
75
-
76
- Plan-Build-Run defines strict rules about WHEN commits happen:
77
-
78
- ### One Task = One Commit
79
-
80
- Each successfully completed plan task gets exactly one atomic commit. No more, no less.
81
-
82
- ### TDD Tasks = Three Commits
83
-
84
- TDD tasks (`tdd="true"`) produce exactly 3 commits following Red-Green-Refactor:
85
-
86
- ```
87
- test(02-01): RED - add failing tests for auth middleware
88
- feat(02-01): GREEN - implement auth middleware to pass tests
89
- refactor(02-01): REFACTOR - extract token verification helper
90
- ```
91
-
92
- ### Commit Preconditions
93
-
94
- A commit is created only when:
95
- 1. All `<action>` steps in the task are complete
96
- 2. All `<verify>` commands pass with exit code 0
97
- 3. Only files listed in the task's `<files>` element are staged (plus deviation-required files)
98
-
99
- ### Deviation Commits
100
-
101
- When an executor applies a deviation rule during a task, the deviation is included in the same task commit (not a separate commit):
102
-
103
- ```
104
- # Rule 1 auto-fix: rolled into the task's commit
105
- # Rule 2 auto-install: package.json/lock added to same commit
106
- # Rule 3 critical gap: null check added in same commit
107
- ```
108
-
109
- ---
110
-
111
- ## Atomic Commit Rules
112
-
113
- 1. **One task = one commit** (TDD tasks get 3)
114
- 2. **Commit only after verify passes** -- never commit broken code
115
- 3. **Stage only files listed in `<files>`** plus any deviation-required files
116
- 4. **Never use `git add .` or `git add -A`** -- stage specific files
117
- 5. **Include all files from the task** -- do not leave modified files unstaged
118
- 6. **Commit message must describe what was done** -- not just the task name
119
- 7. **Use the configured commit format** -- from `config.json` `git.commit_format`
120
-
121
- ---
122
-
123
- ## Staging Examples
124
-
125
- ```bash
126
- # Standard task
127
- git add src/auth/discord.ts src/auth/types.ts
128
- git commit -m "feat(02-01): implement Discord OAuth client with token exchange"
129
-
130
- # Task that also installed a dependency (Rule 2)
131
- git add src/auth/discord.ts src/auth/types.ts package.json package-lock.json
132
- git commit -m "feat(02-01): implement Discord OAuth client with token exchange"
133
-
134
- # TDD RED
135
- git add tests/auth/discord.test.ts
136
- git commit -m "test(02-01): add failing tests for Discord OAuth flow"
137
- ```
138
-
139
- ---
140
-
141
- ## Git Retry Logic
142
-
143
- If `git commit` fails with a lock error (`fatal: Unable to create ... .git/index.lock`):
144
- 1. Wait 2 seconds
145
- 2. Retry the commit
146
- 3. Maximum 3 attempts
147
- 4. If still failing after 3 attempts, report the error and stop
148
-
149
- This commonly occurs when parallel executors compete for the git index lock.
150
-
151
- ---
152
-
153
- ## Branching Strategy
154
-
155
- Configured via `config.json` at `git.branching`:
156
-
157
- | Strategy | Behavior |
158
- |----------|----------|
159
- | `none` | All commits go directly to the current branch (default) |
160
- | `phase` | Each phase gets its own branch: `plan-build-run/phase-{NN}-{slug}`. Squash-merged to main on completion. |
161
- | `milestone` | Each milestone gets a branch: `plan-build-run/{milestone}-{slug}`. Merged on milestone completion. |
162
- | `disabled` | No git operations at all. No commits, no branching. Useful for prototyping or non-git projects. |
163
-
164
- ### Phase Branching Flow
165
-
166
- When `git.branching` is `phase`:
167
- 1. Build orchestrator creates branch: `git checkout -b plan-build-run/phase-{NN}-{slug}`
168
- 2. All executor commits go to the phase branch
169
- 3. After all plans complete and verification passes, orchestrator asks user to confirm squash merge
170
- 4. If confirmed: `git checkout main && git merge --squash plan-build-run/phase-{NN}-{slug}`
171
- 5. Phase branch is deleted after merge
172
-
173
- Branch name templates are configured in `config.json`:
174
- - `git.phase_branch_template`: Default `plan-build-run/phase-{phase}-{slug}`
175
- - `git.milestone_branch_template`: Default `plan-build-run/{milestone}-{slug}`
176
-
177
- ### Git Mode
178
-
179
- The `git.mode` field controls whether git integration is active:
180
-
181
- | Mode | Behavior |
182
- |------|----------|
183
- | `enabled` | Normal operation -- commits, branching, hooks all active (default) |
184
- | `disabled` | No git commands are run. No commits, no branching. Useful for non-git projects. |
185
-
186
- ---
187
-
188
- ## Hook Scripts
189
-
190
- Plan-Build-Run uses Claude Code hooks (defined in `hooks/hooks.json`) to enforce conventions and track progress during execution. All hooks log via `hook-logger.js` to `.planning/.hook-log` (JSONL format, max 200 entries).
191
-
192
- ### Hook Summary
193
-
194
- | Hook Event | Script | Purpose |
195
- |------------|--------|---------|
196
- | `SessionStart` | `progress-tracker.js` | Displays current project progress on session start |
197
- | `PostToolUse` (Write/Edit) | `check-plan-format.js` | Validates plan file YAML frontmatter after writes |
198
- | `PostToolUse` (Write/Edit) | `check-roadmap-sync.js` | Ensures ROADMAP.md stays in sync with phase changes |
199
- | `PreToolUse` (Bash) | `validate-commit.js` | Validates commit message format before `git commit` runs |
200
- | `PreCompact` | `context-budget-check.js` | Warns about context budget before compaction |
201
- | `Stop` | `auto-continue.js` | Handles auto-continuation signal when session ends |
202
- | `SubagentStart` | `log-subagent.js start` | Logs subagent spawn events |
203
- | `SubagentStop` | `log-subagent.js stop` | Logs subagent completion events |
204
- | `SessionEnd` | `session-cleanup.js` | Cleans up temporary state on session end |
205
-
206
- ### validate-commit.js Details
207
-
208
- The commit validation hook (`PreToolUse` on Bash commands) enforces the commit format:
209
- - Checks that `git commit -m "..."` messages match the pattern: `{type}({scope}): {description}`
210
- - Valid types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `wip`
211
- - Allows merge commits (starting with "Merge")
212
- - Allows quick-task, planning, and WIP scope patterns
213
- - Blocks commits with sensitive file patterns (`.env`, `.key`, `.pem`, credentials) unless they match safe patterns (`.example`, `.template`, `.sample`, test directories)
214
- - Exit code 2 blocks the commit; exit code 0 allows it
215
-
216
- ---
217
-
218
- ## Planning Doc Commits
219
-
220
- When `config.json` has `planning.commit_docs: true`, the build orchestrator commits planning artifacts (SUMMARY.md, VERIFICATION.md) after all plans in a phase complete:
221
-
222
- ```
223
- docs({phase}): add build summaries and verification
224
- ```
225
-
226
- This keeps the planning trail in version control alongside the code it describes.
1
+ # Git Integration Reference
2
+
3
+ Plan-Build-Run's commit conventions, commit points, branching strategy, and hook scripts.
4
+
5
+ ---
6
+
7
+ ## Commit Message Format
8
+
9
+ ```
10
+ {type}({phase}-{plan}): {description}
11
+ ```
12
+
13
+ ### Components
14
+
15
+ | Part | Description | Example |
16
+ |------|-------------|---------|
17
+ | `{type}` | Conventional commit type | `feat`, `fix`, `test` |
18
+ | `{phase}` | Phase number (zero-padded) | `02` |
19
+ | `{plan}` | Plan number | `01` |
20
+ | `{description}` | Imperative, lowercase description | `implement discord oauth client` |
21
+
22
+ The format is configurable via `config.json` at `git.commit_format`. The default is `{type}({phase}-{plan}): {description}`.
23
+
24
+ ### Full Example
25
+ ```
26
+ feat(02-01): implement discord oauth client
27
+ ```
28
+
29
+ ---
30
+
31
+ ## Commit Types
32
+
33
+ | Type | When to Use | Example |
34
+ |------|------------|---------|
35
+ | `feat` | New feature or functionality | `feat(02-01): implement discord oauth client` |
36
+ | `fix` | Bug fix (including during execution) | `fix(02-01): handle null user profile from discord api` |
37
+ | `refactor` | Code restructuring, no behavior change | `refactor(02-01): extract token validation into helper` |
38
+ | `test` | Adding or modifying tests | `test(02-01): add failing tests for discord oauth flow` |
39
+ | `docs` | Documentation changes | `docs(03-02): add api endpoint documentation` |
40
+ | `chore` | Build config, dependencies, tooling | `chore(01-01): configure typescript and eslint` |
41
+ | `style` | Formatting, whitespace (no logic change) | `style(02-01): fix import ordering` |
42
+
43
+ ---
44
+
45
+ ## Special Commit Scopes
46
+
47
+ Beyond the standard `{phase}-{plan}` scope, Plan-Build-Run recognizes these additional patterns:
48
+
49
+ | Pattern | When Used | Example |
50
+ |---------|-----------|---------|
51
+ | `{type}(quick-{NNN})` | Quick-task commits via `/pbr:quick` | `feat(quick-001): add health endpoint` |
52
+ | `docs(planning)` | Planning document commits | `docs(planning): add phase 3 plans` |
53
+ | `wip: {desc}` or `wip({area}): {desc}` | Work-in-progress (use sparingly) | `wip(auth): partial oauth implementation` |
54
+ | Merge commits | Git merge operations | `Merge branch 'plan-build-run/phase-02-auth'` |
55
+
56
+ ---
57
+
58
+ ## Commit Body (Optional)
59
+
60
+ For commits that need explanation, add a body after a blank line:
61
+
62
+ ```
63
+ feat(02-01): implement discord oauth client
64
+
65
+ - Uses discord-oauth2 library for token exchange
66
+ - Stores tokens in httpOnly cookies for security
67
+ - Supports identify and email OAuth scopes
68
+
69
+ Deviation: Added null check for user.email (Rule 3 -- critical gap)
70
+ ```
71
+
72
+ ---
73
+
74
+ ## Commit Points
75
+
76
+ Plan-Build-Run defines strict rules about WHEN commits happen:
77
+
78
+ ### One Task = One Commit
79
+
80
+ Each successfully completed plan task gets exactly one atomic commit. No more, no less.
81
+
82
+ ### TDD Tasks = Three Commits
83
+
84
+ TDD tasks (`tdd="true"`) produce exactly 3 commits following Red-Green-Refactor:
85
+
86
+ ```
87
+ test(02-01): RED - add failing tests for auth middleware
88
+ feat(02-01): GREEN - implement auth middleware to pass tests
89
+ refactor(02-01): REFACTOR - extract token verification helper
90
+ ```
91
+
92
+ ### Commit Preconditions
93
+
94
+ A commit is created only when:
95
+ 1. All `<action>` steps in the task are complete
96
+ 2. All `<verify>` commands pass with exit code 0
97
+ 3. Only files listed in the task's `<files>` element are staged (plus deviation-required files)
98
+
99
+ ### Deviation Commits
100
+
101
+ When an executor applies a deviation rule during a task, the deviation is included in the same task commit (not a separate commit):
102
+
103
+ ```
104
+ # Rule 1 auto-fix: rolled into the task's commit
105
+ # Rule 2 auto-install: package.json/lock added to same commit
106
+ # Rule 3 critical gap: null check added in same commit
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Atomic Commit Rules
112
+
113
+ 1. **One task = one commit** (TDD tasks get 3)
114
+ 2. **Commit only after verify passes** -- never commit broken code
115
+ 3. **Stage only files listed in `<files>`** plus any deviation-required files
116
+ 4. **Never use `git add .` or `git add -A`** -- stage specific files
117
+ 5. **Include all files from the task** -- do not leave modified files unstaged
118
+ 6. **Commit message must describe what was done** -- not just the task name
119
+ 7. **Use the configured commit format** -- from `config.json` `git.commit_format`
120
+
121
+ ---
122
+
123
+ ## Staging Examples
124
+
125
+ ```bash
126
+ # Standard task
127
+ git add src/auth/discord.ts src/auth/types.ts
128
+ git commit -m "feat(02-01): implement Discord OAuth client with token exchange"
129
+
130
+ # Task that also installed a dependency (Rule 2)
131
+ git add src/auth/discord.ts src/auth/types.ts package.json package-lock.json
132
+ git commit -m "feat(02-01): implement Discord OAuth client with token exchange"
133
+
134
+ # TDD RED
135
+ git add tests/auth/discord.test.ts
136
+ git commit -m "test(02-01): add failing tests for Discord OAuth flow"
137
+ ```
138
+
139
+ ---
140
+
141
+ ## Git Retry Logic
142
+
143
+ If `git commit` fails with a lock error (`fatal: Unable to create ... .git/index.lock`):
144
+ 1. Wait 2 seconds
145
+ 2. Retry the commit
146
+ 3. Maximum 3 attempts
147
+ 4. If still failing after 3 attempts, report the error and stop
148
+
149
+ This commonly occurs when parallel executors compete for the git index lock.
150
+
151
+ ---
152
+
153
+ ## Branching Strategy
154
+
155
+ Configured via `config.json` at `git.branching`:
156
+
157
+ | Strategy | Behavior |
158
+ |----------|----------|
159
+ | `none` | All commits go directly to the current branch (default) |
160
+ | `phase` | Each phase gets its own branch: `plan-build-run/phase-{NN}-{slug}`. Squash-merged to main on completion. |
161
+ | `milestone` | Each milestone gets a branch: `plan-build-run/{milestone}-{slug}`. Merged on milestone completion. |
162
+ | `disabled` | No git operations at all. No commits, no branching. Useful for prototyping or non-git projects. |
163
+
164
+ ### Phase Branching Flow
165
+
166
+ When `git.branching` is `phase`:
167
+ 1. Build orchestrator creates branch: `git checkout -b plan-build-run/phase-{NN}-{slug}`
168
+ 2. All executor commits go to the phase branch
169
+ 3. After all plans complete and verification passes, orchestrator asks user to confirm squash merge
170
+ 4. If confirmed: `git checkout main && git merge --squash plan-build-run/phase-{NN}-{slug}`
171
+ 5. Phase branch is deleted after merge
172
+
173
+ Branch name templates are configured in `config.json`:
174
+ - `git.phase_branch_template`: Default `plan-build-run/phase-{phase}-{slug}`
175
+ - `git.milestone_branch_template`: Default `plan-build-run/{milestone}-{slug}`
176
+
177
+ ### Git Mode
178
+
179
+ The `git.mode` field controls whether git integration is active:
180
+
181
+ | Mode | Behavior |
182
+ |------|----------|
183
+ | `enabled` | Normal operation -- commits, branching, hooks all active (default) |
184
+ | `disabled` | No git commands are run. No commits, no branching. Useful for non-git projects. |
185
+
186
+ ---
187
+
188
+ ## Hook Scripts
189
+
190
+ Plan-Build-Run uses Claude Code hooks (defined in `hooks/hooks.json`) to enforce conventions and track progress during execution. All hooks log via `hook-logger.js` to `.planning/.hook-log` (JSONL format, max 200 entries).
191
+
192
+ ### Hook Summary
193
+
194
+ | Hook Event | Script | Purpose |
195
+ |------------|--------|---------|
196
+ | `SessionStart` | `progress-tracker.js` | Displays current project progress on session start |
197
+ | `PostToolUse` (Write/Edit) | `check-plan-format.js` | Validates plan file YAML frontmatter after writes |
198
+ | `PostToolUse` (Write/Edit) | `check-roadmap-sync.js` | Ensures ROADMAP.md stays in sync with phase changes |
199
+ | `PreToolUse` (Bash) | `validate-commit.js` | Validates commit message format before `git commit` runs |
200
+ | `PreCompact` | `context-budget-check.js` | Warns about context budget before compaction |
201
+ | `Stop` | `auto-continue.js` | Handles auto-continuation signal when session ends |
202
+ | `SubagentStart` | `log-subagent.js start` | Logs subagent spawn events |
203
+ | `SubagentStop` | `log-subagent.js stop` | Logs subagent completion events |
204
+ | `SessionEnd` | `session-cleanup.js` | Cleans up temporary state on session end |
205
+
206
+ ### validate-commit.js Details
207
+
208
+ The commit validation hook (`PreToolUse` on Bash commands) enforces the commit format:
209
+ - Checks that `git commit -m "..."` messages match the pattern: `{type}({scope}): {description}`
210
+ - Valid types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `wip`
211
+ - Allows merge commits (starting with "Merge")
212
+ - Allows quick-task, planning, and WIP scope patterns
213
+ - Blocks commits with sensitive file patterns (`.env`, `.key`, `.pem`, credentials) unless they match safe patterns (`.example`, `.template`, `.sample`, test directories)
214
+ - Exit code 2 blocks the commit; exit code 0 allows it
215
+
216
+ ---
217
+
218
+ ## Planning Doc Commits
219
+
220
+ When `config.json` has `planning.commit_docs: true`, the build orchestrator commits planning artifacts (SUMMARY.md, VERIFICATION.md) after all plans in a phase complete:
221
+
222
+ ```
223
+ docs({phase}): add build summaries and verification
224
+ ```
225
+
226
+ This keeps the planning trail in version control alongside the code it describes.