@sienklogic/plan-build-run 2.0.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 (221) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/CLAUDE.md +149 -0
  3. package/LICENSE +21 -0
  4. package/README.md +247 -0
  5. package/dashboard/bin/cli.js +25 -0
  6. package/dashboard/package.json +34 -0
  7. package/dashboard/public/.gitkeep +0 -0
  8. package/dashboard/public/css/layout.css +406 -0
  9. package/dashboard/public/css/status-colors.css +98 -0
  10. package/dashboard/public/js/htmx-title.js +5 -0
  11. package/dashboard/public/js/sidebar-toggle.js +20 -0
  12. package/dashboard/src/app.js +78 -0
  13. package/dashboard/src/middleware/errorHandler.js +52 -0
  14. package/dashboard/src/middleware/notFoundHandler.js +9 -0
  15. package/dashboard/src/repositories/planning.repository.js +128 -0
  16. package/dashboard/src/routes/events.routes.js +40 -0
  17. package/dashboard/src/routes/index.routes.js +31 -0
  18. package/dashboard/src/routes/pages.routes.js +195 -0
  19. package/dashboard/src/server.js +42 -0
  20. package/dashboard/src/services/dashboard.service.js +222 -0
  21. package/dashboard/src/services/phase.service.js +167 -0
  22. package/dashboard/src/services/project.service.js +57 -0
  23. package/dashboard/src/services/roadmap.service.js +171 -0
  24. package/dashboard/src/services/sse.service.js +58 -0
  25. package/dashboard/src/services/todo.service.js +254 -0
  26. package/dashboard/src/services/watcher.service.js +48 -0
  27. package/dashboard/src/views/coming-soon.ejs +11 -0
  28. package/dashboard/src/views/error.ejs +13 -0
  29. package/dashboard/src/views/index.ejs +5 -0
  30. package/dashboard/src/views/layout.ejs +1 -0
  31. package/dashboard/src/views/partials/dashboard-content.ejs +77 -0
  32. package/dashboard/src/views/partials/footer.ejs +3 -0
  33. package/dashboard/src/views/partials/head.ejs +21 -0
  34. package/dashboard/src/views/partials/header.ejs +12 -0
  35. package/dashboard/src/views/partials/layout-bottom.ejs +15 -0
  36. package/dashboard/src/views/partials/layout-top.ejs +8 -0
  37. package/dashboard/src/views/partials/phase-content.ejs +181 -0
  38. package/dashboard/src/views/partials/phases-content.ejs +117 -0
  39. package/dashboard/src/views/partials/roadmap-content.ejs +142 -0
  40. package/dashboard/src/views/partials/sidebar.ejs +38 -0
  41. package/dashboard/src/views/partials/todo-create-content.ejs +53 -0
  42. package/dashboard/src/views/partials/todo-detail-content.ejs +38 -0
  43. package/dashboard/src/views/partials/todos-content.ejs +53 -0
  44. package/dashboard/src/views/phase-detail.ejs +5 -0
  45. package/dashboard/src/views/phases.ejs +5 -0
  46. package/dashboard/src/views/roadmap.ejs +5 -0
  47. package/dashboard/src/views/todo-create.ejs +5 -0
  48. package/dashboard/src/views/todo-detail.ejs +5 -0
  49. package/dashboard/src/views/todos.ejs +5 -0
  50. package/package.json +57 -0
  51. package/plugins/pbr/.claude-plugin/plugin.json +13 -0
  52. package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -0
  53. package/plugins/pbr/agents/codebase-mapper.md +271 -0
  54. package/plugins/pbr/agents/debugger.md +281 -0
  55. package/plugins/pbr/agents/executor.md +407 -0
  56. package/plugins/pbr/agents/general.md +164 -0
  57. package/plugins/pbr/agents/integration-checker.md +141 -0
  58. package/plugins/pbr/agents/plan-checker.md +280 -0
  59. package/plugins/pbr/agents/planner.md +358 -0
  60. package/plugins/pbr/agents/researcher.md +363 -0
  61. package/plugins/pbr/agents/synthesizer.md +230 -0
  62. package/plugins/pbr/agents/verifier.md +454 -0
  63. package/plugins/pbr/commands/begin.md +5 -0
  64. package/plugins/pbr/commands/build.md +5 -0
  65. package/plugins/pbr/commands/config.md +5 -0
  66. package/plugins/pbr/commands/continue.md +5 -0
  67. package/plugins/pbr/commands/debug.md +5 -0
  68. package/plugins/pbr/commands/discuss.md +5 -0
  69. package/plugins/pbr/commands/explore.md +5 -0
  70. package/plugins/pbr/commands/health.md +5 -0
  71. package/plugins/pbr/commands/help.md +5 -0
  72. package/plugins/pbr/commands/import.md +5 -0
  73. package/plugins/pbr/commands/milestone.md +5 -0
  74. package/plugins/pbr/commands/note.md +5 -0
  75. package/plugins/pbr/commands/pause.md +5 -0
  76. package/plugins/pbr/commands/plan.md +5 -0
  77. package/plugins/pbr/commands/quick.md +5 -0
  78. package/plugins/pbr/commands/resume.md +5 -0
  79. package/plugins/pbr/commands/review.md +5 -0
  80. package/plugins/pbr/commands/scan.md +5 -0
  81. package/plugins/pbr/commands/setup.md +5 -0
  82. package/plugins/pbr/commands/status.md +5 -0
  83. package/plugins/pbr/commands/todo.md +5 -0
  84. package/plugins/pbr/contexts/dev.md +27 -0
  85. package/plugins/pbr/contexts/research.md +28 -0
  86. package/plugins/pbr/contexts/review.md +36 -0
  87. package/plugins/pbr/hooks/hooks.json +183 -0
  88. package/plugins/pbr/references/agent-anti-patterns.md +24 -0
  89. package/plugins/pbr/references/agent-interactions.md +134 -0
  90. package/plugins/pbr/references/agent-teams.md +54 -0
  91. package/plugins/pbr/references/checkpoints.md +157 -0
  92. package/plugins/pbr/references/common-bug-patterns.md +13 -0
  93. package/plugins/pbr/references/continuation-format.md +212 -0
  94. package/plugins/pbr/references/deviation-rules.md +112 -0
  95. package/plugins/pbr/references/git-integration.md +226 -0
  96. package/plugins/pbr/references/integration-patterns.md +117 -0
  97. package/plugins/pbr/references/model-profiles.md +99 -0
  98. package/plugins/pbr/references/model-selection.md +31 -0
  99. package/plugins/pbr/references/pbr-rules.md +193 -0
  100. package/plugins/pbr/references/plan-authoring.md +181 -0
  101. package/plugins/pbr/references/plan-format.md +283 -0
  102. package/plugins/pbr/references/planning-config.md +213 -0
  103. package/plugins/pbr/references/questioning.md +214 -0
  104. package/plugins/pbr/references/reading-verification.md +127 -0
  105. package/plugins/pbr/references/stub-patterns.md +160 -0
  106. package/plugins/pbr/references/subagent-coordination.md +119 -0
  107. package/plugins/pbr/references/ui-formatting.md +399 -0
  108. package/plugins/pbr/references/verification-patterns.md +198 -0
  109. package/plugins/pbr/references/wave-execution.md +95 -0
  110. package/plugins/pbr/scripts/auto-continue.js +80 -0
  111. package/plugins/pbr/scripts/check-dangerous-commands.js +136 -0
  112. package/plugins/pbr/scripts/check-doc-sprawl.js +102 -0
  113. package/plugins/pbr/scripts/check-phase-boundary.js +196 -0
  114. package/plugins/pbr/scripts/check-plan-format.js +270 -0
  115. package/plugins/pbr/scripts/check-roadmap-sync.js +252 -0
  116. package/plugins/pbr/scripts/check-skill-workflow.js +262 -0
  117. package/plugins/pbr/scripts/check-state-sync.js +476 -0
  118. package/plugins/pbr/scripts/check-subagent-output.js +144 -0
  119. package/plugins/pbr/scripts/config-schema.json +251 -0
  120. package/plugins/pbr/scripts/context-budget-check.js +287 -0
  121. package/plugins/pbr/scripts/event-handler.js +151 -0
  122. package/plugins/pbr/scripts/event-logger.js +92 -0
  123. package/plugins/pbr/scripts/hook-logger.js +76 -0
  124. package/plugins/pbr/scripts/hooks-schema.json +79 -0
  125. package/plugins/pbr/scripts/log-subagent.js +152 -0
  126. package/plugins/pbr/scripts/log-tool-failure.js +88 -0
  127. package/plugins/pbr/scripts/pbr-tools.js +1301 -0
  128. package/plugins/pbr/scripts/post-write-dispatch.js +66 -0
  129. package/plugins/pbr/scripts/post-write-quality.js +207 -0
  130. package/plugins/pbr/scripts/pre-bash-dispatch.js +56 -0
  131. package/plugins/pbr/scripts/pre-write-dispatch.js +62 -0
  132. package/plugins/pbr/scripts/progress-tracker.js +228 -0
  133. package/plugins/pbr/scripts/session-cleanup.js +254 -0
  134. package/plugins/pbr/scripts/status-line.js +285 -0
  135. package/plugins/pbr/scripts/suggest-compact.js +119 -0
  136. package/plugins/pbr/scripts/task-completed.js +45 -0
  137. package/plugins/pbr/scripts/track-context-budget.js +119 -0
  138. package/plugins/pbr/scripts/validate-commit.js +200 -0
  139. package/plugins/pbr/scripts/validate-plugin-structure.js +172 -0
  140. package/plugins/pbr/skills/begin/SKILL.md +545 -0
  141. package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -0
  142. package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -0
  143. package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -0
  144. package/plugins/pbr/skills/begin/templates/config.json.tmpl +63 -0
  145. package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -0
  146. package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -0
  147. package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -0
  148. package/plugins/pbr/skills/build/SKILL.md +962 -0
  149. package/plugins/pbr/skills/config/SKILL.md +241 -0
  150. package/plugins/pbr/skills/continue/SKILL.md +127 -0
  151. package/plugins/pbr/skills/debug/SKILL.md +489 -0
  152. package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -0
  153. package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -0
  154. package/plugins/pbr/skills/discuss/SKILL.md +338 -0
  155. package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -0
  156. package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -0
  157. package/plugins/pbr/skills/explore/SKILL.md +362 -0
  158. package/plugins/pbr/skills/health/SKILL.md +186 -0
  159. package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -0
  160. package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -0
  161. package/plugins/pbr/skills/help/SKILL.md +140 -0
  162. package/plugins/pbr/skills/import/SKILL.md +490 -0
  163. package/plugins/pbr/skills/milestone/SKILL.md +673 -0
  164. package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -0
  165. package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -0
  166. package/plugins/pbr/skills/note/SKILL.md +212 -0
  167. package/plugins/pbr/skills/pause/SKILL.md +235 -0
  168. package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -0
  169. package/plugins/pbr/skills/plan/SKILL.md +628 -0
  170. package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -0
  171. package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -0
  172. package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -0
  173. package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -0
  174. package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -0
  175. package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -0
  176. package/plugins/pbr/skills/quick/SKILL.md +335 -0
  177. package/plugins/pbr/skills/resume/SKILL.md +388 -0
  178. package/plugins/pbr/skills/review/SKILL.md +652 -0
  179. package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -0
  180. package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -0
  181. package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -0
  182. package/plugins/pbr/skills/scan/SKILL.md +269 -0
  183. package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -0
  184. package/plugins/pbr/skills/setup/SKILL.md +227 -0
  185. package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -0
  186. package/plugins/pbr/skills/shared/config-loading.md +102 -0
  187. package/plugins/pbr/skills/shared/context-budget.md +40 -0
  188. package/plugins/pbr/skills/shared/context-loader-task.md +86 -0
  189. package/plugins/pbr/skills/shared/digest-select.md +79 -0
  190. package/plugins/pbr/skills/shared/domain-probes.md +125 -0
  191. package/plugins/pbr/skills/shared/error-reporting.md +79 -0
  192. package/plugins/pbr/skills/shared/gate-prompts.md +388 -0
  193. package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -0
  194. package/plugins/pbr/skills/shared/progress-display.md +53 -0
  195. package/plugins/pbr/skills/shared/revision-loop.md +81 -0
  196. package/plugins/pbr/skills/shared/state-loading.md +62 -0
  197. package/plugins/pbr/skills/shared/state-update.md +161 -0
  198. package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -0
  199. package/plugins/pbr/skills/status/SKILL.md +353 -0
  200. package/plugins/pbr/skills/todo/SKILL.md +181 -0
  201. package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -0
  202. package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -0
  203. package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -0
  204. package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -0
  205. package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -0
  206. package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -0
  207. package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -0
  208. package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -0
  209. package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -0
  210. package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -0
  211. package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -0
  212. package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -0
  213. package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -0
  214. package/plugins/pbr/templates/continue-here.md.tmpl +73 -0
  215. package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -0
  216. package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -0
  217. package/plugins/pbr/templates/research/STACK.md.tmpl +71 -0
  218. package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -0
  219. package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -0
  220. package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -0
  221. package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +36 -0
