@sienklogic/plan-build-run 2.46.0 → 2.48.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 +18 -0
- package/package.json +1 -1
- package/plugins/copilot-pbr/plugin.json +1 -1
- package/plugins/copilot-pbr/skills/build/SKILL.md +15 -116
- package/plugins/copilot-pbr/skills/milestone/SKILL.md +3 -81
- package/plugins/copilot-pbr/skills/milestone/templates/edge-cases.md +54 -0
- package/plugins/copilot-pbr/skills/plan/SKILL.md +6 -76
- package/plugins/copilot-pbr/skills/plan/templates/completion-output.md.tmpl +27 -0
- package/plugins/copilot-pbr/skills/shared/error-reporting.md +59 -0
- package/plugins/cursor-pbr/.cursor-plugin/plugin.json +1 -1
- package/plugins/cursor-pbr/skills/build/SKILL.md +15 -116
- package/plugins/cursor-pbr/skills/milestone/SKILL.md +3 -81
- package/plugins/cursor-pbr/skills/milestone/templates/edge-cases.md +54 -0
- package/plugins/cursor-pbr/skills/plan/SKILL.md +6 -76
- package/plugins/cursor-pbr/skills/plan/templates/completion-output.md.tmpl +27 -0
- package/plugins/cursor-pbr/skills/shared/error-reporting.md +59 -0
- package/plugins/pbr/.claude-plugin/plugin.json +1 -1
- package/plugins/pbr/scripts/lib/build.js +454 -0
- package/plugins/pbr/scripts/pbr-tools.js +55 -1
- package/plugins/pbr/skills/build/SKILL.md +40 -164
- package/plugins/pbr/skills/build/templates/continuation-prompt.md.tmpl +26 -0
- package/plugins/pbr/skills/build/templates/executor-prompt.md.tmpl +55 -0
- package/plugins/pbr/skills/build/templates/inline-verifier-prompt.md.tmpl +18 -0
- package/plugins/pbr/skills/milestone/SKILL.md +3 -81
- package/plugins/pbr/skills/milestone/templates/edge-cases.md +54 -0
- package/plugins/pbr/skills/milestone/templates/integration-checker-prompt.md.tmpl +25 -0
- package/plugins/pbr/skills/plan/SKILL.md +13 -93
- package/plugins/pbr/skills/plan/templates/completion-output.md.tmpl +27 -0
- package/plugins/pbr/skills/shared/error-reporting.md +59 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,24 @@ All notable changes to Plan-Build-Run will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.48.0](https://github.com/SienkLogic/plan-build-run/compare/plan-build-run-v2.47.0...plan-build-run-v2.48.0) (2026-03-01)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **52-02:** GREEN - implement lib/build.js and wire 5 build helper subcommands into pbr-tools.js ([3710d3e](https://github.com/SienkLogic/plan-build-run/commit/3710d3eb323b6796e1465c830166c0ed377a228d))
|
|
14
|
+
* **52-02:** replace inline staleness, checkpoint, and SUMMARY gate blocks with CLI calls in build/plan SKILL.md ([1de7081](https://github.com/SienkLogic/plan-build-run/commit/1de70810a9a4432b65c6c18ca91527e13b98de1d))
|
|
15
|
+
* **52-03:** create error-reporting.md shared fragment and completion-output.md.tmpl ([083797c](https://github.com/SienkLogic/plan-build-run/commit/083797ca45421ab1bdbe521afd1ec95428510b0b))
|
|
16
|
+
* **52-03:** extract edge cases and collapse error boxes/completion to references; sync derivatives ([2cc5718](https://github.com/SienkLogic/plan-build-run/commit/2cc5718917219454aa28b8ea719f45426f2c86d9))
|
|
17
|
+
|
|
18
|
+
## [2.47.0](https://github.com/SienkLogic/plan-build-run/compare/plan-build-run-v2.46.0...plan-build-run-v2.47.0) (2026-03-01)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* **52-01:** extract 3 inline executor prompts from build/SKILL.md to tmpl files ([e5db296](https://github.com/SienkLogic/plan-build-run/commit/e5db2966dfc53fc8b7534cce6257880ebc7438f9))
|
|
24
|
+
* **52-01:** replace inline prompts with template references in build and milestone SKILL.md ([04b7d0f](https://github.com/SienkLogic/plan-build-run/commit/04b7d0ff19bba67c8a0a620fbaaacf189f1055be))
|
|
25
|
+
|
|
8
26
|
## [2.46.0](https://github.com/SienkLogic/plan-build-run/compare/plan-build-run-v2.45.0...plan-build-run-v2.46.0) (2026-03-01)
|
|
9
27
|
|
|
10
28
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pbr",
|
|
3
3
|
"displayName": "Plan-Build-Run",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.48.0",
|
|
5
5
|
"description": "Plan-Build-Run — Structured development workflow for GitHub Copilot CLI. Solves context rot through disciplined agent delegation, structured planning, atomic execution, and goal-backward verification.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "SienkLogic",
|
|
@@ -298,65 +298,15 @@ Reference: `references/model-selection.md` for full details.
|
|
|
298
298
|
4. Read prior SUMMARY.md files from the same phase (completed plans in earlier waves)
|
|
299
299
|
5. Read `.planning/config.json`
|
|
300
300
|
|
|
301
|
-
Construct the executor prompt:
|
|
301
|
+
Construct the executor prompt by reading `skills/build/templates/executor-prompt.md.tmpl` and filling in all `{placeholder}` values:
|
|
302
302
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
1. .planning/phases/{NN}-{slug}/{plan_id}-PLAN.md — the full plan with task details
|
|
309
|
-
2. .planning/CONTEXT.md — locked decisions and constraints (if exists)
|
|
310
|
-
3. .planning/STATE.md — current project state and progress
|
|
311
|
-
</files_to_read>
|
|
312
|
-
|
|
313
|
-
<plan_summary>
|
|
314
|
-
[Inline only the ## Summary section from PLAN.md]
|
|
315
|
-
</plan_summary>
|
|
316
|
-
|
|
317
|
-
<plan_file>
|
|
318
|
-
.planning/phases/{NN}-{slug}/{plan_id}-PLAN.md
|
|
319
|
-
</plan_file>
|
|
320
|
-
|
|
321
|
-
<project_context>
|
|
322
|
-
Project root: {absolute path to project root}
|
|
323
|
-
Platform: {win32|linux|darwin}
|
|
324
|
-
|
|
325
|
-
Config:
|
|
326
|
-
commit_format: {commit_format from config}
|
|
327
|
-
tdd_mode: {tdd_mode from config}
|
|
328
|
-
atomic_commits: {atomic_commits from config}
|
|
303
|
+
- `{NN}-{slug}` — phase directory (e.g., `02-authentication`)
|
|
304
|
+
- `{plan_id}` — plan being executed (e.g., `02-01`)
|
|
305
|
+
- `{commit_format}`, `{tdd_mode}`, `{atomic_commits}` — from loaded config
|
|
306
|
+
- File paths: absolute paths to project root, config.json, STATE.md, CONTEXT.md
|
|
307
|
+
- `{prior_work table rows}` — one row per completed plan in this phase
|
|
329
308
|
|
|
330
|
-
|
|
331
|
-
- Config: {absolute path to config.json}
|
|
332
|
-
- State: {absolute path to STATE.md}
|
|
333
|
-
{If CONTEXT.md exists:}
|
|
334
|
-
- Project context (locked decisions): {absolute path to CONTEXT.md}
|
|
335
|
-
</project_context>
|
|
336
|
-
|
|
337
|
-
<prior_work>
|
|
338
|
-
Completed plans in this phase:
|
|
339
|
-
| Plan | Status | Commits | Summary File |
|
|
340
|
-
|------|--------|---------|-------------|
|
|
341
|
-
| {plan_id} | complete | {hash1}, {hash2} | {absolute path to SUMMARY.md} |
|
|
342
|
-
|
|
343
|
-
Read any SUMMARY file via Read tool if you need details on what prior plans produced.
|
|
344
|
-
</prior_work>
|
|
345
|
-
|
|
346
|
-
Execute all tasks in the plan sequentially. For each task:
|
|
347
|
-
0. Read the full plan file from the path in <plan_file> to get task details
|
|
348
|
-
1. Execute the <action> steps
|
|
349
|
-
2. Run the <verify> commands
|
|
350
|
-
3. Create an atomic commit with format: {commit_format}
|
|
351
|
-
4. Record the commit hash
|
|
352
|
-
|
|
353
|
-
After all tasks complete:
|
|
354
|
-
1. Write SUMMARY.md to .planning/phases/{NN}-{slug}/SUMMARY-{plan_id}.md
|
|
355
|
-
2. Run self-check (verify files exist, commits exist, verify commands still pass)
|
|
356
|
-
3. Return your SUMMARY.md content as your final response
|
|
357
|
-
|
|
358
|
-
If you hit a checkpoint task, STOP and return the checkpoint response format immediately.
|
|
359
|
-
```
|
|
309
|
+
Use the filled template as the Task() prompt.
|
|
360
310
|
|
|
361
311
|
**Spawn strategy based on config:**
|
|
362
312
|
|
|
@@ -478,37 +428,7 @@ For each plan that completed successfully in this wave:
|
|
|
478
428
|
1. Read the plan's SUMMARY.md to get `key_files` (the files this plan created/modified)
|
|
479
429
|
2. Display to the user: `◐ Spawning inline verifier for plan {plan_id}...`
|
|
480
430
|
|
|
481
|
-
Spawn
|
|
482
|
-
|
|
483
|
-
<!-- NOTE: This is a targeted inline check (existence/substantiveness/wiring for specific files),
|
|
484
|
-
NOT the full must-have verifier. The canonical full verifier prompt lives in
|
|
485
|
-
agents/verifier.md and is templated via skills/review/templates/verifier-prompt.md.tmpl.
|
|
486
|
-
Keep this lightweight prompt distinct from the full verifier. -->
|
|
487
|
-
|
|
488
|
-
```
|
|
489
|
-
Task({
|
|
490
|
-
agent_type: "pbr:verifier",
|
|
491
|
-
model: "haiku",
|
|
492
|
-
prompt: "<files_to_read>
|
|
493
|
-
CRITICAL: Read these files BEFORE any other action:
|
|
494
|
-
1. .planning/phases/{NN}-{slug}/{plan_id}-PLAN.md — must-haves to verify against
|
|
495
|
-
2. .planning/phases/{NN}-{slug}/SUMMARY-{plan_id}.md — what the executor claims was built
|
|
496
|
-
3. .planning/phases/{NN}-{slug}/VERIFICATION.md — prior verification results (if exists)
|
|
497
|
-
</files_to_read>
|
|
498
|
-
|
|
499
|
-
Targeted inline verification for plan {plan_id}.
|
|
500
|
-
|
|
501
|
-
Verify ONLY these files: {comma-separated key_files list}
|
|
502
|
-
|
|
503
|
-
For each file, check three layers:
|
|
504
|
-
1. Existence — does the file exist?
|
|
505
|
-
2. Substantiveness — is it more than a stub? (>10 lines, no TODO/FIXME placeholders)
|
|
506
|
-
3. Wiring — is it imported/used by at least one other file?
|
|
507
|
-
|
|
508
|
-
Report PASS or FAIL with a one-line reason per file.
|
|
509
|
-
Write nothing to disk — just return your results as text."
|
|
510
|
-
})
|
|
511
|
-
```
|
|
431
|
+
Spawn `Task({ agent_type: "pbr:verifier", model: "haiku", prompt: ... })`. Read `skills/build/templates/inline-verifier-prompt.md.tmpl` and fill in `{NN}-{slug}`, `{plan_id}`, and `{comma-separated key_files list}` (key_files from PLAN.md frontmatter). Use the filled template as the `prompt` value.
|
|
512
432
|
|
|
513
433
|
3. If verifier reports FAIL for any file:
|
|
514
434
|
- Present the failure to the user: "Inline verify failed for plan {plan_id}: {details}"
|
|
@@ -608,36 +528,15 @@ Checkpoint in Plan {id}, Task {N}: {checkpoint type}
|
|
|
608
528
|
|
|
609
529
|
Reference: `references/continuation-format.md` for the continuation protocol.
|
|
610
530
|
|
|
611
|
-
|
|
612
|
-
You are the executor agent. Continue executing a plan from a checkpoint.
|
|
613
|
-
|
|
614
|
-
<plan_summary>
|
|
615
|
-
[Inline only the ## Summary section from PLAN.md]
|
|
616
|
-
</plan_summary>
|
|
531
|
+
Read `skills/build/templates/continuation-prompt.md.tmpl` and fill in:
|
|
617
532
|
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
533
|
+
- `{NN}-{slug}`, `{plan_id}` — current phase and plan
|
|
534
|
+
- `{plan_summary}` — the ## Summary section from PLAN.md
|
|
535
|
+
- `{task table rows}` — one row per task with completion status
|
|
536
|
+
- `{user's response}` — the checkpoint resolution from Step 3
|
|
537
|
+
- `{project context key-values}` — config values + file paths
|
|
621
538
|
|
|
622
|
-
|
|
623
|
-
| Task | Commit | Status |
|
|
624
|
-
|------|--------|--------|
|
|
625
|
-
| {task_name} | {hash} | complete |
|
|
626
|
-
| {task_name} | {hash} | complete |
|
|
627
|
-
| {checkpoint_task} | — | checkpoint |
|
|
628
|
-
</completed_tasks>
|
|
629
|
-
|
|
630
|
-
<checkpoint_resolution>
|
|
631
|
-
User response to checkpoint: {user's response}
|
|
632
|
-
Resume at: Task {N+1} (or re-execute checkpoint task with user's answer)
|
|
633
|
-
</checkpoint_resolution>
|
|
634
|
-
|
|
635
|
-
<project_context>
|
|
636
|
-
{Same lean context as original spawn — config key-values + file paths, not inlined bodies}
|
|
637
|
-
</project_context>
|
|
638
|
-
|
|
639
|
-
Continue execution from the checkpoint. Skip completed tasks. Process the checkpoint resolution, then continue with remaining tasks. Write SUMMARY.md when done.
|
|
640
|
-
```
|
|
539
|
+
Use the filled template as the Task() prompt.
|
|
641
540
|
|
|
642
541
|
#### 6e-ii. CI Gate (after wave completion, conditional)
|
|
643
542
|
|
|
@@ -535,35 +535,7 @@ Verify milestone completion with cross-phase integration checks.
|
|
|
535
535
|
|
|
536
536
|
Display to the user: `◐ Spawning integration checker...`
|
|
537
537
|
|
|
538
|
-
Spawn `Task(agent_type: "pbr:integration-checker")`
|
|
539
|
-
|
|
540
|
-
```
|
|
541
|
-
You are integration-checker. Perform cross-phase integration verification.
|
|
542
|
-
|
|
543
|
-
<files_to_read>
|
|
544
|
-
CRITICAL: Read these files BEFORE any other action:
|
|
545
|
-
1. .planning/ROADMAP.md — phase structure, goals, and dependencies
|
|
546
|
-
2. .planning/phases/{NN}-{slug}/SUMMARY.md — for each milestone phase (read all)
|
|
547
|
-
</files_to_read>
|
|
548
|
-
|
|
549
|
-
Milestone: {version or "current"}
|
|
550
|
-
Phases to check: {list of phase directories}
|
|
551
|
-
|
|
552
|
-
Instructions:
|
|
553
|
-
1. Read all SUMMARY.md files for the milestone phases
|
|
554
|
-
2. Build a dependency graph from provides/affects/requires fields
|
|
555
|
-
3. Verify integration points:
|
|
556
|
-
a. Every "requires" in a later phase is "provided" by an earlier phase
|
|
557
|
-
b. Every "affects" target still exists and hasn't been broken
|
|
558
|
-
c. No circular dependencies
|
|
559
|
-
d. No orphaned provides (things built but never consumed)
|
|
560
|
-
4. Check for:
|
|
561
|
-
- Broken imports/references between phases
|
|
562
|
-
- API contract mismatches
|
|
563
|
-
- Missing error handling at integration points
|
|
564
|
-
- Configuration inconsistencies
|
|
565
|
-
5. Return findings as a structured report
|
|
566
|
-
```
|
|
538
|
+
Spawn `Task(agent_type: "pbr:integration-checker")`. Read `skills/milestone/templates/integration-checker-prompt.md.tmpl`, fill in `{version or "current"}`, `{list of phase directories}`, and `{phase SUMMARY.md paths}`, then use the filled template as the Task() prompt.
|
|
567
539
|
|
|
568
540
|
4. **Check integration-checker completion:**
|
|
569
541
|
|
|
@@ -807,58 +779,8 @@ Tags (complete only):
|
|
|
807
779
|
|
|
808
780
|
## Edge Cases
|
|
809
781
|
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
- For others, display:
|
|
813
|
-
```
|
|
814
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
815
|
-
║ ERROR ║
|
|
816
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
817
|
-
|
|
818
|
-
No roadmap found.
|
|
819
|
-
|
|
820
|
-
**To fix:** Run `/pbr:begin` or `/pbr:milestone new` first.
|
|
821
|
-
```
|
|
822
|
-
|
|
823
|
-
### Milestone has no phases
|
|
824
|
-
Display:
|
|
825
|
-
```
|
|
826
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
827
|
-
║ ERROR ║
|
|
828
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
829
|
-
|
|
830
|
-
No phases found for this milestone.
|
|
831
|
-
|
|
832
|
-
**To fix:**
|
|
833
|
-
- For `complete`: Nothing to complete — add phases first.
|
|
834
|
-
- For `audit`: Nothing to audit — build phases first.
|
|
835
|
-
```
|
|
836
|
-
|
|
837
|
-
### Audit finds no gaps
|
|
838
|
-
- Status: PASSED
|
|
839
|
-
- Skip the recommendations section
|
|
840
|
-
- Suggest proceeding to complete
|
|
841
|
-
|
|
842
|
-
### Version already exists (tag collision)
|
|
843
|
-
Display:
|
|
844
|
-
```
|
|
845
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
846
|
-
║ ERROR ║
|
|
847
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
848
|
-
|
|
849
|
-
Git tag {version} already exists.
|
|
850
|
-
|
|
851
|
-
**To fix:** Use a different version number (e.g., {version}.1).
|
|
852
|
-
```
|
|
853
|
-
Ask for alternative via AskUserQuestion.
|
|
854
|
-
|
|
855
|
-
### Partially verified milestone
|
|
856
|
-
- `complete` warns but allows proceeding with user confirmation
|
|
857
|
-
- `audit` treats unverified phases as gaps
|
|
858
|
-
|
|
859
|
-
### Large milestone (8+ phases)
|
|
860
|
-
- `audit` may take longer due to integration checking
|
|
861
|
-
- Warn: "This milestone has {count} phases. The audit may take a few minutes."
|
|
782
|
+
For all edge case handling, see `skills/milestone/templates/edge-cases.md`.
|
|
783
|
+
Key scenarios: no ROADMAP.md, no phases, no gaps found, version collision, partially verified, large milestone (8+ phases).
|
|
862
784
|
|
|
863
785
|
---
|
|
864
786
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Milestone Edge Cases
|
|
2
|
+
|
|
3
|
+
## No ROADMAP.md exists
|
|
4
|
+
- For `new`: Create one from scratch (this is a fresh start)
|
|
5
|
+
- For others, display:
|
|
6
|
+
```
|
|
7
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
8
|
+
║ ERROR ║
|
|
9
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
10
|
+
|
|
11
|
+
No roadmap found.
|
|
12
|
+
|
|
13
|
+
**To fix:** Run `/pbr:begin` or `/pbr:milestone new` first.
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Milestone has no phases
|
|
17
|
+
Display:
|
|
18
|
+
```
|
|
19
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
20
|
+
║ ERROR ║
|
|
21
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
22
|
+
|
|
23
|
+
No phases found for this milestone.
|
|
24
|
+
|
|
25
|
+
**To fix:**
|
|
26
|
+
- For `complete`: Nothing to complete — add phases first.
|
|
27
|
+
- For `audit`: Nothing to audit — build phases first.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Audit finds no gaps
|
|
31
|
+
- Status: PASSED
|
|
32
|
+
- Skip the recommendations section
|
|
33
|
+
- Suggest proceeding to complete
|
|
34
|
+
|
|
35
|
+
## Version already exists (tag collision)
|
|
36
|
+
Display:
|
|
37
|
+
```
|
|
38
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
39
|
+
║ ERROR ║
|
|
40
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
41
|
+
|
|
42
|
+
Git tag {version} already exists.
|
|
43
|
+
|
|
44
|
+
**To fix:** Use a different version number (e.g., {version}.1).
|
|
45
|
+
```
|
|
46
|
+
Ask for alternative via AskUserQuestion.
|
|
47
|
+
|
|
48
|
+
## Partially verified milestone
|
|
49
|
+
- `complete` warns but allows proceeding with user confirmation
|
|
50
|
+
- `audit` treats unverified phases as gaps
|
|
51
|
+
|
|
52
|
+
## Large milestone (8+ phases)
|
|
53
|
+
- `audit` may take longer due to integration checking
|
|
54
|
+
- Warn: "This milestone has {count} phases. The audit may take a few minutes."
|
|
@@ -596,24 +596,10 @@ Read `skills/plan/templates/gap-closure-prompt.md.tmpl` and use it as the prompt
|
|
|
596
596
|
## Error Handling
|
|
597
597
|
|
|
598
598
|
### Phase not found
|
|
599
|
-
If the specified phase doesn't exist in ROADMAP.md, display:
|
|
600
|
-
```
|
|
601
|
-
ERROR
|
|
602
|
-
|
|
603
|
-
Phase {N} not found in ROADMAP.md.
|
|
604
|
-
|
|
605
|
-
**To fix:** Run `/pbr:status` to see available phases.
|
|
606
|
-
```
|
|
599
|
+
If the specified phase doesn't exist in ROADMAP.md, display a branded error box — see `skills/shared/error-reporting.md`, pattern: Phase not found.
|
|
607
600
|
|
|
608
601
|
### Missing prerequisites
|
|
609
|
-
If REQUIREMENTS.md or ROADMAP.md don't exist, display:
|
|
610
|
-
```
|
|
611
|
-
ERROR
|
|
612
|
-
|
|
613
|
-
Project not initialized. Missing REQUIREMENTS.md or ROADMAP.md.
|
|
614
|
-
|
|
615
|
-
**To fix:** Run `/pbr:begin` first.
|
|
616
|
-
```
|
|
602
|
+
If REQUIREMENTS.md or ROADMAP.md don't exist, display a branded error box — see `skills/shared/error-reporting.md`, pattern: Missing prerequisites.
|
|
617
603
|
|
|
618
604
|
### Research agent fails
|
|
619
605
|
If the researcher agent fails, display:
|
|
@@ -624,29 +610,10 @@ This may result in less accurate plans.
|
|
|
624
610
|
Continue to the planning step.
|
|
625
611
|
|
|
626
612
|
### Planner agent fails
|
|
627
|
-
If the planner agent fails, display:
|
|
628
|
-
```
|
|
629
|
-
ERROR
|
|
630
|
-
|
|
631
|
-
Planner agent failed for Phase {N}.
|
|
632
|
-
|
|
633
|
-
**To fix:**
|
|
634
|
-
- Try again with `/pbr:plan {N} --skip-research`
|
|
635
|
-
- Check `.planning/CONTEXT.md` for conflicting constraints
|
|
636
|
-
```
|
|
613
|
+
If the planner agent fails, display a branded error box — see `skills/shared/error-reporting.md`, pattern: Planner agent failure.
|
|
637
614
|
|
|
638
615
|
### Checker loops forever
|
|
639
|
-
After 3 revision iterations without passing, display:
|
|
640
|
-
```
|
|
641
|
-
ERROR
|
|
642
|
-
|
|
643
|
-
Plan checker failed to pass after 3 revision iterations for Phase {N}.
|
|
644
|
-
|
|
645
|
-
**To fix:**
|
|
646
|
-
- Review the remaining issues below and decide whether to proceed or revise manually
|
|
647
|
-
- Run `/pbr:plan {N}` to restart planning from scratch
|
|
648
|
-
```
|
|
649
|
-
|
|
616
|
+
After 3 revision iterations without passing, display a branded error box — see `skills/shared/error-reporting.md`, pattern: Checker loops.
|
|
650
617
|
Present remaining issues and ask user to decide: proceed or intervene.
|
|
651
618
|
|
|
652
619
|
---
|
|
@@ -671,42 +638,5 @@ Delete `.planning/.active-skill` if it exists. This must happen on all paths (su
|
|
|
671
638
|
|
|
672
639
|
After planning completes, present:
|
|
673
640
|
|
|
674
|
-
Use the branded stage banner from `
|
|
675
|
-
|
|
676
|
-
```
|
|
677
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
678
|
-
║ PLAN-BUILD-RUN ► PLANNING PHASE {N} ║
|
|
679
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
680
|
-
|
|
681
|
-
**Phase {N}: {name}** — {plan_count} plans created
|
|
682
|
-
|
|
683
|
-
Plans:
|
|
684
|
-
{phase}-01: {name} (Wave 1, {task_count} tasks)
|
|
685
|
-
{phase}-02: {name} (Wave 1, {task_count} tasks)
|
|
686
|
-
{phase}-03: {name} (Wave 2, {task_count} tasks)
|
|
687
|
-
|
|
688
|
-
Wave execution:
|
|
689
|
-
Wave 1: Plans 01, 02 (parallel)
|
|
690
|
-
Wave 2: Plan 03
|
|
691
|
-
```
|
|
692
|
-
|
|
693
|
-
Then use the "Next Up" routing block:
|
|
694
|
-
```
|
|
695
|
-
---
|
|
696
|
-
|
|
697
|
-
## Next Up
|
|
698
|
-
|
|
699
|
-
**Build Phase {N}** — execute these plans
|
|
700
|
-
|
|
701
|
-
/pbr:build {N}
|
|
702
|
-
|
|
703
|
-
`/clear` first for a fresh context window
|
|
704
|
-
|
|
705
|
-
---
|
|
706
|
-
|
|
707
|
-
**Also available:**
|
|
708
|
-
- /pbr:plan {N} --assumptions — review assumptions first
|
|
709
|
-
- /pbr:discuss {N} — talk through details before building
|
|
710
|
-
|
|
711
|
-
---
|
|
712
|
-
```
|
|
641
|
+
Use the branded stage banner and next-up block from `skills/plan/templates/completion-output.md.tmpl`.
|
|
642
|
+
Fill in: `{N}` (phase number), `{phase-name}`, `{plan_count}`, `{plan_list_lines}` (one line per plan with wave and task count), `{wave_table_lines}` (one line per wave).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
2
|
+
║ PLAN-BUILD-RUN ► PLANNING PHASE {N} ✓ ║
|
|
3
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
4
|
+
|
|
5
|
+
**Phase {N}: {phase-name}** — {plan_count} plans created
|
|
6
|
+
|
|
7
|
+
Plans:
|
|
8
|
+
{plan_list_lines}
|
|
9
|
+
|
|
10
|
+
Wave execution:
|
|
11
|
+
{wave_table_lines}
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
16
|
+
║ ▶ NEXT UP ║
|
|
17
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
18
|
+
|
|
19
|
+
**Build Phase {N}** — execute these plans
|
|
20
|
+
|
|
21
|
+
/pbr:build {N}
|
|
22
|
+
|
|
23
|
+
<sub>/clear first → fresh context window</sub>
|
|
24
|
+
|
|
25
|
+
**Also available:**
|
|
26
|
+
- /pbr:plan {N} --assumptions — review assumptions first
|
|
27
|
+
- /pbr:discuss {N} — talk through details before building
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Error Reporting — Standard Format
|
|
2
|
+
|
|
3
|
+
Use the branded error box for all blocking errors. Present the box, explain what happened, and give a specific fix action.
|
|
4
|
+
|
|
5
|
+
## Error Box Format
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
9
|
+
║ ERROR ║
|
|
10
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
11
|
+
|
|
12
|
+
{one-line description of what went wrong}
|
|
13
|
+
|
|
14
|
+
**To fix:** {specific action the user should take}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Warning Format (non-blocking)
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
⚠ {one-line warning}
|
|
21
|
+
{optional detail or suggestion}
|
|
22
|
+
```
|
|
23
|
+
Continue execution after showing a warning.
|
|
24
|
+
|
|
25
|
+
## Common Error Patterns
|
|
26
|
+
|
|
27
|
+
### Phase not found
|
|
28
|
+
Message: "Phase {N} not found in ROADMAP.md."
|
|
29
|
+
Fix: "Run `/pbr:status` to see available phases."
|
|
30
|
+
|
|
31
|
+
### Missing prerequisites (no REQUIREMENTS.md or ROADMAP.md)
|
|
32
|
+
Message: "Project not initialized. Missing REQUIREMENTS.md or ROADMAP.md."
|
|
33
|
+
Fix: "Run `/pbr:begin` first."
|
|
34
|
+
|
|
35
|
+
### No plans found for phase
|
|
36
|
+
Message: "Phase {N} has no plans."
|
|
37
|
+
Fix: "Run `/pbr:plan {N}` first."
|
|
38
|
+
|
|
39
|
+
### Dependency phase not complete
|
|
40
|
+
Message: "Phase {N} depends on Phase {M}, which is not complete."
|
|
41
|
+
Fix: "Build Phase {M} first with `/pbr:build {M}`."
|
|
42
|
+
|
|
43
|
+
### Planner agent failure
|
|
44
|
+
Message: "Planner agent failed for Phase {N}."
|
|
45
|
+
Fix: "Try again with `/pbr:plan {N} --skip-research`. Check `.planning/CONTEXT.md` for conflicting constraints."
|
|
46
|
+
|
|
47
|
+
### Checker loops (3+ iterations without pass)
|
|
48
|
+
Message: "Plan checker failed to pass after 3 revision iterations for Phase {N}."
|
|
49
|
+
Fix: "Review the remaining issues below and decide whether to proceed or revise manually. Run `/pbr:plan {N}` to restart planning from scratch."
|
|
50
|
+
After displaying: present remaining issues and ask user to decide (proceed or intervene).
|
|
51
|
+
|
|
52
|
+
### Research agent failure
|
|
53
|
+
Display as WARNING (non-blocking): "Research agent failed. Planning without phase-specific research. This may result in less accurate plans."
|
|
54
|
+
Continue to the planning step.
|
|
55
|
+
|
|
56
|
+
## Usage
|
|
57
|
+
|
|
58
|
+
In skill files, replace repeated error box content with:
|
|
59
|
+
"Display a branded error box — use the format from `skills/shared/error-reporting.md`, pattern: {pattern name}."
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pbr",
|
|
3
3
|
"displayName": "Plan-Build-Run",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.48.0",
|
|
5
5
|
"description": "Plan-Build-Run — Structured development workflow for Cursor. Solves context rot through disciplined subagent delegation, structured planning, atomic execution, and goal-backward verification.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "SienkLogic",
|