@sienklogic/plan-build-run 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/CHANGELOG.md +56 -56
  2. package/CLAUDE.md +149 -149
  3. package/LICENSE +21 -21
  4. package/README.md +247 -247
  5. package/dashboard/bin/cli.js +25 -25
  6. package/dashboard/package.json +34 -34
  7. package/dashboard/public/css/layout.css +406 -406
  8. package/dashboard/public/css/status-colors.css +98 -98
  9. package/dashboard/public/js/htmx-title.js +5 -5
  10. package/dashboard/public/js/sidebar-toggle.js +20 -20
  11. package/dashboard/src/app.js +78 -78
  12. package/dashboard/src/middleware/errorHandler.js +52 -52
  13. package/dashboard/src/middleware/notFoundHandler.js +9 -9
  14. package/dashboard/src/repositories/planning.repository.js +128 -128
  15. package/dashboard/src/routes/events.routes.js +40 -40
  16. package/dashboard/src/routes/index.routes.js +31 -31
  17. package/dashboard/src/routes/pages.routes.js +245 -195
  18. package/dashboard/src/server.js +42 -42
  19. package/dashboard/src/services/dashboard.service.js +222 -222
  20. package/dashboard/src/services/phase.service.js +220 -167
  21. package/dashboard/src/services/project.service.js +57 -57
  22. package/dashboard/src/services/roadmap.service.js +171 -171
  23. package/dashboard/src/services/sse.service.js +58 -58
  24. package/dashboard/src/services/todo.service.js +254 -254
  25. package/dashboard/src/services/watcher.service.js +48 -48
  26. package/dashboard/src/views/coming-soon.ejs +11 -11
  27. package/dashboard/src/views/error.ejs +13 -13
  28. package/dashboard/src/views/index.ejs +5 -5
  29. package/dashboard/src/views/layout.ejs +1 -1
  30. package/dashboard/src/views/partials/dashboard-content.ejs +77 -77
  31. package/dashboard/src/views/partials/footer.ejs +3 -3
  32. package/dashboard/src/views/partials/head.ejs +21 -21
  33. package/dashboard/src/views/partials/header.ejs +12 -12
  34. package/dashboard/src/views/partials/layout-bottom.ejs +15 -15
  35. package/dashboard/src/views/partials/layout-top.ejs +8 -8
  36. package/dashboard/src/views/partials/phase-content.ejs +188 -181
  37. package/dashboard/src/views/partials/phase-doc-content.ejs +38 -0
  38. package/dashboard/src/views/partials/phases-content.ejs +117 -117
  39. package/dashboard/src/views/partials/roadmap-content.ejs +142 -142
  40. package/dashboard/src/views/partials/sidebar.ejs +38 -38
  41. package/dashboard/src/views/partials/todo-create-content.ejs +53 -53
  42. package/dashboard/src/views/partials/todo-detail-content.ejs +38 -38
  43. package/dashboard/src/views/partials/todos-content.ejs +53 -53
  44. package/dashboard/src/views/phase-detail.ejs +5 -5
  45. package/dashboard/src/views/phase-doc.ejs +5 -0
  46. package/dashboard/src/views/phases.ejs +5 -5
  47. package/dashboard/src/views/roadmap.ejs +5 -5
  48. package/dashboard/src/views/todo-create.ejs +5 -5
  49. package/dashboard/src/views/todo-detail.ejs +5 -5
  50. package/dashboard/src/views/todos.ejs +5 -5
  51. package/package.json +57 -57
  52. package/plugins/pbr/.claude-plugin/plugin.json +13 -13
  53. package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -61
  54. package/plugins/pbr/agents/codebase-mapper.md +279 -271
  55. package/plugins/pbr/agents/debugger.md +281 -281
  56. package/plugins/pbr/agents/executor.md +428 -407
  57. package/plugins/pbr/agents/general.md +164 -164
  58. package/plugins/pbr/agents/integration-checker.md +169 -141
  59. package/plugins/pbr/agents/plan-checker.md +296 -280
  60. package/plugins/pbr/agents/planner.md +358 -358
  61. package/plugins/pbr/agents/researcher.md +363 -363
  62. package/plugins/pbr/agents/synthesizer.md +230 -230
  63. package/plugins/pbr/agents/verifier.md +489 -454
  64. package/plugins/pbr/commands/begin.md +5 -5
  65. package/plugins/pbr/commands/build.md +5 -5
  66. package/plugins/pbr/commands/config.md +5 -5
  67. package/plugins/pbr/commands/continue.md +5 -5
  68. package/plugins/pbr/commands/debug.md +5 -5
  69. package/plugins/pbr/commands/discuss.md +5 -5
  70. package/plugins/pbr/commands/explore.md +5 -5
  71. package/plugins/pbr/commands/health.md +5 -5
  72. package/plugins/pbr/commands/help.md +5 -5
  73. package/plugins/pbr/commands/import.md +5 -5
  74. package/plugins/pbr/commands/milestone.md +5 -5
  75. package/plugins/pbr/commands/note.md +5 -5
  76. package/plugins/pbr/commands/pause.md +5 -5
  77. package/plugins/pbr/commands/plan.md +5 -5
  78. package/plugins/pbr/commands/quick.md +5 -5
  79. package/plugins/pbr/commands/resume.md +5 -5
  80. package/plugins/pbr/commands/review.md +5 -5
  81. package/plugins/pbr/commands/scan.md +5 -5
  82. package/plugins/pbr/commands/setup.md +5 -5
  83. package/plugins/pbr/commands/status.md +5 -5
  84. package/plugins/pbr/commands/todo.md +5 -5
  85. package/plugins/pbr/contexts/dev.md +27 -27
  86. package/plugins/pbr/contexts/research.md +28 -28
  87. package/plugins/pbr/contexts/review.md +36 -36
  88. package/plugins/pbr/hooks/hooks.json +183 -183
  89. package/plugins/pbr/references/agent-anti-patterns.md +24 -24
  90. package/plugins/pbr/references/agent-interactions.md +134 -134
  91. package/plugins/pbr/references/agent-teams.md +54 -54
  92. package/plugins/pbr/references/checkpoints.md +157 -157
  93. package/plugins/pbr/references/common-bug-patterns.md +13 -13
  94. package/plugins/pbr/references/config-reference.md +441 -0
  95. package/plugins/pbr/references/continuation-format.md +212 -212
  96. package/plugins/pbr/references/deviation-rules.md +112 -112
  97. package/plugins/pbr/references/git-integration.md +226 -226
  98. package/plugins/pbr/references/integration-patterns.md +117 -117
  99. package/plugins/pbr/references/model-profiles.md +99 -99
  100. package/plugins/pbr/references/model-selection.md +31 -31
  101. package/plugins/pbr/references/pbr-rules.md +193 -193
  102. package/plugins/pbr/references/plan-authoring.md +181 -181
  103. package/plugins/pbr/references/plan-format.md +287 -283
  104. package/plugins/pbr/references/planning-config.md +213 -213
  105. package/plugins/pbr/references/questioning.md +214 -214
  106. package/plugins/pbr/references/reading-verification.md +127 -127
  107. package/plugins/pbr/references/stub-patterns.md +160 -160
  108. package/plugins/pbr/references/subagent-coordination.md +119 -119
  109. package/plugins/pbr/references/ui-formatting.md +461 -399
  110. package/plugins/pbr/references/verification-patterns.md +198 -198
  111. package/plugins/pbr/references/wave-execution.md +95 -95
  112. package/plugins/pbr/scripts/auto-continue.js +80 -80
  113. package/plugins/pbr/scripts/check-dangerous-commands.js +136 -136
  114. package/plugins/pbr/scripts/check-doc-sprawl.js +102 -102
  115. package/plugins/pbr/scripts/check-phase-boundary.js +196 -196
  116. package/plugins/pbr/scripts/check-plan-format.js +270 -270
  117. package/plugins/pbr/scripts/check-roadmap-sync.js +322 -252
  118. package/plugins/pbr/scripts/check-skill-workflow.js +262 -262
  119. package/plugins/pbr/scripts/check-state-sync.js +476 -476
  120. package/plugins/pbr/scripts/check-subagent-output.js +144 -144
  121. package/plugins/pbr/scripts/config-schema.json +251 -251
  122. package/plugins/pbr/scripts/context-budget-check.js +287 -287
  123. package/plugins/pbr/scripts/event-handler.js +151 -151
  124. package/plugins/pbr/scripts/event-logger.js +92 -92
  125. package/plugins/pbr/scripts/hook-logger.js +80 -76
  126. package/plugins/pbr/scripts/hooks-schema.json +79 -79
  127. package/plugins/pbr/scripts/log-subagent.js +164 -152
  128. package/plugins/pbr/scripts/log-tool-failure.js +88 -88
  129. package/plugins/pbr/scripts/pbr-tools.js +1378 -1301
  130. package/plugins/pbr/scripts/post-write-dispatch.js +66 -66
  131. package/plugins/pbr/scripts/post-write-quality.js +207 -207
  132. package/plugins/pbr/scripts/pre-bash-dispatch.js +86 -56
  133. package/plugins/pbr/scripts/pre-write-dispatch.js +97 -62
  134. package/plugins/pbr/scripts/progress-tracker.js +281 -228
  135. package/plugins/pbr/scripts/run-hook.js +92 -0
  136. package/plugins/pbr/scripts/session-cleanup.js +254 -254
  137. package/plugins/pbr/scripts/status-line.js +288 -285
  138. package/plugins/pbr/scripts/suggest-compact.js +119 -119
  139. package/plugins/pbr/scripts/task-completed.js +45 -45
  140. package/plugins/pbr/scripts/track-context-budget.js +149 -119
  141. package/plugins/pbr/scripts/validate-commit.js +200 -200
  142. package/plugins/pbr/scripts/validate-plugin-structure.js +183 -172
  143. package/plugins/pbr/scripts/validate-task.js +106 -0
  144. package/plugins/pbr/skills/begin/SKILL.md +594 -545
  145. package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -33
  146. package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -18
  147. package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -49
  148. package/plugins/pbr/skills/begin/templates/config.json.tmpl +64 -63
  149. package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -19
  150. package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -30
  151. package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -16
  152. package/plugins/pbr/skills/build/SKILL.md +943 -962
  153. package/plugins/pbr/skills/config/SKILL.md +256 -241
  154. package/plugins/pbr/skills/continue/SKILL.md +164 -127
  155. package/plugins/pbr/skills/debug/SKILL.md +515 -489
  156. package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -16
  157. package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -27
  158. package/plugins/pbr/skills/discuss/SKILL.md +347 -338
  159. package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -61
  160. package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -9
  161. package/plugins/pbr/skills/explore/SKILL.md +378 -362
  162. package/plugins/pbr/skills/health/SKILL.md +221 -186
  163. package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -30
  164. package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -63
  165. package/plugins/pbr/skills/help/SKILL.md +155 -140
  166. package/plugins/pbr/skills/import/SKILL.md +504 -490
  167. package/plugins/pbr/skills/milestone/SKILL.md +704 -673
  168. package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -48
  169. package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -30
  170. package/plugins/pbr/skills/note/SKILL.md +231 -212
  171. package/plugins/pbr/skills/pause/SKILL.md +249 -235
  172. package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -71
  173. package/plugins/pbr/skills/plan/SKILL.md +685 -628
  174. package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -98
  175. package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -21
  176. package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -32
  177. package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -38
  178. package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -19
  179. package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -23
  180. package/plugins/pbr/skills/quick/SKILL.md +354 -335
  181. package/plugins/pbr/skills/resume/SKILL.md +402 -388
  182. package/plugins/pbr/skills/review/SKILL.md +686 -652
  183. package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -60
  184. package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -40
  185. package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -115
  186. package/plugins/pbr/skills/scan/SKILL.md +304 -269
  187. package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -201
  188. package/plugins/pbr/skills/setup/SKILL.md +253 -227
  189. package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -35
  190. package/plugins/pbr/skills/shared/config-loading.md +102 -102
  191. package/plugins/pbr/skills/shared/context-budget.md +40 -40
  192. package/plugins/pbr/skills/shared/context-loader-task.md +86 -86
  193. package/plugins/pbr/skills/shared/digest-select.md +79 -79
  194. package/plugins/pbr/skills/shared/domain-probes.md +125 -125
  195. package/plugins/pbr/skills/shared/error-reporting.md +79 -79
  196. package/plugins/pbr/skills/shared/gate-prompts.md +388 -388
  197. package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -45
  198. package/plugins/pbr/skills/shared/progress-display.md +53 -53
  199. package/plugins/pbr/skills/shared/revision-loop.md +81 -81
  200. package/plugins/pbr/skills/shared/state-loading.md +62 -62
  201. package/plugins/pbr/skills/shared/state-update.md +161 -161
  202. package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -33
  203. package/plugins/pbr/skills/status/SKILL.md +367 -353
  204. package/plugins/pbr/skills/todo/SKILL.md +198 -181
  205. package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -52
  206. package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -151
  207. package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -97
  208. package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -40
  209. package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -81
  210. package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -116
  211. package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -98
  212. package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -93
  213. package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -104
  214. package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -78
  215. package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -78
  216. package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -80
  217. package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -107
  218. package/plugins/pbr/templates/continue-here.md.tmpl +73 -73
  219. package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -37
  220. package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -124
  221. package/plugins/pbr/templates/research/STACK.md.tmpl +71 -71
  222. package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -112
  223. package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -81
  224. package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -99
  225. package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +36 -36
