@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.
- package/CHANGELOG.md +56 -56
- package/CLAUDE.md +149 -149
- package/LICENSE +21 -21
- package/README.md +247 -247
- package/dashboard/bin/cli.js +25 -25
- package/dashboard/package.json +34 -34
- package/dashboard/public/css/layout.css +406 -406
- package/dashboard/public/css/status-colors.css +98 -98
- package/dashboard/public/js/htmx-title.js +5 -5
- package/dashboard/public/js/sidebar-toggle.js +20 -20
- package/dashboard/src/app.js +78 -78
- package/dashboard/src/middleware/errorHandler.js +52 -52
- package/dashboard/src/middleware/notFoundHandler.js +9 -9
- package/dashboard/src/repositories/planning.repository.js +128 -128
- package/dashboard/src/routes/events.routes.js +40 -40
- package/dashboard/src/routes/index.routes.js +31 -31
- package/dashboard/src/routes/pages.routes.js +245 -195
- package/dashboard/src/server.js +42 -42
- package/dashboard/src/services/dashboard.service.js +222 -222
- package/dashboard/src/services/phase.service.js +220 -167
- package/dashboard/src/services/project.service.js +57 -57
- package/dashboard/src/services/roadmap.service.js +171 -171
- package/dashboard/src/services/sse.service.js +58 -58
- package/dashboard/src/services/todo.service.js +254 -254
- package/dashboard/src/services/watcher.service.js +48 -48
- package/dashboard/src/views/coming-soon.ejs +11 -11
- package/dashboard/src/views/error.ejs +13 -13
- package/dashboard/src/views/index.ejs +5 -5
- package/dashboard/src/views/layout.ejs +1 -1
- package/dashboard/src/views/partials/dashboard-content.ejs +77 -77
- package/dashboard/src/views/partials/footer.ejs +3 -3
- package/dashboard/src/views/partials/head.ejs +21 -21
- package/dashboard/src/views/partials/header.ejs +12 -12
- package/dashboard/src/views/partials/layout-bottom.ejs +15 -15
- package/dashboard/src/views/partials/layout-top.ejs +8 -8
- package/dashboard/src/views/partials/phase-content.ejs +188 -181
- package/dashboard/src/views/partials/phase-doc-content.ejs +38 -0
- package/dashboard/src/views/partials/phases-content.ejs +117 -117
- package/dashboard/src/views/partials/roadmap-content.ejs +142 -142
- package/dashboard/src/views/partials/sidebar.ejs +38 -38
- package/dashboard/src/views/partials/todo-create-content.ejs +53 -53
- package/dashboard/src/views/partials/todo-detail-content.ejs +38 -38
- package/dashboard/src/views/partials/todos-content.ejs +53 -53
- package/dashboard/src/views/phase-detail.ejs +5 -5
- package/dashboard/src/views/phase-doc.ejs +5 -0
- package/dashboard/src/views/phases.ejs +5 -5
- package/dashboard/src/views/roadmap.ejs +5 -5
- package/dashboard/src/views/todo-create.ejs +5 -5
- package/dashboard/src/views/todo-detail.ejs +5 -5
- package/dashboard/src/views/todos.ejs +5 -5
- package/package.json +57 -57
- package/plugins/cursor-pbr/.cursor-plugin/plugin.json +22 -0
- package/plugins/cursor-pbr/agents/.gitkeep +0 -0
- package/plugins/cursor-pbr/assets/.gitkeep +0 -0
- package/plugins/cursor-pbr/hooks/hooks.json +11 -0
- package/plugins/cursor-pbr/references/.gitkeep +0 -0
- package/plugins/cursor-pbr/rules/.gitkeep +0 -0
- package/plugins/cursor-pbr/skills/.gitkeep +0 -0
- package/plugins/cursor-pbr/templates/.gitkeep +0 -0
- package/plugins/pbr/.claude-plugin/plugin.json +13 -13
- package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -61
- package/plugins/pbr/agents/codebase-mapper.md +279 -271
- package/plugins/pbr/agents/debugger.md +281 -281
- package/plugins/pbr/agents/executor.md +428 -407
- package/plugins/pbr/agents/general.md +164 -164
- package/plugins/pbr/agents/integration-checker.md +169 -141
- package/plugins/pbr/agents/plan-checker.md +296 -280
- package/plugins/pbr/agents/planner.md +358 -358
- package/plugins/pbr/agents/researcher.md +363 -363
- package/plugins/pbr/agents/synthesizer.md +230 -230
- package/plugins/pbr/agents/verifier.md +489 -454
- package/plugins/pbr/commands/begin.md +5 -5
- package/plugins/pbr/commands/build.md +5 -5
- package/plugins/pbr/commands/config.md +5 -5
- package/plugins/pbr/commands/continue.md +5 -5
- package/plugins/pbr/commands/debug.md +5 -5
- package/plugins/pbr/commands/discuss.md +5 -5
- package/plugins/pbr/commands/explore.md +5 -5
- package/plugins/pbr/commands/health.md +5 -5
- package/plugins/pbr/commands/help.md +5 -5
- package/plugins/pbr/commands/import.md +5 -5
- package/plugins/pbr/commands/milestone.md +5 -5
- package/plugins/pbr/commands/note.md +5 -5
- package/plugins/pbr/commands/pause.md +5 -5
- package/plugins/pbr/commands/plan.md +5 -5
- package/plugins/pbr/commands/quick.md +5 -5
- package/plugins/pbr/commands/resume.md +5 -5
- package/plugins/pbr/commands/review.md +5 -5
- package/plugins/pbr/commands/scan.md +5 -5
- package/plugins/pbr/commands/setup.md +5 -5
- package/plugins/pbr/commands/status.md +5 -5
- package/plugins/pbr/commands/todo.md +5 -5
- package/plugins/pbr/contexts/dev.md +27 -27
- package/plugins/pbr/contexts/research.md +28 -28
- package/plugins/pbr/contexts/review.md +36 -36
- package/plugins/pbr/hooks/hooks.json +183 -183
- package/plugins/pbr/references/agent-anti-patterns.md +24 -24
- package/plugins/pbr/references/agent-interactions.md +134 -134
- package/plugins/pbr/references/agent-teams.md +54 -54
- package/plugins/pbr/references/checkpoints.md +157 -157
- package/plugins/pbr/references/common-bug-patterns.md +13 -13
- package/plugins/pbr/references/config-reference.md +441 -0
- package/plugins/pbr/references/continuation-format.md +212 -212
- package/plugins/pbr/references/deviation-rules.md +112 -112
- package/plugins/pbr/references/git-integration.md +226 -226
- package/plugins/pbr/references/integration-patterns.md +117 -117
- package/plugins/pbr/references/model-profiles.md +99 -99
- package/plugins/pbr/references/model-selection.md +31 -31
- package/plugins/pbr/references/pbr-rules.md +193 -193
- package/plugins/pbr/references/plan-authoring.md +181 -181
- package/plugins/pbr/references/plan-format.md +287 -283
- package/plugins/pbr/references/planning-config.md +213 -213
- package/plugins/pbr/references/questioning.md +214 -214
- package/plugins/pbr/references/reading-verification.md +127 -127
- package/plugins/pbr/references/stub-patterns.md +160 -160
- package/plugins/pbr/references/subagent-coordination.md +119 -119
- package/plugins/pbr/references/ui-formatting.md +461 -399
- package/plugins/pbr/references/verification-patterns.md +198 -198
- package/plugins/pbr/references/wave-execution.md +95 -95
- package/plugins/pbr/scripts/auto-continue.js +80 -80
- package/plugins/pbr/scripts/check-dangerous-commands.js +136 -136
- package/plugins/pbr/scripts/check-doc-sprawl.js +102 -102
- package/plugins/pbr/scripts/check-phase-boundary.js +196 -196
- package/plugins/pbr/scripts/check-plan-format.js +270 -270
- package/plugins/pbr/scripts/check-roadmap-sync.js +322 -252
- package/plugins/pbr/scripts/check-skill-workflow.js +262 -262
- package/plugins/pbr/scripts/check-state-sync.js +476 -476
- package/plugins/pbr/scripts/check-subagent-output.js +144 -144
- package/plugins/pbr/scripts/config-schema.json +251 -251
- package/plugins/pbr/scripts/context-budget-check.js +287 -287
- package/plugins/pbr/scripts/event-handler.js +151 -151
- package/plugins/pbr/scripts/event-logger.js +92 -92
- package/plugins/pbr/scripts/hook-logger.js +80 -76
- package/plugins/pbr/scripts/hooks-schema.json +79 -79
- package/plugins/pbr/scripts/log-subagent.js +164 -152
- package/plugins/pbr/scripts/log-tool-failure.js +88 -88
- package/plugins/pbr/scripts/pbr-tools.js +1378 -1301
- package/plugins/pbr/scripts/post-write-dispatch.js +66 -66
- package/plugins/pbr/scripts/post-write-quality.js +207 -207
- package/plugins/pbr/scripts/pre-bash-dispatch.js +86 -56
- package/plugins/pbr/scripts/pre-write-dispatch.js +97 -62
- package/plugins/pbr/scripts/progress-tracker.js +281 -228
- package/plugins/pbr/scripts/run-hook.js +92 -0
- package/plugins/pbr/scripts/session-cleanup.js +254 -254
- package/plugins/pbr/scripts/status-line.js +288 -285
- package/plugins/pbr/scripts/suggest-compact.js +119 -119
- package/plugins/pbr/scripts/task-completed.js +45 -45
- package/plugins/pbr/scripts/track-context-budget.js +149 -119
- package/plugins/pbr/scripts/validate-commit.js +200 -200
- package/plugins/pbr/scripts/validate-plugin-structure.js +183 -172
- package/plugins/pbr/scripts/validate-task.js +106 -0
- package/plugins/pbr/skills/begin/SKILL.md +594 -545
- package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -33
- package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -18
- package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -49
- package/plugins/pbr/skills/begin/templates/config.json.tmpl +64 -63
- package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -19
- package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -30
- package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -16
- package/plugins/pbr/skills/build/SKILL.md +943 -962
- package/plugins/pbr/skills/config/SKILL.md +256 -241
- package/plugins/pbr/skills/continue/SKILL.md +164 -127
- package/plugins/pbr/skills/debug/SKILL.md +515 -489
- package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -16
- package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -27
- package/plugins/pbr/skills/discuss/SKILL.md +347 -338
- package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -61
- package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -9
- package/plugins/pbr/skills/explore/SKILL.md +378 -362
- package/plugins/pbr/skills/health/SKILL.md +221 -186
- package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -30
- package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -63
- package/plugins/pbr/skills/help/SKILL.md +155 -140
- package/plugins/pbr/skills/import/SKILL.md +504 -490
- package/plugins/pbr/skills/milestone/SKILL.md +704 -673
- package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -48
- package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -30
- package/plugins/pbr/skills/note/SKILL.md +231 -212
- package/plugins/pbr/skills/pause/SKILL.md +249 -235
- package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -71
- package/plugins/pbr/skills/plan/SKILL.md +685 -628
- package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -98
- package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -21
- package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -32
- package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -38
- package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -19
- package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -23
- package/plugins/pbr/skills/quick/SKILL.md +354 -335
- package/plugins/pbr/skills/resume/SKILL.md +402 -388
- package/plugins/pbr/skills/review/SKILL.md +686 -652
- package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -60
- package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -40
- package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -115
- package/plugins/pbr/skills/scan/SKILL.md +304 -269
- package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -201
- package/plugins/pbr/skills/setup/SKILL.md +253 -227
- package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -35
- package/plugins/pbr/skills/shared/config-loading.md +102 -102
- package/plugins/pbr/skills/shared/context-budget.md +40 -40
- package/plugins/pbr/skills/shared/context-loader-task.md +86 -86
- package/plugins/pbr/skills/shared/digest-select.md +79 -79
- package/plugins/pbr/skills/shared/domain-probes.md +125 -125
- package/plugins/pbr/skills/shared/error-reporting.md +79 -79
- package/plugins/pbr/skills/shared/gate-prompts.md +388 -388
- package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -45
- package/plugins/pbr/skills/shared/progress-display.md +53 -53
- package/plugins/pbr/skills/shared/revision-loop.md +81 -81
- package/plugins/pbr/skills/shared/state-loading.md +62 -62
- package/plugins/pbr/skills/shared/state-update.md +161 -161
- package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -33
- package/plugins/pbr/skills/status/SKILL.md +367 -353
- package/plugins/pbr/skills/todo/SKILL.md +198 -181
- package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -52
- package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -151
- package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -97
- package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -40
- package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -81
- package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -116
- package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -98
- package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -93
- package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -104
- package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -78
- package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -78
- package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -80
- package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -107
- package/plugins/pbr/templates/continue-here.md.tmpl +73 -73
- package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -37
- package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -124
- package/plugins/pbr/templates/research/STACK.md.tmpl +71 -71
- package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -112
- package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -81
- package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -99
- 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.
|