@sienklogic/plan-build-run 2.21.1 → 2.22.1

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 (76) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/package.json +1 -1
  3. package/plugins/copilot-pbr/agents/executor.agent.md +1 -0
  4. package/plugins/copilot-pbr/hooks/hooks.json +24 -12
  5. package/plugins/copilot-pbr/plugin.json +1 -1
  6. package/plugins/copilot-pbr/skills/begin/SKILL.md +2 -41
  7. package/plugins/copilot-pbr/skills/build/SKILL.md +7 -87
  8. package/plugins/copilot-pbr/skills/config/SKILL.md +1 -1
  9. package/plugins/copilot-pbr/skills/continue/SKILL.md +8 -2
  10. package/plugins/copilot-pbr/skills/help/SKILL.md +17 -0
  11. package/plugins/copilot-pbr/skills/import/SKILL.md +2 -0
  12. package/plugins/copilot-pbr/skills/milestone/SKILL.md +2 -0
  13. package/plugins/copilot-pbr/skills/pause/SKILL.md +7 -1
  14. package/plugins/copilot-pbr/skills/review/SKILL.md +4 -96
  15. package/plugins/cursor-pbr/.cursor-plugin/plugin.json +1 -1
  16. package/plugins/cursor-pbr/agents/executor.md +1 -0
  17. package/plugins/cursor-pbr/hooks/hooks.json +20 -10
  18. package/plugins/cursor-pbr/skills/begin/SKILL.md +2 -41
  19. package/plugins/cursor-pbr/skills/build/SKILL.md +7 -87
  20. package/plugins/cursor-pbr/skills/config/SKILL.md +1 -1
  21. package/plugins/cursor-pbr/skills/continue/SKILL.md +8 -2
  22. package/plugins/cursor-pbr/skills/help/SKILL.md +17 -0
  23. package/plugins/cursor-pbr/skills/import/SKILL.md +2 -0
  24. package/plugins/cursor-pbr/skills/milestone/SKILL.md +2 -0
  25. package/plugins/cursor-pbr/skills/pause/SKILL.md +7 -1
  26. package/plugins/cursor-pbr/skills/review/SKILL.md +4 -96
  27. package/plugins/pbr/.claude-plugin/plugin.json +1 -1
  28. package/plugins/pbr/agents/executor.md +1 -0
  29. package/plugins/pbr/hooks/hooks.json +20 -10
  30. package/plugins/pbr/scripts/auto-continue.js +26 -2
  31. package/plugins/pbr/scripts/block-skill-self-read.js +72 -0
  32. package/plugins/pbr/scripts/check-agent-state-write.js +63 -0
  33. package/plugins/pbr/scripts/check-cross-plugin-sync.js +93 -0
  34. package/plugins/pbr/scripts/check-dangerous-commands.js +2 -2
  35. package/plugins/pbr/scripts/check-phase-boundary.js +2 -2
  36. package/plugins/pbr/scripts/check-plan-format.js +111 -23
  37. package/plugins/pbr/scripts/check-roadmap-sync.js +141 -2
  38. package/plugins/pbr/scripts/check-state-sync.js +57 -3
  39. package/plugins/pbr/scripts/check-subagent-output.js +1 -1
  40. package/plugins/pbr/scripts/check-summary-gate.js +1 -1
  41. package/plugins/pbr/scripts/log-tool-failure.js +1 -1
  42. package/plugins/pbr/scripts/post-write-dispatch.js +55 -0
  43. package/plugins/pbr/scripts/pre-bash-dispatch.js +2 -2
  44. package/plugins/pbr/scripts/pre-write-dispatch.js +9 -1
  45. package/plugins/pbr/scripts/session-cleanup.js +3 -4
  46. package/plugins/pbr/scripts/validate-task.js +15 -20
  47. package/plugins/pbr/skills/begin/SKILL.md +2 -44
  48. package/plugins/pbr/skills/build/SKILL.md +7 -102
  49. package/plugins/pbr/skills/config/SKILL.md +1 -1
  50. package/plugins/pbr/skills/continue/SKILL.md +8 -2
  51. package/plugins/pbr/skills/help/SKILL.md +17 -0
  52. package/plugins/pbr/skills/import/SKILL.md +2 -0
  53. package/plugins/pbr/skills/milestone/SKILL.md +2 -0
  54. package/plugins/pbr/skills/pause/SKILL.md +7 -1
  55. package/plugins/pbr/skills/review/SKILL.md +4 -102
  56. package/plugins/copilot-pbr/references/agent-interactions.md +0 -135
  57. package/plugins/copilot-pbr/references/planning-config.md +0 -214
  58. package/plugins/copilot-pbr/references/subagent-coordination.md +0 -120
  59. package/plugins/copilot-pbr/skills/shared/error-recovery-strategies.md +0 -51
  60. package/plugins/copilot-pbr/skills/shared/error-reporting.md +0 -81
  61. package/plugins/copilot-pbr/skills/shared/progress-display.md +0 -53
  62. package/plugins/copilot-pbr/skills/shared/state-loading.md +0 -63
  63. package/plugins/cursor-pbr/references/agent-interactions.md +0 -135
  64. package/plugins/cursor-pbr/references/planning-config.md +0 -214
  65. package/plugins/cursor-pbr/references/subagent-coordination.md +0 -120
  66. package/plugins/cursor-pbr/skills/shared/error-recovery-strategies.md +0 -51
  67. package/plugins/cursor-pbr/skills/shared/error-reporting.md +0 -81
  68. package/plugins/cursor-pbr/skills/shared/progress-display.md +0 -53
  69. package/plugins/cursor-pbr/skills/shared/state-loading.md +0 -63
  70. package/plugins/pbr/references/agent-interactions.md +0 -134
  71. package/plugins/pbr/references/planning-config.md +0 -213
  72. package/plugins/pbr/references/subagent-coordination.md +0 -119
  73. package/plugins/pbr/skills/shared/error-recovery-strategies.md +0 -51
  74. package/plugins/pbr/skills/shared/error-reporting.md +0 -81
  75. package/plugins/pbr/skills/shared/progress-display.md +0 -53
  76. package/plugins/pbr/skills/shared/state-loading.md +0 -62
