@sienklogic/plan-build-run 2.26.2 → 2.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@ 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.27.0](https://github.com/SienkLogic/plan-build-run/compare/plan-build-run-v2.26.2...plan-build-run-v2.27.0) (2026-02-24)
9
+
10
+
11
+ ### Features
12
+
13
+ * **tools:** add local LLM skill-level fallbacks and platform compatibility docs ([d6d1242](https://github.com/SienkLogic/plan-build-run/commit/d6d1242d79eb924525761e0bc6ac65e1a2d51375))
14
+
8
15
  ## [2.26.2](https://github.com/SienkLogic/plan-build-run/compare/plan-build-run-v2.26.1...plan-build-run-v2.26.2) (2026-02-24)
9
16
 
10
17
 
package/README.md CHANGED
@@ -304,6 +304,35 @@ Requires a GPU with 6+ GB VRAM for best performance. CPU-only works but adds lat
304
304
 
305
305
  ---
306
306
 
307
+ ## Platform Compatibility
308
+
309
+ Plan-Build-Run works across three platforms with varying levels of hook support. Hooks are the mechanism that fires validation scripts on every tool call — they power local LLM offloading, commit format enforcement, context budget tracking, and workflow gates.
310
+
311
+ | Feature | Claude Code | Copilot CLI | Cursor IDE |
312
+ |---------|:-----------:|:-----------:|:----------:|
313
+ | Skills (slash commands) | All 26 | All 26 | All 26 |
314
+ | Agents (subagent delegation) | All 12 | All 12 | All 12 |
315
+ | `.planning/` state management | Full | Full | Full |
316
+ | **Hook support** | **Full (14 events)** | **Partial (4 events)** | **Unverified** |
317
+ | Commit format enforcement | Hook-enforced | Hook-enforced | Manual |
318
+ | PLAN/SUMMARY quality classification | Hook + skill fallback | Hook + skill fallback | Skill fallback only |
319
+ | Test failure triage | Automatic (hook) | Automatic (hook) | Not available |
320
+ | Context budget tracking | Automatic (hook) | Not available | Not available |
321
+ | Auto-continue between skills | Automatic (hook) | Not available | Not available |
322
+ | Subagent lifecycle logging | Automatic (hook) | Not available | Not available |
323
+ | **Local LLM offloading** | **Full (8 operations)** | **Mostly (6-7 operations)** | **CLI only** |
324
+ | `pbr-tools.js llm` CLI commands | Full | Full | Full |
325
+
326
+ **Key differences:**
327
+
328
+ - **Claude Code** has full hook support — all local LLM operations fire automatically on every tool call
329
+ - **Copilot CLI** supports `sessionStart`, `preToolUse`, `postToolUse`, and `sessionEnd` — covers most validation hooks but misses lifecycle events (`SubagentStop`, `PreCompact`, `Stop`)
330
+ - **Cursor IDE** hook support is unverified — hooks.json is configured but whether Cursor actually fires them is unknown. Skills include `pbr-tools.js llm` fallback calls for key operations (plan quality, verification quality) so local LLM classification is available even without hooks
331
+
332
+ All platforms share the same scripts via relative paths — no code duplication. See the [Copilot CLI](plugins/copilot-pbr/README.md) and [Cursor IDE](plugins/cursor-pbr/README.md) READMEs for platform-specific details.
333
+
334
+ ---
335
+
307
336
  ## Local Development
308
337
 
309
338
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sienklogic/plan-build-run",
3
- "version": "2.26.2",
3
+ "version": "2.27.0",
4
4
  "description": "Plan it, Build it, Run it — structured development workflow for Claude Code",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pbr",
3
3
  "displayName": "Plan-Build-Run",
4
- "version": "2.26.2",
4
+ "version": "2.27.0",
5
5
  "description": "Plan-Build-Run — Structured development workflow for GitHub Copilot CLI. Solves context rot through disciplined agent delegation, structured planning, atomic execution, and goal-backward verification.",
6
6
  "author": {
7
7
  "name": "SienkLogic",
@@ -242,6 +242,18 @@ For each wave, in order (Wave 1, then Wave 2, etc.):
242
242
 
243
243
  For each plan in the current wave (excluding skipped plans):
244
244
 
245
+ **Local LLM plan quality check (optional, advisory):**
246
+
247
+ Before spawning executors for this wave, if `config.local_llm.enabled` is `true`, run a quick classification on each plan to catch stubs before wasting an executor spawn:
248
+
249
+ ```bash
250
+ node ${PLUGIN_ROOT}/scripts/pbr-tools.js llm classify PLAN ".planning/phases/{NN}-{slug}/{plan_id}-PLAN.md"
251
+ ```
252
+
253
+ - If classification is `"stub"` or `"partial"` with confidence >= 0.7: warn the user before spawning: `"⚠ Plan {plan_id} classified as {classification} (confidence {conf}) — consider refining before building."`
254
+ - If the command fails or returns null: skip silently (local LLM unavailable — not an error)
255
+ - This is advisory only — never block on the result
256
+
245
257
  **Present plan narrative before spawning:**
246
258
 
247
259
  Display to the user before spawning:
@@ -147,6 +147,18 @@ Before proceeding to Step 7, confirm these exist on disk:
147
147
 
148
148
  If either check fails, you have skipped steps. Go back and complete Steps 4-6. Do NOT proceed to spawning an executor.
149
149
 
150
+ ### Step 6b: Local LLM Task Validation (optional, advisory)
151
+
152
+ If `config.local_llm.enabled` is `true`, run a quick scope validation before spawning:
153
+
154
+ ```bash
155
+ node ${PLUGIN_ROOT}/scripts/pbr-tools.js llm classify PLAN ".planning/quick/{NNN}-{slug}/PLAN.md"
156
+ ```
157
+
158
+ - If classification is `"stub"` with confidence >= 0.7: warn `"⚠ Plan looks like a stub — executor may struggle. Consider adding more detail to task descriptions."`
159
+ - If the command fails or returns null: skip silently (local LLM unavailable)
160
+ - This is advisory only — never block on the result
161
+
150
162
  ### Step 7: Spawn Executor
151
163
 
152
164
  **Pre-spawn check** — Verify `.planning/quick/{NNN}-{slug}/PLAN.md` exists and contains at least one `<task>` block. If missing, STOP and complete Steps 4-6 first.
@@ -182,6 +182,20 @@ Then display the overall verdict (`PASSED`, `GAPS FOUND`, or `HUMAN NEEDED`) bef
182
182
 
183
183
  ---
184
184
 
185
+ ### Step 3b: Local LLM Verification Quality Check (optional, advisory)
186
+
187
+ After the verifier completes and writes VERIFICATION.md, if `config.local_llm.enabled` is `true`, run a quality classification:
188
+
189
+ ```bash
190
+ node ${PLUGIN_ROOT}/scripts/pbr-tools.js llm classify SUMMARY ".planning/phases/{NN}-{slug}/VERIFICATION.md"
191
+ ```
192
+
193
+ - If classification is `"thin"` with confidence >= 0.7: warn `"⚠ Verification report appears thin on details — UAT may not catch all gaps. Consider re-running with /pbr:review {N}."`
194
+ - If the command fails or returns null: skip silently (local LLM unavailable)
195
+ - This is advisory only — never block on the result
196
+
197
+ ---
198
+
185
199
  ### Step 4: Present Verification Results (inline)
186
200
 
187
201
  Read the VERIFICATION.md frontmatter. Check the `attempt` counter.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pbr",
3
3
  "displayName": "Plan-Build-Run",
4
- "version": "2.26.2",
4
+ "version": "2.27.0",
5
5
  "description": "Plan-Build-Run — Structured development workflow for Cursor. Solves context rot through disciplined subagent delegation, structured planning, atomic execution, and goal-backward verification.",
6
6
  "author": {
7
7
  "name": "SienkLogic",
@@ -113,6 +113,26 @@ Plan-Build-Run stores all state in a `.planning/` directory at your project root
113
113
 
114
114
  Run `/pbr:config` to interactively adjust settings like depth, model profiles, and gate behavior.
115
115
 
116
+ ## Hook Compatibility
117
+
118
+ Cursor's plugin hooks.json is configured with all 14 hook events matching Claude Code. However, **whether Cursor IDE actually fires these hooks is unverified** — no integration testing has confirmed hook execution in real Cursor sessions.
119
+
120
+ **If hooks DO fire**, Cursor gets the full hook experience identical to Claude Code:
121
+ - Commit format enforcement (PreToolUse)
122
+ - PLAN/SUMMARY quality classification via local LLM (PostToolUse)
123
+ - Test failure triage (PostToolUse)
124
+ - Context budget tracking (PostToolUse)
125
+ - Auto-continue between skills (Stop)
126
+
127
+ **If hooks do NOT fire**, the following are unavailable:
128
+ - Commit format enforcement — commits won't be validated automatically
129
+ - Automatic local LLM classification on writes — but skills include explicit `pbr-tools.js llm` fallback calls for plan quality (build Step 6a), task validation (quick Step 6b), and verification quality (review Step 3b)
130
+ - Context budget tracking — no automatic warnings when context is filling up
131
+ - Auto-continue — you must manually run the next command
132
+ - Subagent lifecycle logging — agent spawn/completion events aren't tracked
133
+
134
+ **Local LLM via CLI (always works):** Regardless of hook support, skills and agents can call `pbr-tools.js llm` commands directly via Bash. The `/pbr:status` skill displays local LLM metrics, and agents (debugger, researcher, synthesizer) use CLI commands for error classification, source scoring, and summarization.
135
+
116
136
  ## Cross-Plugin Compatibility
117
137
 
118
138
  This plugin works alongside the Claude Code version of Plan-Build-Run. Both plugins share the same `.planning/` directory and file formats, so you can switch between Cursor and Claude Code without losing state. Hook scripts under `plugins/pbr/scripts/` are shared between both plugins via relative paths.
@@ -243,6 +243,18 @@ For each wave, in order (Wave 1, then Wave 2, etc.):
243
243
 
244
244
  For each plan in the current wave (excluding skipped plans):
245
245
 
246
+ **Local LLM plan quality check (optional, advisory):**
247
+
248
+ Before spawning executors for this wave, if `config.local_llm.enabled` is `true`, run a quick classification on each plan to catch stubs before wasting an executor spawn:
249
+
250
+ ```bash
251
+ node ${PLUGIN_ROOT}/scripts/pbr-tools.js llm classify PLAN ".planning/phases/{NN}-{slug}/{plan_id}-PLAN.md"
252
+ ```
253
+
254
+ - If classification is `"stub"` or `"partial"` with confidence >= 0.7: warn the user before spawning: `"⚠ Plan {plan_id} classified as {classification} (confidence {conf}) — consider refining before building."`
255
+ - If the command fails or returns null: skip silently (local LLM unavailable — not an error)
256
+ - This is advisory only — never block on the result
257
+
246
258
  **Present plan narrative before spawning:**
247
259
 
248
260
  Display to the user before spawning:
@@ -147,6 +147,18 @@ Before proceeding to Step 7, confirm these exist on disk:
147
147
 
148
148
  If either check fails, you have skipped steps. Go back and complete Steps 4-6. Do NOT proceed to spawning an executor.
149
149
 
150
+ ### Step 6b: Local LLM Task Validation (optional, advisory)
151
+
152
+ If `config.local_llm.enabled` is `true`, run a quick scope validation before spawning:
153
+
154
+ ```bash
155
+ node ${PLUGIN_ROOT}/scripts/pbr-tools.js llm classify PLAN ".planning/quick/{NNN}-{slug}/PLAN.md"
156
+ ```
157
+
158
+ - If classification is `"stub"` with confidence >= 0.7: warn `"⚠ Plan looks like a stub — executor may struggle. Consider adding more detail to task descriptions."`
159
+ - If the command fails or returns null: skip silently (local LLM unavailable)
160
+ - This is advisory only — never block on the result
161
+
150
162
  ### Step 7: Spawn Executor
151
163
 
152
164
  **Pre-spawn check** — Verify `.planning/quick/{NNN}-{slug}/PLAN.md` exists and contains at least one `<task>` block. If missing, STOP and complete Steps 4-6 first.
@@ -183,6 +183,20 @@ Then display the overall verdict (`PASSED`, `GAPS FOUND`, or `HUMAN NEEDED`) bef
183
183
 
184
184
  ---
185
185
 
186
+ ### Step 3b: Local LLM Verification Quality Check (optional, advisory)
187
+
188
+ After the verifier completes and writes VERIFICATION.md, if `config.local_llm.enabled` is `true`, run a quality classification:
189
+
190
+ ```bash
191
+ node ${PLUGIN_ROOT}/scripts/pbr-tools.js llm classify SUMMARY ".planning/phases/{NN}-{slug}/VERIFICATION.md"
192
+ ```
193
+
194
+ - If classification is `"thin"` with confidence >= 0.7: warn `"⚠ Verification report appears thin on details — UAT may not catch all gaps. Consider re-running with /pbr:review {N}."`
195
+ - If the command fails or returns null: skip silently (local LLM unavailable)
196
+ - This is advisory only — never block on the result
197
+
198
+ ---
199
+
186
200
  ### Step 4: Present Verification Results (inline)
187
201
 
188
202
  Read the VERIFICATION.md frontmatter. Check the `attempt` counter.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pbr",
3
- "version": "2.26.2",
3
+ "version": "2.27.0",
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",
@@ -244,6 +244,18 @@ For each wave, in order (Wave 1, then Wave 2, etc.):
244
244
 
245
245
  For each plan in the current wave (excluding skipped plans):
246
246
 
247
+ **Local LLM plan quality check (optional, advisory):**
248
+
249
+ Before spawning executors for this wave, if `config.local_llm.enabled` is `true`, run a quick classification on each plan to catch stubs before wasting an executor spawn:
250
+
251
+ ```bash
252
+ node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js llm classify PLAN ".planning/phases/{NN}-{slug}/{plan_id}-PLAN.md"
253
+ ```
254
+
255
+ - If classification is `"stub"` or `"partial"` with confidence >= 0.7: warn the user before spawning: `"⚠ Plan {plan_id} classified as {classification} (confidence {conf}) — consider refining before building."`
256
+ - If the command fails or returns null: skip silently (local LLM unavailable — not an error)
257
+ - This is advisory only — never block on the result
258
+
247
259
  **Present plan narrative before spawning:**
248
260
 
249
261
  Display to the user before spawning:
@@ -148,6 +148,18 @@ Before proceeding to Step 7, confirm these exist on disk:
148
148
 
149
149
  If either check fails, you have skipped steps. Go back and complete Steps 4-6. Do NOT proceed to spawning an executor.
150
150
 
151
+ ### Step 6b: Local LLM Task Validation (optional, advisory)
152
+
153
+ If `config.local_llm.enabled` is `true`, run a quick scope validation before spawning:
154
+
155
+ ```bash
156
+ node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js llm classify PLAN ".planning/quick/{NNN}-{slug}/PLAN.md"
157
+ ```
158
+
159
+ - If classification is `"stub"` with confidence >= 0.7: warn `"⚠ Plan looks like a stub — executor may struggle. Consider adding more detail to task descriptions."`
160
+ - If the command fails or returns null: skip silently (local LLM unavailable)
161
+ - This is advisory only — never block on the result
162
+
151
163
  ### Step 7: Spawn Executor
152
164
 
153
165
  **Pre-spawn check** — Verify `.planning/quick/{NNN}-{slug}/PLAN.md` exists and contains at least one `<task>` block. If missing, STOP and complete Steps 4-6 first.
@@ -202,6 +202,20 @@ Then display the overall verdict (`PASSED`, `GAPS FOUND`, or `HUMAN NEEDED`) bef
202
202
 
203
203
  ---
204
204
 
205
+ ### Step 3b: Local LLM Verification Quality Check (optional, advisory)
206
+
207
+ After the verifier completes and writes VERIFICATION.md, if `config.local_llm.enabled` is `true`, run a quality classification:
208
+
209
+ ```bash
210
+ node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js llm classify SUMMARY ".planning/phases/{NN}-{slug}/VERIFICATION.md"
211
+ ```
212
+
213
+ - If classification is `"thin"` with confidence >= 0.7: warn `"⚠ Verification report appears thin on details — UAT may not catch all gaps. Consider re-running with /pbr:review {N}."`
214
+ - If the command fails or returns null: skip silently (local LLM unavailable)
215
+ - This is advisory only — never block on the result
216
+
217
+ ---
218
+
205
219
  ### Step 4: Present Verification Results (inline)
206
220
 
207
221
  Read the VERIFICATION.md frontmatter. Check the `attempt` counter.