@sienklogic/plan-build-run 2.0.2 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +25 -6
  3. package/dashboard/src/routes/pages.routes.js +11 -4
  4. package/dashboard/src/services/dashboard.service.js +81 -17
  5. package/dashboard/src/services/phase.service.js +30 -24
  6. package/dashboard/src/services/roadmap.service.js +3 -3
  7. package/dashboard/src/views/partials/phase-content.ejs +5 -4
  8. package/package.json +1 -1
  9. package/plugins/cursor-pbr/.cursor-plugin/plugin.json +1 -1
  10. package/plugins/cursor-pbr/CHANGELOG.md +15 -0
  11. package/plugins/cursor-pbr/README.md +118 -0
  12. package/plugins/cursor-pbr/agents/codebase-mapper.md +108 -0
  13. package/plugins/cursor-pbr/agents/debugger.md +168 -0
  14. package/plugins/cursor-pbr/agents/executor.md +236 -0
  15. package/plugins/cursor-pbr/agents/general.md +87 -0
  16. package/plugins/cursor-pbr/agents/integration-checker.md +87 -0
  17. package/plugins/cursor-pbr/agents/plan-checker.md +198 -0
  18. package/plugins/cursor-pbr/agents/planner.md +180 -0
  19. package/plugins/cursor-pbr/agents/researcher.md +162 -0
  20. package/plugins/cursor-pbr/agents/synthesizer.md +101 -0
  21. package/plugins/cursor-pbr/agents/verifier.md +193 -0
  22. package/plugins/cursor-pbr/assets/logo.svg +21 -0
  23. package/plugins/cursor-pbr/hooks/hooks.json +189 -7
  24. package/plugins/cursor-pbr/references/agent-anti-patterns.md +25 -0
  25. package/plugins/cursor-pbr/references/agent-interactions.md +135 -0
  26. package/plugins/cursor-pbr/references/agent-teams.md +55 -0
  27. package/plugins/cursor-pbr/references/checkpoints.md +158 -0
  28. package/plugins/cursor-pbr/references/common-bug-patterns.md +14 -0
  29. package/plugins/cursor-pbr/references/config-reference.md +442 -0
  30. package/plugins/cursor-pbr/references/continuation-format.md +213 -0
  31. package/plugins/cursor-pbr/references/deviation-rules.md +113 -0
  32. package/plugins/cursor-pbr/references/git-integration.md +227 -0
  33. package/plugins/cursor-pbr/references/integration-patterns.md +118 -0
  34. package/plugins/cursor-pbr/references/model-profiles.md +100 -0
  35. package/plugins/cursor-pbr/references/model-selection.md +32 -0
  36. package/plugins/cursor-pbr/references/pbr-rules.md +194 -0
  37. package/plugins/cursor-pbr/references/plan-authoring.md +182 -0
  38. package/plugins/cursor-pbr/references/plan-format.md +288 -0
  39. package/plugins/cursor-pbr/references/planning-config.md +214 -0
  40. package/plugins/cursor-pbr/references/questioning.md +215 -0
  41. package/plugins/cursor-pbr/references/reading-verification.md +128 -0
  42. package/plugins/cursor-pbr/references/stub-patterns.md +161 -0
  43. package/plugins/cursor-pbr/references/subagent-coordination.md +120 -0
  44. package/plugins/cursor-pbr/references/ui-formatting.md +462 -0
  45. package/plugins/cursor-pbr/references/verification-patterns.md +199 -0
  46. package/plugins/cursor-pbr/references/wave-execution.md +96 -0
  47. package/plugins/cursor-pbr/rules/pbr-workflow.mdc +48 -0
  48. package/plugins/cursor-pbr/setup.ps1 +78 -0
  49. package/plugins/cursor-pbr/setup.sh +83 -0
  50. package/plugins/cursor-pbr/skills/begin/SKILL.md +566 -0
  51. package/plugins/cursor-pbr/skills/begin/templates/PROJECT.md.tmpl +34 -0
  52. package/plugins/cursor-pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +19 -0
  53. package/plugins/cursor-pbr/skills/begin/templates/STATE.md.tmpl +50 -0
  54. package/plugins/cursor-pbr/skills/begin/templates/config.json.tmpl +64 -0
  55. package/plugins/cursor-pbr/skills/begin/templates/researcher-prompt.md.tmpl +20 -0
  56. package/plugins/cursor-pbr/skills/begin/templates/roadmap-prompt.md.tmpl +31 -0
  57. package/plugins/cursor-pbr/skills/begin/templates/synthesis-prompt.md.tmpl +17 -0
  58. package/plugins/cursor-pbr/skills/build/SKILL.md +902 -0
  59. package/plugins/cursor-pbr/skills/config/SKILL.md +253 -0
  60. package/plugins/cursor-pbr/skills/continue/SKILL.md +159 -0
  61. package/plugins/cursor-pbr/skills/debug/SKILL.md +512 -0
  62. package/plugins/cursor-pbr/skills/debug/templates/continuation-prompt.md.tmpl +17 -0
  63. package/plugins/cursor-pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +28 -0
  64. package/plugins/cursor-pbr/skills/discuss/SKILL.md +344 -0
  65. package/plugins/cursor-pbr/skills/discuss/templates/CONTEXT.md.tmpl +62 -0
  66. package/plugins/cursor-pbr/skills/discuss/templates/decision-categories.md +10 -0
  67. package/plugins/cursor-pbr/skills/explore/SKILL.md +375 -0
  68. package/plugins/cursor-pbr/skills/health/SKILL.md +218 -0
  69. package/plugins/cursor-pbr/skills/health/templates/check-pattern.md.tmpl +31 -0
  70. package/plugins/cursor-pbr/skills/health/templates/output-format.md.tmpl +64 -0
  71. package/plugins/cursor-pbr/skills/help/SKILL.md +152 -0
  72. package/plugins/cursor-pbr/skills/import/SKILL.md +499 -0
  73. package/plugins/cursor-pbr/skills/milestone/SKILL.md +701 -0
  74. package/plugins/cursor-pbr/skills/milestone/templates/audit-report.md.tmpl +49 -0
  75. package/plugins/cursor-pbr/skills/milestone/templates/stats-file.md.tmpl +31 -0
  76. package/plugins/cursor-pbr/skills/note/SKILL.md +228 -0
  77. package/plugins/cursor-pbr/skills/pause/SKILL.md +246 -0
  78. package/plugins/cursor-pbr/skills/pause/templates/continue-here.md.tmpl +72 -0
  79. package/plugins/cursor-pbr/skills/plan/SKILL.md +648 -0
  80. package/plugins/cursor-pbr/skills/plan/templates/checker-prompt.md.tmpl +22 -0
  81. package/plugins/cursor-pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +33 -0
  82. package/plugins/cursor-pbr/skills/plan/templates/planner-prompt.md.tmpl +39 -0
  83. package/plugins/cursor-pbr/skills/plan/templates/researcher-prompt.md.tmpl +20 -0
  84. package/plugins/cursor-pbr/skills/plan/templates/revision-prompt.md.tmpl +24 -0
  85. package/plugins/cursor-pbr/skills/quick/SKILL.md +351 -0
  86. package/plugins/cursor-pbr/skills/resume/SKILL.md +399 -0
  87. package/plugins/cursor-pbr/skills/review/SKILL.md +649 -0
  88. package/plugins/cursor-pbr/skills/review/templates/debugger-prompt.md.tmpl +61 -0
  89. package/plugins/cursor-pbr/skills/review/templates/gap-planner-prompt.md.tmpl +41 -0
  90. package/plugins/cursor-pbr/skills/review/templates/verifier-prompt.md.tmpl +116 -0
  91. package/plugins/cursor-pbr/skills/scan/SKILL.md +301 -0
  92. package/plugins/cursor-pbr/skills/scan/templates/mapper-prompt.md.tmpl +202 -0
  93. package/plugins/cursor-pbr/skills/setup/SKILL.md +250 -0
  94. package/plugins/cursor-pbr/skills/shared/commit-planning-docs.md +36 -0
  95. package/plugins/cursor-pbr/skills/shared/config-loading.md +103 -0
  96. package/plugins/cursor-pbr/skills/shared/context-budget.md +41 -0
  97. package/plugins/cursor-pbr/skills/shared/context-loader-task.md +87 -0
  98. package/plugins/cursor-pbr/skills/shared/digest-select.md +80 -0
  99. package/plugins/cursor-pbr/skills/shared/domain-probes.md +126 -0
  100. package/plugins/cursor-pbr/skills/shared/error-reporting.md +80 -0
  101. package/plugins/cursor-pbr/skills/shared/gate-prompts.md +389 -0
  102. package/plugins/cursor-pbr/skills/shared/phase-argument-parsing.md +46 -0
  103. package/plugins/cursor-pbr/skills/shared/progress-display.md +54 -0
  104. package/plugins/cursor-pbr/skills/shared/revision-loop.md +82 -0
  105. package/plugins/cursor-pbr/skills/shared/state-loading.md +63 -0
  106. package/plugins/cursor-pbr/skills/shared/state-update.md +162 -0
  107. package/plugins/cursor-pbr/skills/shared/universal-anti-patterns.md +34 -0
  108. package/plugins/cursor-pbr/skills/status/SKILL.md +362 -0
  109. package/plugins/cursor-pbr/skills/todo/SKILL.md +195 -0
  110. package/plugins/cursor-pbr/templates/CONTEXT.md.tmpl +53 -0
  111. package/plugins/cursor-pbr/templates/INTEGRATION-REPORT.md.tmpl +152 -0
  112. package/plugins/cursor-pbr/templates/RESEARCH-SUMMARY.md.tmpl +98 -0
  113. package/plugins/cursor-pbr/templates/ROADMAP.md.tmpl +41 -0
  114. package/plugins/cursor-pbr/templates/SUMMARY.md.tmpl +82 -0
  115. package/plugins/cursor-pbr/templates/VERIFICATION-DETAIL.md.tmpl +117 -0
  116. package/plugins/cursor-pbr/templates/continue-here.md.tmpl +74 -0
  117. package/plugins/cursor-pbr/templates/prompt-partials/phase-project-context.md.tmpl +38 -0
  118. package/plugins/pbr/agents/codebase-mapper.md +41 -206
  119. package/plugins/pbr/agents/debugger.md +65 -171
  120. package/plugins/pbr/agents/executor.md +90 -275
  121. package/plugins/pbr/agents/general.md +27 -97
  122. package/plugins/pbr/agents/integration-checker.md +35 -112
  123. package/plugins/pbr/agents/plan-checker.md +71 -164
  124. package/plugins/pbr/agents/planner.md +76 -245
  125. package/plugins/pbr/agents/researcher.md +63 -255
  126. package/plugins/pbr/agents/synthesizer.md +49 -174
  127. package/plugins/pbr/agents/verifier.md +75 -366
  128. package/plugins/pbr/hooks/hooks.json +14 -10
  129. package/plugins/pbr/references/ui-formatting.md +1 -1
  130. package/plugins/pbr/scripts/auto-continue.js +20 -4
  131. package/plugins/pbr/scripts/check-dangerous-commands.js +1 -1
  132. package/plugins/pbr/scripts/check-phase-boundary.js +1 -1
  133. package/plugins/pbr/scripts/check-plan-format.js +3 -3
  134. package/plugins/pbr/scripts/check-roadmap-sync.js +3 -3
  135. package/plugins/pbr/scripts/check-skill-workflow.js +1 -1
  136. package/plugins/pbr/scripts/check-state-sync.js +2 -2
  137. package/plugins/pbr/scripts/check-subagent-output.js +1 -1
  138. package/plugins/pbr/scripts/check-summary-gate.js +198 -0
  139. package/plugins/pbr/scripts/context-budget-check.js +1 -1
  140. package/plugins/pbr/scripts/event-handler.js +2 -2
  141. package/plugins/pbr/scripts/event-logger.js +1 -1
  142. package/plugins/pbr/scripts/log-subagent.js +1 -1
  143. package/plugins/pbr/scripts/pbr-tools.js +1 -1
  144. package/plugins/pbr/scripts/post-write-dispatch.js +1 -1
  145. package/plugins/pbr/scripts/post-write-quality.js +1 -1
  146. package/plugins/pbr/scripts/pre-bash-dispatch.js +1 -1
  147. package/plugins/pbr/scripts/pre-write-dispatch.js +16 -3
  148. package/plugins/pbr/scripts/session-cleanup.js +1 -1
  149. package/plugins/pbr/scripts/status-line.js +1 -1
  150. package/plugins/pbr/scripts/suggest-compact.js +1 -1
  151. package/plugins/pbr/scripts/task-completed.js +1 -1
  152. package/plugins/pbr/scripts/track-context-budget.js +11 -6
  153. package/plugins/pbr/scripts/validate-commit.js +1 -1
  154. package/plugins/pbr/scripts/validate-task.js +1 -1
  155. package/plugins/pbr/skills/begin/SKILL.md +4 -2
  156. package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +2 -0
  157. package/plugins/pbr/skills/build/SKILL.md +6 -4
  158. package/plugins/pbr/skills/continue/SKILL.md +2 -1
  159. package/plugins/pbr/skills/review/SKILL.md +4 -3
  160. package/plugins/pbr/skills/status/SKILL.md +5 -2
  161. package/plugins/pbr/templates/ROADMAP.md.tmpl +6 -1
  162. package/plugins/cursor-pbr/agents/.gitkeep +0 -0
  163. package/plugins/cursor-pbr/references/.gitkeep +0 -0
  164. package/plugins/cursor-pbr/rules/.gitkeep +0 -0
  165. package/plugins/cursor-pbr/skills/.gitkeep +0 -0
  166. package/plugins/cursor-pbr/templates/.gitkeep +0 -0