package/CHANGELOG.md CHANGED
@@ -5,6 +5,48 @@ 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.22.1](https://github.com/SienkLogic/plan-build-run/compare/plan-build-run-v2.22.0...plan-build-run-v2.22.1) (2026-02-24)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **tools:** standardize error messages with severity prefix and actionable next-steps ([3b3b6dd](https://github.com/SienkLogic/plan-build-run/commit/3b3b6dd2cd1d868896edccfec19acefcb70b087f))
14
+
15
+ ## [2.22.0](https://github.com/SienkLogic/plan-build-run/compare/plan-build-run-v2.21.1...plan-build-run-v2.22.0) (2026-02-23)
16
+
17
+
18
+ ### Features
19
+
20
+ * **24-01:** add check-agent-state-write.js module ([b73ab69](https://github.com/SienkLogic/plan-build-run/commit/b73ab69d8893970595d538a6289d8183b7b08b2b))
21
+ * **24-01:** wire agent state write blocker into pre-write-dispatch ([9f46053](https://github.com/SienkLogic/plan-build-run/commit/9f460530d21e4c3f37389f0bd2731ad0fd99e593))
22
+ * **24-02:** add .auto-next fallback writes to auto_advance hard stops in build skill ([9d59fc1](https://github.com/SienkLogic/plan-build-run/commit/9d59fc13b494cacdbe71e4e236d89bba0724a412))
23
+ * **25-01:** add ROADMAP.md read to continue skill for milestone boundary detection ([49482c2](https://github.com/SienkLogic/plan-build-run/commit/49482c2a7c0fbe49a39b215bf9070381295daa1c))
24
+ * **25-01:** GREEN - add validateRoadmap and ROADMAP.md validation to check-plan-format ([73256de](https://github.com/SienkLogic/plan-build-run/commit/73256dea9ea9c86a55dbd63fe057678e9757a798))
25
+ * **25-01:** GREEN - PLAN.md writes trigger ROADMAP Planning status without regression ([e8e028a](https://github.com/SienkLogic/plan-build-run/commit/e8e028ae3528a856a8c406a3b508802550e0f75f))
26
+ * **25-02:** GREEN - add checkRoadmapWrite routing to post-write-dispatch ([c7db2e0](https://github.com/SienkLogic/plan-build-run/commit/c7db2e0a4433a962a4f499941b29927a16583425))
27
+ * **25-02:** GREEN - implement isHighRisk with status regression and phase gap detection ([cea48b4](https://github.com/SienkLogic/plan-build-run/commit/cea48b4ccce2554a7c698af280e2725a233e69cb))
28
+ * **25-02:** GREEN - implement validatePostMilestone for milestone completion checks ([c666de8](https://github.com/SienkLogic/plan-build-run/commit/c666de84530eb7a6310a8def7744cec4ff5f8358))
29
+ * **26-02:** GREEN - add 150-line advisory warning to checkStateWrite ([9374009](https://github.com/SienkLogic/plan-build-run/commit/937400997580e9666f9efa18b4e0a80c5fe3b668))
30
+ * **26-02:** GREEN - add cross-plugin sync advisory hook ([a55ad12](https://github.com/SienkLogic/plan-build-run/commit/a55ad1273a7193cc521cd6e953ea185f51e7af50))
31
+ * **27-01:** add PreToolUse Read hook to block SKILL.md self-reads ([afe6acd](https://github.com/SienkLogic/plan-build-run/commit/afe6acd8a55a0807e28266b35b2f4fe961c9ecf5))
32
+ * **27-01:** add session length guard to auto-continue with warn at 3, hard-stop at 6 ([fd394d8](https://github.com/SienkLogic/plan-build-run/commit/fd394d893f2e7d93ad4a4bb29acd0a889da3fd67))
33
+
34
+
35
+ ### Bug Fixes
36
+
37
+ * **24-01:** remove building from ADVANCED_STATUSES gate ([6e1fdf7](https://github.com/SienkLogic/plan-build-run/commit/6e1fdf7fb3897efdb1dca2ef77dbab78bab13ed2))
38
+ * **24-02:** raise consecutive-continue guard threshold from 3 to 6 ([918394c](https://github.com/SienkLogic/plan-build-run/commit/918394c34356f84772a4454061b312601f8ca26d))
39
+ * **24-02:** remove .auto-next cleanup from session-cleanup to prevent race with Stop hook ([d86e39e](https://github.com/SienkLogic/plan-build-run/commit/d86e39e48b51a3765e42c2807ee7ef277f8d3a5d))
40
+ * **25-02:** remove unused path import and result variable (lint) ([f84764a](https://github.com/SienkLogic/plan-build-run/commit/f84764ae3b4a5fce09a7d126624bb1719c57c10b))
41
+ * **26-01:** add CRITICAL dual-update markers to import Step 8b and milestone new Step 8 ([36bd68c](https://github.com/SienkLogic/plan-build-run/commit/36bd68c42d2fc556581de8f2f23a7b9d6447392b))
42
+ * **26-01:** add CRITICAL frontmatter update marker to pause skill STATE.md step ([ec35f3b](https://github.com/SienkLogic/plan-build-run/commit/ec35f3b529c1fe2b2928bb8ef97d768b101f2f0b))
43
+ * **26-02:** sync cross-plugin-sync hook to cursor-pbr and copilot-pbr hooks.json ([2083a1d](https://github.com/SienkLogic/plan-build-run/commit/2083a1d11c1ced3c7f2b4dc83df2c2a4ed684529))
44
+
45
+
46
+ ### Documentation
47
+
48
+ * **27-01:** add no-reread anti-pattern to executor agents across all plugins ([8b572fa](https://github.com/SienkLogic/plan-build-run/commit/8b572fa6f43dfc3fe1a0ae8caf167ce2351f46f9))
49
+
8
50
  ## [2.21.1](https://github.com/SienkLogic/plan-build-run/compare/plan-build-run-v2.21.0...plan-build-run-v2.21.1) (2026-02-23)
9
51
 
10
52
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sienklogic/plan-build-run",
3
- "version": "2.21.1",
3
+ "version": "2.22.1",
4
4
  "description": "Plan it, Build it, Run it — structured development workflow for Claude Code",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -254,6 +254,7 @@ Record timestamps at start and end using `node -e "console.log(new Date().toISOS
254
254
  11. DO NOT continue past a checkpoint — STOP means STOP
255
255
  12. DO NOT re-execute completed tasks when continuing
256
256
  13. DO NOT force-push or amend commits
257
+ 14. DO NOT re-read PLAN.md or PLAN files if the plan was already provided in your prompt context — this wastes tokens on redundant reads
257
258
 
258
259
  ---
259
260
 
@@ -28,18 +28,6 @@
28
28
  }
29
29
  ]
30
30
  },
31
- {
32
- "matcher": "Write|Edit",
33
- "hooks": [
34
- {
35
- "type": "command",
36
- "bash": "node \"$(cd \"$(dirname \"$0\")\" && pwd)/../../pbr/scripts/run-hook.js\" post-write-quality.js",
37
- "powershell": "node (Join-Path (Split-Path -Parent $PSScriptRoot) 'pbr\\scripts\\run-hook.js') post-write-quality.js",
38
- "cwd": ".",
39
- "timeoutSec": 15
40
- }
41
- ]
42
- },
43
31
  {
44
32
  "matcher": "Task",
45
33
  "hooks": [
@@ -91,6 +79,18 @@
91
79
  }
92
80
  ],
93
81
  "preToolUse": [
82
+ {
83
+ "matcher": "Read",
84
+ "hooks": [
85
+ {
86
+ "type": "command",
87
+ "bash": "node \"$(cd \"$(dirname \"$0\")\" && pwd)/../../pbr/scripts/run-hook.js\" block-skill-self-read.js",
88
+ "powershell": "node (Join-Path (Split-Path -Parent $PSScriptRoot) 'pbr\\scripts\\run-hook.js') block-skill-self-read.js",
89
+ "cwd": ".",
90
+ "timeoutSec": 15
91
+ }
92
+ ]
93
+ },
94
94
  {
95
95
  "matcher": "Bash",
96
96
  "hooks": [
@@ -103,6 +103,18 @@
103
103
  }
104
104
  ]
105
105
  },
106
+ {
107
+ "matcher": "Bash",
108
+ "hooks": [
109
+ {
110
+ "type": "command",
111
+ "bash": "node \"$(cd \"$(dirname \"$0\")\" && pwd)/../../pbr/scripts/run-hook.js\" check-cross-plugin-sync.js",
112
+ "powershell": "node (Join-Path (Split-Path -Parent $PSScriptRoot) 'pbr\\scripts\\run-hook.js') check-cross-plugin-sync.js",
113
+ "cwd": ".",
114
+ "timeoutSec": 15
115
+ }
116
+ ]
117
+ },
106
118
  {
107
119
  "matcher": "Write|Edit",
108
120
  "hooks": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pbr",
3
3
  "displayName": "Plan-Build-Run",
4
- "version": "2.21.1",
4
+ "version": "2.22.1",
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",
@@ -503,48 +503,9 @@ Delete `.planning/.active-skill` if it exists. This must happen on all paths (su
503
503
 
504
504
  ## Completion
505
505
 
506
- After all steps complete, present the final summary:
506
+ After all steps complete, present the final summary using the stage banner format from Read `references/ui-formatting.md`:
507
507
 
508
- Use the branded stage banner from `references/ui-formatting.md`:
509
-
510
- ```
511
- ╔══════════════════════════════════════════════════════════════╗
512
- ║ PLAN-BUILD-RUN ► PROJECT INITIALIZED ║
513
- ╚══════════════════════════════════════════════════════════════╝
514
-
515
- **{name}**
516
-
517
- {core value one-liner}
518
-
519
- Roadmap: {N} phases
520
- 1. {Phase 1 name}
521
- 2. {Phase 2 name}
522
- ...
523
-
524
- Requirements: {N} committed, {M} deferred, {K} out-of-scope
525
- ```
526
-
527
- Then use the "Next Up" routing block:
528
- ```
529
- ---
530
-
531
- ## Next Up
532
-
533
- **Phase 1: {Name}** — {one-line goal}
534
-
535
- `/pbr:discuss 1`
536
-
537
- `/clear` first for a fresh context window
538
-
539
- ---
540
-
541
- **Also available:**
542
- - `/pbr:explore` — open-ended exploration before planning
543
- - `/pbr:plan 1` — jump straight to planning Phase 1
544
- - `/pbr:config` — adjust workflow settings
545
-
546
- ---
547
- ```
508
+ Display the `PROJECT INITIALIZED` banner with project name, core value, phase list, and requirement counts. Then display the "Next Up" block (see § "Next Up Block" in ui-formatting.md) pointing to `/pbr:discuss 1` with alternatives: `/pbr:explore`, `/pbr:plan 1`, `/pbr:config`.
548
509
 
549
510
  ---
550
511
 
@@ -751,9 +751,9 @@ Chain to the next skill directly within this session. This eliminates manual pha
751
751
  |-------------|-------------|-----|
752
752
  | Verification passed, more phases | Plan next phase | `Skill({ skill: "pbr:plan", args: "{N+1}" })` |
753
753
  | Verification skipped | Run review | `Skill({ skill: "pbr:review", args: "{N}" })` |
754
- | Verification gaps found | **HARD STOP** — present gaps to user | Do NOT auto-advance past failures |
755
- | Last phase in current milestone | **HARD STOP** — milestone boundary | Suggest `/pbr:milestone audit`. Explain: "auto_advance pauses at milestone boundaries — your sign-off is required." |
756
- | Build errors occurred | **HARD STOP** — errors need human review | Do NOT auto-advance past errors |
754
+ | Verification gaps found | **HARD STOP** — present gaps to user | If `auto_continue` also true: write `.planning/.auto-next` with `/pbr:review {N}` before stopping. Do NOT auto-advance past failures. |
755
+ | Last phase in current milestone | **HARD STOP** — milestone boundary | If `auto_continue` also true: write `.planning/.auto-next` with `/pbr:milestone complete` before stopping. Suggest `/pbr:milestone audit`. Explain: "auto_advance pauses at milestone boundaries — your sign-off is required." |
756
+ | Build errors occurred | **HARD STOP** — errors need human review | If `auto_continue` also true: write `.planning/.auto-next` with `/pbr:build {N}` before stopping. Do NOT auto-advance past errors. |
757
757
 
758
758
  After invoking the chained skill, it runs within the same session. When it completes, the chained skill may itself chain further (review→plan, plan→build) if auto_advance remains true. This creates the full cycle: build→review→plan→build→...
759
759
 
@@ -807,91 +807,11 @@ Total files modified: {count}
807
807
  Deviations: {count}
808
808
  ```
809
809
 
810
- Then present the appropriate branded banner:
810
+ Then present the appropriate branded banner from Read `references/ui-formatting.md` § "Completion Summary Templates":
811
811
 
812
- **If `passed` + more phases:**
813
- ```
814
- ╔══════════════════════════════════════════════════════════════╗
815
- ║ PLAN-BUILD-RUN ► PHASE {N} COMPLETE ✓ ║
816
- ╚══════════════════════════════════════════════════════════════╝
817
-
818
- **Phase {N}: {Name}**
819
-
820
- {X} plans executed
821
- Goal verified ✓
822
-
823
- ╔══════════════════════════════════════════════════════════════╗
824
- ║ ▶ NEXT UP ║
825
- ╚══════════════════════════════════════════════════════════════╝
826
-
827
- **Phase {N+1}: {Name}** — {Goal from ROADMAP.md}
828
-
829
- `/pbr:plan {N+1}`
830
-
831
- <sub>`/clear` first → fresh context window</sub>
832
-
833
- **Also available:**
834
- - `/pbr:review {N}` — manual acceptance testing before continuing
835
- - `/pbr:discuss {N+1}` — talk through the next phase before planning
836
- - `/pbr:status` — see full project status
837
-
838
- ```
839
-
840
- **If `passed` + last phase:**
841
- ```
842
- ╔══════════════════════════════════════════════════════════════╗
843
- ║ PLAN-BUILD-RUN ► MILESTONE COMPLETE 🎉 ║
844
- ╚══════════════════════════════════════════════════════════════╝
845
-
846
- {N} phases completed
847
- All phase goals verified ✓
848
-
849
- ╔══════════════════════════════════════════════════════════════╗
850
- ║ ▶ NEXT UP ║
851
- ╚══════════════════════════════════════════════════════════════╝
852
-
853
- **Audit milestone** — verify requirements, cross-phase integration, E2E flows
854
-
855
- `/pbr:milestone audit`
856
-
857
- <sub>`/clear` first → fresh context window</sub>
858
-
859
- **Also available:**
860
- - `/pbr:review` — manual acceptance testing
861
- - `/pbr:milestone complete` — archive milestone after audit passes
862
-
863
- ```
864
-
865
- **If `gaps_found`:**
866
- ```
867
- ╔══════════════════════════════════════════════════════════════╗
868
- ║ PLAN-BUILD-RUN ► PHASE {N} GAPS FOUND ⚠ ║
869
- ╚══════════════════════════════════════════════════════════════╝
870
-
871
- **Phase {N}: {Name}**
872
-
873
- Score: {X}/{Y} must-haves verified
874
- Report: .planning/phases/{phase_dir}/VERIFICATION.md
875
-
876
- ### What's Missing
877
-
878
- {Extract gap summaries from VERIFICATION.md}
879
-
880
- ╔══════════════════════════════════════════════════════════════╗
881
- ║ ▶ NEXT UP ║
882
- ╚══════════════════════════════════════════════════════════════╝
883
-
884
- **Plan gap closure** — create additional plans to complete the phase
885
-
886
- `/pbr:plan {N} --gaps`
887
-
888
- <sub>`/clear` first → fresh context window</sub>
889
-
890
- **Also available:**
891
- - `cat .planning/phases/{phase_dir}/VERIFICATION.md` — see full report
892
- - `/pbr:review {N}` — manual testing before planning
893
-
894
- ```
812
+ - **If `passed` + more phases:** Use the "Phase Complete" template. Fill in phase number, name, plan count, and next phase details.
813
+ - **If `passed` + last phase:** Use the "Milestone Complete" template. Fill in phase count.
814
+ - **If `gaps_found`:** Use the "Gaps Found" template. Fill in phase number, name, score, and gap summaries from VERIFICATION.md.
895
815
 
896
816
  **8g. Display USER-SETUP.md (conditional):**
897
817
 
@@ -23,7 +23,7 @@ Reads and writes `.planning/config.json`. Interactive configuration with AskUser
23
23
 
24
24
  ## References
25
25
 
26
- - `references/planning-config.md` — Full config.json schema (54 fields, 16 feature toggles, validation rules)
26
+ - `references/config-reference.md` — Full config.json schema (54 fields, 16 feature toggles, validation rules)
27
27
  - `references/model-profiles.md` — Model selection guide for agent spawning
28
28
 
29
29
  ## Flow
@@ -48,6 +48,12 @@ Read `.planning/STATE.md` and determine current position:
48
48
  - Current plan progress
49
49
  - Phase status (planning, building, reviewing, complete)
50
50
 
51
+ Then read `.planning/ROADMAP.md` to identify the current milestone boundary:
52
+ - Find which `## Milestone:` section contains the current phase
53
+ - Determine if the current phase is the **last phase** in that milestone section
54
+ - If this is the last phase and it is verified/complete, warn: "This is the final phase of milestone {name}. After verification, run `/pbr:milestone` to complete it."
55
+ - If the current phase's `Depends on` references a phase from the **previous** milestone that is not yet complete, warn: "Cross-milestone dependency: Phase {N} depends on Phase {M} from milestone {prev}, which is not yet complete."
56
+
51
57
  If STATE.md doesn't exist, display:
52
58
  ```
53
59
  ERROR
@@ -67,10 +73,10 @@ Before proceeding to priority evaluation, check for runaway continue chains:
67
73
  - Check `.planning/.active-skill` file — if it contains `continue`, treat as a chained continue
68
74
  - Check STATE.md `last_action` field — if it contains `continue`, treat as a chained continue
69
75
  - If neither source is available, assume this is the first invocation (do not warn)
70
- 4. **If this is the 3rd consecutive `/pbr:continue` in a row**, display:
76
+ 4. **If this is the 6th consecutive `/pbr:continue` in a row**, display:
71
77
 
72
78
  ```
73
- WARNING: Context budget warning: 3 consecutive auto-continues detected.
79
+ WARNING: Context budget warning: 6 consecutive auto-continues detected.
74
80
  Recommend running /pbr:pause then resuming in a fresh session.
75
81
  ```
76
82
 
@@ -117,6 +117,23 @@ Display the following reference to the user:
117
117
  | `/pbr:dashboard --port <N>` | Launch dashboard on a specific port. |
118
118
  | `/pbr:statusline` | Install or configure the PBR status line in Claude Code. |
119
119
 
120
+ ## Choose Your Command
121
+
122
+ Not sure which command to use? Follow this guide:
123
+
124
+ | I want to... | Command |
125
+ |--------------|---------|
126
+ | Start a new project | `/pbr:begin` |
127
+ | Fix a bug or investigate an error | `/pbr:debug` |
128
+ | Think through an idea or approach | `/pbr:explore` |
129
+ | Do a small task (≤3 files) | `/pbr:quick` |
130
+ | Plan a complex change (4+ files) | `/pbr:plan <N>` |
131
+ | See where I am and what's next | `/pbr:status` |
132
+ | Auto-execute the next step | `/pbr:continue` |
133
+ | Describe something and let PBR route it | `/pbr:do <description>` |
134
+ | Lock decisions for a specific phase | `/pbr:discuss <N>` |
135
+ | Check project health | `/pbr:health` |
136
+
120
137
  ## Typical Workflow
121
138
 
122
139
  ```
@@ -337,6 +337,8 @@ Perform all state updates in this order:
337
337
  5. Update the `Status` column to `planned`
338
338
  6. Save the file — do NOT skip this step
339
339
 
340
+ **CRITICAL -- DO NOT SKIP: Update STATE.md frontmatter AND body with import status.**
341
+
340
342
  **8b. Update STATE.md:**
341
343
  - Set current phase plan status to "planned"
342
344
  - Note source: "imported from {filepath}" or "imported from user input"
@@ -146,6 +146,8 @@ Start a new milestone cycle with new phases.
146
146
  - **Status:** In progress
147
147
  ```
148
148
 
149
+ **CRITICAL -- DO NOT SKIP: Update STATE.md frontmatter AND body with new milestone info.**
150
+
149
151
  8. **Update STATE.md:**
150
152
  - Set current phase to the first new phase
151
153
  - Update milestone info
@@ -130,7 +130,13 @@ Read `skills/pause/templates/continue-here.md.tmpl` for the handoff file format.
130
130
 
131
131
  ### Step 5: Update STATE.md
132
132
 
133
- Update the Session Continuity section of STATE.md:
133
+ **CRITICAL -- DO NOT SKIP: Update STATE.md frontmatter AND body. Both must be updated atomically.**
134
+
135
+ First, update the STATE.md YAML frontmatter:
136
+ - Set `last_command: "/pbr:pause"`
137
+ - Set `last_activity: {ISO datetime}`
138
+
139
+ Then update the Session Continuity section of STATE.md:
134
140
 
135
141
  ```markdown
136
142
  ### Session Continuity
@@ -542,103 +542,11 @@ Delete `.planning/.active-skill` if it exists. This must happen on all paths (su
542
542
 
543
543
  ## Completion
544
544
 
545
- After review completes, always present a clear next action:
545
+ After review completes, always present a clear next action using the completion banners from Read `references/ui-formatting.md` § "Completion Summary Templates":
546
546
 
547
- **If verified (not final phase):**
548
-
549
- Display the "Phase Complete" banner inline:
550
- ```
551
- ╔══════════════════════════════════════════════════════════════╗
552
- ║ PLAN-BUILD-RUN ► PHASE {N} COMPLETE ║
553
- ╚══════════════════════════════════════════════════════════════╝
554
-
555
- **Phase {N}: {Name}**
556
-
557
- {X} plans executed
558
- Goal verified
559
- ```
560
-
561
- Then the branded "Next Up" block:
562
- ```
563
- ---
564
-
565
- ## Next Up
566
-
567
- **Phase {N+1}: {Name}** — {Goal from ROADMAP.md}
568
-
569
- `/pbr:plan {N+1}`
570
-
571
- `/clear` first for a fresh context window
572
-
573
- ---
574
-
575
- **Also available:**
576
- - `/pbr:discuss {N+1}` — talk through details before planning
577
- - `/pbr:status` — see full project status
578
-
579
- ---
580
- ```
581
-
582
- **If gaps remain:**
583
- ```
584
- ╔══════════════════════════════════════════════════════════════╗
585
- ║ PLAN-BUILD-RUN ► PHASE {N} GAPS FOUND ║
586
- ╚══════════════════════════════════════════════════════════════╝
587
-
588
- **Phase {N}: {name}** — {count} gaps remaining
589
-
590
- ---
591
-
592
- ## Next Up
593
-
594
- **Fix gaps** — diagnose and create fix plans
595
-
596
- `/pbr:review {N} --auto-fix`
597
-
598
- `/clear` first for a fresh context window
599
-
600
- ---
601
-
602
- **Also available:**
603
- - `/pbr:plan {N} --gaps` — create fix plans manually
604
- - Fix manually, then `/pbr:review {N}`
605
-
606
- ---
607
- ```
608
-
609
- **If final phase:**
610
-
611
- Display the "Milestone Complete" banner inline:
612
- ```
613
- ╔══════════════════════════════════════════════════════════════╗
614
- ║ PLAN-BUILD-RUN ► MILESTONE COMPLETE ║
615
- ╚══════════════════════════════════════════════════════════════╝
616
-
617
- {N} phases completed
618
- All phase goals verified
619
- ```
620
-
621
- Then:
622
- ```
623
- ---
624
-
625
- ## Next Up
626
-
627
- **Audit milestone** — verify cross-phase integration
628
-
629
- `/pbr:milestone audit`
630
-
631
- `/clear` first for a fresh context window
632
-
633
- ---
634
-
635
- **Also available:**
636
- - `/pbr:milestone complete` — archive this milestone and tag it
637
- - `/pbr:milestone new` — start planning next features
638
- - `/pbr:status` — see final project status
639
-
640
- ---
641
- ```
547
+ - **If verified (not final phase):** Use the "Phase Complete" template. Fill in phase number, name, plan count, and next phase details.
548
+ - **If gaps remain:** Use the "Gaps Found" template. Fill in phase number, name, gap count, and gap summaries.
549
+ - **If final phase:** Use the "Milestone Complete" template. Fill in phase count.
642
550
 
643
551
  ---
644
552
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pbr",
3
3
  "displayName": "Plan-Build-Run",
4
- "version": "2.21.1",
4
+ "version": "2.22.1",
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",
@@ -253,6 +253,7 @@ Record timestamps at start and end using `node -e "console.log(new Date().toISOS
253
253
  11. DO NOT continue past a checkpoint — STOP means STOP
254
254
  12. DO NOT re-execute completed tasks when continuing
255
255
  13. DO NOT force-push or amend commits
256
+ 14. DO NOT re-read PLAN.md or PLAN files if the plan was already provided in your prompt context — this wastes tokens on redundant reads
256
257
 
257
258
  ---
258
259
 
@@ -24,16 +24,6 @@
24
24
  }
25
25
  ]
26
26
  },
27
- {
28
- "matcher": "Write|Edit",
29
- "hooks": [
30
- {
31
- "type": "command",
32
- "command": "node -e \"var r=process.env.CLAUDE_PLUGIN_ROOT||'',m=r.match(/^\\/([a-zA-Z])\\/(.*)/);if(m)r=m[1]+String.fromCharCode(58)+String.fromCharCode(92)+m[2];require(require('path').resolve(r,'..','pbr','scripts','run-hook.js'))\" post-write-quality.js",
33
- "statusMessage": "Running quality checks..."
34
- }
35
- ]
36
- },
37
27
  {
38
28
  "matcher": "Task",
39
29
  "hooks": [
@@ -77,6 +67,16 @@
77
67
  }
78
68
  ],
79
69
  "PreToolUse": [
70
+ {
71
+ "matcher": "Read",
72
+ "hooks": [
73
+ {
74
+ "type": "command",
75
+ "command": "node -e \"var r=process.env.CLAUDE_PLUGIN_ROOT||'',m=r.match(/^\\/([a-zA-Z])\\/(.*)/);if(m)r=m[1]+String.fromCharCode(58)+String.fromCharCode(92)+m[2];require(require('path').resolve(r,'..','pbr','scripts','run-hook.js'))\" block-skill-self-read.js",
76
+ "statusMessage": "Checking skill self-read..."
77
+ }
78
+ ]
79
+ },
80
80
  {
81
81
  "matcher": "Bash",
82
82
  "hooks": [
@@ -87,6 +87,16 @@
87
87
  }
88
88
  ]
89
89
  },
90
+ {
91
+ "matcher": "Bash",
92
+ "hooks": [
93
+ {
94
+ "type": "command",
95
+ "command": "node -e \"var r=process.env.CLAUDE_PLUGIN_ROOT||'',m=r.match(/^\\/([a-zA-Z])\\/(.*)/);if(m)r=m[1]+String.fromCharCode(58)+String.fromCharCode(92)+m[2];require(require('path').resolve(r,'..','pbr','scripts','run-hook.js'))\" check-cross-plugin-sync.js",
96
+ "statusMessage": "Checking cross-plugin sync..."
97
+ }
98
+ ]
99
+ },
90
100
  {
91
101
  "matcher": "Write|Edit",
92
102
  "hooks": [
@@ -503,48 +503,9 @@ Delete `.planning/.active-skill` if it exists. This must happen on all paths (su
503
503
 
504
504
  ## Completion
505
505
 
506
- After all steps complete, present the final summary:
506
+ After all steps complete, present the final summary using the stage banner format from Read `references/ui-formatting.md`:
507
507
 
508
- Use the branded stage banner from `references/ui-formatting.md`:
509
-
510
- ```
511
- ╔══════════════════════════════════════════════════════════════╗
512
- ║ PLAN-BUILD-RUN ► PROJECT INITIALIZED ║
513
- ╚══════════════════════════════════════════════════════════════╝
514
-
515
- **{name}**
516
-
517
- {core value one-liner}
518
-
519
- Roadmap: {N} phases
520
- 1. {Phase 1 name}
521
- 2. {Phase 2 name}
522
- ...
523
-
524
- Requirements: {N} committed, {M} deferred, {K} out-of-scope
525
- ```
526
-
527
- Then use the "Next Up" routing block:
528
- ```
529
- ---
530
-
531
- ## Next Up
532
-
533
- **Phase 1: {Name}** — {one-line goal}
534
-
535
- `/pbr:discuss 1`
536
-
537
- `/clear` first for a fresh context window
538
-
539
- ---
540
-
541
- **Also available:**
542
- - `/pbr:explore` — open-ended exploration before planning
543
- - `/pbr:plan 1` — jump straight to planning Phase 1
544
- - `/pbr:config` — adjust workflow settings
545
-
546
- ---
547
- ```
508
+ Display the `PROJECT INITIALIZED` banner with project name, core value, phase list, and requirement counts. Then display the "Next Up" block (see § "Next Up Block" in ui-formatting.md) pointing to `/pbr:discuss 1` with alternatives: `/pbr:explore`, `/pbr:plan 1`, `/pbr:config`.
548
509
 
549
510
  ---
550
511