@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.
- package/CHANGELOG.md +42 -0
- package/package.json +1 -1
- package/plugins/copilot-pbr/agents/executor.agent.md +1 -0
- package/plugins/copilot-pbr/hooks/hooks.json +24 -12
- package/plugins/copilot-pbr/plugin.json +1 -1
- package/plugins/copilot-pbr/skills/begin/SKILL.md +2 -41
- package/plugins/copilot-pbr/skills/build/SKILL.md +7 -87
- package/plugins/copilot-pbr/skills/config/SKILL.md +1 -1
- package/plugins/copilot-pbr/skills/continue/SKILL.md +8 -2
- package/plugins/copilot-pbr/skills/help/SKILL.md +17 -0
- package/plugins/copilot-pbr/skills/import/SKILL.md +2 -0
- package/plugins/copilot-pbr/skills/milestone/SKILL.md +2 -0
- package/plugins/copilot-pbr/skills/pause/SKILL.md +7 -1
- package/plugins/copilot-pbr/skills/review/SKILL.md +4 -96
- package/plugins/cursor-pbr/.cursor-plugin/plugin.json +1 -1
- package/plugins/cursor-pbr/agents/executor.md +1 -0
- package/plugins/cursor-pbr/hooks/hooks.json +20 -10
- package/plugins/cursor-pbr/skills/begin/SKILL.md +2 -41
- package/plugins/cursor-pbr/skills/build/SKILL.md +7 -87
- package/plugins/cursor-pbr/skills/config/SKILL.md +1 -1
- package/plugins/cursor-pbr/skills/continue/SKILL.md +8 -2
- package/plugins/cursor-pbr/skills/help/SKILL.md +17 -0
- package/plugins/cursor-pbr/skills/import/SKILL.md +2 -0
- package/plugins/cursor-pbr/skills/milestone/SKILL.md +2 -0
- package/plugins/cursor-pbr/skills/pause/SKILL.md +7 -1
- package/plugins/cursor-pbr/skills/review/SKILL.md +4 -96
- package/plugins/pbr/.claude-plugin/plugin.json +1 -1
- package/plugins/pbr/agents/executor.md +1 -0
- package/plugins/pbr/hooks/hooks.json +20 -10
- package/plugins/pbr/scripts/auto-continue.js +26 -2
- package/plugins/pbr/scripts/block-skill-self-read.js +72 -0
- package/plugins/pbr/scripts/check-agent-state-write.js +63 -0
- package/plugins/pbr/scripts/check-cross-plugin-sync.js +93 -0
- package/plugins/pbr/scripts/check-dangerous-commands.js +2 -2
- package/plugins/pbr/scripts/check-phase-boundary.js +2 -2
- package/plugins/pbr/scripts/check-plan-format.js +111 -23
- package/plugins/pbr/scripts/check-roadmap-sync.js +141 -2
- package/plugins/pbr/scripts/check-state-sync.js +57 -3
- package/plugins/pbr/scripts/check-subagent-output.js +1 -1
- package/plugins/pbr/scripts/check-summary-gate.js +1 -1
- package/plugins/pbr/scripts/log-tool-failure.js +1 -1
- package/plugins/pbr/scripts/post-write-dispatch.js +55 -0
- package/plugins/pbr/scripts/pre-bash-dispatch.js +2 -2
- package/plugins/pbr/scripts/pre-write-dispatch.js +9 -1
- package/plugins/pbr/scripts/session-cleanup.js +3 -4
- package/plugins/pbr/scripts/validate-task.js +15 -20
- package/plugins/pbr/skills/begin/SKILL.md +2 -44
- package/plugins/pbr/skills/build/SKILL.md +7 -102
- package/plugins/pbr/skills/config/SKILL.md +1 -1
- package/plugins/pbr/skills/continue/SKILL.md +8 -2
- package/plugins/pbr/skills/help/SKILL.md +17 -0
- package/plugins/pbr/skills/import/SKILL.md +2 -0
- package/plugins/pbr/skills/milestone/SKILL.md +2 -0
- package/plugins/pbr/skills/pause/SKILL.md +7 -1
- package/plugins/pbr/skills/review/SKILL.md +4 -102
- package/plugins/copilot-pbr/references/agent-interactions.md +0 -135
- package/plugins/copilot-pbr/references/planning-config.md +0 -214
- package/plugins/copilot-pbr/references/subagent-coordination.md +0 -120
- package/plugins/copilot-pbr/skills/shared/error-recovery-strategies.md +0 -51
- package/plugins/copilot-pbr/skills/shared/error-reporting.md +0 -81
- package/plugins/copilot-pbr/skills/shared/progress-display.md +0 -53
- package/plugins/copilot-pbr/skills/shared/state-loading.md +0 -63
- package/plugins/cursor-pbr/references/agent-interactions.md +0 -135
- package/plugins/cursor-pbr/references/planning-config.md +0 -214
- package/plugins/cursor-pbr/references/subagent-coordination.md +0 -120
- package/plugins/cursor-pbr/skills/shared/error-recovery-strategies.md +0 -51
- package/plugins/cursor-pbr/skills/shared/error-reporting.md +0 -81
- package/plugins/cursor-pbr/skills/shared/progress-display.md +0 -53
- package/plugins/cursor-pbr/skills/shared/state-loading.md +0 -63
- package/plugins/pbr/references/agent-interactions.md +0 -134
- package/plugins/pbr/references/planning-config.md +0 -213
- package/plugins/pbr/references/subagent-coordination.md +0 -119
- package/plugins/pbr/skills/shared/error-recovery-strategies.md +0 -51
- package/plugins/pbr/skills/shared/error-reporting.md +0 -81
- package/plugins/pbr/skills/shared/progress-display.md +0 -53
- 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
|
@@ -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.
|
|
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
|
-
|
|
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/
|
|
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
|
|
76
|
+
4. **If this is the 6th consecutive `/pbr:continue` in a row**, display:
|
|
71
77
|
|
|
72
78
|
```
|
|
73
|
-
WARNING: Context budget warning:
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|