@@ -0,0 +1,38 @@
1
+ <aside class="sidebar">
2
+ <nav>
3
+ <ul>
4
+ <li>
5
+ <a href="/"
6
+ hx-get="/"
7
+ hx-target="#main-content"
8
+ hx-push-url="true"<%= typeof activePage !== 'undefined' && activePage === 'dashboard' ? ' aria-current="page"' : '' %>>
9
+ Dashboard
10
+ </a>
11
+ </li>
12
+ <li>
13
+ <a href="/phases"
14
+ hx-get="/phases"
15
+ hx-target="#main-content"
16
+ hx-push-url="true"<%= typeof activePage !== 'undefined' && activePage === 'phases' ? ' aria-current="page"' : '' %>>
17
+ Phases
18
+ </a>
19
+ </li>
20
+ <li>
21
+ <a href="/todos"
22
+ hx-get="/todos"
23
+ hx-target="#main-content"
24
+ hx-push-url="true"<%= typeof activePage !== 'undefined' && activePage === 'todos' ? ' aria-current="page"' : '' %>>
25
+ Todos
26
+ </a>
27
+ </li>
28
+ <li>
29
+ <a href="/roadmap"
30
+ hx-get="/roadmap"
31
+ hx-target="#main-content"
32
+ hx-push-url="true"<%= typeof activePage !== 'undefined' && activePage === 'roadmap' ? ' aria-current="page"' : '' %>>
33
+ Roadmap
34
+ </a>
35
+ </li>
36
+ </ul>
37
+ </nav>
38
+ </aside>
@@ -0,0 +1,53 @@
1
+ <h1>Create Todo</h1>
2
+
3
+ <p><a href="/todos">&larr; Back to Todos</a></p>
4
+
5
+ <article>
6
+ <form method="POST" action="/todos"
7
+ hx-post="/todos"
8
+ hx-target="#main-content">
9
+ <label>
10
+ Title
11
+ <input
12
+ type="text"
13
+ name="title"
14
+ placeholder="Todo title"
15
+ required
16
+ maxlength="200"
17
+ />
18
+ </label>
19
+
20
+ <label>
21
+ Priority
22
+ <select name="priority" required>
23
+ <option value="">Select priority...</option>
24
+ <option value="P0">P0 - Critical</option>
25
+ <option value="P1">P1 - High</option>
26
+ <option value="P2">P2 - Medium</option>
27
+ <option value="PX">PX - Low</option>
28
+ </select>
29
+ </label>
30
+
31
+ <label>
32
+ Phase (optional)
33
+ <input
34
+ type="text"
35
+ name="phase"
36
+ placeholder="e.g., 09-todo-write-operations"
37
+ />
38
+ <small>Format: 01-phase-name</small>
39
+ </label>
40
+
41
+ <label>
42
+ Description
43
+ <textarea
44
+ name="description"
45
+ rows="10"
46
+ required
47
+ placeholder="Markdown content..."
48
+ ></textarea>
49
+ </label>
50
+
51
+ <button type="submit">Create Todo</button>
52
+ </form>
53
+ </article>
@@ -0,0 +1,38 @@
1
+ <h1><%= title %></h1>
2
+
3
+ <p><a href="/todos">&larr; Back to Todos</a></p>
4
+
5
+ <article>
6
+ <header>
7
+ <strong>Todo <%= id %></strong>
8
+ &nbsp;
9
+ <span class="status-badge" data-priority="<%= priority %>">
10
+ <%= priority %>
11
+ </span>
12
+ &nbsp;
13
+ <span class="status-badge" data-status="<%= status %>">
14
+ <%= status %>
15
+ </span>
16
+ </header>
17
+
18
+ <% if (phase) { %>
19
+ <p><strong>Phase:</strong> <%= phase %></p>
20
+ <% } %>
21
+ <% if (created) { %>
22
+ <p><strong>Created:</strong> <%= created %></p>
23
+ <% } %>
24
+
25
+ <hr>
26
+
27
+ <%- html %>
28
+
29
+ <% if (status === 'pending') { %>
30
+ <hr>
31
+ <form method="POST" action="/todos/<%= id %>/done"
32
+ hx-post="/todos/<%= id %>/done"
33
+ hx-target="#main-content"
34
+ style="display:inline;">
35
+ <button type="submit" class="secondary">Mark as Done</button>
36
+ </form>
37
+ <% } %>
38
+ </article>
@@ -0,0 +1,53 @@
1
+ <h1>Todos</h1>
2
+
3
+ <p><a href="/todos/new" role="button"
4
+ hx-get="/todos/new"
5
+ hx-target="#main-content"
6
+ hx-push-url="true">Create Todo</a></p>
7
+
8
+ <% if (todos.length > 0) { %>
9
+ <article>
10
+ <div class="table-wrap">
11
+ <table>
12
+ <thead>
13
+ <tr>
14
+ <th scope="col">ID</th>
15
+ <th scope="col">Title</th>
16
+ <th scope="col">Priority</th>
17
+ <th scope="col">Phase</th>
18
+ <th scope="col">Status</th>
19
+ <th scope="col">Created</th>
20
+ </tr>
21
+ </thead>
22
+ <tbody>
23
+ <% todos.forEach(function(todo) { %>
24
+ <tr>
25
+ <td><%= todo.id %></td>
26
+ <td>
27
+ <a href="/todos/<%= todo.id %>">
28
+ <%= todo.title %>
29
+ </a>
30
+ </td>
31
+ <td>
32
+ <span class="status-badge" data-priority="<%= todo.priority %>">
33
+ <%= todo.priority %>
34
+ </span>
35
+ </td>
36
+ <td><%= todo.phase %></td>
37
+ <td>
38
+ <span class="status-badge" data-status="<%= todo.status %>">
39
+ <%= todo.status %>
40
+ </span>
41
+ </td>
42
+ <td><%= todo.created %></td>
43
+ </tr>
44
+ <% }); %>
45
+ </tbody>
46
+ </table>
47
+ </div>
48
+ </article>
49
+ <% } else { %>
50
+ <article>
51
+ <p>No pending todos found. Add a todo file to <code>.planning/todos/pending/</code> to see it here.</p>
52
+ </article>
53
+ <% } %>
@@ -0,0 +1,5 @@
1
+ <%- include('partials/layout-top', { title: title, activePage: 'phases' }) %>
2
+
3
+ <%- include('partials/phase-content') %>
4
+
5
+ <%- include('partials/layout-bottom') %>
@@ -0,0 +1,5 @@
1
+ <%- include('partials/layout-top', { title: 'Phases', activePage: 'phases' }) %>
2
+
3
+ <%- include('partials/phases-content') %>
4
+
5
+ <%- include('partials/layout-bottom') %>
@@ -0,0 +1,5 @@
1
+ <%- include('partials/layout-top', { title: 'Roadmap', activePage: 'roadmap' }) %>
2
+
3
+ <%- include('partials/roadmap-content') %>
4
+
5
+ <%- include('partials/layout-bottom') %>
@@ -0,0 +1,5 @@
1
+ <%- include('partials/layout-top', { title: 'Create Todo', activePage: 'todos' }) %>
2
+
3
+ <%- include('partials/todo-create-content') %>
4
+
5
+ <%- include('partials/layout-bottom') %>
@@ -0,0 +1,5 @@
1
+ <%- include('partials/layout-top', { title: title, activePage: 'todos' }) %>
2
+
3
+ <%- include('partials/todo-detail-content') %>
4
+
5
+ <%- include('partials/layout-bottom') %>
@@ -0,0 +1,5 @@
1
+ <%- include('partials/layout-top', { title: 'Todos', activePage: 'todos' }) %>
2
+
3
+ <%- include('partials/todos-content') %>
4
+
5
+ <%- include('partials/layout-bottom') %>
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@sienklogic/plan-build-run",
3
+ "version": "2.0.0",
4
+ "description": "Plan it, Build it, Run it — structured development workflow for Claude Code",
5
+ "keywords": [
6
+ "claude-code",
7
+ "plugin",
8
+ "development-workflow",
9
+ "context-engineering",
10
+ "ai-development"
11
+ ],
12
+ "license": "MIT",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/SienkLogic/plan-build-run"
16
+ },
17
+ "homepage": "https://github.com/SienkLogic/plan-build-run",
18
+ "files": [
19
+ "plugins/",
20
+ "dashboard/bin/",
21
+ "dashboard/package.json",
22
+ "dashboard/public/",
23
+ "dashboard/src/",
24
+ "CLAUDE.md",
25
+ "CHANGELOG.md",
26
+ "LICENSE",
27
+ "README.md"
28
+ ],
29
+ "scripts": {
30
+ "test": "jest",
31
+ "lint": "eslint plugins/pbr/scripts/ tests/",
32
+ "validate": "node plugins/pbr/scripts/validate-plugin-structure.js",
33
+ "dashboard": "node dashboard/bin/cli.js",
34
+ "dashboard:install": "npm install --prefix dashboard"
35
+ },
36
+ "devDependencies": {
37
+ "jest": "^29.0.0",
38
+ "eslint": "^9.0.0"
39
+ },
40
+ "engines": {
41
+ "node": ">=18.0.0"
42
+ },
43
+ "jest": {
44
+ "testPathIgnorePatterns": [
45
+ "/node_modules/",
46
+ "/dashboard/"
47
+ ],
48
+ "coverageThreshold": {
49
+ "global": {
50
+ "statements": 65,
51
+ "branches": 58,
52
+ "functions": 70,
53
+ "lines": 65
54
+ }
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "pbr",
3
+ "version": "2.0.0",
4
+ "description": "Plan-Build-Run — Structured development workflow for Claude Code. Solves context rot through disciplined subagent delegation, structured planning, atomic execution, and goal-backward verification.",
5
+ "author": {
6
+ "name": "SienkLogic",
7
+ "email": "dave@sienklogic.com"
8
+ },
9
+ "homepage": "https://github.com/SienkLogic/plan-build-run",
10
+ "repository": "https://github.com/SienkLogic/plan-build-run",
11
+ "license": "MIT",
12
+ "keywords": ["claude-code", "context-engineering", "development-workflow", "subagent-delegation"]
13
+ }
@@ -0,0 +1,61 @@
1
+ # UI Consistency Gaps — Audit Round 2
2
+
3
+ Created: 2026-02-17
4
+ Tracks remaining gaps found after initial UI consistency pass.
5
+
6
+ ## Category 1: Spawning Indicators
7
+
8
+ | # | Skill | Issue | Status |
9
+ |---|-------|-------|--------|
10
+ | 1.1 | build | Executor, verifier, inline verifier, mapper spawns ALL missing `◐` | DONE |
11
+ | 1.2 | debug | 3 Task() calls (new session, resume, checkpoint) — ALL missing | DONE |
12
+ | 1.3 | scan | Parallel mapper spawn — no pre-spawn `◐` indicator | DONE |
13
+ | 1.4 | milestone | Audit integration-checker Task() — no indicator | DONE |
14
+ | 1.5 | quick | Executor Task() — no indicator | DONE |
15
+ | 1.6 | plan | Team mode: 3 planners + synthesizer spawned with no indicators | DONE |
16
+ | 1.7 | review | Team mode: 3 verifiers + synthesizer spawned with no indicators | DONE |
17
+ | 1.8 | begin | Researchers use wrong format ("Launched" post-spawn vs `◐` pre-spawn) | DONE |
18
+ | 1.9 | explore | Mid-conversation research Task() — no indicator | DONE |
19
+
20
+ ## Category 2: Error Boxes
21
+
22
+ | # | Skill | Issue | Status |
23
+ |---|-------|-------|--------|
24
+ | 2.1 | import | 5 error paths in Error Handling section all use plain text | DONE |
25
+ | 2.2 | resume | "No project" and "empty project" paths use plain text | DONE |
26
+ | 2.3 | todo | No error box for write failures | DONE |
27
+ | 2.4 | plan | Checker-loop-forever failure has no error box | DONE |
28
+
29
+ ## Category 3: Completion Banners
30
+
31
+ | # | Skill | Issue | Status |
32
+ |---|-------|-------|--------|
33
+ | 3.1 | build | References ui-formatting.md templates but never shows banner inline | DONE |
34
+ | 3.2 | discuss | No completion banner at all | DONE |
35
+ | 3.3 | debug | No banner for resolved case | DONE |
36
+ | 3.4 | todo | Plain `✓` lines, no branded banner | DONE |
37
+ | 3.5 | review | Verified/milestone paths reference templates instead of showing them | DONE |
38
+
39
+ ## Category 4: Next Up Routing
40
+
41
+ | # | Skill | Issue | Status |
42
+ |---|-------|-------|--------|
43
+ | 4.1 | build | No Next Up block anywhere | DONE |
44
+ | 4.2 | discuss | Plain text suggestion only | DONE |
45
+ | 4.3 | debug | Plain text only | DONE |
46
+ | 4.4 | resume | Plain text / bare AskUserQuestion | DONE |
47
+ | 4.5 | status | Plain text routing (no branded block) | DONE |
48
+ | 4.6 | todo | Plain `→` arrow lines, no branded wrapper | DONE |
49
+ | 4.7 | scan | No backticks, no bold ID, no `/clear` note | DONE |
50
+ | 4.8 | health | Wrong bold format, no `/clear` note; FAIL case no Next Up | DONE |
51
+ | 4.9 | config | Wrong bold format, no `/clear` note | DONE |
52
+ | 4.10 | quick | Arrow list format, no bold ID, no `/clear` note | DONE |
53
+ | 4.11 | milestone | Audit paths: wrong format; new/gaps/complete: missing entirely | DONE |
54
+ | 4.12 | begin | Command not in backticks | DONE |
55
+ | 4.13 | explore | No bold primary route, no `/clear` note, no closing separator | DONE |
56
+
57
+ ## Summary
58
+
59
+ - Total gaps: 31
60
+ - Fixed: 31
61
+ - Remaining: 0
@@ -0,0 +1,271 @@
1
+ ---
2
+ name: codebase-mapper
3
+ description: "Explores existing codebases and writes structured analysis documents. Four focus areas: tech, arch, quality, concerns."
4
+ model: sonnet
5
+ memory: none
6
+ tools:
7
+ - Read
8
+ - Bash
9
+ - Glob
10
+ - Grep
11
+ - Write
12
+ ---
13
+
14
+ # Plan-Build-Run Codebase Mapper
15
+
16
+ You are **codebase-mapper**, the codebase analysis agent for the Plan-Build-Run development system. You explore existing codebases and produce structured documentation that helps other agents (and humans) understand the project's technology stack, architecture, conventions, and concerns.
17
+
18
+ ## Core Philosophy
19
+
20
+ - **Document quality over brevity.** Be thorough. Other agents depend on your analysis for accurate planning and execution.
21
+ - **Always include file paths.** Every claim must reference the actual code location. Never say "the config file" — say "`tsconfig.json` at project root" or "`src/config/database.ts`".
22
+ - **Write current state only.** No temporal language ("recently added", "will be changed", "was refactored"). Document WHAT IS, not what was or will be.
23
+ - **Be prescriptive, not descriptive.** When documenting conventions: "Use this pattern" not "This pattern exists." New code should follow the established patterns.
24
+ - **Evidence-based.** Read the actual files. Don't guess from file names or directory structures. Check package.json versions, read config files, inspect source code.
25
+
26
+ ---
27
+
28
+ ### Forbidden Files
29
+
30
+ When exploring and documenting a codebase, NEVER commit or recommend committing these files:
31
+ - `.env` files (except `.env.example` or `.env.template`)
32
+ - `*.key`, `*.pem`, `*.pfx`, `*.p12` — private keys and certificates
33
+ - Files containing `credential` or `secret` in their name
34
+ - `*.keystore`, `*.jks` — Java keystores
35
+ - `id_rsa`, `id_ed25519` — SSH keys
36
+
37
+ If you encounter these files during exploration, note them in CONCERNS.md under "Security Considerations" but do NOT include their contents in any output.
38
+
39
+ ---
40
+
41
+ ## Focus Areas
42
+
43
+ You receive ONE focus area per invocation. You produce the specified documents for that focus area.
44
+
45
+ ### Focus: `tech` → STACK.md + INTEGRATIONS.md
46
+
47
+ Analyze the technology stack and external integrations.
48
+
49
+ ### Focus: `arch` → ARCHITECTURE.md + STRUCTURE.md
50
+
51
+ Analyze the architectural patterns and project structure.
52
+
53
+ ### Focus: `quality` → CONVENTIONS.md + TESTING.md
54
+
55
+ Analyze code style conventions and testing infrastructure.
56
+
57
+ ### Focus: `concerns` → CONCERNS.md
58
+
59
+ Identify technical debt, risks, and problem areas.
60
+
61
+ ---
62
+
63
+ ## Output Path
64
+
65
+ All documents are written to: `.planning/codebase/`
66
+
67
+ Create the directory if it doesn't exist.
68
+
69
+ **Do NOT commit.** The orchestrator handles commits.
70
+
71
+ ---
72
+
73
+ ## Exploration Process
74
+
75
+ For any focus area, follow this general exploration pattern:
76
+
77
+ ### Step 1: Orientation
78
+
79
+ ```bash
80
+ # Get directory structure overview
81
+ find . -type f -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" -o -name "*.py" -o -name "*.go" -o -name "*.rs" | head -100
82
+
83
+ # Find key configuration files
84
+ ls -la package.json tsconfig.json .eslintrc* .prettierrc* jest.config* vite.config* next.config* webpack.config* Makefile CMakeLists.txt requirements.txt pyproject.toml Cargo.toml go.mod 2>/dev/null
85
+
86
+ # Check for documentation
87
+ ls -la README.md CLAUDE.md .cursorrules docs/ 2>/dev/null
88
+
89
+ # Check for Docker
90
+ ls -la Dockerfile docker-compose.yml .dockerignore 2>/dev/null
91
+
92
+ # Check for CI/CD
93
+ ls -la .github/workflows/ .gitlab-ci.yml Jenkinsfile .circleci/ 2>/dev/null
94
+ ```
95
+
96
+ ### Step 2: Deep Inspection
97
+
98
+ Read key files based on what you found in Step 1. Minimum 5-10 key files per focus area.
99
+
100
+ ### Step 3: Pattern Recognition
101
+
102
+ Look for repeated patterns in the code. How are things consistently done?
103
+
104
+ ### Step 4: Write Documentation
105
+
106
+ Write to `.planning/codebase/` using the templates below.
107
+
108
+ ---
109
+
110
+ ## Focus: `tech` — STACK.md + INTEGRATIONS.md
111
+
112
+ ### STACK.md Template
113
+
114
+ Read the document template from `templates/codebase/STACK.md.tmpl` and use it as the format for your STACK.md output. Fill in all placeholder fields with data from your codebase analysis.
115
+
116
+ ### INTEGRATIONS.md Template
117
+
118
+ Read the document template from `templates/codebase/INTEGRATIONS.md.tmpl` and use it as the format for your INTEGRATIONS.md output. Fill in all placeholder fields with data from your codebase analysis.
119
+
120
+ ---
121
+
122
+ ## Focus: `arch` — ARCHITECTURE.md + STRUCTURE.md
123
+
124
+ ### ARCHITECTURE.md Template
125
+
126
+ Read the document template from `templates/codebase/ARCHITECTURE.md.tmpl` and use it as the format for your ARCHITECTURE.md output. Fill in all placeholder fields with data from your codebase analysis.
127
+
128
+ ### STRUCTURE.md Template
129
+
130
+ Read the document template from `templates/codebase/STRUCTURE.md.tmpl` and use it as the format for your STRUCTURE.md output. Fill in all placeholder fields with data from your codebase analysis.
131
+
132
+ ---
133
+
134
+ ## Focus: `quality` — CONVENTIONS.md + TESTING.md
135
+
136
+ ### CONVENTIONS.md Template
137
+
138
+ Read the document template from `templates/codebase/CONVENTIONS.md.tmpl` and use it as the format for your CONVENTIONS.md output. Fill in all placeholder fields with data from your codebase analysis.
139
+
140
+ ### TESTING.md Template
141
+
142
+ Read the document template from `templates/codebase/TESTING.md.tmpl` and use it as the format for your TESTING.md output. Fill in all placeholder fields with data from your codebase analysis.
143
+
144
+ ---
145
+
146
+ ## Focus: `concerns` — CONCERNS.md
147
+
148
+ ### CONCERNS.md Template
149
+
150
+ Read the document template from `templates/codebase/CONCERNS.md.tmpl` and use it as the format for your CONCERNS.md output. Fill in all placeholder fields with data from your codebase analysis.
151
+
152
+ ---
153
+
154
+ ## Output Budget
155
+
156
+ Target output sizes for this agent's artifacts. Exceeding these targets wastes planner context.
157
+
158
+ | Artifact | Target | Hard Limit |
159
+ |----------|--------|------------|
160
+ | STACK.md | ≤ 800 tokens | 1,200 tokens |
161
+ | INTEGRATIONS.md | ≤ 600 tokens | 1,000 tokens |
162
+ | ARCHITECTURE.md | ≤ 1,000 tokens | 1,500 tokens |
163
+ | STRUCTURE.md | ≤ 600 tokens | 1,000 tokens |
164
+ | CONVENTIONS.md | ≤ 800 tokens | 1,200 tokens |
165
+ | TESTING.md | ≤ 600 tokens | 1,000 tokens |
166
+ | CONCERNS.md | ≤ 600 tokens | 1,000 tokens |
167
+ | Total per focus area (2 docs) | ≤ 1,400 tokens | 2,200 tokens |
168
+
169
+ **Guidance**: Tables over prose. Version numbers and file paths are the high-value data — skip explanations of what well-known tools do. One row per dependency/pattern/concern. The planner reads these documents to make decisions; give it decision-relevant facts, not tutorials.
170
+
171
+ ---
172
+
173
+ ## Exploration Commands
174
+
175
+ ### Node.js/TypeScript Projects
176
+
177
+ ```bash
178
+ # Package info
179
+ cat package.json | head -50
180
+ cat package-lock.json | head -5 # Check package manager version
181
+
182
+ # TypeScript config
183
+ cat tsconfig.json
184
+
185
+ # Linting/formatting config
186
+ cat .eslintrc* .prettierrc* 2>/dev/null
187
+
188
+ # Entry points
189
+ grep -rn "export default\|createServer\|listen\|app\." src/ --include="*.ts" | head -20
190
+
191
+ # Route definitions
192
+ grep -rn "router\.\|app\.\(get\|post\|put\|delete\|use\)" src/ --include="*.ts" --include="*.js"
193
+
194
+ # Test config
195
+ cat jest.config* vitest.config* 2>/dev/null
196
+
197
+ # Database config
198
+ cat prisma/schema.prisma 2>/dev/null
199
+ grep -rn "createConnection\|createPool\|mongoose.connect\|PrismaClient" src/ --include="*.ts"
200
+
201
+ # Environment variables used
202
+ grep -rn "process\.env\.\|import\.meta\.env\." src/ --include="*.ts" --include="*.tsx"
203
+ ```
204
+
205
+ ### Python Projects
206
+
207
+ ```bash
208
+ # Dependencies
209
+ cat requirements.txt pyproject.toml setup.py setup.cfg 2>/dev/null
210
+
211
+ # Entry points
212
+ grep -rn "if __name__.*__main__\|app\s*=\s*Flask\|app\s*=\s*FastAPI" . --include="*.py"
213
+
214
+ # Config
215
+ cat settings.py config.py .env.example 2>/dev/null
216
+
217
+ # Tests
218
+ find . -name "test_*.py" -o -name "*_test.py" | head -20
219
+ cat pytest.ini pyproject.toml 2>/dev/null | grep -A20 "\[tool.pytest"
220
+ ```
221
+
222
+ ### General
223
+
224
+ ```bash
225
+ # Git info
226
+ git log --oneline -10
227
+ git remote -v
228
+
229
+ # Docker
230
+ cat Dockerfile docker-compose.yml 2>/dev/null
231
+
232
+ # CI/CD
233
+ ls -la .github/workflows/ 2>/dev/null
234
+ cat .github/workflows/*.yml 2>/dev/null | head -50
235
+ ```
236
+
237
+ ---
238
+
239
+ ## Quality Standards
240
+
241
+ 1. Every claim must reference actual file paths with line numbers when possible
242
+ 2. Use the actual code to verify patterns — don't guess from file names
243
+ 3. Read at least 5-10 key files per focus area
244
+ 4. Check configuration files for hidden patterns (tsconfig paths, eslint rules, etc.)
245
+ 5. Verify versions from package.json/lock files, not from memory
246
+ 6. Include actual code examples from the codebase, not generic examples
247
+ 7. If you find something unexpected, investigate it before documenting
248
+ 8. Context budget: stop before 50% context usage — write documents as you go
249
+
250
+ ---
251
+
252
+ ## Anti-Patterns (Do NOT Do These)
253
+
254
+ Reference: `references/agent-anti-patterns.md` for universal rules that apply to ALL agents.
255
+
256
+ Additionally for this agent:
257
+
258
+ 1. **DO NOT** guess technology versions — read package.json or equivalent
259
+ 2. **DO NOT** document what you assume — document what you verify
260
+ 3. **DO NOT** use temporal language ("recently added", "old code")
261
+ 4. **DO NOT** skip reading actual source files — file names lie
262
+ 5. **DO NOT** produce generic documentation — every claim must reference this specific codebase
263
+ 6. **DO NOT** commit the output — the orchestrator handles commits
264
+ 7. **DO NOT** document deferred or planned features — only current state
265
+ 8. **DO NOT** be vague about file locations — always give exact paths
266
+
267
+ ---
268
+
269
+ ## Interaction with Other Agents
270
+
271
+ Reference: `references/agent-interactions.md` — see the codebase-mapper section for full details on inputs and outputs.