@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,269 +1,304 @@
1
- ---
2
- name: scan
3
- description: "Analyze an existing codebase. Maps structure, architecture, conventions, and concerns."
4
- allowed-tools: Read, Write, Bash, Glob, Grep, Task, AskUserQuestion
5
- ---
6
-
7
- # /pbr:scan Codebase Analysis
8
-
9
- You are running the **scan** skill. Your job is to analyze an existing codebase and produce a comprehensive map of its structure, architecture, conventions, and concerns. This is the entry point for brownfield projects codebases that already have code before Plan-Build-Run is introduced.
10
-
11
- This skill **spawns 4 parallel Task(subagent_type: "pbr:codebase-mapper")** agents for analysis.
12
-
13
- ---
14
-
15
- ## Context Budget
16
-
17
- Reference: `skills/shared/context-budget.md` for the universal orchestrator rules.
18
-
19
- Additionally for this skill:
20
- - **Never** analyze the codebase yourself — delegate ALL analysis to the 4 parallel codebase-mapper subagents
21
- - **Minimize** reading mapper outputs read only frontmatter or first 20 lines of each output document
22
- - **Delegate** all file reading, pattern analysis, and architecture mapping to the codebase-mapper subagents
23
-
24
- ---
25
-
26
- ## Core Principle
27
-
28
- **Understand before you change.** Scanning a codebase is about building a mental model of what exists. Every file produced by this skill becomes context that the planner and executor use to make informed decisions. Accuracy matters more than speed.
29
-
30
- ---
31
-
32
- ## Flow
33
-
34
- ### Step 1: Check for Existing Analysis
35
-
36
- Check if `.planning/codebase/` directory exists:
37
-
38
- **If it exists and has files:**
39
- - Present to user via AskUserQuestion:
40
- ```
41
- A codebase analysis already exists (from {date based on file modification}).
42
-
43
- Files found:
44
- - {list of .md files in the directory}
45
-
46
- Options:
47
- 1. Refresh the full analysis (overwrites existing)
48
- 2. Refresh a specific area (available areas depend on depth profile: quick mode only offers tech/arch)
49
- 3. Keep existing analysis
50
- ```
51
- - If user chooses "Keep": display a summary of existing analysis and stop
52
- - If user chooses "Refresh specific": only spawn that agent (Step 3)
53
- - If user chooses "Refresh all": proceed with full scan
54
-
55
- **If it doesn't exist:**
56
- - Create `.planning/codebase/` directory
57
- - Also create `.planning/` if it doesn't exist (scan can be run before begin)
58
- - Proceed with full scan
59
-
60
- ### Step 2: Initial Reconnaissance
61
-
62
- Reference: `skills/shared/context-loader-task.md` (Scan Reconnaissance variation) for the underlying pattern.
63
-
64
- Before spawning agents, do a quick scan to identify what we're working with. This gives agents better context.
65
-
66
- 1. **Detect project type** — check for language-specific config files (package.json, requirements.txt, go.mod, Cargo.toml, etc.)
67
- 2. **Detect project scale** — count source files (exclude node_modules, venv, .git, build, dist). Categories: Small (<50), Medium (50-200), Large (200-1000), Very Large (1000+)
68
- 3. **Detect key directories** identify src, test, docs, config, scripts, public, migrations directories
69
- 4. **Read existing docs** README.md, architecture docs, .env.example
70
- 5. **Write `.planning/codebase/RECON.md`** with project type, scale, key directories, entry points, and quick stats
71
-
72
- Refer to the "Reconnaissance Detection Reference" section of `skills/scan/templates/mapper-prompt.md.tmpl` for the full detection checklists.
73
-
74
- ### Step 3: Spawn Analysis Agents
75
-
76
- **Resolve mapper configuration:** Before spawning, resolve the depth profile:
77
- ```bash
78
- node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js config resolve-depth
79
- ```
80
-
81
- Read `profile["scan.mapper_count"]` and `profile["scan.mapper_areas"]` to determine how many mappers to spawn and which focus areas to cover.
82
-
83
- **Default mappings by depth:**
84
- - `quick` (budget): 2 mappers -- `tech` and `arch` only. Produces STACK.md, INTEGRATIONS.md, ARCHITECTURE.md, STRUCTURE.md. Skips quality and concerns analysis.
85
- - `standard` (balanced): 4 mappers -- all areas. Full analysis.
86
- - `comprehensive` (thorough): 4 mappers -- all areas. Full analysis.
87
-
88
- Display to the user: `◐ Spawning {mapper_count} codebase mapper(s) in parallel...`
89
-
90
- Spawn `{mapper_count}` parallel `Task(subagent_type: "pbr:codebase-mapper")` agents, one for each area in `scan.mapper_areas`. All should be spawned in a single response for maximum parallelism.
91
-
92
- For each agent, read `skills/scan/templates/mapper-prompt.md.tmpl` and fill in the placeholders:
93
- - `{focus_area}`: one of `tech`, `arch`, `quality`, `concerns`
94
- - `{project_path}`: the working directory
95
- - `{recon_data}`: contents of RECON.md
96
- - `{scale}`: detected scale from Step 2
97
- - `{output_path}`: `.planning/codebase/`
98
-
99
- | Agent | Focus | Output Files | When |
100
- |-------|-------|-------------|------|
101
- | 1 | tech | STACK.md, INTEGRATIONS.md | Always |
102
- | 2 | arch | ARCHITECTURE.md, STRUCTURE.md | Always |
103
- | 3 | quality | CONVENTIONS.md, TESTING.md | standard + comprehensive |
104
- | 4 | concerns | CONCERNS.md | standard + comprehensive |
105
-
106
- ### Step 4: Wait for Agents
107
-
108
- All 4 agents run in parallel. Report progress as each completes:
109
- ```
110
- Scanning codebase...
111
- [1/4] Technology stack... done
112
- [2/4] Architecture... done
113
- [3/4] Code quality... done
114
- [4/4] Concerns... done
115
- ```
116
-
117
- ### Step 5: Verify Output
118
-
119
- After all agents complete, verify the expected files exist:
120
-
121
- **Required files (always):**
122
- - `.planning/codebase/RECON.md` (created in Step 2)
123
- - `.planning/codebase/STACK.md` (tech mapper)
124
- - `.planning/codebase/INTEGRATIONS.md` (tech mapper)
125
- - `.planning/codebase/ARCHITECTURE.md` (arch mapper)
126
- - `.planning/codebase/STRUCTURE.md` (arch mapper)
127
-
128
- **Required files (standard + comprehensive only):**
129
- - `.planning/codebase/CONVENTIONS.md` (quality mapper)
130
- - `.planning/codebase/TESTING.md` (quality mapper)
131
- - `.planning/codebase/CONCERNS.md` (concerns mapper)
132
-
133
- Check only the files that correspond to the mapper areas that were actually spawned.
134
-
135
- For any missing files, display:
136
- ```
137
- ╔══════════════════════════════════════════════════════════════╗
138
- ║ ERROR ║
139
- ╚══════════════════════════════════════════════════════════════╝
140
-
141
- Missing analysis output: {filename}
142
- Agent that failed: {focus_area} mapper
143
-
144
- **To fix:** Re-run with `/pbr:scan` and select "Refresh a specific area" → {focus_area}.
145
- ```
146
-
147
- ### Step 6: Present Summary
148
-
149
- Read key findings from each file (frontmatter or first section) and display using the branded stage banner from `references/ui-formatting.md`:
150
-
151
- ```
152
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
153
- PLAN-BUILD-RUN SCAN COMPLETE
154
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
155
-
156
- Project: {type} ({scale})
157
- Stack: {primary language} + {framework}
158
- Architecture: {style}
159
-
160
- Key Stats:
161
- - {file count} source files, {test count} test files
162
- - {dependency count} dependencies
163
- - {integration count} external integrations
164
-
165
- Concerns: {critical} critical, {high} high, {medium} medium
166
-
167
- Top concerns:
168
- 1. {most critical concern}
169
- 2. {second concern}
170
- 3. {third concern}
171
-
172
- Full analysis: .planning/codebase/
173
- ```
174
-
175
- Then use the "Next Up" routing block:
176
- ```
177
- ───────────────────────────────────────────────────────────────
178
-
179
- ## ▶ Next Up
180
-
181
- **Start a project** — use the scan results to plan your work
182
-
183
- `/pbr:begin`
184
-
185
- <sub>`/clear` first → fresh context window</sub>
186
-
187
- ───────────────────────────────────────────────────────────────
188
-
189
- **Also available:**
190
- - `/pbr:milestone new` — create a milestone to address concerns
191
- - `/pbr:status` — see project status
192
-
193
- ───────────────────────────────────────────────────────────────
194
- ```
195
-
196
- ### Step 7: Git Integration
197
-
198
- Reference: `skills/shared/commit-planning-docs.md` for the standard commit pattern.
199
-
200
- If `.planning/config.json` exists and `planning.commit_docs: true`:
201
-
202
- ```bash
203
- git add .planning/codebase/
204
- git commit -m "docs(planning): map existing codebase"
205
- ```
206
-
207
- If no config exists yet (scan before begin), use AskUserQuestion (pattern: yes-no from `skills/shared/gate-prompts.md`):
208
- question: "Commit the codebase analysis to git?"
209
- header: "Commit?"
210
- options:
211
- - label: "Yes" description: "Stage and commit .planning/codebase/ files"
212
- - label: "No" description: "Skip commit — files are saved but not committed"
213
- - If "Yes": run `git add .planning/codebase/ && git commit -m "docs(planning): map existing codebase"`
214
- - If "No" or "Other": skip commit
215
-
216
- ---
217
-
218
- ## Edge Cases
219
-
220
- ### Monorepo with multiple projects
221
- - Detect by multiple package.json, separate src directories, workspace config
222
- - Ask user via AskUserQuestion: "This looks like a monorepo. Scan the whole repo or a specific project?"
223
- - If specific: scope all agents to that subdirectory
224
- - If whole: note the monorepo structure in ARCHITECTURE.md
225
-
226
- ### Empty or near-empty codebase
227
- - If fewer than 5 source files: "This codebase is very small. A scan may not be necessary."
228
- - Still allow it if user wants
229
- - Output will be minimal
230
-
231
- ### No source code (config-only repo, docs repo)
232
- - Detect: no recognized source file extensions
233
- - Adapt: focus on documentation quality, config structure
234
- - Skip code quality analysis
235
-
236
- ### Codebase has existing analysis
237
- - Check for architectural docs, ADRs, design docs
238
- - Reference them in the scan output
239
- - Don't contradict existing docs without strong evidence
240
-
241
- ### Binary files, large assets
242
- - Skip binary files in analysis
243
- - Note their existence in STRUCTURE.md
244
- - Flag large committed binaries as a concern
245
-
246
- ### Scan before /pbr:begin
247
- - This is a valid and encouraged workflow
248
- - Scan results become input for the begin skill
249
- - Create `.planning/` and `.planning/codebase/` if needed
250
- - Don't require config.json
251
-
252
- ---
253
-
254
- ## Anti-Patterns
255
-
256
- Reference: `skills/shared/universal-anti-patterns.md` for rules that apply to ALL skills.
257
-
258
- Additionally for this skill:
259
-
260
- 1. **DO NOT** modify any source code — scan is read-only analysis
261
- 2. **DO NOT** run the project (no `npm start`, `python app.py`, etc.) — analyze statically
262
- 3. **DO NOT** install dependencies analyze package files, don't install
263
- 4. **DO NOT** generate concerns without evidence — every concern needs a file reference
264
- 5. **DO NOT** ignore positive observations — knowing what works well is valuable
265
- 6. **DO NOT** produce generic output — every finding should be specific to THIS codebase
266
- 7. **DO NOT** scan node_modules, venv, .git, or build output directories
267
- 8. **DO NOT** read every file in large codebases — sample and extrapolate
268
- 9. **DO NOT** skip the RECON step — agents need baseline context
269
- 10. **DO NOT** combine agents — the 4 agents must run in parallel with separate focuses
1
+ ---
2
+ name: scan
3
+ description: "Analyze an existing codebase. Maps structure, architecture, conventions, and concerns."
4
+ allowed-tools: Read, Write, Bash, Glob, Grep, Task, AskUserQuestion
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 0Immediate Output
10
+
11
+ **Before ANY tool calls**, display this banner:
12
+
13
+ ```
14
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
15
+ PLAN-BUILD-RUN ► SCANNING CODEBASE
16
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
17
+ ```
18
+
19
+ Then proceed to Step 1.
20
+
21
+ # /pbr:scanCodebase Analysis
22
+
23
+ You are running the **scan** skill. Your job is to analyze an existing codebase and produce a comprehensive map of its structure, architecture, conventions, and concerns. This is the entry point for brownfield projects — codebases that already have code before Plan-Build-Run is introduced.
24
+
25
+ This skill **spawns 4 parallel Task(subagent_type: "pbr:codebase-mapper")** agents for analysis.
26
+
27
+ ---
28
+
29
+ ## Context Budget
30
+
31
+ Reference: `skills/shared/context-budget.md` for the universal orchestrator rules.
32
+
33
+ Additionally for this skill:
34
+ - **Never** analyze the codebase yourself — delegate ALL analysis to the 4 parallel codebase-mapper subagents
35
+ - **Minimize** reading mapper outputs — read only frontmatter or first 20 lines of each output document
36
+ - **Delegate** all file reading, pattern analysis, and architecture mapping to the codebase-mapper subagents
37
+
38
+ ---
39
+
40
+ ## Core Principle
41
+
42
+ **Understand before you change.** Scanning a codebase is about building a mental model of what exists. Every file produced by this skill becomes context that the planner and executor use to make informed decisions. Accuracy matters more than speed.
43
+
44
+ ---
45
+
46
+ ## Flow
47
+
48
+ ### Step 1: Check for Existing Analysis
49
+
50
+ Check if `.planning/codebase/` directory exists:
51
+
52
+ **If it exists and has files:**
53
+
54
+ First, resolve the depth profile so you know which areas are available:
55
+ ```bash
56
+ node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js config resolve-depth
57
+ ```
58
+ Read `profile["scan.mapper_areas"]` to determine available areas (quick: tech, arch; standard/comprehensive: tech, arch, quality, concerns).
59
+
60
+ Then present to user via AskUserQuestion:
61
+ ```
62
+ A codebase analysis already exists (from {date based on file modification}).
63
+
64
+ Files found:
65
+ - {list of .md files in the directory}
66
+
67
+ Options:
68
+ 1. Refresh the full analysis (overwrites existing)
69
+ 2. Refresh a specific area ({list available areas from depth profile})
70
+ 3. Keep existing analysis
71
+ ```
72
+ - If user chooses "Keep": display a summary of existing analysis and stop
73
+ - If user chooses "Refresh specific": present the available areas based on the already-resolved depth profile (quick mode only offers tech/arch; standard/comprehensive offers all 4). Only spawn the selected agent. Skip re-resolving depth in Step 3 since it was already resolved here.
74
+ - If user chooses "Refresh all": proceed with full scan
75
+
76
+ **If it doesn't exist:**
77
+ - Create `.planning/codebase/` directory
78
+ - Also create `.planning/` if it doesn't exist (scan can be run before begin)
79
+ - Proceed with full scan
80
+
81
+ ### Step 2: Initial Reconnaissance
82
+
83
+ Reference: `skills/shared/context-loader-task.md` (Scan Reconnaissance variation) for the underlying pattern.
84
+
85
+ Before spawning agents, do a quick scan to identify what we're working with. This gives agents better context.
86
+
87
+ 1. **Detect project type** — check for language-specific config files (package.json, requirements.txt, go.mod, Cargo.toml, etc.)
88
+ 2. **Detect project scale** — count source files (exclude node_modules, venv, .git, build, dist). Categories: Small (<50), Medium (50-200), Large (200-1000), Very Large (1000+)
89
+ 3. **Detect key directories** — identify src, test, docs, config, scripts, public, migrations directories
90
+ 4. **Read existing docs** README.md, architecture docs, .env.example
91
+ 5. **Write `.planning/codebase/RECON.md`** with project type, scale, key directories, entry points, and quick stats
92
+
93
+ Refer to the "Reconnaissance Detection Reference" section of `skills/scan/templates/mapper-prompt.md.tmpl` for the full detection checklists.
94
+
95
+ ### Step 3: Spawn Analysis Agents
96
+
97
+ **Resolve mapper configuration:** Before spawning, resolve the depth profile:
98
+ ```bash
99
+ node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js config resolve-depth
100
+ ```
101
+
102
+ Read `profile["scan.mapper_count"]` and `profile["scan.mapper_areas"]` to determine how many mappers to spawn and which focus areas to cover.
103
+
104
+ **Default mappings by depth:**
105
+ - `quick` (budget): 2 mappers -- `tech` and `arch` only. Produces STACK.md, INTEGRATIONS.md, ARCHITECTURE.md, STRUCTURE.md. Skips quality and concerns analysis.
106
+ - `standard` (balanced): 4 mappers -- all areas. Full analysis.
107
+ - `comprehensive` (thorough): 4 mappers -- all areas. Full analysis.
108
+
109
+ Display to the user:
110
+ ```
111
+ Spawning {mapper_count} codebase mapper(s) in parallel...
112
+ Technology stack analysis
113
+ Architecture patterns
114
+ Code quality assessment
115
+ → Concerns & risks
116
+ ```
117
+
118
+ (Only list the focus areas that will actually be spawned based on the depth profile.)
119
+
120
+ Spawn `{mapper_count}` parallel `Task(subagent_type: "pbr:codebase-mapper")` agents, one for each area in `scan.mapper_areas`. All should be spawned in a single response for maximum parallelism.
121
+
122
+ For each agent, read `skills/scan/templates/mapper-prompt.md.tmpl` and fill in the placeholders:
123
+ - `{focus_area}`: one of `tech`, `arch`, `quality`, `concerns`
124
+ - `{project_path}`: the working directory
125
+ - `{recon_data}`: contents of RECON.md
126
+ - `{scale}`: detected scale from Step 2
127
+ - `{output_path}`: `.planning/codebase/`
128
+
129
+ | Agent | Focus | Output Files | When |
130
+ |-------|-------|-------------|------|
131
+ | 1 | tech | STACK.md, INTEGRATIONS.md | Always |
132
+ | 2 | arch | ARCHITECTURE.md, STRUCTURE.md | Always |
133
+ | 3 | quality | CONVENTIONS.md, TESTING.md | standard + comprehensive |
134
+ | 4 | concerns | CONCERNS.md | standard + comprehensive |
135
+
136
+ ### Step 4: Wait for Agents
137
+
138
+ All agents run in parallel. As each completes, display:
139
+ ```
140
+ ✓ Technology stack analysis complete
141
+ Architecture patterns complete
142
+ Code quality assessment complete
143
+ ✓ Concerns & risks complete
144
+ ```
145
+
146
+ (Only display lines for the focus areas that were actually spawned.)
147
+
148
+ ### Step 5: Verify Output
149
+
150
+ After all agents complete, verify the expected files exist:
151
+
152
+ **Required files (always):**
153
+ - `.planning/codebase/RECON.md` (created in Step 2)
154
+ - `.planning/codebase/STACK.md` (tech mapper)
155
+ - `.planning/codebase/INTEGRATIONS.md` (tech mapper)
156
+ - `.planning/codebase/ARCHITECTURE.md` (arch mapper)
157
+ - `.planning/codebase/STRUCTURE.md` (arch mapper)
158
+
159
+ **Required files (standard + comprehensive only):**
160
+ - `.planning/codebase/CONVENTIONS.md` (quality mapper)
161
+ - `.planning/codebase/TESTING.md` (quality mapper)
162
+ - `.planning/codebase/CONCERNS.md` (concerns mapper)
163
+
164
+ Check only the files that correspond to the mapper areas that were actually spawned.
165
+
166
+ For any missing files, display:
167
+ ```
168
+ ╔══════════════════════════════════════════════════════════════╗
169
+ ║ ERROR ║
170
+ ╚══════════════════════════════════════════════════════════════╝
171
+
172
+ Missing analysis output: {filename}
173
+ Agent that failed: {focus_area} mapper
174
+
175
+ **To fix:** Re-run with `/pbr:scan` and select "Refresh a specific area" {focus_area}.
176
+ ```
177
+
178
+ ### Step 6: Present Summary
179
+
180
+ Read key findings from each file (frontmatter or first section) and display using the branded stage banner from `references/ui-formatting.md`:
181
+
182
+ ```
183
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
184
+ PLAN-BUILD-RUN ► SCAN COMPLETE ✓
185
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
186
+
187
+ Project: {type} ({scale})
188
+ Stack: {primary language} + {framework}
189
+ Architecture: {style}
190
+
191
+ Key Stats:
192
+ - {file count} source files, {test count} test files
193
+ - {dependency count} dependencies
194
+ - {integration count} external integrations
195
+
196
+ Full analysis: .planning/codebase/
197
+ ```
198
+
199
+ **Concerns section** (only display if ALL of these conditions are true: (1) the concerns mapper was included in `scan.mapper_areas` for the resolved depth profile, (2) the concerns mapper was actually spawned, AND (3) `.planning/codebase/CONCERNS.md` exists and contains at least one concern entry). If any condition is false, skip this entire section silently — do NOT display an empty concerns block or a "no concerns" message:
200
+
201
+ ```
202
+ Concerns: {critical} critical, {high} high, {medium} medium
203
+
204
+ Top concerns:
205
+ 1. {most critical concern}
206
+ 2. {second concern}
207
+ 3. {third concern}
208
+ ```
209
+
210
+ Then use the "Next Up" routing block:
211
+ ```
212
+ ───────────────────────────────────────────────────────────────
213
+
214
+ ## Next Up
215
+
216
+ **Start a project** — use the scan results to plan your work
217
+
218
+ `/pbr:begin`
219
+
220
+ <sub>`/clear` first fresh context window</sub>
221
+
222
+ ───────────────────────────────────────────────────────────────
223
+
224
+ **Also available:**
225
+ - `/pbr:milestone new` — create a milestone to address concerns
226
+ - `/pbr:status` see project status
227
+
228
+ ───────────────────────────────────────────────────────────────
229
+ ```
230
+
231
+ ### Step 7: Git Integration
232
+
233
+ Reference: `skills/shared/commit-planning-docs.md` for the standard commit pattern.
234
+
235
+ If `.planning/config.json` exists and `planning.commit_docs: true`:
236
+
237
+ ```bash
238
+ git add .planning/codebase/
239
+ git commit -m "docs(planning): map existing codebase"
240
+ ```
241
+
242
+ If no config exists yet (scan before begin), use AskUserQuestion (pattern: yes-no from `skills/shared/gate-prompts.md`):
243
+ question: "Commit the codebase analysis to git?"
244
+ header: "Commit?"
245
+ options:
246
+ - label: "Yes" description: "Stage and commit .planning/codebase/ files"
247
+ - label: "No" description: "Skip commit files are saved but not committed"
248
+ - If "Yes": run `git add .planning/codebase/ && git commit -m "docs(planning): map existing codebase"`
249
+ - If "No" or "Other": skip commit
250
+
251
+ ---
252
+
253
+ ## Edge Cases
254
+
255
+ ### Monorepo with multiple projects
256
+ - Detect by multiple package.json, separate src directories, workspace config
257
+ - Ask user via AskUserQuestion: "This looks like a monorepo. Scan the whole repo or a specific project?"
258
+ - If specific: scope all agents to that subdirectory
259
+ - If whole: note the monorepo structure in ARCHITECTURE.md
260
+
261
+ ### Empty or near-empty codebase
262
+ - If fewer than 5 source files: "This codebase is very small. A scan may not be necessary."
263
+ - Still allow it if user wants
264
+ - Output will be minimal
265
+
266
+ ### No source code (config-only repo, docs repo)
267
+ - Detect: no recognized source file extensions
268
+ - Adapt: focus on documentation quality, config structure
269
+ - Skip code quality analysis
270
+
271
+ ### Codebase has existing analysis
272
+ - Check for architectural docs, ADRs, design docs
273
+ - Reference them in the scan output
274
+ - Don't contradict existing docs without strong evidence
275
+
276
+ ### Binary files, large assets
277
+ - Skip binary files in analysis
278
+ - Note their existence in STRUCTURE.md
279
+ - Flag large committed binaries as a concern
280
+
281
+ ### Scan before /pbr:begin
282
+ - This is a valid and encouraged workflow
283
+ - Scan results become input for the begin skill
284
+ - Create `.planning/` and `.planning/codebase/` if needed
285
+ - Don't require config.json
286
+
287
+ ---
288
+
289
+ ## Anti-Patterns
290
+
291
+ Reference: `skills/shared/universal-anti-patterns.md` for rules that apply to ALL skills.
292
+
293
+ Additionally for this skill:
294
+
295
+ 1. **DO NOT** modify any source code — scan is read-only analysis
296
+ 2. **DO NOT** run the project (no `npm start`, `python app.py`, etc.) — analyze statically
297
+ 3. **DO NOT** install dependencies — analyze package files, don't install
298
+ 4. **DO NOT** generate concerns without evidence — every concern needs a file reference
299
+ 5. **DO NOT** ignore positive observations — knowing what works well is valuable
300
+ 6. **DO NOT** produce generic output — every finding should be specific to THIS codebase
301
+ 7. **DO NOT** scan node_modules, venv, .git, or build output directories
302
+ 8. **DO NOT** read every file in large codebases — sample and extrapolate
303
+ 9. **DO NOT** skip the RECON step — agents need baseline context
304
+ 10. **DO NOT** combine agents — the 4 agents must run in parallel with separate focuses