@sienklogic/plan-build-run 2.53.0 → 2.55.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.
- package/CHANGELOG.md +34 -0
- package/package.json +2 -2
- package/plugins/codex-pbr/agents/audit.md +223 -0
- package/plugins/codex-pbr/agents/codebase-mapper.md +196 -0
- package/plugins/codex-pbr/agents/debugger.md +245 -0
- package/plugins/codex-pbr/agents/dev-sync.md +142 -0
- package/plugins/codex-pbr/agents/executor.md +429 -0
- package/plugins/codex-pbr/agents/general.md +131 -0
- package/plugins/codex-pbr/agents/integration-checker.md +178 -0
- package/plugins/codex-pbr/agents/plan-checker.md +253 -0
- package/plugins/codex-pbr/agents/planner.md +343 -0
- package/plugins/codex-pbr/agents/researcher.md +253 -0
- package/plugins/codex-pbr/agents/synthesizer.md +183 -0
- package/plugins/codex-pbr/agents/verifier.md +352 -0
- package/plugins/codex-pbr/commands/audit.md +5 -0
- package/plugins/codex-pbr/commands/begin.md +5 -0
- package/plugins/codex-pbr/commands/build.md +5 -0
- package/plugins/codex-pbr/commands/config.md +5 -0
- package/plugins/codex-pbr/commands/continue.md +5 -0
- package/plugins/codex-pbr/commands/dashboard.md +5 -0
- package/plugins/codex-pbr/commands/debug.md +5 -0
- package/plugins/codex-pbr/commands/discuss.md +5 -0
- package/plugins/codex-pbr/commands/do.md +5 -0
- package/plugins/codex-pbr/commands/explore.md +5 -0
- package/plugins/codex-pbr/commands/health.md +5 -0
- package/plugins/codex-pbr/commands/help.md +5 -0
- package/plugins/codex-pbr/commands/import.md +5 -0
- package/plugins/codex-pbr/commands/milestone.md +5 -0
- package/plugins/codex-pbr/commands/note.md +5 -0
- package/plugins/codex-pbr/commands/pause.md +5 -0
- package/plugins/codex-pbr/commands/plan.md +5 -0
- package/plugins/codex-pbr/commands/quick.md +5 -0
- package/plugins/codex-pbr/commands/resume.md +5 -0
- package/plugins/codex-pbr/commands/review.md +5 -0
- package/plugins/codex-pbr/commands/scan.md +5 -0
- package/plugins/codex-pbr/commands/setup.md +5 -0
- package/plugins/codex-pbr/commands/status.md +5 -0
- package/plugins/codex-pbr/commands/statusline.md +5 -0
- package/plugins/codex-pbr/commands/test.md +5 -0
- package/plugins/codex-pbr/commands/todo.md +5 -0
- package/plugins/codex-pbr/commands/undo.md +5 -0
- package/plugins/codex-pbr/references/agent-contracts.md +324 -0
- package/plugins/codex-pbr/references/agent-teams.md +54 -0
- package/plugins/codex-pbr/references/common-bug-patterns.md +13 -0
- package/plugins/codex-pbr/references/config-reference.md +552 -0
- package/plugins/codex-pbr/references/continuation-format.md +212 -0
- package/plugins/codex-pbr/references/deviation-rules.md +112 -0
- package/plugins/codex-pbr/references/git-integration.md +256 -0
- package/plugins/codex-pbr/references/integration-patterns.md +117 -0
- package/plugins/codex-pbr/references/model-profiles.md +99 -0
- package/plugins/codex-pbr/references/model-selection.md +31 -0
- package/plugins/codex-pbr/references/pbr-tools-cli.md +400 -0
- package/plugins/codex-pbr/references/plan-authoring.md +246 -0
- package/plugins/codex-pbr/references/plan-format.md +313 -0
- package/plugins/codex-pbr/references/questioning.md +235 -0
- package/plugins/codex-pbr/references/reading-verification.md +127 -0
- package/plugins/codex-pbr/references/signal-files.md +41 -0
- package/plugins/codex-pbr/references/stub-patterns.md +160 -0
- package/plugins/codex-pbr/references/ui-formatting.md +444 -0
- package/plugins/codex-pbr/references/wave-execution.md +95 -0
- package/plugins/codex-pbr/skills/audit/SKILL.md +346 -0
- package/plugins/codex-pbr/skills/begin/SKILL.md +800 -0
- package/plugins/codex-pbr/skills/build/SKILL.md +958 -0
- package/plugins/codex-pbr/skills/config/SKILL.md +267 -0
- package/plugins/codex-pbr/skills/continue/SKILL.md +172 -0
- package/plugins/codex-pbr/skills/dashboard/SKILL.md +44 -0
- package/plugins/codex-pbr/skills/debug/SKILL.md +530 -0
- package/plugins/codex-pbr/skills/discuss/SKILL.md +355 -0
- package/plugins/codex-pbr/skills/do/SKILL.md +68 -0
- package/plugins/codex-pbr/skills/explore/SKILL.md +407 -0
- package/plugins/codex-pbr/skills/health/SKILL.md +300 -0
- package/plugins/codex-pbr/skills/help/SKILL.md +229 -0
- package/plugins/codex-pbr/skills/import/SKILL.md +538 -0
- package/plugins/codex-pbr/skills/milestone/SKILL.md +620 -0
- package/plugins/codex-pbr/skills/note/SKILL.md +215 -0
- package/plugins/codex-pbr/skills/pause/SKILL.md +258 -0
- package/plugins/codex-pbr/skills/plan/SKILL.md +650 -0
- package/plugins/codex-pbr/skills/quick/SKILL.md +417 -0
- package/plugins/codex-pbr/skills/resume/SKILL.md +403 -0
- package/plugins/codex-pbr/skills/review/SKILL.md +669 -0
- package/plugins/codex-pbr/skills/scan/SKILL.md +325 -0
- package/plugins/codex-pbr/skills/setup/SKILL.md +169 -0
- package/plugins/codex-pbr/skills/shared/commit-planning-docs.md +35 -0
- package/plugins/codex-pbr/skills/shared/config-loading.md +102 -0
- package/plugins/codex-pbr/skills/shared/context-budget.md +77 -0
- package/plugins/codex-pbr/skills/shared/context-loader-task.md +86 -0
- package/plugins/codex-pbr/skills/shared/digest-select.md +79 -0
- package/plugins/codex-pbr/skills/shared/domain-probes.md +125 -0
- package/plugins/codex-pbr/skills/shared/error-reporting.md +59 -0
- package/plugins/codex-pbr/skills/shared/gate-prompts.md +388 -0
- package/plugins/codex-pbr/skills/shared/phase-argument-parsing.md +45 -0
- package/plugins/codex-pbr/skills/shared/revision-loop.md +81 -0
- package/plugins/codex-pbr/skills/shared/state-update.md +169 -0
- package/plugins/codex-pbr/skills/shared/universal-anti-patterns.md +43 -0
- package/plugins/codex-pbr/skills/status/SKILL.md +449 -0
- package/plugins/codex-pbr/skills/statusline/SKILL.md +149 -0
- package/plugins/codex-pbr/skills/test/SKILL.md +210 -0
- package/plugins/codex-pbr/skills/todo/SKILL.md +281 -0
- package/plugins/codex-pbr/skills/undo/SKILL.md +172 -0
- package/plugins/codex-pbr/templates/CONTEXT.md.tmpl +52 -0
- package/plugins/codex-pbr/templates/INTEGRATION-REPORT.md.tmpl +167 -0
- package/plugins/codex-pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -0
- package/plugins/codex-pbr/templates/ROADMAP.md.tmpl +47 -0
- package/plugins/codex-pbr/templates/SUMMARY-complex.md.tmpl +95 -0
- package/plugins/codex-pbr/templates/SUMMARY-minimal.md.tmpl +48 -0
- package/plugins/codex-pbr/templates/SUMMARY.md.tmpl +81 -0
- package/plugins/codex-pbr/templates/VERIFICATION-DETAIL.md.tmpl +117 -0
- package/plugins/codex-pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -0
- package/plugins/codex-pbr/templates/codebase/CONCERNS.md.tmpl +93 -0
- package/plugins/codex-pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -0
- package/plugins/codex-pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -0
- package/plugins/codex-pbr/templates/codebase/STACK.md.tmpl +78 -0
- package/plugins/codex-pbr/templates/codebase/STRUCTURE.md.tmpl +80 -0
- package/plugins/codex-pbr/templates/codebase/TESTING.md.tmpl +107 -0
- package/plugins/codex-pbr/templates/continue-here.md.tmpl +73 -0
- package/plugins/codex-pbr/templates/pr-body.md.tmpl +22 -0
- package/plugins/codex-pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -0
- package/plugins/codex-pbr/templates/research/ARCHITECTURE.md.tmpl +124 -0
- package/plugins/codex-pbr/templates/research/STACK.md.tmpl +71 -0
- package/plugins/codex-pbr/templates/research/SUMMARY.md.tmpl +112 -0
- package/plugins/codex-pbr/templates/research-outputs/phase-research.md.tmpl +81 -0
- package/plugins/codex-pbr/templates/research-outputs/project-research.md.tmpl +99 -0
- package/plugins/codex-pbr/templates/research-outputs/synthesis.md.tmpl +36 -0
- package/plugins/copilot-pbr/commands/setup.md +1 -1
- package/plugins/copilot-pbr/commands/undo.md +5 -0
- package/plugins/copilot-pbr/plugin.json +1 -1
- package/plugins/copilot-pbr/skills/begin/SKILL.md +170 -17
- package/plugins/copilot-pbr/skills/build/SKILL.md +73 -8
- package/plugins/copilot-pbr/skills/plan/SKILL.md +67 -17
- package/plugins/copilot-pbr/skills/review/SKILL.md +12 -1
- package/plugins/copilot-pbr/skills/setup/SKILL.md +66 -214
- package/plugins/copilot-pbr/skills/shared/context-budget.md +27 -0
- package/plugins/copilot-pbr/skills/status/SKILL.md +44 -2
- package/plugins/copilot-pbr/skills/undo/SKILL.md +172 -0
- package/plugins/cursor-pbr/.cursor-plugin/plugin.json +1 -1
- package/plugins/cursor-pbr/commands/setup.md +1 -1
- package/plugins/cursor-pbr/commands/undo.md +5 -0
- package/plugins/cursor-pbr/skills/begin/SKILL.md +170 -17
- package/plugins/cursor-pbr/skills/build/SKILL.md +73 -8
- package/plugins/cursor-pbr/skills/plan/SKILL.md +67 -17
- package/plugins/cursor-pbr/skills/review/SKILL.md +12 -1
- package/plugins/cursor-pbr/skills/setup/SKILL.md +66 -214
- package/plugins/cursor-pbr/skills/shared/context-budget.md +27 -0
- package/plugins/cursor-pbr/skills/status/SKILL.md +44 -2
- package/plugins/cursor-pbr/skills/undo/SKILL.md +173 -0
- package/plugins/jules-pbr/AGENTS.md +600 -0
- package/plugins/pbr/.claude-plugin/plugin.json +1 -1
- package/plugins/pbr/commands/setup.md +1 -1
- package/plugins/pbr/commands/undo.md +5 -0
- package/plugins/pbr/scripts/config-schema.json +5 -1
- package/plugins/pbr/scripts/lib/alternatives.js +203 -0
- package/plugins/pbr/scripts/lib/preview.js +174 -0
- package/plugins/pbr/scripts/lib/skill-section.js +99 -0
- package/plugins/pbr/scripts/lib/step-verify.js +149 -0
- package/plugins/pbr/scripts/pbr-tools.js +122 -2
- package/plugins/pbr/scripts/validate-commit.js +2 -2
- package/plugins/pbr/skills/begin/SKILL.md +170 -17
- package/plugins/pbr/skills/begin/templates/config.json.tmpl +5 -1
- package/plugins/pbr/skills/build/SKILL.md +73 -8
- package/plugins/pbr/skills/plan/SKILL.md +67 -17
- package/plugins/pbr/skills/review/SKILL.md +12 -1
- package/plugins/pbr/skills/setup/SKILL.md +66 -214
- package/plugins/pbr/skills/shared/context-budget.md +27 -0
- package/plugins/pbr/skills/status/SKILL.md +44 -2
- package/plugins/pbr/skills/undo/SKILL.md +174 -0
|
@@ -0,0 +1,600 @@
|
|
|
1
|
+
# Plan-Build-Run Workflow for Jules
|
|
2
|
+
|
|
3
|
+
> This file teaches Jules the Plan-Build-Run (PBR) development methodology.
|
|
4
|
+
> Place it in your repository root so Jules reads it before starting any task.
|
|
5
|
+
>
|
|
6
|
+
> PBR prevents quality degradation on complex projects by enforcing a
|
|
7
|
+
> disciplined Plan → Build → Review cycle with file-based state tracking.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Core Principle
|
|
12
|
+
|
|
13
|
+
**Never build without a plan. Never ship without a review.**
|
|
14
|
+
|
|
15
|
+
Every meaningful change flows through three stages:
|
|
16
|
+
|
|
17
|
+
1. **Plan** — Research the problem, design the solution, define success criteria
|
|
18
|
+
2. **Build** — Execute the plan with atomic commits, one task at a time
|
|
19
|
+
3. **Review** — Verify the build achieved the plan's goals (goal-backward verification)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Project State Directory
|
|
24
|
+
|
|
25
|
+
All workflow state lives in `.planning/` at the repository root. Jules should
|
|
26
|
+
create and maintain these files as it works:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
.planning/
|
|
30
|
+
├── STATE.md # Current position in the workflow
|
|
31
|
+
├── ROADMAP.md # Phase structure with goals and dependencies
|
|
32
|
+
├── config.json # Workflow settings (optional)
|
|
33
|
+
├── phases/
|
|
34
|
+
│ └── NN-slug/ # One directory per phase
|
|
35
|
+
│ ├── PLAN.md # What to build and how
|
|
36
|
+
│ ├── SUMMARY.md # What was built (written after execution)
|
|
37
|
+
│ └── VERIFICATION.md # Did the build match the plan?
|
|
38
|
+
├── quick/ # Lightweight tasks outside the full cycle
|
|
39
|
+
│ └── NNN-slug/
|
|
40
|
+
│ ├── PLAN.md
|
|
41
|
+
│ └── SUMMARY.md
|
|
42
|
+
├── debug/ # Persistent debug sessions
|
|
43
|
+
│ └── slug/
|
|
44
|
+
│ └── HYPOTHESIS.md
|
|
45
|
+
├── notes/ # Captured ideas and decisions
|
|
46
|
+
├── todos/
|
|
47
|
+
│ ├── pending/ # Active cross-session backlog
|
|
48
|
+
│ └── done/ # Completed todos
|
|
49
|
+
└── milestones/ # Archived milestone snapshots
|
|
50
|
+
└── v{version}/
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### STATE.md Format
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
---
|
|
57
|
+
current_phase: "01-setup"
|
|
58
|
+
current_plan: "01-01"
|
|
59
|
+
status: "Planning" # Planning | Planned | Building | Built | Verified
|
|
60
|
+
updated: "2025-01-15T10:30:00Z"
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Current Focus
|
|
64
|
+
Brief description of what's happening now.
|
|
65
|
+
|
|
66
|
+
## Recently Completed
|
|
67
|
+
- Phase 01, Plan 01: Project scaffolding (Verified)
|
|
68
|
+
|
|
69
|
+
## Next Steps
|
|
70
|
+
1. Primary: Start planning phase 02
|
|
71
|
+
2. Alternative: Review phase 01 verification results
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Valid status transitions: Planning → Planned → Building → Built → Verified
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Phase Workflow
|
|
79
|
+
|
|
80
|
+
### Step 1: Planning a Phase
|
|
81
|
+
|
|
82
|
+
Before writing any code for a phase, create a plan file:
|
|
83
|
+
|
|
84
|
+
**`.planning/phases/NN-slug/PLAN.md`**:
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
---
|
|
88
|
+
phase: "01-setup"
|
|
89
|
+
plan: "01-01"
|
|
90
|
+
type: "feature"
|
|
91
|
+
files_modified:
|
|
92
|
+
- "src/config.ts"
|
|
93
|
+
- "src/database.ts"
|
|
94
|
+
must_haves:
|
|
95
|
+
truths:
|
|
96
|
+
- "Database connection is established on startup"
|
|
97
|
+
- "Configuration loads from environment variables"
|
|
98
|
+
artifacts:
|
|
99
|
+
- "src/config.ts: >30 lines, exports loadConfig()"
|
|
100
|
+
- "src/database.ts: >40 lines, exports connectDB()"
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Tasks
|
|
104
|
+
|
|
105
|
+
### Task 1: Create configuration loader
|
|
106
|
+
- Read environment variables for DB_HOST, DB_PORT, DB_NAME
|
|
107
|
+
- Export a typed config object
|
|
108
|
+
- Throw on missing required variables
|
|
109
|
+
|
|
110
|
+
### Task 2: Create database connection module
|
|
111
|
+
- Use the config from Task 1
|
|
112
|
+
- Implement connection pooling
|
|
113
|
+
- Export connectDB() and getDB() functions
|
|
114
|
+
|
|
115
|
+
### Task 3: Add startup integration
|
|
116
|
+
- Call loadConfig() then connectDB() in main entry point
|
|
117
|
+
- Log connection success/failure
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Planning rules:**
|
|
121
|
+
- Define `must_haves` with concrete, verifiable success criteria
|
|
122
|
+
- List all files that will be created or modified
|
|
123
|
+
- Break work into small, independently committable tasks
|
|
124
|
+
- Each task should produce a working, testable increment
|
|
125
|
+
|
|
126
|
+
### Step 2: Building (Executing the Plan)
|
|
127
|
+
|
|
128
|
+
When executing a plan:
|
|
129
|
+
|
|
130
|
+
1. **Read the plan first** — Load `.planning/phases/NN-slug/PLAN.md`
|
|
131
|
+
2. **Update STATE.md** — Set status to "Building"
|
|
132
|
+
3. **Execute tasks sequentially** — Follow the plan's task order
|
|
133
|
+
4. **Commit after each task** — One atomic commit per task
|
|
134
|
+
5. **Write SUMMARY.md** — Document what was actually built
|
|
135
|
+
|
|
136
|
+
**Commit message format:**
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
{type}({phase}-{plan}): {description}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Examples:
|
|
143
|
+
- `feat(01-01): implement configuration loader`
|
|
144
|
+
- `fix(01-01): handle missing DB_PORT with default value`
|
|
145
|
+
- `test(01-01): add unit tests for config validation`
|
|
146
|
+
- `refactor(02-01): extract auth middleware into separate module`
|
|
147
|
+
|
|
148
|
+
Types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`
|
|
149
|
+
|
|
150
|
+
**SUMMARY.md format** (written after all tasks complete):
|
|
151
|
+
|
|
152
|
+
```markdown
|
|
153
|
+
---
|
|
154
|
+
phase: "01-setup"
|
|
155
|
+
plan: "01-01"
|
|
156
|
+
status: "complete"
|
|
157
|
+
commits:
|
|
158
|
+
- "abc1234: feat(01-01): implement configuration loader"
|
|
159
|
+
- "def5678: feat(01-01): create database connection module"
|
|
160
|
+
key_files:
|
|
161
|
+
- "src/config.ts"
|
|
162
|
+
- "src/database.ts"
|
|
163
|
+
requires:
|
|
164
|
+
- "Node.js 18+"
|
|
165
|
+
- "PostgreSQL 14+"
|
|
166
|
+
deferred:
|
|
167
|
+
- "Connection retry logic (moved to phase 03)"
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## What Was Built
|
|
171
|
+
Brief narrative of what was accomplished and any deviations from the plan.
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Step 3: Verification
|
|
175
|
+
|
|
176
|
+
After building, verify the work against the plan's `must_haves`:
|
|
177
|
+
|
|
178
|
+
**VERIFICATION.md format:**
|
|
179
|
+
|
|
180
|
+
```markdown
|
|
181
|
+
---
|
|
182
|
+
phase: "01-setup"
|
|
183
|
+
plan: "01-01"
|
|
184
|
+
result: "PASS"
|
|
185
|
+
verified_at: "2025-01-15T14:00:00Z"
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Must-Have Verification
|
|
189
|
+
|
|
190
|
+
| # | Criterion | Status | Evidence |
|
|
191
|
+
|---|-----------|--------|----------|
|
|
192
|
+
| 1 | Database connection established on startup | PASS | `connectDB()` called in `src/index.ts:15` |
|
|
193
|
+
| 2 | Config loads from environment variables | PASS | `loadConfig()` reads DB_HOST, DB_PORT, DB_NAME |
|
|
194
|
+
|
|
195
|
+
## Artifact Verification
|
|
196
|
+
|
|
197
|
+
| # | Artifact | Status | Evidence |
|
|
198
|
+
|---|----------|--------|----------|
|
|
199
|
+
| 1 | src/config.ts: >30 lines, exports loadConfig() | PASS | 47 lines, exports `loadConfig()` at line 12 |
|
|
200
|
+
| 2 | src/database.ts: >40 lines, exports connectDB() | PASS | 63 lines, exports `connectDB()` at line 28 |
|
|
201
|
+
|
|
202
|
+
## Deviations
|
|
203
|
+
None — plan executed as written.
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## ROADMAP.md Structure
|
|
209
|
+
|
|
210
|
+
The roadmap defines the full project as a sequence of phases:
|
|
211
|
+
|
|
212
|
+
```markdown
|
|
213
|
+
# Project Roadmap
|
|
214
|
+
|
|
215
|
+
## Phase 01: Project Setup
|
|
216
|
+
**Goal:** Establish project foundation with configuration and database connectivity.
|
|
217
|
+
**Status:** Verified
|
|
218
|
+
**Depends on:** (none)
|
|
219
|
+
|
|
220
|
+
## Phase 02: Authentication
|
|
221
|
+
**Goal:** Users can sign in via OAuth and receive a session token.
|
|
222
|
+
**Status:** Planning
|
|
223
|
+
**Depends on:** Phase 01
|
|
224
|
+
|
|
225
|
+
## Phase 03: Core Features
|
|
226
|
+
**Goal:** Implement the primary user-facing features.
|
|
227
|
+
**Status:** Pending
|
|
228
|
+
**Depends on:** Phase 01, Phase 02
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**Rules:**
|
|
232
|
+
- Phases are numbered sequentially (`01`, `02`, `03`, ...)
|
|
233
|
+
- Each phase has a clear, measurable goal
|
|
234
|
+
- Dependencies between phases are explicit
|
|
235
|
+
- Status tracks the highest completed stage for that phase
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Enforcement Rules
|
|
240
|
+
|
|
241
|
+
Jules has no hook system, so these rules are self-enforced checkpoints.
|
|
242
|
+
Run through this checklist at every stage transition.
|
|
243
|
+
|
|
244
|
+
### Gate 1: Commit Format
|
|
245
|
+
|
|
246
|
+
Before any `git commit`, verify the message matches:
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
{type}({scope}): {description}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
- **Valid types**: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`
|
|
253
|
+
- **Valid scopes**: `NN-MM` (phase-plan), `quick-NNN`, `planning`, or a descriptive word
|
|
254
|
+
- **Block the commit** if the format doesn't match — fix the message first
|
|
255
|
+
|
|
256
|
+
### Gate 2: Plan-Before-Build
|
|
257
|
+
|
|
258
|
+
Before writing any source code for a phase:
|
|
259
|
+
|
|
260
|
+
- Confirm `.planning/phases/NN-slug/PLAN.md` exists
|
|
261
|
+
- Confirm the plan has `must_haves` with at least one truth and one artifact
|
|
262
|
+
- **Never write production code without an approved plan**
|
|
263
|
+
|
|
264
|
+
### Gate 3: Phase Boundary
|
|
265
|
+
|
|
266
|
+
Only modify `.planning/phases/NN-*/` files for the phase shown in `STATE.md`.
|
|
267
|
+
|
|
268
|
+
- Cross-phase edits require explicit justification in the commit body
|
|
269
|
+
- Don't refactor an old phase while building a new one
|
|
270
|
+
|
|
271
|
+
### Gate 4: Format Validation
|
|
272
|
+
|
|
273
|
+
After writing any planning artifact, verify required frontmatter fields:
|
|
274
|
+
|
|
275
|
+
| File | Required fields |
|
|
276
|
+
|------|----------------|
|
|
277
|
+
| PLAN.md | `phase`, `plan`, `must_haves` (with `truths` and `artifacts`) |
|
|
278
|
+
| SUMMARY.md | `phase`, `plan`, `status`, `requires`, `key_files`, `deferred` |
|
|
279
|
+
| VERIFICATION.md | `phase`, `plan`, `result` (must be `PASS`, `FAIL`, `BLOCKED`, or `DEFERRED`) |
|
|
280
|
+
|
|
281
|
+
### Gate 5: State Sync
|
|
282
|
+
|
|
283
|
+
After writing SUMMARY.md or VERIFICATION.md:
|
|
284
|
+
|
|
285
|
+
1. Update `STATE.md` — set `status` to the new stage, update `updated` timestamp
|
|
286
|
+
2. Update `ROADMAP.md` — update the phase's `**Status:**` line to match
|
|
287
|
+
|
|
288
|
+
Both files must stay in sync. Stale state causes confusion across sessions.
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Stage Transition Checkpoints
|
|
293
|
+
|
|
294
|
+
Use these checklists at each stage boundary.
|
|
295
|
+
|
|
296
|
+
### Before Planning
|
|
297
|
+
|
|
298
|
+
- [ ] Read `.planning/STATE.md` — confirm current phase and status
|
|
299
|
+
- [ ] Read `.planning/ROADMAP.md` — confirm phase goal and dependencies
|
|
300
|
+
- [ ] Verify dependent phases are "Verified" before starting this phase
|
|
301
|
+
- [ ] Create `.planning/phases/NN-slug/` directory if it doesn't exist
|
|
302
|
+
|
|
303
|
+
### After Planning (Before Building)
|
|
304
|
+
|
|
305
|
+
- [ ] PLAN.md has valid frontmatter (Gate 4)
|
|
306
|
+
- [ ] `must_haves.truths` are observable facts (not implementation notes)
|
|
307
|
+
- [ ] `must_haves.artifacts` specify file path, minimum size, and key exports
|
|
308
|
+
- [ ] Update STATE.md status to "Planned"
|
|
309
|
+
|
|
310
|
+
### Before Building
|
|
311
|
+
|
|
312
|
+
- [ ] PLAN.md exists and is readable (Gate 2)
|
|
313
|
+
- [ ] Update STATE.md status to "Building"
|
|
314
|
+
- [ ] Note any pre-existing test failures — don't fix them unless the plan says to
|
|
315
|
+
|
|
316
|
+
### After Each Commit
|
|
317
|
+
|
|
318
|
+
- [ ] Commit message matches `{type}({scope}): {description}` (Gate 1)
|
|
319
|
+
- [ ] Only files listed in the plan's `files_modified` were staged
|
|
320
|
+
- [ ] The commit represents a single logical change
|
|
321
|
+
|
|
322
|
+
### After Building
|
|
323
|
+
|
|
324
|
+
- [ ] SUMMARY.md written with all required frontmatter fields (Gate 4)
|
|
325
|
+
- [ ] Every file listed in `key_files` exists on disk
|
|
326
|
+
- [ ] All commits listed in `commits` frontmatter actually exist in git log
|
|
327
|
+
- [ ] Update STATE.md status to "Built"
|
|
328
|
+
- [ ] Check `.planning/todos/pending/` — auto-close any todos satisfied by this work
|
|
329
|
+
|
|
330
|
+
### After Verification
|
|
331
|
+
|
|
332
|
+
- [ ] VERIFICATION.md written with `result: PASS` or `result: FAIL`
|
|
333
|
+
- [ ] Every must-have has a row in the verification table with evidence
|
|
334
|
+
- [ ] Update STATE.md status to "Verified"
|
|
335
|
+
- [ ] Update ROADMAP.md phase status to "Verified" (Gate 5)
|
|
336
|
+
- [ ] Suggest next phase to the user
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## Supplementary Workflows
|
|
341
|
+
|
|
342
|
+
### Quick Tasks
|
|
343
|
+
|
|
344
|
+
For small changes that don't justify the full Plan-Build-Review cycle:
|
|
345
|
+
|
|
346
|
+
**Use quick tasks for:**
|
|
347
|
+
- Single-file changes
|
|
348
|
+
- Bug fixes with obvious solutions
|
|
349
|
+
- Documentation updates
|
|
350
|
+
- Configuration tweaks
|
|
351
|
+
|
|
352
|
+
**Use the full cycle for:**
|
|
353
|
+
- Changes spanning 3+ files
|
|
354
|
+
- New features requiring design decisions
|
|
355
|
+
- Anything that will take more than one commit
|
|
356
|
+
|
|
357
|
+
**Quick task structure:**
|
|
358
|
+
|
|
359
|
+
```
|
|
360
|
+
.planning/quick/
|
|
361
|
+
└── NNN-slug/
|
|
362
|
+
├── PLAN.md # Brief: what, why, files
|
|
363
|
+
└── SUMMARY.md # What was done, commit SHA
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
Commit scope for quick tasks: `quick-NNN` (e.g., `fix(quick-001): correct typo in README`).
|
|
367
|
+
|
|
368
|
+
Quick PLAN.md only needs: one-sentence goal, files to touch, and definition of done.
|
|
369
|
+
Quick SUMMARY.md only needs: what was done and the commit hash.
|
|
370
|
+
|
|
371
|
+
### Milestones
|
|
372
|
+
|
|
373
|
+
Milestones group phases into versioned releases.
|
|
374
|
+
|
|
375
|
+
**ROADMAP.md milestone syntax:**
|
|
376
|
+
|
|
377
|
+
```markdown
|
|
378
|
+
## Milestone v1.0: Initial Release
|
|
379
|
+
**Phases:** 01, 02, 03
|
|
380
|
+
**Status:** In Progress
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
**Completing a milestone:**
|
|
384
|
+
|
|
385
|
+
1. Verify all included phases have `status: Verified`
|
|
386
|
+
2. Create `.planning/milestones/v{version}/`
|
|
387
|
+
3. Copy (archive) `ROADMAP.md` and phase directories into it
|
|
388
|
+
4. Create `STATS.md` with completion date, total commits, and phase count
|
|
389
|
+
5. Collapse the milestone section in active ROADMAP.md to a single "COMPLETED" line
|
|
390
|
+
6. Tag the commit: `git tag v{version}`
|
|
391
|
+
|
|
392
|
+
Archive structure:
|
|
393
|
+
|
|
394
|
+
```
|
|
395
|
+
.planning/milestones/v1.0/
|
|
396
|
+
├── ROADMAP.md # Snapshot of roadmap at completion
|
|
397
|
+
├── STATS.md # Summary stats
|
|
398
|
+
└── phases/
|
|
399
|
+
├── 01-setup/
|
|
400
|
+
└── 02-auth/
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### Debug Workflow
|
|
404
|
+
|
|
405
|
+
For bugs requiring systematic investigation across sessions:
|
|
406
|
+
|
|
407
|
+
**Create a debug session:**
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
.planning/debug/{slug}/
|
|
411
|
+
└── HYPOTHESIS.md
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
**HYPOTHESIS.md format:**
|
|
415
|
+
|
|
416
|
+
```markdown
|
|
417
|
+
---
|
|
418
|
+
bug: "Brief bug description"
|
|
419
|
+
created: "2025-01-15"
|
|
420
|
+
status: "investigating" # investigating | confirmed | resolved
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## Symptoms
|
|
424
|
+
What the user observes. Include error messages, reproduction steps.
|
|
425
|
+
|
|
426
|
+
## Hypotheses
|
|
427
|
+
|
|
428
|
+
### H1: [Hypothesis name]
|
|
429
|
+
**Test:** How to confirm or deny this
|
|
430
|
+
**Result:** (fill in after testing)
|
|
431
|
+
**Conclusion:** CONFIRMED / RULED OUT
|
|
432
|
+
|
|
433
|
+
### H2: [Hypothesis name]
|
|
434
|
+
**Test:** ...
|
|
435
|
+
**Result:** ...
|
|
436
|
+
**Conclusion:** ...
|
|
437
|
+
|
|
438
|
+
## Root Cause
|
|
439
|
+
(fill in when found)
|
|
440
|
+
|
|
441
|
+
## Fix Applied
|
|
442
|
+
(fill in after resolution — commit SHA and description)
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
Update `status` to `resolved` and record the fix. The file persists across sessions
|
|
446
|
+
so you never re-investigate the same root cause.
|
|
447
|
+
|
|
448
|
+
### Notes System
|
|
449
|
+
|
|
450
|
+
Capture decisions, observations, and ideas between sessions:
|
|
451
|
+
|
|
452
|
+
```
|
|
453
|
+
.planning/notes/{YYYY-MM-DD}-{slug}.md
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
**Note frontmatter:**
|
|
457
|
+
|
|
458
|
+
```markdown
|
|
459
|
+
---
|
|
460
|
+
date: "2025-01-15"
|
|
461
|
+
promoted: false
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
The note body goes here. Free-form markdown.
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
Use `promoted: true` when a note has been acted on (turned into a phase or todo).
|
|
468
|
+
Notes are append-only — add new files rather than editing old ones.
|
|
469
|
+
|
|
470
|
+
### Todo Management
|
|
471
|
+
|
|
472
|
+
Cross-session task backlog for items that don't yet have a phase:
|
|
473
|
+
|
|
474
|
+
```
|
|
475
|
+
.planning/todos/pending/{NNN}-{slug}.md # Active
|
|
476
|
+
.planning/todos/done/{NNN}-{slug}.md # Completed
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**Todo format:**
|
|
480
|
+
|
|
481
|
+
```markdown
|
|
482
|
+
---
|
|
483
|
+
id: "001"
|
|
484
|
+
created: "2025-01-15"
|
|
485
|
+
priority: medium # high | medium | low
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
What needs to be done and why.
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
After completing any phase or quick task, check `.planning/todos/pending/` and
|
|
492
|
+
move satisfied todos to `done/` by renaming the file.
|
|
493
|
+
|
|
494
|
+
### Pause and Resume
|
|
495
|
+
|
|
496
|
+
Jules works asynchronously. Use `.continue-here.md` to preserve context between sessions.
|
|
497
|
+
|
|
498
|
+
**When pausing (write `.planning/.continue-here.md`):**
|
|
499
|
+
|
|
500
|
+
```markdown
|
|
501
|
+
---
|
|
502
|
+
paused_at: "2025-01-15T16:00:00Z"
|
|
503
|
+
current_phase: "02-auth"
|
|
504
|
+
current_plan: "02-01"
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## What Was In Progress
|
|
508
|
+
Which task was active, what had been done, what remained.
|
|
509
|
+
|
|
510
|
+
## Blockers
|
|
511
|
+
Any external dependencies or decisions needed before resuming.
|
|
512
|
+
|
|
513
|
+
## Next Action
|
|
514
|
+
The single most important thing to do when resuming. Be specific.
|
|
515
|
+
|
|
516
|
+
## Context Notes
|
|
517
|
+
Anything Jules would need to know that isn't obvious from the files.
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
**When resuming:**
|
|
521
|
+
|
|
522
|
+
1. Read `.planning/.continue-here.md` first
|
|
523
|
+
2. Read `STATE.md` to confirm current position
|
|
524
|
+
3. Execute the "Next Action" listed
|
|
525
|
+
4. Delete `.planning/.continue-here.md` once work resumes normally
|
|
526
|
+
|
|
527
|
+
### Brownfield Onboarding
|
|
528
|
+
|
|
529
|
+
Introducing PBR to an existing project without a `.planning/` directory:
|
|
530
|
+
|
|
531
|
+
1. **Scan the codebase** — understand the current structure, tech stack, and any existing docs
|
|
532
|
+
2. **Create `.planning/`** — initialize the directory structure
|
|
533
|
+
3. **Write ROADMAP.md** — identify logical phases based on what already exists
|
|
534
|
+
- Phase 01 is often "Baseline" — mark it Verified to acknowledge existing work
|
|
535
|
+
- Subsequent phases are planned work
|
|
536
|
+
4. **Write STATE.md** — set `current_phase` to the first active phase, status "Planning"
|
|
537
|
+
5. **Create PLAN.md for Phase 01 (if not trivial)** — document what exists as baseline
|
|
538
|
+
6. **Proceed normally** — the next feature or bug fix becomes Phase 02+
|
|
539
|
+
|
|
540
|
+
Don't try to retroactively document every historical decision. A lightweight ROADMAP.md
|
|
541
|
+
that captures the current state is enough to enable PBR going forward.
|
|
542
|
+
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
## Working Rules for Jules
|
|
546
|
+
|
|
547
|
+
### Before Starting Any Task
|
|
548
|
+
|
|
549
|
+
1. Check if `.planning/STATE.md` exists — if so, read it to understand current position
|
|
550
|
+
2. Check if `.planning/ROADMAP.md` exists — if so, read it to understand phase structure
|
|
551
|
+
3. If the user's request maps to an existing phase, follow the Plan-Build-Review cycle
|
|
552
|
+
4. If no `.planning/` directory exists and the task is non-trivial, offer to create one
|
|
553
|
+
5. Check `.planning/.continue-here.md` — if it exists, resume from there
|
|
554
|
+
|
|
555
|
+
### During Execution
|
|
556
|
+
|
|
557
|
+
- **One task, one commit** — never bundle unrelated changes
|
|
558
|
+
- **Stage specific files** — never use `git add .` or `git add -A`
|
|
559
|
+
- **Follow the plan** — if you need to deviate, document why in SUMMARY.md
|
|
560
|
+
- **Update STATE.md** — keep it current as you transition between stages
|
|
561
|
+
- **Don't over-engineer** — build exactly what the plan specifies, nothing more
|
|
562
|
+
|
|
563
|
+
### After Completing Work
|
|
564
|
+
|
|
565
|
+
- Write SUMMARY.md documenting what was built
|
|
566
|
+
- Run verification against the plan's must_haves
|
|
567
|
+
- Write VERIFICATION.md with pass/fail results and evidence
|
|
568
|
+
- Update STATE.md status to "Built" or "Verified"
|
|
569
|
+
- Check `.planning/todos/pending/` for any todos to close
|
|
570
|
+
- Suggest the next logical step to the user
|
|
571
|
+
|
|
572
|
+
---
|
|
573
|
+
|
|
574
|
+
## Context Management
|
|
575
|
+
|
|
576
|
+
Jules operates asynchronously, so context management is critical:
|
|
577
|
+
|
|
578
|
+
- **Write decisions to disk** — don't rely on conversation memory
|
|
579
|
+
- **STATE.md is the source of truth** — always read it at task start
|
|
580
|
+
- **Plans are contracts** — they define what "done" means
|
|
581
|
+
- **Summaries close the loop** — they record what actually happened
|
|
582
|
+
- **Use `.continue-here.md`** — for deliberate pauses across sessions
|
|
583
|
+
|
|
584
|
+
If a task is complex enough to need multiple Jules sessions, the
|
|
585
|
+
`.planning/` directory ensures continuity between them.
|
|
586
|
+
|
|
587
|
+
---
|
|
588
|
+
|
|
589
|
+
## Anti-Patterns to Avoid
|
|
590
|
+
|
|
591
|
+
1. **Building without a plan** — leads to scope creep and rework
|
|
592
|
+
2. **Skipping verification** — you don't know if you succeeded
|
|
593
|
+
3. **Giant commits** — impossible to review or revert
|
|
594
|
+
4. **Modifying files outside the plan's scope** — creates hidden dependencies
|
|
595
|
+
5. **Ignoring must_haves** — they exist to define "done" objectively
|
|
596
|
+
6. **Re-reading entire files when summaries exist** — wastes context
|
|
597
|
+
7. **Creating artifacts the user didn't approve** — always confirm first
|
|
598
|
+
8. **Using `git add .`** — stages unintended files; always stage explicitly
|
|
599
|
+
9. **Skipping STATE.md updates** — stale state causes confusion across sessions
|
|
600
|
+
10. **Fixing pre-existing bugs while building a phase** — log to todos, stay focused
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pbr",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.55.0",
|
|
4
4
|
"description": "Plan-Build-Run — Structured development workflow for Claude Code. Solves context rot through disciplined subagent delegation, structured planning, atomic execution, and goal-backward verification.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "SienkLogic",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "Reconfigure an existing Plan-Build-Run project (models, features, CLAUDE.md). For new projects, use /pbr:begin."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
This command is provided by the `pbr:setup` skill.
|
|
@@ -119,7 +119,11 @@
|
|
|
119
119
|
"confirm_plan": { "type": "boolean" },
|
|
120
120
|
"confirm_execute": { "type": "boolean" },
|
|
121
121
|
"confirm_transition": { "type": "boolean" },
|
|
122
|
-
"issues_review": { "type": "boolean" }
|
|
122
|
+
"issues_review": { "type": "boolean" },
|
|
123
|
+
"confirm_research": { "type": "boolean" },
|
|
124
|
+
"confirm_seeds": { "type": "boolean" },
|
|
125
|
+
"confirm_deferred": { "type": "boolean" },
|
|
126
|
+
"confirm_commit_docs": { "type": "boolean" }
|
|
123
127
|
},
|
|
124
128
|
"additionalProperties": false
|
|
125
129
|
},
|