@@ -1,186 +1,221 @@
1
- ---
2
- name: health
3
- description: "Check planning directory integrity. Find and fix corrupted state."
4
- allowed-tools: Read, Bash, Glob, Grep
5
- ---
6
-
7
- # /pbr:health Planning Directory Diagnostics
8
-
9
- You are running the **health** skill. Your job is to validate the integrity of the `.planning/` directory, report problems, and suggest targeted fixes. You never auto-repair anything.
10
-
11
- This skill runs **inline** and is **read-only** it never modifies any files.
12
-
13
- ---
14
-
15
- ## How Checks Work
16
-
17
- Each check follows the common pattern. Read `skills/health/templates/check-pattern.md.tmpl` for the shared execution flow: target files, validate against rules, classify as PASS/FAIL/WARN/INFO, and record the result with a fix suggestion for any failures.
18
-
19
- Read `skills/health/templates/output-format.md.tmpl` for the output format: summary table, status indicators, issues list, optional recent decisions, and final result line.
20
-
21
- ---
22
-
23
- ## Checks
24
-
25
- Run all 9 checks in order. Collect results and present them together at the end.
26
-
27
- ### Check 1: Structure
28
-
29
- Validate `.planning/` exists with required scaffolding: `STATE.md`, `config.json`, `ROADMAP.md`.
30
-
31
- - If `.planning/` is missing: FAIL the entire health check immediately. Display:
32
- ```
33
- ╔══════════════════════════════════════════════════════════════╗
34
- ║ ERROR ║
35
- ╚══════════════════════════════════════════════════════════════╝
36
-
37
- No .planning/ directory found.
38
-
39
- **To fix:** Run `/pbr:begin` to initialize.
40
- ```
41
- Stop all further checks.
42
- - PASS: All three required files exist
43
- - FAIL: List each missing file "Run `/pbr:begin` to re-initialize, or create the file manually."
44
-
45
- ### Check 2: Config Validity
46
-
47
- Parse `.planning/config.json` as JSON. Check required fields: `projectName`, `version`. Check recommended fields: `phases`, `currentPhase`.
48
-
49
- - PASS: Valid JSON with all required fields
50
- - FAIL (parse error): Report the parse error message — "Open the file and correct the syntax."
51
- - FAIL (missing required field): Report which field — "Add the field to config.json."
52
- - WARN (missing recommended field): Report which field — "This may cause issues with some skills."
53
-
54
- ### Check 3: Phase Consistency
55
-
56
- Compare directories in `.planning/phases/` against phases defined in `ROADMAP.md`.
57
-
58
- - PASS: Every directory matches a ROADMAP.md phase; no started phases are missing directories
59
- - FAIL (orphan directory): Directory exists but not in ROADMAP.md — "Add to ROADMAP.md or remove the directory."
60
- - FAIL (missing directory): ROADMAP.md lists phase as in-progress but directory missing — "Create the directory or update ROADMAP.md."
61
- - Note: Future phases without directories are normal (not a failure).
62
-
63
- ### Check 4: Plan/Summary Pairing
64
-
65
- Glob all `PLAN*.md` and `SUMMARY*.md` in `.planning/phases/`. Match by plan number. A PLAN without SUMMARY is normal unless the phase is marked complete.
66
-
67
- - PASS: All pairings valid, no orphaned summaries
68
- - FAIL (orphaned summary): SUMMARY has no matching PLAN — "Verify and remove or re-pair."
69
- - WARN (missing summary in complete phase): Phase marked complete but plan has no SUMMARY — "Execute with `/pbr:build` or mark phase incomplete."
70
-
71
- ### Check 5: STATE.md Accuracy
72
-
73
- Extract current phase, plan identifier, and progress percentage from `STATE.md`. Verify each against the file system.
74
-
75
- - PASS: All STATE.md references match the file system
76
- - FAIL (stale phase): Referenced phase directory does not exist — "Update STATE.md to reflect the actual current phase."
77
- - FAIL (stale plan): Referenced plan file does not exist — "Update STATE.md to the correct current plan."
78
- - FAIL (wrong progress): Stated progress does not match actual plan/summary counts — "Update the progress in STATE.md."
79
- - WARN (no position): No current phase or plan specified "Fine for new projects but may indicate lost state."
80
-
81
- ### Check 6: Frontmatter Validity
82
-
83
- Glob all `PLAN*.md` and `SUMMARY*.md` in `.planning/phases/`. Each file must start with `---`, have a closing `---`, contain valid YAML, and include required fields: `title`, `status`.
84
-
85
- - PASS: All files have valid frontmatter with required fields
86
- - FAIL (no frontmatter): "Add frontmatter block starting with `---` at the top of the file."
87
- - FAIL (malformed): Report the YAML error "Correct the YAML syntax between the `---` delimiters."
88
- - FAIL (missing field): Report which field — "Add `{field}: {suggested value}` to the frontmatter."
89
-
90
- ### Check 7: ROADMAP/STATE Sync
91
-
92
- Compare ROADMAP.md phase statuses against STATE.md current position. Flag if ROADMAP says a phase is "verified" but STATE says it is "building", or if phases after current are marked complete.
93
-
94
- - PASS: ROADMAP and STATE are consistent
95
- - FAIL (mismatch): Report both statuses — "Update STATE.md to match ROADMAP.md, or vice versa."
96
- - WARN (drift): Current phase in STATE.md is behind phases marked complete in ROADMAP.md.
97
-
98
- ### Check 8: Hook Execution Log
99
-
100
- Check if `.planning/logs/hooks.jsonl` exists. If so, scan last 20 entries for `result: "error"` or `result: "unlink-failed"`.
101
-
102
- - PASS: Log exists with no recent errors
103
- - WARN (errors found): Report error count and most recent error description — "Hooks may not be firing correctly."
104
- - INFO (no log): "No hook log found. Normal if no hooks have fired yet."
105
-
106
- ### Check 9: Config Completeness
107
-
108
- Read `.planning/config.json` and check for fields referenced by skills:
109
- - `features.auto_continue` (build skill, auto-continue.js hook)
110
- - `features.team_discussions` (config skill)
111
- - `features.goal_verification` (build, review skills)
112
- - `features.integration_verification` (review skill)
113
- - `git.mode` (config skill)
114
-
115
- - PASS: All expected fields present
116
- - WARN (missing fields): Report each missing field and which skill uses it — "Run `/pbr:config` to set all options."
117
-
118
- ---
119
-
120
- ## Bonus: Recent Decisions
121
-
122
- After all checks, look for `.planning/logs/decisions.jsonl`. If it exists, display the last 5 entries as `- {date}: {summary} (phase {N})`. If it does not exist, skip silently.
123
-
124
- ---
125
-
126
- ## Completion
127
-
128
- After all checks complete, display the branded result:
129
-
130
- **If all checks passed (0 failures):**
131
- ```
132
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
133
- PLAN-BUILD-RUN HEALTH CHECK PASSED
134
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
135
-
136
- {N} checks passed, {M} warnings
137
-
138
- ───────────────────────────────────────────────────────────────
139
-
140
- ## Next Up
141
-
142
- **Continue your workflow** — planning directory is healthy
143
-
144
- `/pbr:status`
145
-
146
- <sub>`/clear` first fresh context window</sub>
147
-
148
- ───────────────────────────────────────────────────────────────
149
-
150
- **Also available:**
151
- - `/pbr:continue` execute next logical step
152
- - `/pbr:config` — adjust settings
153
-
154
- ───────────────────────────────────────────────────────────────
155
- ```
156
-
157
- **If failures found:**
158
- ```
159
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
160
- PLAN-BUILD-RUN ► HEALTH CHECK FAILED ⚠
161
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
162
-
163
- {N} checks passed, {F} failures, {M} warnings
164
-
165
- ───────────────────────────────────────────────────────────────
166
-
167
- ## ▶ Next Up
168
-
169
- **Fix the failures** listed above, then re-run
170
-
171
- `/pbr:health`
172
-
173
- ───────────────────────────────────────────────────────────────
174
- ```
175
-
176
- ---
177
-
178
- ## Anti-Patterns
179
-
180
- 1. **DO NOT** modify any files — this is strictly read-only
181
- 2. **DO NOT** auto-repair anything — present fixes and let the user decide
182
- 3. **DO NOT** skip checks that depend on missing files — report the dependency failure and continue
183
- 4. **DO NOT** treat warnings as failures in the summary count — only count FAIL items
184
- 5. **DO NOT** read full plan/summary contents — frontmatter and existence checks are sufficient
185
- 6. **DO NOT** fail silently — every check must produce an explicit PASS, WARN, or FAIL
186
- 7. **DO NOT** suggest running destructive commands fixes should be safe, targeted edits
1
+ ---
2
+ name: health
3
+ description: "Check planning directory integrity. Find and fix corrupted state."
4
+ allowed-tools: Read, Bash, Glob, Grep
5
+ ---
6
+
7
+ **STOPDO NOT READ THIS FILE. You are already reading it. This prompt was injected into your context by Claude Code's plugin system. Using the Read tool on this SKILL.md file wastes ~7,600 tokens. Begin executing Step 1 immediately.**
8
+
9
+ ## Step 0 Immediate Output
10
+
11
+ **Before ANY tool calls**, display this banner:
12
+
13
+ ```
14
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
15
+ PLAN-BUILD-RUN HEALTH CHECK
16
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
17
+ ```
18
+
19
+ Then proceed to Step 1.
20
+
21
+ # /pbr:health — Planning Directory Diagnostics
22
+
23
+ You are running the **health** skill. Your job is to validate the integrity of the `.planning/` directory, report problems, and suggest targeted fixes. You never auto-repair anything.
24
+
25
+ This skill runs **inline** and is **read-only** it never modifies any files.
26
+
27
+ ---
28
+
29
+ ## How Checks Work
30
+
31
+ Each check follows the common pattern. Read `skills/health/templates/check-pattern.md.tmpl` for the shared execution flow: target files, validate against rules, classify as PASS/FAIL/WARN/INFO, and record the result with a fix suggestion for any failures.
32
+
33
+ Read `skills/health/templates/output-format.md.tmpl` for the output format: summary table, status indicators, issues list, optional recent decisions, and final result line.
34
+
35
+ ---
36
+
37
+ ## Checks
38
+
39
+ Run all 10 checks in order. Collect results and present them together at the end.
40
+
41
+ ### Check 1: Structure
42
+
43
+ Validate `.planning/` exists with required scaffolding: `STATE.md`, `config.json`, `ROADMAP.md`.
44
+
45
+ - If `.planning/` is missing: FAIL the entire health check immediately. Display:
46
+ ```
47
+ ╔══════════════════════════════════════════════════════════════╗
48
+ ║ ERROR ║
49
+ ╚══════════════════════════════════════════════════════════════╝
50
+
51
+ No .planning/ directory found.
52
+
53
+ **To fix:** Run `/pbr:begin` to initialize.
54
+ ```
55
+ Stop all further checks.
56
+ - PASS: All three required files exist
57
+ - FAIL: List each missing file — "Run `/pbr:begin` to re-initialize, or create the file manually."
58
+
59
+ ### Check 2: Config Validity
60
+
61
+ Parse `.planning/config.json` as JSON. Check required fields: `version`, `depth`. Check recommended fields: `features`, `models`.
62
+
63
+ - PASS: Valid JSON with all required fields
64
+ - FAIL (parse error): Report the parse error message — "Open the file and correct the syntax."
65
+ - FAIL (missing required field): Report which field "Add the field to config.json."
66
+ - WARN (missing recommended field): Report which field — "This may cause issues with some skills."
67
+
68
+ ### Check 3: Phase Consistency
69
+
70
+ Compare directories in `.planning/phases/` against phases defined in `ROADMAP.md`.
71
+
72
+ - PASS: Every directory matches a ROADMAP.md phase; no started phases are missing directories
73
+ - FAIL (orphan directory): Directory exists but not in ROADMAP.md "Add to ROADMAP.md or remove the directory."
74
+ - FAIL (missing directory): ROADMAP.md lists phase as in-progress but directory missing — "Create the directory or update ROADMAP.md."
75
+ - Note: Future phases without directories are normal (not a failure).
76
+
77
+ ### Check 4: Plan/Summary Pairing
78
+
79
+ Glob all `PLAN*.md` and `SUMMARY*.md` in `.planning/phases/`. Match by plan number. A PLAN without SUMMARY is normal unless the phase is marked complete.
80
+
81
+ - PASS: All pairings valid, no orphaned summaries
82
+ - FAIL (orphaned summary): SUMMARY has no matching PLAN — "Verify and remove or re-pair."
83
+ - WARN (missing summary in complete phase): Phase marked complete but plan has no SUMMARY "Execute with `/pbr:build` or mark phase incomplete."
84
+
85
+ ### Check 5: STATE.md Accuracy
86
+
87
+ Extract current phase, plan identifier, and progress percentage from `STATE.md`. Verify each against the file system.
88
+
89
+ - PASS: All STATE.md references match the file system
90
+ - FAIL (stale phase): Referenced phase directory does not exist — "Update STATE.md to reflect the actual current phase."
91
+ - FAIL (stale plan): Referenced plan file does not exist — "Update STATE.md to the correct current plan."
92
+ - FAIL (wrong progress): Stated progress does not match actual plan/summary counts "Update the progress in STATE.md."
93
+ - WARN (no position): No current phase or plan specified — "Fine for new projects but may indicate lost state."
94
+
95
+ ### Check 6: Frontmatter Validity
96
+
97
+ Glob all `PLAN*.md` and `SUMMARY*.md` in `.planning/phases/`. Each file must start with `---`, have a closing `---`, contain valid YAML, and include required fields: `title`, `status`.
98
+
99
+ - PASS: All files have valid frontmatter with required fields
100
+ - FAIL (no frontmatter): "Add frontmatter block starting with `---` at the top of the file."
101
+ - FAIL (malformed): Report the YAML error — "Correct the YAML syntax between the `---` delimiters."
102
+ - FAIL (missing field): Report which field "Add `{field}: {suggested value}` to the frontmatter."
103
+
104
+ ### Check 7: ROADMAP/STATE Sync
105
+
106
+ Compare ROADMAP.md phase statuses against STATE.md current position. Flag if ROADMAP says a phase is "verified" but STATE says it is "building", or if phases after current are marked complete.
107
+
108
+ - PASS: ROADMAP and STATE are consistent
109
+ - FAIL (mismatch): Report both statuses — "Update STATE.md to match ROADMAP.md, or vice versa."
110
+ - WARN (drift): Current phase in STATE.md is behind phases marked complete in ROADMAP.md.
111
+
112
+ ### Check 8: Hook Execution Log
113
+
114
+ Check if `.planning/logs/hooks.jsonl` exists. Also check the legacy path `.planning/.hook-log` (the logger migrates this automatically, but it may still exist if hooks haven't fired since the migration was added). Use whichever file exists (prefer `hooks.jsonl`). If found, scan last 20 entries for `decision: "error"` or `decision: "unlink-failed"`.
115
+
116
+ - PASS: Log exists with no recent errors
117
+ - WARN (errors found): Report error count and most recent error description — "Hooks may not be firing correctly."
118
+ - INFO (no log): "No hook log found. Normal if no hooks have fired yet."
119
+
120
+ ### Check 9: Config Completeness
121
+
122
+ Read `.planning/config.json` and check for fields referenced by skills:
123
+ - `features.auto_continue` (build skill, auto-continue.js hook)
124
+ - `features.team_discussions` (config skill)
125
+ - `features.goal_verification` (build, review skills)
126
+ - `features.integration_verification` (review skill)
127
+ - `git.mode` (config skill)
128
+ - `planning.commit_docs` (import, discuss, quick skills) — must be a boolean; validate that the value is strictly `true` or `false`, not a string or number
129
+
130
+ - PASS: All expected fields present with correct types
131
+ - WARN (missing fields): Report each missing field and which skill uses it — "Run `/pbr:config` to set all options."
132
+
133
+ ### Check 10: Orphaned Crash Recovery Files
134
+
135
+ The executor creates `.PROGRESS-{plan_id}` files as crash recovery breadcrumbs during builds and deletes them after `SUMMARY.md` is written. Similarly, `.checkpoint-manifest.json` files track checkpoint state during execution. If the executor crashes mid-build, these files remain and could confuse future runs.
136
+
137
+ Glob for `.planning/phases/**/.PROGRESS-*` and `.planning/phases/**/.checkpoint-manifest.json`.
138
+
139
+ - PASS: No orphaned files found
140
+ - WARN (orphaned progress files): List each file with its parent phase directory:
141
+ ```
142
+ Orphaned progress files detected:
143
+ - .planning/phases/02-auth/.PROGRESS-02-01 (executor may have crashed)
144
+ ```
145
+ Fix suggestion: "These are crash recovery breadcrumbs from interrupted builds. Safe to delete if no `/pbr:build` is currently running. Remove with `rm <path>`."
146
+ - WARN (orphaned checkpoint manifests): List each file:
147
+ ```
148
+ Orphaned checkpoint manifests detected:
149
+ - .planning/phases/02-auth/.checkpoint-manifest.json (stale build checkpoint)
150
+ ```
151
+ Fix suggestion: "Checkpoint manifests are leftover from interrupted builds. Safe to delete if no `/pbr:build` is currently running. Remove with `rm <path>`."
152
+
153
+ ---
154
+
155
+ ## Bonus: Recent Decisions
156
+
157
+ After all checks, look for `.planning/logs/decisions.jsonl`. If it exists, display the last 5 entries as `- {date}: {summary} (phase {N})`. If it does not exist, skip silently.
158
+
159
+ ---
160
+
161
+ ## Completion
162
+
163
+ After all checks complete, display the branded result:
164
+
165
+ **If all checks passed (0 failures):**
166
+ ```
167
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
168
+ PLAN-BUILD-RUN ► HEALTH CHECK PASSED ✓
169
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
170
+
171
+ {N} checks passed, {M} warnings
172
+
173
+ ───────────────────────────────────────────────────────────────
174
+
175
+ ## ▶ Next Up
176
+
177
+ **Continue your workflow** — planning directory is healthy
178
+
179
+ `/pbr:status`
180
+
181
+ <sub>`/clear` first fresh context window</sub>
182
+
183
+ ───────────────────────────────────────────────────────────────
184
+
185
+ **Also available:**
186
+ - `/pbr:continue`execute next logical step
187
+ - `/pbr:config` — adjust settings
188
+
189
+ ───────────────────────────────────────────────────────────────
190
+ ```
191
+
192
+ **If failures found:**
193
+ ```
194
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
195
+ PLAN-BUILD-RUN ► HEALTH CHECK FAILED ⚠
196
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
197
+
198
+ {N} checks passed, {F} failures, {M} warnings
199
+
200
+ ───────────────────────────────────────────────────────────────
201
+
202
+ ## ▶ Next Up
203
+
204
+ **Fix the failures** listed above, then re-run
205
+
206
+ `/pbr:health`
207
+
208
+ ───────────────────────────────────────────────────────────────
209
+ ```
210
+
211
+ ---
212
+
213
+ ## Anti-Patterns
214
+
215
+ 1. **DO NOT** modify any files — this is strictly read-only
216
+ 2. **DO NOT** auto-repair anything — present fixes and let the user decide
217
+ 3. **DO NOT** skip checks that depend on missing files — report the dependency failure and continue
218
+ 4. **DO NOT** treat warnings as failures in the summary count — only count FAIL items
219
+ 5. **DO NOT** read full plan/summary contents — frontmatter and existence checks are sufficient
220
+ 6. **DO NOT** fail silently — every check must produce an explicit PASS, WARN, or FAIL
221
+ 7. **DO NOT** suggest running destructive commands — fixes should be safe, targeted edits
@@ -1,30 +1,30 @@
1
- # Health Check Execution Pattern
2
-
3
- Each of the 9 checks follows this common pattern. The check-specific details (what to read, what to validate, what constitutes PASS/FAIL) are defined in SKILL.md — this template describes only the shared execution flow.
4
-
5
- ## Pattern
6
-
7
- ```
8
- For check {check_number} ({check_name}):
9
-
10
- 1. READ — Read the target file(s): {target_files}
11
- 2. VALIDATE — Apply the check-specific rules: {validation_rules}
12
- 3. CLASSIFY — Determine result:
13
- - PASS: Validation succeeded, no issues found
14
- - FAIL: A required condition is violated (counts toward issue total)
15
- - WARN: A recommended condition is violated (does NOT count toward issue total)
16
- - INFO: Informational note, not a problem
17
- 4. RECORD — Store the result with:
18
- - Status: [PASS], [FAIL], [WARN], or [INFO]
19
- - Check name (short label)
20
- - One-line summary of finding
21
- - For FAIL/WARN: the specific file, the problem, and a concrete fix suggestion
22
- ```
23
-
24
- ## Rules
25
-
26
- - Every check MUST produce exactly one status line (PASS, FAIL, WARN, or INFO)
27
- - FAIL results MUST include: file path, problem description, and fix suggestion
28
- - Multiple failures within a single check produce multiple entries in the "Issues Found" section
29
- - Checks never auto-repair — they report only
30
- - If a check depends on a prior check's file (e.g., Check 2 needs config.json which Check 1 validates exists), and that file is missing, report the dependency failure and move on
1
+ # Health Check Execution Pattern
2
+
3
+ Each of the 9 checks follows this common pattern. The check-specific details (what to read, what to validate, what constitutes PASS/FAIL) are defined in SKILL.md — this template describes only the shared execution flow.
4
+
5
+ ## Pattern
6
+
7
+ ```
8
+ For check {check_number} ({check_name}):
9
+
10
+ 1. READ — Read the target file(s): {target_files}
11
+ 2. VALIDATE — Apply the check-specific rules: {validation_rules}
12
+ 3. CLASSIFY — Determine result:
13
+ - PASS: Validation succeeded, no issues found
14
+ - FAIL: A required condition is violated (counts toward issue total)
15
+ - WARN: A recommended condition is violated (does NOT count toward issue total)
16
+ - INFO: Informational note, not a problem
17
+ 4. RECORD — Store the result with:
18
+ - Status: [PASS], [FAIL], [WARN], or [INFO]
19
+ - Check name (short label)
20
+ - One-line summary of finding
21
+ - For FAIL/WARN: the specific file, the problem, and a concrete fix suggestion
22
+ ```
23
+
24
+ ## Rules
25
+
26
+ - Every check MUST produce exactly one status line (PASS, FAIL, WARN, or INFO)
27
+ - FAIL results MUST include: file path, problem description, and fix suggestion
28
+ - Multiple failures within a single check produce multiple entries in the "Issues Found" section
29
+ - Checks never auto-repair — they report only
30
+ - If a check depends on a prior check's file (e.g., Check 2 needs config.json which Check 1 validates exists), and that file is missing, report the dependency failure and move on
@@ -1,63 +1,63 @@
1
- # Health Check Output Format
2
-
3
- Present results as a single report after all checks complete.
4
-
5
- ## Summary Table
6
-
7
- ```
8
- Planning Health Check
9
- =====================
10
-
11
- [PASS] Structure .planning/ exists, all required files present
12
- [FAIL] Config config.json missing required field `projectName`
13
- [PASS] Phase consistency Directories match ROADMAP.md phases
14
- [PASS] Plan/Summary All pairings valid
15
- [FAIL] STATE.md accuracy Phase reference is stale
16
- [PASS] Frontmatter All PLAN/SUMMARY files have valid frontmatter
17
- [PASS] ROADMAP/STATE sync ROADMAP and STATE phase statuses are consistent
18
- [PASS] Hook log No recent hook errors
19
- [PASS] Config completeness All expected fields present
20
- ```
21
-
22
- ## Status Indicators
23
-
24
- | Indicator | Meaning | Counts as Issue? |
25
- |-----------|---------|-----------------|
26
- | `[PASS]` | Check passed, no problems | No |
27
- | `[FAIL]` | Required condition violated | **Yes** |
28
- | `[WARN]` | Recommended condition violated | No |
29
- | `[INFO]` | Informational note | No |
30
-
31
- ## Issues Section
32
-
33
- Only shown when at least one FAIL exists:
34
-
35
- ```
36
- Issues Found: {count}
37
- ---------------
38
-
39
- 1. {problem description}
40
- File: {file path}
41
- Fix: {concrete fix suggestion}
42
-
43
- 2. {problem description}
44
- File: {file path}
45
- Fix: {concrete fix suggestion}
46
- ```
47
-
48
- ## Recent Decisions (Bonus)
49
-
50
- If `.planning/logs/decisions.jsonl` exists, show the last 5 entries:
51
-
52
- ```
53
- Recent Decisions:
54
- - {date}: {summary} (phase {N})
55
- - {date}: {summary} (phase {N})
56
- ```
57
-
58
- If the file does not exist, skip silently.
59
-
60
- ## Final Line
61
-
62
- - With issues: `Result: {N} issues found. Review and apply fixes manually.`
63
- - All passed: `Result: All checks passed. Planning directory is healthy.`
1
+ # Health Check Output Format
2
+
3
+ Present results as a single report after all checks complete.
4
+
5
+ ## Summary Table
6
+
7
+ ```
8
+ Planning Health Check
9
+ =====================
10
+
11
+ [PASS] Structure .planning/ exists, all required files present
12
+ [FAIL] Config config.json missing required field `depth`
13
+ [PASS] Phase consistency Directories match ROADMAP.md phases
14
+ [PASS] Plan/Summary All pairings valid
15
+ [FAIL] STATE.md accuracy Phase reference is stale
16
+ [PASS] Frontmatter All PLAN/SUMMARY files have valid frontmatter
17
+ [PASS] ROADMAP/STATE sync ROADMAP and STATE phase statuses are consistent
18
+ [PASS] Hook log No recent hook errors
19
+ [PASS] Config completeness All expected fields present
20
+ ```
21
+
22
+ ## Status Indicators
23
+
24
+ | Indicator | Meaning | Counts as Issue? |
25
+ |-----------|---------|-----------------|
26
+ | `[PASS]` | Check passed, no problems | No |
27
+ | `[FAIL]` | Required condition violated | **Yes** |
28
+ | `[WARN]` | Recommended condition violated | No |
29
+ | `[INFO]` | Informational note | No |
30
+
31
+ ## Issues Section
32
+
33
+ Only shown when at least one FAIL exists:
34
+
35
+ ```
36
+ Issues Found: {count}
37
+ ---------------
38
+
39
+ 1. {problem description}
40
+ File: {file path}
41
+ Fix: {concrete fix suggestion}
42
+
43
+ 2. {problem description}
44
+ File: {file path}
45
+ Fix: {concrete fix suggestion}
46
+ ```
47
+
48
+ ## Recent Decisions (Bonus)
49
+
50
+ If `.planning/logs/decisions.jsonl` exists, show the last 5 entries:
51
+
52
+ ```
53
+ Recent Decisions:
54
+ - {date}: {summary} (phase {N})
55
+ - {date}: {summary} (phase {N})
56
+ ```
57
+
58
+ If the file does not exist, skip silently.
59
+
60
+ ## Final Line
61
+
62
+ - With issues: `Result: {N} issues found. Review and apply fixes manually.`
63
+ - All passed: `Result: All checks passed. Planning directory is healthy.`