@sienklogic/plan-build-run 2.22.0 → 2.22.2
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 +14 -0
- package/package.json +1 -1
- package/plugins/copilot-pbr/hooks/hooks.json +0 -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 +4 -84
- package/plugins/copilot-pbr/skills/config/SKILL.md +1 -1
- package/plugins/copilot-pbr/skills/continue/SKILL.md +1 -1
- package/plugins/copilot-pbr/skills/help/SKILL.md +30 -0
- package/plugins/copilot-pbr/skills/milestone/SKILL.md +1 -1
- package/plugins/copilot-pbr/skills/quick/SKILL.md +4 -1
- package/plugins/copilot-pbr/skills/review/SKILL.md +4 -96
- package/plugins/copilot-pbr/skills/setup/SKILL.md +17 -6
- package/plugins/cursor-pbr/.cursor-plugin/plugin.json +1 -1
- package/plugins/cursor-pbr/hooks/hooks.json +0 -10
- package/plugins/cursor-pbr/skills/begin/SKILL.md +2 -41
- package/plugins/cursor-pbr/skills/build/SKILL.md +4 -84
- package/plugins/cursor-pbr/skills/config/SKILL.md +1 -1
- package/plugins/cursor-pbr/skills/continue/SKILL.md +1 -1
- package/plugins/cursor-pbr/skills/help/SKILL.md +30 -0
- package/plugins/cursor-pbr/skills/milestone/SKILL.md +1 -1
- package/plugins/cursor-pbr/skills/quick/SKILL.md +4 -1
- package/plugins/cursor-pbr/skills/review/SKILL.md +4 -96
- package/plugins/cursor-pbr/skills/setup/SKILL.md +17 -6
- package/plugins/pbr/.claude-plugin/plugin.json +1 -1
- package/plugins/pbr/hooks/hooks.json +0 -10
- package/plugins/pbr/scripts/check-cross-plugin-sync.js +1 -1
- package/plugins/pbr/scripts/check-phase-boundary.js +2 -2
- package/plugins/pbr/scripts/check-roadmap-sync.js +1 -1
- package/plugins/pbr/scripts/check-subagent-output.js +1 -1
- package/plugins/pbr/scripts/log-tool-failure.js +1 -1
- package/plugins/pbr/scripts/post-write-dispatch.js +8 -0
- package/plugins/pbr/scripts/pre-bash-dispatch.js +2 -2
- package/plugins/pbr/scripts/validate-task.js +1 -1
- package/plugins/pbr/skills/begin/SKILL.md +2 -44
- package/plugins/pbr/skills/build/SKILL.md +4 -99
- package/plugins/pbr/skills/config/SKILL.md +1 -1
- package/plugins/pbr/skills/continue/SKILL.md +1 -1
- package/plugins/pbr/skills/help/SKILL.md +30 -0
- package/plugins/pbr/skills/milestone/SKILL.md +1 -1
- package/plugins/pbr/skills/quick/SKILL.md +4 -1
- package/plugins/pbr/skills/review/SKILL.md +4 -102
- package/plugins/pbr/skills/setup/SKILL.md +17 -6
- 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
|
@@ -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
|
```
|
|
@@ -130,6 +147,19 @@ Display the following reference to the user:
|
|
|
130
147
|
/pbr:milestone complete ← Archive when done
|
|
131
148
|
```
|
|
132
149
|
|
|
150
|
+
**Shortcut**: After `/pbr:begin`, run `/pbr:continue` repeatedly — it auto-advances through plan → build → review → next phase, stopping at milestones and errors.
|
|
151
|
+
|
|
152
|
+
## status vs continue vs do
|
|
153
|
+
|
|
154
|
+
| | `/pbr:status` | `/pbr:continue` | `/pbr:do <text>` |
|
|
155
|
+
|-|---------------|-----------------|-------------------|
|
|
156
|
+
| **Purpose** | Dashboard — show progress, suggest next | Auto-execute the next logical step | Route freeform text to a skill |
|
|
157
|
+
| **Reads state?** | Yes (full scan) | Yes (minimal) | No |
|
|
158
|
+
| **Modifies files?** | Never | Yes (via delegation) | Depends on routed skill |
|
|
159
|
+
| **Asks questions?** | If multiple options | Never — fully automatic | Only if ambiguous |
|
|
160
|
+
| **Use when...** | You want to see where you are before deciding | You trust PBR to pick and run the next step | You'd rather describe a task in plain English |
|
|
161
|
+
| **Hard stops** | N/A | Milestones, checkpoints, errors, verification gaps | N/A |
|
|
162
|
+
|
|
133
163
|
## Quick Reference
|
|
134
164
|
|
|
135
165
|
- **Context strategy**: `aggressive` (delegate everything) | `balanced` | `minimal` (run inline)
|
|
@@ -235,7 +235,7 @@ Dry-run of milestone completion — shows what would happen without making any c
|
|
|
235
235
|
6. **Display summary:**
|
|
236
236
|
```
|
|
237
237
|
╔══════════════════════════════════════════════════════════════╗
|
|
238
|
-
║ MILESTONE PREVIEW — v{version}
|
|
238
|
+
║ PLAN-BUILD-RUN ► MILESTONE PREVIEW — v{version} ║
|
|
239
239
|
╚══════════════════════════════════════════════════════════════╝
|
|
240
240
|
|
|
241
241
|
Phases to archive: {count}
|
|
@@ -275,7 +275,10 @@ Files: {list of files changed}
|
|
|
275
275
|
|
|
276
276
|
**If partial:**
|
|
277
277
|
```
|
|
278
|
-
|
|
278
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
279
|
+
║ PLAN-BUILD-RUN ► QUICK TASK {NNN} PARTIAL ⚠ ║
|
|
280
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
281
|
+
|
|
279
282
|
Completed: {N} of {M} tasks
|
|
280
283
|
Failed task: {task name} — {failure reason}
|
|
281
284
|
|
|
@@ -543,103 +543,11 @@ Delete `.planning/.active-skill` if it exists. This must happen on all paths (su
|
|
|
543
543
|
|
|
544
544
|
## Completion
|
|
545
545
|
|
|
546
|
-
After review completes, always present a clear next action:
|
|
546
|
+
After review completes, always present a clear next action using the completion banners from Read `references/ui-formatting.md` § "Completion Summary Templates":
|
|
547
547
|
|
|
548
|
-
**If verified (not final phase):**
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
```
|
|
552
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
553
|
-
║ PLAN-BUILD-RUN ► PHASE {N} COMPLETE ║
|
|
554
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
555
|
-
|
|
556
|
-
**Phase {N}: {Name}**
|
|
557
|
-
|
|
558
|
-
{X} plans executed
|
|
559
|
-
Goal verified
|
|
560
|
-
```
|
|
561
|
-
|
|
562
|
-
Then the branded "Next Up" block:
|
|
563
|
-
```
|
|
564
|
-
---
|
|
565
|
-
|
|
566
|
-
## Next Up
|
|
567
|
-
|
|
568
|
-
**Phase {N+1}: {Name}** — {Goal from ROADMAP.md}
|
|
569
|
-
|
|
570
|
-
`/pbr:plan {N+1}`
|
|
571
|
-
|
|
572
|
-
`/clear` first for a fresh context window
|
|
573
|
-
|
|
574
|
-
---
|
|
575
|
-
|
|
576
|
-
**Also available:**
|
|
577
|
-
- `/pbr:discuss {N+1}` — talk through details before planning
|
|
578
|
-
- `/pbr:status` — see full project status
|
|
579
|
-
|
|
580
|
-
---
|
|
581
|
-
```
|
|
582
|
-
|
|
583
|
-
**If gaps remain:**
|
|
584
|
-
```
|
|
585
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
586
|
-
║ PLAN-BUILD-RUN ► PHASE {N} GAPS FOUND ║
|
|
587
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
588
|
-
|
|
589
|
-
**Phase {N}: {name}** — {count} gaps remaining
|
|
590
|
-
|
|
591
|
-
---
|
|
592
|
-
|
|
593
|
-
## Next Up
|
|
594
|
-
|
|
595
|
-
**Fix gaps** — diagnose and create fix plans
|
|
596
|
-
|
|
597
|
-
`/pbr:review {N} --auto-fix`
|
|
598
|
-
|
|
599
|
-
`/clear` first for a fresh context window
|
|
600
|
-
|
|
601
|
-
---
|
|
602
|
-
|
|
603
|
-
**Also available:**
|
|
604
|
-
- `/pbr:plan {N} --gaps` — create fix plans manually
|
|
605
|
-
- Fix manually, then `/pbr:review {N}`
|
|
606
|
-
|
|
607
|
-
---
|
|
608
|
-
```
|
|
609
|
-
|
|
610
|
-
**If final phase:**
|
|
611
|
-
|
|
612
|
-
Display the "Milestone Complete" banner inline:
|
|
613
|
-
```
|
|
614
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
615
|
-
║ PLAN-BUILD-RUN ► MILESTONE COMPLETE ║
|
|
616
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
617
|
-
|
|
618
|
-
{N} phases completed
|
|
619
|
-
All phase goals verified
|
|
620
|
-
```
|
|
621
|
-
|
|
622
|
-
Then:
|
|
623
|
-
```
|
|
624
|
-
---
|
|
625
|
-
|
|
626
|
-
## Next Up
|
|
627
|
-
|
|
628
|
-
**Audit milestone** — verify cross-phase integration
|
|
629
|
-
|
|
630
|
-
`/pbr:milestone audit`
|
|
631
|
-
|
|
632
|
-
`/clear` first for a fresh context window
|
|
633
|
-
|
|
634
|
-
---
|
|
635
|
-
|
|
636
|
-
**Also available:**
|
|
637
|
-
- `/pbr:milestone complete` — archive this milestone and tag it
|
|
638
|
-
- `/pbr:milestone new` — start planning next features
|
|
639
|
-
- `/pbr:status` — see final project status
|
|
640
|
-
|
|
641
|
-
---
|
|
642
|
-
```
|
|
548
|
+
- **If verified (not final phase):** Use the "Phase Complete" template. Fill in phase number, name, plan count, and next phase details.
|
|
549
|
+
- **If gaps remain:** Use the "Gaps Found" template. Fill in phase number, name, gap count, and gap summaries.
|
|
550
|
+
- **If final phase:** Use the "Milestone Complete" template. Fill in phase count.
|
|
643
551
|
|
|
644
552
|
---
|
|
645
553
|
|
|
@@ -273,18 +273,29 @@ Run a quick health check:
|
|
|
273
273
|
Display results:
|
|
274
274
|
|
|
275
275
|
```
|
|
276
|
-
|
|
276
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
277
|
+
║ PLAN-BUILD-RUN ► SETUP COMPLETE ✓ ║
|
|
278
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
277
279
|
|
|
278
280
|
Project: {cwd basename}
|
|
279
281
|
Model profile: {balanced/quality/budget}
|
|
280
282
|
Depth: {quick/standard/comprehensive}
|
|
281
283
|
Features: {list of enabled non-default features}
|
|
282
284
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
285
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
286
|
+
║ ▶ NEXT UP ║
|
|
287
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
288
|
+
|
|
289
|
+
**Start your project** — define requirements and create a roadmap
|
|
290
|
+
|
|
291
|
+
`/pbr:begin`
|
|
292
|
+
|
|
293
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
294
|
+
|
|
295
|
+
**Also available:**
|
|
296
|
+
- `/pbr:scan` — analyze existing codebase (if adding to existing project)
|
|
297
|
+
- `/pbr:config` — fine-tune individual settings
|
|
298
|
+
- `/pbr:help` — command reference
|
|
288
299
|
```
|
|
289
300
|
|
|
290
301
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pbr",
|
|
3
|
-
"version": "2.22.
|
|
3
|
+
"version": "2.22.2",
|
|
4
4
|
"description": "Plan-Build-Run — Structured development workflow for Claude Code. Solves context rot through disciplined subagent delegation, structured planning, atomic execution, and goal-backward verification.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "SienkLogic",
|
|
@@ -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,'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": [
|
|
@@ -65,7 +65,7 @@ function checkCrossPluginSync(data) {
|
|
|
65
65
|
return null;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
const msg = `Advisory
|
|
68
|
+
const msg = `[Advisory] Cross-plugin sync required. These pbr files were changed without matching cursor-pbr/copilot-pbr updates:\n${missingCounterparts.map(f => ` - ${f}`).join('\n')}\nTo fix: copy each changed file to the matching path in plugins/cursor-pbr/ and plugins/copilot-pbr/, applying plugin-specific adjustments. Run: npm test -- tests/cross-plugin-compat.test.js to verify.`;
|
|
69
69
|
logHook('check-cross-plugin-sync', 'PreToolUse', 'warn', { missingCounterparts });
|
|
70
70
|
|
|
71
71
|
return { additionalContext: msg };
|
|
@@ -102,7 +102,7 @@ function main() {
|
|
|
102
102
|
process.exit(2);
|
|
103
103
|
} else {
|
|
104
104
|
const output = {
|
|
105
|
-
additionalContext: `
|
|
105
|
+
additionalContext: `[Advisory] Cross-phase edit: modifying phase ${filePhase} file while current phase is ${currentPhase}. If unintentional: check STATE.md to confirm correct phase. If intentional (e.g. backfilling docs): no action needed. To suppress: set safety.enforce_phase_boundaries: false in config.json.`
|
|
106
106
|
};
|
|
107
107
|
process.stdout.write(JSON.stringify(output));
|
|
108
108
|
}
|
|
@@ -181,7 +181,7 @@ function checkBoundary(data) {
|
|
|
181
181
|
return {
|
|
182
182
|
exitCode: 0,
|
|
183
183
|
output: {
|
|
184
|
-
additionalContext: `
|
|
184
|
+
additionalContext: `[Advisory] Cross-phase edit: modifying phase ${filePhase} file while current phase is ${currentPhase}. If unintentional: check STATE.md to confirm correct phase. If intentional (e.g. backfilling docs): no action needed. To suppress: set safety.enforce_phase_boundaries: false in config.json.`
|
|
185
185
|
}
|
|
186
186
|
};
|
|
187
187
|
}
|
|
@@ -121,7 +121,7 @@ function main() {
|
|
|
121
121
|
if (!stateInfo || !stateInfo.phase || !stateInfo.status) {
|
|
122
122
|
logHook('check-roadmap-sync', 'PostToolUse', 'skip', { reason: 'could not parse STATE.md' });
|
|
123
123
|
const output = {
|
|
124
|
-
additionalContext: '[Roadmap Sync] Could not parse
|
|
124
|
+
additionalContext: '[Roadmap Sync — WARN] Could not parse STATE.md: missing **Phase**: or **Status**: fields. Expected format: "**Phase**: 3 of 8" and "**Status**: Planning". To fix: run /pbr:health for a guided repair, or manually add the missing fields to .planning/STATE.md.'
|
|
125
125
|
};
|
|
126
126
|
process.stdout.write(JSON.stringify(output));
|
|
127
127
|
process.exit(0);
|
|
@@ -436,7 +436,7 @@ function main() {
|
|
|
436
436
|
found: 'none'
|
|
437
437
|
});
|
|
438
438
|
const output = {
|
|
439
|
-
additionalContext: `
|
|
439
|
+
additionalContext: `[WARN] Agent ${agentType} completed but no ${outputSpec.description} was found. Likely causes: (1) agent hit an error mid-run, (2) wrong working directory. To fix: re-run the parent skill — the executor gate will block until the output is present. Check the Task() output above for error details.`
|
|
440
440
|
};
|
|
441
441
|
process.stdout.write(JSON.stringify(output));
|
|
442
442
|
} else if (skillWarnings.length > 0) {
|
|
@@ -55,7 +55,7 @@ async function main() {
|
|
|
55
55
|
// Provide recovery hints for Bash failures (most common actionable failure)
|
|
56
56
|
if (toolName === 'Bash' && !isInterrupt) {
|
|
57
57
|
const output = {
|
|
58
|
-
additionalContext: 'Bash command failed.
|
|
58
|
+
additionalContext: '[Tool Failure] Bash command failed. To investigate: check the error output above for permission/path issues. For recurring failures: /pbr:debug for systematic investigation.'
|
|
59
59
|
};
|
|
60
60
|
process.stdout.write(JSON.stringify(output));
|
|
61
61
|
}
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
const { checkPlanWrite, checkStateWrite } = require('./check-plan-format');
|
|
22
22
|
const { checkSync } = require('./check-roadmap-sync');
|
|
23
23
|
const { checkStateSync } = require('./check-state-sync');
|
|
24
|
+
const { checkQuality } = require('./post-write-quality');
|
|
24
25
|
|
|
25
26
|
// Conditionally import validateRoadmap (may not exist yet if PLAN-01 hasn't landed)
|
|
26
27
|
let validateRoadmap;
|
|
@@ -109,6 +110,13 @@ function main() {
|
|
|
109
110
|
process.exit(0);
|
|
110
111
|
}
|
|
111
112
|
|
|
113
|
+
// Quality checks (Prettier, tsc, console.log detection) — consolidated from post-write-quality.js
|
|
114
|
+
const qualityResult = checkQuality(data);
|
|
115
|
+
if (qualityResult) {
|
|
116
|
+
process.stdout.write(JSON.stringify(qualityResult.output));
|
|
117
|
+
process.exit(0);
|
|
118
|
+
}
|
|
119
|
+
|
|
112
120
|
process.exit(0);
|
|
113
121
|
} catch (_e) {
|
|
114
122
|
// Don't block on parse errors
|
|
@@ -88,12 +88,12 @@ function main() {
|
|
|
88
88
|
// Warn about touching production config files
|
|
89
89
|
if (/\b(production|prod)\b.*\.(json|ya?ml|env|conf|cfg)\b/i.test(command) ||
|
|
90
90
|
/\.(json|ya?ml|env|conf|cfg)\b.*\b(production|prod)\b/i.test(command)) {
|
|
91
|
-
warnings.push('command references production config files');
|
|
91
|
+
warnings.push('command references production config files — verify you are not in a live environment');
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
// Warn about database operations
|
|
95
95
|
if (/\b(DROP|TRUNCATE|DELETE\s+FROM|ALTER\s+TABLE)\b/i.test(command)) {
|
|
96
|
-
warnings.push('destructive database operation
|
|
96
|
+
warnings.push('destructive database operation (DROP/TRUNCATE/DELETE/ALTER) — verify correct database is targeted and a backup exists');
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
if (warnings.length > 0) {
|
|
@@ -49,7 +49,7 @@ function checkTask(data) {
|
|
|
49
49
|
|
|
50
50
|
// Check description exists and is non-empty
|
|
51
51
|
if (!description || (typeof description === 'string' && !description.trim())) {
|
|
52
|
-
warnings.push('Task() called without a description. Descriptions
|
|
52
|
+
warnings.push('Task() called without a description. Descriptions are required for audit logging and skill enforcement. Add a short description (3-5 words), e.g.: "Build phase 3 executor".');
|
|
53
53
|
} else if (typeof description === 'string') {
|
|
54
54
|
// Check description length
|
|
55
55
|
if (description.length > MAX_DESCRIPTION_LENGTH) {
|
|
@@ -530,51 +530,9 @@ Delete `.planning/.active-skill` if it exists. This must happen on all paths (su
|
|
|
530
530
|
|
|
531
531
|
## Completion
|
|
532
532
|
|
|
533
|
-
After all steps complete, present the final summary
|
|
533
|
+
After all steps complete, present the final summary using the stage banner format from Read `references/ui-formatting.md`:
|
|
534
534
|
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
```
|
|
538
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
539
|
-
║ PLAN-BUILD-RUN ► PROJECT INITIALIZED ✓ ║
|
|
540
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
541
|
-
|
|
542
|
-
**{name}**
|
|
543
|
-
|
|
544
|
-
{core value one-liner}
|
|
545
|
-
|
|
546
|
-
Roadmap: {N} phases
|
|
547
|
-
1. {Phase 1 name}
|
|
548
|
-
2. {Phase 2 name}
|
|
549
|
-
...
|
|
550
|
-
|
|
551
|
-
Requirements: {N} committed, {M} deferred, {K} out-of-scope
|
|
552
|
-
```
|
|
553
|
-
|
|
554
|
-
Then use the "Next Up" routing block:
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
559
|
-
║ ▶ NEXT UP ║
|
|
560
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
561
|
-
|
|
562
|
-
**Phase 1: {Name}** — {one-line goal}
|
|
563
|
-
|
|
564
|
-
`/pbr:discuss 1`
|
|
565
|
-
|
|
566
|
-
<sub>`/clear` first → fresh context window</sub>
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
**Also available:**
|
|
571
|
-
- `/pbr:explore` — open-ended exploration before planning
|
|
572
|
-
- `/pbr:plan 1` — jump straight to planning Phase 1
|
|
573
|
-
- `/pbr:milestone new` — add a second milestone with new phases
|
|
574
|
-
- `/pbr:config` — adjust workflow settings
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
```
|
|
535
|
+
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:milestone new`, `/pbr:config`.
|
|
578
536
|
|
|
579
537
|
---
|
|
580
538
|
|
|
@@ -809,106 +809,11 @@ Total files modified: {count}
|
|
|
809
809
|
Deviations: {count}
|
|
810
810
|
```
|
|
811
811
|
|
|
812
|
-
Then present the appropriate branded banner:
|
|
812
|
+
Then present the appropriate branded banner from Read `references/ui-formatting.md` § "Completion Summary Templates":
|
|
813
813
|
|
|
814
|
-
**If `passed` + more phases:**
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
║ PLAN-BUILD-RUN ► PHASE {N} COMPLETE ✓ ║
|
|
818
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
819
|
-
|
|
820
|
-
**Phase {N}: {Name}**
|
|
821
|
-
|
|
822
|
-
{X} plans executed
|
|
823
|
-
Goal verified ✓
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
828
|
-
║ ▶ NEXT UP ║
|
|
829
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
830
|
-
|
|
831
|
-
**Phase {N+1}: {Name}** — {Goal from ROADMAP.md}
|
|
832
|
-
|
|
833
|
-
`/pbr:plan {N+1}`
|
|
834
|
-
|
|
835
|
-
<sub>`/clear` first → fresh context window</sub>
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
**Also available:**
|
|
840
|
-
- `/pbr:review {N}` — manual acceptance testing before continuing
|
|
841
|
-
- `/pbr:discuss {N+1}` — talk through the next phase before planning
|
|
842
|
-
- `/pbr:status` — see full project status
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
```
|
|
846
|
-
|
|
847
|
-
**If `passed` + last phase:**
|
|
848
|
-
```
|
|
849
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
850
|
-
║ PLAN-BUILD-RUN ► MILESTONE COMPLETE 🎉 ║
|
|
851
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
852
|
-
|
|
853
|
-
{N} phases completed
|
|
854
|
-
All phase goals verified ✓
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
859
|
-
║ ▶ NEXT UP ║
|
|
860
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
861
|
-
|
|
862
|
-
**Audit milestone** — verify requirements, cross-phase integration, E2E flows
|
|
863
|
-
|
|
864
|
-
`/pbr:milestone audit`
|
|
865
|
-
|
|
866
|
-
<sub>`/clear` first → fresh context window</sub>
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
**Also available:**
|
|
871
|
-
- `/pbr:review` — manual acceptance testing
|
|
872
|
-
- `/pbr:milestone complete` — archive milestone after audit passes
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
```
|
|
876
|
-
|
|
877
|
-
**If `gaps_found`:**
|
|
878
|
-
```
|
|
879
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
880
|
-
║ PLAN-BUILD-RUN ► PHASE {N} GAPS FOUND ⚠ ║
|
|
881
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
882
|
-
|
|
883
|
-
**Phase {N}: {Name}**
|
|
884
|
-
|
|
885
|
-
Score: {X}/{Y} must-haves verified
|
|
886
|
-
Report: .planning/phases/{phase_dir}/VERIFICATION.md
|
|
887
|
-
|
|
888
|
-
### What's Missing
|
|
889
|
-
|
|
890
|
-
{Extract gap summaries from VERIFICATION.md}
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
895
|
-
║ ▶ NEXT UP ║
|
|
896
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
897
|
-
|
|
898
|
-
**Plan gap closure** — create additional plans to complete the phase
|
|
899
|
-
|
|
900
|
-
`/pbr:plan {N} --gaps`
|
|
901
|
-
|
|
902
|
-
<sub>`/clear` first → fresh context window</sub>
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
**Also available:**
|
|
907
|
-
- `cat .planning/phases/{phase_dir}/VERIFICATION.md` — see full report
|
|
908
|
-
- `/pbr:review {N}` — manual testing before planning
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
```
|
|
814
|
+
- **If `passed` + more phases:** Use the "Phase Complete" template. Fill in phase number, name, plan count, and next phase details.
|
|
815
|
+
- **If `passed` + last phase:** Use the "Milestone Complete" template. Fill in phase count.
|
|
816
|
+
- **If `gaps_found`:** Use the "Gaps Found" template. Fill in phase number, name, score, and gap summaries from VERIFICATION.md.
|
|
912
817
|
|
|
913
818
|
**8g. Display USER-SETUP.md (conditional):**
|
|
914
819
|
|
|
@@ -26,7 +26,7 @@ Reads and writes `.planning/config.json`. Interactive configuration with AskUser
|
|
|
26
26
|
|
|
27
27
|
## References
|
|
28
28
|
|
|
29
|
-
- `references/
|
|
29
|
+
- `references/config-reference.md` — Full config.json schema (54 fields, 16 feature toggles, validation rules)
|
|
30
30
|
- `references/model-profiles.md` — Model selection guide for agent spawning
|
|
31
31
|
|
|
32
32
|
## Flow
|
|
@@ -8,7 +8,7 @@ allowed-tools: Read, Write, Bash, Glob, Grep, Task, Skill
|
|
|
8
8
|
|
|
9
9
|
# /pbr:continue — Action-Oriented Resumption
|
|
10
10
|
|
|
11
|
-
You are running the **continue** skill. Unlike `/pbr:
|
|
11
|
+
You are running the **continue** skill. Unlike `/pbr:status` which shows the dashboard and suggests the next action, `/pbr:continue` determines and EXECUTES the next logical step automatically. Stops safely at milestones, checkpoints, errors, and verification gaps.
|
|
12
12
|
|
|
13
13
|
This skill runs **inline** and may delegate to other skills via Task().
|
|
14
14
|
|
|
@@ -120,6 +120,23 @@ Display the following reference to the user:
|
|
|
120
120
|
| `/pbr:dashboard --port <N>` | Launch dashboard on a specific port. |
|
|
121
121
|
| `/pbr:statusline` | Install or configure the PBR status line in Claude Code. |
|
|
122
122
|
|
|
123
|
+
## Choose Your Command
|
|
124
|
+
|
|
125
|
+
Not sure which command to use? Follow this guide:
|
|
126
|
+
|
|
127
|
+
| I want to... | Command |
|
|
128
|
+
|--------------|---------|
|
|
129
|
+
| Start a new project | `/pbr:begin` |
|
|
130
|
+
| Fix a bug or investigate an error | `/pbr:debug` |
|
|
131
|
+
| Think through an idea or approach | `/pbr:explore` |
|
|
132
|
+
| Do a small task (≤3 files) | `/pbr:quick` |
|
|
133
|
+
| Plan a complex change (4+ files) | `/pbr:plan <N>` |
|
|
134
|
+
| See where I am and what's next | `/pbr:status` |
|
|
135
|
+
| Auto-execute the next step | `/pbr:continue` |
|
|
136
|
+
| Describe something and let PBR route it | `/pbr:do <description>` |
|
|
137
|
+
| Lock decisions for a specific phase | `/pbr:discuss <N>` |
|
|
138
|
+
| Check project health | `/pbr:health` |
|
|
139
|
+
|
|
123
140
|
## Typical Workflow
|
|
124
141
|
|
|
125
142
|
```
|
|
@@ -133,6 +150,19 @@ Display the following reference to the user:
|
|
|
133
150
|
/pbr:milestone complete ← Archive when done
|
|
134
151
|
```
|
|
135
152
|
|
|
153
|
+
**Shortcut**: After `/pbr:begin`, run `/pbr:continue` repeatedly — it auto-advances through plan → build → review → next phase, stopping at milestones and errors.
|
|
154
|
+
|
|
155
|
+
## status vs continue vs do
|
|
156
|
+
|
|
157
|
+
| | `/pbr:status` | `/pbr:continue` | `/pbr:do <text>` |
|
|
158
|
+
|-|---------------|-----------------|-------------------|
|
|
159
|
+
| **Purpose** | Dashboard — show progress, suggest next | Auto-execute the next logical step | Route freeform text to a skill |
|
|
160
|
+
| **Reads state?** | Yes (full scan) | Yes (minimal) | No |
|
|
161
|
+
| **Modifies files?** | Never | Yes (via delegation) | Depends on routed skill |
|
|
162
|
+
| **Asks questions?** | If multiple options | Never — fully automatic | Only if ambiguous |
|
|
163
|
+
| **Use when...** | You want to see where you are before deciding | You trust PBR to pick and run the next step | You'd rather describe a task in plain English |
|
|
164
|
+
| **Hard stops** | N/A | Milestones, checkpoints, errors, verification gaps | N/A |
|
|
165
|
+
|
|
136
166
|
## Quick Reference
|
|
137
167
|
|
|
138
168
|
- **Context strategy**: `aggressive` (delegate everything) | `balanced` | `minimal` (run inline)
|
|
@@ -239,7 +239,7 @@ Dry-run of milestone completion — shows what would happen without making any c
|
|
|
239
239
|
6. **Display summary:**
|
|
240
240
|
```
|
|
241
241
|
╔══════════════════════════════════════════════════════════════╗
|
|
242
|
-
║ MILESTONE PREVIEW — v{version}
|
|
242
|
+
║ PLAN-BUILD-RUN ► MILESTONE PREVIEW — v{version} ║
|
|
243
243
|
╚══════════════════════════════════════════════════════════════╝
|
|
244
244
|
|
|
245
245
|
Phases to archive: {count}
|
|
@@ -281,7 +281,10 @@ Files: {list of files changed}
|
|
|
281
281
|
|
|
282
282
|
**If partial:**
|
|
283
283
|
```
|
|
284
|
-
|
|
284
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
285
|
+
║ PLAN-BUILD-RUN ► QUICK TASK {NNN} PARTIAL ⚠ ║
|
|
286
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
287
|
+
|
|
285
288
|
Completed: {N} of {M} tasks
|
|
286
289
|
Failed task: {task name} — {failure reason}
|
|
287
290
|
|