@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.
Files changed (29) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/package.json +1 -1
  3. package/plugins/copilot-pbr/plugin.json +1 -1
  4. package/plugins/copilot-pbr/skills/build/SKILL.md +15 -116
  5. package/plugins/copilot-pbr/skills/milestone/SKILL.md +3 -81
  6. package/plugins/copilot-pbr/skills/milestone/templates/edge-cases.md +54 -0
  7. package/plugins/copilot-pbr/skills/plan/SKILL.md +6 -76
  8. package/plugins/copilot-pbr/skills/plan/templates/completion-output.md.tmpl +27 -0
  9. package/plugins/copilot-pbr/skills/shared/error-reporting.md +59 -0
  10. package/plugins/cursor-pbr/.cursor-plugin/plugin.json +1 -1
  11. package/plugins/cursor-pbr/skills/build/SKILL.md +15 -116
  12. package/plugins/cursor-pbr/skills/milestone/SKILL.md +3 -81
  13. package/plugins/cursor-pbr/skills/milestone/templates/edge-cases.md +54 -0
  14. package/plugins/cursor-pbr/skills/plan/SKILL.md +6 -76
  15. package/plugins/cursor-pbr/skills/plan/templates/completion-output.md.tmpl +27 -0
  16. package/plugins/cursor-pbr/skills/shared/error-reporting.md +59 -0
  17. package/plugins/pbr/.claude-plugin/plugin.json +1 -1
  18. package/plugins/pbr/scripts/lib/build.js +454 -0
  19. package/plugins/pbr/scripts/pbr-tools.js +55 -1
  20. package/plugins/pbr/skills/build/SKILL.md +40 -164
  21. package/plugins/pbr/skills/build/templates/continuation-prompt.md.tmpl +26 -0
  22. package/plugins/pbr/skills/build/templates/executor-prompt.md.tmpl +55 -0
  23. package/plugins/pbr/skills/build/templates/inline-verifier-prompt.md.tmpl +18 -0
  24. package/plugins/pbr/skills/milestone/SKILL.md +3 -81
  25. package/plugins/pbr/skills/milestone/templates/edge-cases.md +54 -0
  26. package/plugins/pbr/skills/milestone/templates/integration-checker-prompt.md.tmpl +25 -0
  27. package/plugins/pbr/skills/plan/SKILL.md +13 -93
  28. package/plugins/pbr/skills/plan/templates/completion-output.md.tmpl +27 -0
  29. 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,6 +1,6 @@
1
1
  {
2
2
  "name": "@sienklogic/plan-build-run",
3
- "version": "2.46.0",
3
+ "version": "2.48.0",
4
4
  "description": "Plan it, Build it, Run it — structured development workflow for Claude Code",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pbr",
3
3
  "displayName": "Plan-Build-Run",
4
- "version": "2.46.0",
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
- You are the executor agent. Execute the following plan.
305
-
306
- <files_to_read>
307
- CRITICAL: Read these files BEFORE any other action:
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
- Available context files (read via Read tool as needed):
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 a lightweight verifier:
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
- <plan_file>
619
- .planning/phases/{NN}-{slug}/{plan_id}-PLAN.md
620
- </plan_file>
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
- <completed_tasks>
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")` with:
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
- ### No ROADMAP.md exists
811
- - For `new`: Create one from scratch (this is a fresh start)
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 `references/ui-formatting.md`:
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.46.0",
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",