@@ -0,0 +1,162 @@
1
+ <!-- canonical: ../../../pbr/skills/shared/state-update.md -->
2
+ # STATE.md Update Pattern
3
+
4
+ Standard pattern for updating `.planning/STATE.md`. Include this fragment in skills that modify project state.
5
+
6
+ ---
7
+
8
+ ## When to Update STATE.md
9
+
10
+ | Event | What to Update |
11
+ |-------|---------------|
12
+ | Phase status changes (planned, building, verified) | Current Position section |
13
+ | Plan completes or fails | Plan counter, status, last activity |
14
+ | New decision made | Accumulated Context > Decisions |
15
+ | Blocker discovered or resolved | Accumulated Context > Blockers/Concerns |
16
+ | Session starts or ends | Session Continuity section |
17
+ | Milestone boundary | Milestone section |
18
+
19
+ ---
20
+
21
+ ## Section Format
22
+
23
+ STATE.md has 5 sections. Always preserve this order:
24
+
25
+ ### 1. Project Reference (lines 4-7)
26
+ ```
27
+ ## Project Reference
28
+ See: .planning/PROJECT.md (updated {date})
29
+ **Core value:** {one-liner from PROJECT.md}
30
+ **Current focus:** Phase {N} - {name}
31
+ ```
32
+ Update `Current focus` when phase changes.
33
+
34
+ ### 2. Current Position (lines 9-14)
35
+ ```
36
+ ## Current Position
37
+ Phase: {N} of {total} ({Phase name})
38
+ Plan: {completed} of {total_plans} in current phase
39
+ Status: {Ready to plan | Planning | Building | Reviewing | Verified}
40
+ Last activity: {YYYY-MM-DD} -- {brief description}
41
+ Progress: [{progress_bar}] {percent}%
42
+ ```
43
+
44
+ **Progress bar format:** 20 characters using `█` (done) and `░` (remaining).
45
+ ```
46
+ Phase 3 of 10 = 20% → [████░░░░░░░░░░░░░░░░] 20%
47
+ Phase 7 of 10 = 70% → [██████████████░░░░░░] 70%
48
+ ```
49
+ Calculation: `filled = Math.round((completed_phases / total_phases) * 20)`
50
+
51
+ ### 3. Accumulated Context (lines 16-25)
52
+ ```
53
+ ## Accumulated Context
54
+
55
+ ### Decisions
56
+ {Active decisions relevant to current work}
57
+
58
+ ### Pending Todos
59
+ {Outstanding items, or "None"}
60
+
61
+ ### Blockers/Concerns
62
+ {Active blockers, or "None"}
63
+ ```
64
+
65
+ ### 4. Milestone (lines 27-30)
66
+ ```
67
+ ## Milestone
68
+ Current: {project_name} {version}
69
+ Phases: {start}-{end}
70
+ Status: {In progress | Complete}
71
+ ```
72
+
73
+ ### 5. Session Continuity (lines 32-35)
74
+ ```
75
+ ## Session Continuity
76
+ Last session: {ISO timestamp}
77
+ Stopped at: {brief description of last action}
78
+ Resume file: {path or "None"}
79
+ ```
80
+
81
+ ---
82
+
83
+ ## Size Limit Enforcement
84
+
85
+ **Hard limit: 150 lines.** After every STATE.md write, check the line count. If over 150 lines, compact:
86
+
87
+ 1. **Collapse completed phase entries** to one-liners:
88
+ ```
89
+ Phase 1: verified 2026-02-08
90
+ Phase 2: verified 2026-02-09
91
+ ```
92
+ 2. **Remove decisions already captured in CONTEXT.md** — avoid duplication between STATE.md and phase CONTEXT.md files
93
+ 3. **Remove old session entries** — keep only the current session's continuity data
94
+ 4. **Keep these always:** current phase detail, active blockers, core value statement, milestone info
95
+
96
+ If still over 150 lines after compaction, the Accumulated Context section has grown too large. Move non-critical decisions to the phase's CONTEXT.md file.
97
+
98
+ ---
99
+
100
+ ## HISTORY.md Archival
101
+
102
+ When a milestone completes or a phase is verified, archive historical context to `.planning/HISTORY.md` to keep STATE.md lean:
103
+
104
+ ### What to Archive
105
+
106
+ | Trigger | What moves to HISTORY.md |
107
+ |---------|-------------------------|
108
+ | Phase verified | One-liner summary: "Phase {N} ({name}): verified {date}" |
109
+ | Milestone complete | Full milestone record: name, phases covered, key decisions |
110
+ | Accumulated Context > 20 lines | Decisions from completed phases (keep only current-phase decisions in STATE.md) |
111
+
112
+ ### How to Archive
113
+
114
+ Use `pbr-tools.js history append`:
115
+ ```
116
+ node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js history append phase "Phase 3 (Auth)" "Verified 2026-02-10. Key decisions: JWT + httpOnly cookies, Discord OAuth."
117
+ node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js history append milestone "v1.0 User Auth" "Phases 1-4. All verified. Core auth flow complete."
118
+ ```
119
+
120
+ ### After Archiving
121
+
122
+ Remove the archived content from STATE.md. The Accumulated Context section should contain ONLY:
123
+ - Decisions relevant to the **current** phase
124
+ - Active (unresolved) blockers
125
+ - Pending todos for the current milestone
126
+
127
+ Historical decisions live in HISTORY.md and per-phase SUMMARY.md files.
128
+
129
+ ---
130
+
131
+ ## Common Update Scenarios
132
+
133
+ ### After build completes
134
+ ```
135
+ Plan: {N} of {total} in current phase
136
+ Status: Building → Reviewing (if all plans done) or Building (if more plans remain)
137
+ Last activity: {date} -- Built plan {plan_id}
138
+ ```
139
+
140
+ ### After review/verification passes
141
+ ```
142
+ Status: Verified
143
+ Last activity: {date} -- Phase {N} verified
144
+ Progress: [{updated bar}] {new percent}%
145
+ ```
146
+ Also update **Current focus** to point to the next phase.
147
+
148
+ ### After pause
149
+ ```
150
+ ## Session Continuity
151
+ Last session: {timestamp}
152
+ Stopped at: {what was in progress}
153
+ Resume file: .planning/.pause-state.json
154
+ ```
155
+
156
+ ### After milestone completion
157
+ ```
158
+ ## Milestone
159
+ Current: {project_name} {next_version}
160
+ Phases: {new_start}-{new_end}
161
+ Status: In progress
162
+ ```
@@ -0,0 +1,34 @@
1
+ <!-- canonical: ../../../pbr/skills/shared/universal-anti-patterns.md -->
2
+ # Universal Anti-Patterns
3
+
4
+ Rules that apply to ALL skills. Individual skills may have additional skill-specific anti-patterns listed in their own SKILL.md.
5
+
6
+ > Referenced by: all skills with Context Budget or Anti-Patterns sections
7
+
8
+ ---
9
+
10
+ ## Context Budget Rules (apply to every skill)
11
+
12
+ These rules prevent context rot -- quality degradation as the context window fills up.
13
+
14
+ 1. **Never** read agent definition files (`agents/*.md`) -- `subagent_type` auto-loads them. Reading agent definitions into the orchestrator wastes main context for content that is automatically injected into subagent sessions.
15
+ 2. **Never** inline large files into Task() prompts -- tell agents to read files from disk instead. Agents have their own 200k token context windows.
16
+ 3. **Minimize** reading subagent output into main context -- read only frontmatter, status fields, or summaries. Never read full SUMMARY.md, VERIFICATION.md, or RESEARCH.md bodies into the orchestrator unless specifically needed for inline presentation.
17
+ 4. **Delegate** heavy work to Task() subagents -- the orchestrator routes, it does not build, analyze, research, investigate, or verify.
18
+ 5. **Proactive pause warning**: If you have already consumed significant context (large file reads, multiple subagent results), warn the user: "Context budget is getting heavy. Consider running `/pbr:pause` to checkpoint progress." Suggest pause proactively rather than waiting for compaction.
19
+
20
+ ## File Reading Rules (apply to every skill)
21
+
22
+ 6. **Never** read full SUMMARY.md bodies from prior phases -- read frontmatter only (unless the skill specifically requires body content for presentation).
23
+ 7. **Never** read full PLAN.md files from other phases -- only current phase plans.
24
+ 8. **Never** read `.planning/logs/` files -- only the health skill reads these.
25
+ 9. **Do not** re-read full file contents when frontmatter is sufficient -- frontmatter contains status, key_files, commits, and provides fields.
26
+
27
+ ## Behavioral Rules (apply to every skill)
28
+
29
+ 10. **Do not** re-litigate decisions that are already locked in CONTEXT.md -- respect locked decisions unconditionally.
30
+ 11. **Do not** create artifacts the user did not approve -- always confirm before writing new planning documents.
31
+ 12. **Do not** modify files outside the skill's stated scope -- check the "Files Created/Modified" table in each skill.
32
+ 13. **Do not** suggest multiple next actions without clear priority -- one primary suggestion, alternatives listed secondary.
33
+ 14. **Do not** use `git add .` or `git add -A` -- stage specific files only.
34
+ 15. **Do not** include sensitive information (API keys, passwords, tokens) in planning documents or commits.
@@ -0,0 +1,362 @@
1
+ ---
2
+ name: status
3
+ description: "Show current project status and suggest what to do next."
4
+ ---
5
+
6
+ ## Step 0 — Immediate Output
7
+
8
+ **Before ANY tool calls**, display this banner:
9
+
10
+ ```
11
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
12
+ PLAN-BUILD-RUN ► PROJECT STATUS
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ ```
15
+
16
+ Then proceed to Step 1.
17
+
18
+ # /pbr:status — Project Status Dashboard
19
+
20
+ You are running the **status** skill. Your job is to read the project state and present a clear, actionable status dashboard. You suggest the most logical next action based on where the project is.
21
+
22
+ This skill runs **inline** and is **read-only** — it never modifies any files.
23
+
24
+ ---
25
+
26
+ ## Core Principle
27
+
28
+ **Show the user where they are and what to do next.** The status display should be a quick glance, not a wall of text. Surface problems and route to the right action.
29
+
30
+ ---
31
+
32
+ ## Flow
33
+
34
+ ### Step 1: Read Project State
35
+
36
+ **Tooling shortcut**: Instead of parsing multiple files manually, you can run:
37
+ ```bash
38
+ node ${PLUGIN_ROOT}/scripts/pbr-tools.js state load
39
+ ```
40
+ and
41
+ ```bash
42
+ node ${PLUGIN_ROOT}/scripts/pbr-tools.js state check-progress
43
+ ```
44
+ These return structured JSON with config, state, roadmap, and filesystem-verified progress. Falls back gracefully if the script is missing — parse files manually in that case.
45
+
46
+ Read the following files (skip any that don't exist):
47
+
48
+ 1. **`.planning/config.json`** — Project settings
49
+ - If this doesn't exist, display:
50
+ ```
51
+ ERROR
52
+
53
+ No Plan-Build-Run project found.
54
+
55
+ **To fix:** Run `/pbr:begin` to start a new project, or `/pbr:scan` to analyze an existing codebase.
56
+ ```
57
+ - Stop here if no project found.
58
+
59
+ 2. **`.planning/STATE.md`** — Current position, progress, blockers
60
+ - Extract: current phase, current plan, overall progress, blockers, session info
61
+
62
+ 3. **`.planning/ROADMAP.md`** — Phase overview
63
+ - Extract: all phases with names, descriptions, status indicators
64
+
65
+ 4. **`.planning/PROJECT.md`** — Project metadata (if exists)
66
+ - Extract: project name, milestone info
67
+
68
+ 5. **`.planning/REQUIREMENTS.md`** — Requirements (if exists)
69
+ - Extract: requirement completion status if tracked
70
+
71
+ ### Step 2: Scan Phase Directories
72
+
73
+ For each phase listed in ROADMAP.md:
74
+
75
+ 1. Check if the phase directory exists in `.planning/phases/`
76
+ 2. If exists, scan for:
77
+ - `CONTEXT.md` — discussion happened
78
+ - `*-PLAN.md` or `PLAN.md` files — plans exist
79
+ - `*-SUMMARY.md` or `SUMMARY.md` files — plans were executed
80
+ - `VERIFICATION.md` — phase was reviewed
81
+ - `.continue-here.md` — paused work
82
+
83
+ 3. Calculate phase status:
84
+
85
+ | Condition | Status |
86
+ |-----------|--------|
87
+ | No directory | Not started |
88
+ | Directory exists, no plans | Discussed only |
89
+ | Plans exist, no summaries | Planned (ready to build) |
90
+ | Some summaries, not all | Building (in progress) |
91
+ | All summaries exist | Built (ready to review) |
92
+ | VERIFICATION.md exists, status=passed | Verified (complete) |
93
+ | VERIFICATION.md exists, status=gaps_found | Needs fixes |
94
+
95
+ 4. Calculate progress percentage:
96
+ - Count total plans across all phases
97
+ - Count plans with SUMMARY.md (status=completed)
98
+ - Progress = completed / total * 100
99
+
100
+ ### Step 2b: Check STATE.md Size and Consistency
101
+
102
+ Count lines in `.planning/STATE.md`. If over 150 lines, add a warning to the dashboard:
103
+ ```
104
+ Warning: STATE.md is {N} lines (limit: 150). Run any build/review command to auto-compact it.
105
+ ```
106
+
107
+ **Discrepancy check:** Compare STATE.md phase/plan/status claims against the filesystem:
108
+ - Does the phase directory exist? If not: `Warning: STATE.md references Phase {N} but no directory exists.`
109
+ - Does the plan count match? If not: `Warning: STATE.md says {X} plans but filesystem has {Y}.`
110
+ - Does the status match? If STATE.md says "verified" but no `VERIFICATION.md` exists: `Warning: STATE.md says "verified" but no VERIFICATION.md found.`
111
+
112
+ If any discrepancy found, add: `Run /pbr:resume to auto-reconcile STATE.md.`
113
+
114
+ ### Step 3: Check for Special Conditions
115
+
116
+ #### Paused Work
117
+ - Search for `.continue-here.md` files in `.planning/phases/`
118
+ - If found: note the phase and brief description of where work stopped
119
+
120
+ #### Verification Gaps
121
+ - Search for `VERIFICATION.md` files with `gaps_found` status
122
+ - If found: note which phases have gaps
123
+
124
+ #### Cross-Phase Re-Planning Check
125
+ - For each planned phase, check if its dependency phases have been built yet
126
+ - Logic:
127
+ 1. Read ROADMAP.md to find phase dependencies (phases that come before)
128
+ 2. If Phase N has plans but Phase N-1 doesn't have summaries (wasn't built yet):
129
+ - This means Phase N was planned without knowledge of what Phase N-1 actually produced
130
+ - Flag for re-planning
131
+ - **Dependency fingerprint check**: For each planned phase with `dependency_fingerprints` in plan frontmatter:
132
+ 1. Compare the fingerprints against current dependency SUMMARY.md files
133
+ 2. If any fingerprint is stale (dependency was re-built after the plan was created):
134
+ - Flag: "WARN: Phase {N} plans may be stale — dependency phase {M} was re-built since planning. Consider re-planning with `/pbr:plan {N}`."
135
+
136
+ #### Active Debug Sessions
137
+ - Check `.planning/debug/` for files with `status: active`
138
+ - Note any active debug sessions
139
+
140
+ #### Pending Todos
141
+ - Check `.planning/todos/pending/` for pending todo files
142
+ - Count and summarize if any exist
143
+
144
+ #### Quick Notes
145
+ - Check `.planning/NOTES.md` for active note entries
146
+ - Count active notes (lines matching `^- \[` that don't contain `[promoted]`)
147
+ - Also check `~/.claude/notes.md` for global notes
148
+
149
+ #### Quick Tasks
150
+ - Check `.planning/quick/` for recent quick tasks
151
+ - Note any failed or partial quick tasks
152
+
153
+ ### Step 4: Display Status Dashboard
154
+
155
+ Present the status in this format:
156
+
157
+ ```
158
+ Project: {name from PROJECT.md or config.json}
159
+ Phase: {current} of {total} -- {current phase name}
160
+ Progress: [{progress bar}] {percentage}%
161
+
162
+ Phase Status:
163
+ | Phase | Status | Plans | Progress |
164
+ |-------|--------|-------|----------|
165
+ | 1. {name} | {status indicator} {status text} | {completed}/{total} | {percentage}% |
166
+ | 2. {name} | {status indicator} {status text} | {completed}/{total} | {percentage}% |
167
+ | ...
168
+
169
+ {If blockers exist:}
170
+ Blockers:
171
+ - {blocker 1}
172
+ - {blocker 2}
173
+
174
+ {If no blockers:}
175
+ Blockers: None
176
+
177
+ {If paused work:}
178
+ Paused: Phase {N} has a checkpoint at plan {M}. Run `/pbr:resume` to continue.
179
+
180
+ {If verification gaps:}
181
+ Gaps: Phase {N} verification found {count} gaps. Run `/pbr:plan {N} --gaps` to address.
182
+
183
+ {If cross-phase re-planning needed:}
184
+ Warning: Phase {N} was planned before Phase {M} was built. Consider re-planning with `/pbr:plan {N}`.
185
+
186
+ {If active debug sessions:}
187
+ Debug: {count} active session(s). Run `/pbr:debug` to continue.
188
+
189
+ {If pending todos:}
190
+ Todos: {count} pending. Run `/pbr:todo list` to see them.
191
+
192
+ {If notes exist:}
193
+ Notes: {count} quick capture(s). `/pbr:note list` to review.
194
+ ```
195
+
196
+ ### Progress Bar
197
+
198
+ Generate a 20-character progress bar:
199
+
200
+ ```
201
+ [████████████████████] 100% (all filled)
202
+ [████████████████░░░░] 80% (16 filled, 4 empty)
203
+ [████████░░░░░░░░░░░░] 40% (8 filled, 12 empty)
204
+ [░░░░░░░░░░░░░░░░░░░░] 0% (all empty)
205
+ ```
206
+
207
+ Use Unicode block characters:
208
+ - Filled: full block (U+2588)
209
+ - Empty: light shade (U+2591)
210
+
211
+ ### Status Indicators
212
+
213
+ Use indicators from `references/ui-formatting.md`:
214
+
215
+ | Status | Indicator |
216
+ |--------|-----------|
217
+ | Complete/Verified | checkmark |
218
+ | In Progress | half-filled circle |
219
+ | Not started | empty circle |
220
+ | Needs fixes | warning triangle |
221
+ | Blocked | blocked symbol |
222
+
223
+ ### Step 5: Smart Routing
224
+
225
+ Based on the project state, suggest the single most logical next action:
226
+
227
+ **Decision tree:**
228
+
229
+ ```
230
+ 1. Is there paused work (.continue-here.md)?
231
+ YES -> "Resume your work: `/pbr:resume`"
232
+
233
+ 2. Is there a verification with gaps?
234
+ YES -> "Fix verification gaps: `/pbr:plan {N} --gaps`"
235
+
236
+ 3. Is the current phase planned but not built?
237
+ YES -> "Build the current phase: `/pbr:build {N}`"
238
+
239
+ 4. Is the current phase built but not reviewed?
240
+ YES -> "Review what was built: `/pbr:review {N}`"
241
+
242
+ 5. Is the current phase verified (complete)?
243
+ YES -> Is there a next phase?
244
+ YES -> Was next phase already planned?
245
+ YES -> Does it need re-planning? (dependency phase changed)
246
+ YES -> "Re-plan with updated context: `/pbr:plan {N+1}`"
247
+ NO -> "Build the next phase: `/pbr:build {N+1}`"
248
+ NO -> "Plan the next phase: `/pbr:plan {N+1}`"
249
+ NO -> "All phases complete! Your next steps:\n -> /pbr:milestone audit — verify cross-phase integration (recommended)\n -> /pbr:milestone complete — archive this milestone and create a git tag\n -> /pbr:milestone new — start planning the next set of features"
250
+
251
+ 6. Is the current phase not started?
252
+ YES -> Has it been discussed?
253
+ YES -> "Plan this phase: `/pbr:plan {N}`"
254
+ NO -> "Start with a discussion: `/pbr:discuss {N}` or jump to `/pbr:plan {N}`"
255
+
256
+ 7. Active debug sessions?
257
+ YES -> "Continue debugging: `/pbr:debug`"
258
+
259
+ 8. Nothing active?
260
+ -> "Start your project: `/pbr:begin`"
261
+ ```
262
+
263
+ **If only one reasonable next action exists**, present it with branded routing:
264
+
265
+ ```
266
+ ---
267
+
268
+ ## Next Up
269
+
270
+ **{brief explanation}**
271
+
272
+ `{suggested command}`
273
+
274
+ `/clear` first for a fresh context window
275
+
276
+ ---
277
+ ```
278
+
279
+ **If multiple reasonable next actions exist** (2-3 alternatives), use the **action-routing** pattern (see `skills/shared/gate-prompts.md`):
280
+
281
+ Present options:
282
+ question: "What would you like to do next?"
283
+ header: "Next Step"
284
+ options:
285
+ - label: "{primary action}" description: "{brief explanation}"
286
+ - label: "{alternative 1}" description: "{brief explanation}"
287
+ - label: "{alternative 2}" description: "{brief explanation}"
288
+ - label: "Something else" description: "Enter a different command"
289
+ multiSelect: false
290
+
291
+ Build options dynamically from the decision tree results. Always include "Something else" as the last option. Generate 1-3 real options based on the state analysis.
292
+
293
+ **After user selects an option:**
294
+ - If they selected a real action: display "Run: `/pbr:{action} {args}`" so they can execute it
295
+ - If they selected "Something else": ask what they'd like to do (freeform text)
296
+ - This skill remains read-only — display the command, do not execute it
297
+
298
+ ---
299
+
300
+ ## Edge Cases
301
+
302
+ ### No `.planning/` directory at all
303
+ - Display: "No Plan-Build-Run project found."
304
+ - Suggest: `/pbr:begin` to start a new project
305
+ - Also mention: `/pbr:scan` if there's an existing codebase to analyze first
306
+
307
+ ### STATE.md exists but is outdated
308
+ - STATE.md may not reflect the actual file system state
309
+ - Always verify by scanning phase directories
310
+ - If STATE.md disagrees with the file system, note the discrepancy:
311
+ "Note: STATE.md says Phase 2 is in progress, but all plans have summaries. Status may need updating."
312
+
313
+ ### All phases complete
314
+ - Celebrate briefly: "All phases complete!"
315
+ - Suggest: `/pbr:milestone audit` to verify cross-phase integration (recommended first)
316
+ - Then: `/pbr:milestone complete` to archive the milestone and tag it
317
+ - Or: `/pbr:milestone new` to start the next set of features
318
+
319
+ ### ROADMAP.md has phases but no phase directories
320
+ - This is normal for future phases
321
+ - Show them as "Not started" with no plan counts
322
+
323
+ ### Multiple milestones
324
+ - If PROJECT.md shows multiple milestones, display the current one
325
+ - Show completed milestones as collapsed summary
326
+
327
+ ### Large project (many phases)
328
+ - If more than 8 phases, consider grouping:
329
+ - Completed phases: collapsed summary
330
+ - Current phase: full detail
331
+ - Upcoming phases: brief list
332
+
333
+ ---
334
+
335
+ ## Performance
336
+
337
+ This skill should be fast. It's a status check, not an analysis.
338
+
339
+ **DO:**
340
+ - Read files quickly (frontmatter only where possible)
341
+ - Use Glob to find files efficiently
342
+ - Cache nothing (always read fresh state)
343
+
344
+ **DO NOT:**
345
+ - Read full SUMMARY.md contents (frontmatter is enough)
346
+ - Read plan file contents (just check existence)
347
+ - Run any Bash commands
348
+ - Modify any files
349
+ - Invoke any agents
350
+
351
+ ---
352
+
353
+ ## Anti-Patterns
354
+
355
+ 1. **DO NOT** modify any files — this is read-only
356
+ 2. **DO NOT** run Bash commands — use Read and Glob only
357
+ 3. **DO NOT** show overwhelming detail — keep it scannable
358
+ 4. **DO NOT** hide problems — surface blockers, gaps, and warnings prominently
359
+ 5. **DO NOT** suggest multiple actions without prioritizing — the primary suggestion should be clear
360
+ 6. **DO NOT** re-read full file contents when frontmatter is sufficient
361
+ 7. **DO NOT** show completed phases in full detail unless specifically relevant
362
+ 8. **DO NOT** execute the suggested action — present it for the user to run manually. Use /pbr:continue for auto-execution.