@sienklogic/plan-build-run 2.3.0 → 2.4.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 (151) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +54 -20
  3. package/dashboard/src/services/dashboard.service.js +24 -1
  4. package/dashboard/src/services/milestone.service.js +68 -17
  5. package/package.json +1 -1
  6. package/plugins/copilot-pbr/CHANGELOG.md +19 -0
  7. package/plugins/copilot-pbr/README.md +129 -0
  8. package/plugins/copilot-pbr/agents/codebase-mapper.agent.md +109 -0
  9. package/plugins/copilot-pbr/agents/debugger.agent.md +169 -0
  10. package/plugins/copilot-pbr/agents/executor.agent.md +237 -0
  11. package/plugins/copilot-pbr/agents/general.agent.md +88 -0
  12. package/plugins/copilot-pbr/agents/integration-checker.agent.md +88 -0
  13. package/plugins/copilot-pbr/agents/plan-checker.agent.md +199 -0
  14. package/plugins/copilot-pbr/agents/planner.agent.md +181 -0
  15. package/plugins/copilot-pbr/agents/researcher.agent.md +163 -0
  16. package/plugins/copilot-pbr/agents/synthesizer.agent.md +102 -0
  17. package/plugins/copilot-pbr/agents/verifier.agent.md +194 -0
  18. package/plugins/copilot-pbr/hooks/hooks.json +144 -0
  19. package/plugins/copilot-pbr/plugin.json +30 -0
  20. package/plugins/copilot-pbr/references/agent-anti-patterns.md +25 -0
  21. package/plugins/copilot-pbr/references/agent-interactions.md +135 -0
  22. package/plugins/copilot-pbr/references/agent-teams.md +55 -0
  23. package/plugins/copilot-pbr/references/checkpoints.md +158 -0
  24. package/plugins/copilot-pbr/references/common-bug-patterns.md +14 -0
  25. package/plugins/copilot-pbr/references/config-reference.md +442 -0
  26. package/plugins/copilot-pbr/references/continuation-format.md +213 -0
  27. package/plugins/copilot-pbr/references/deviation-rules.md +113 -0
  28. package/plugins/copilot-pbr/references/git-integration.md +227 -0
  29. package/plugins/copilot-pbr/references/integration-patterns.md +118 -0
  30. package/plugins/copilot-pbr/references/model-profiles.md +100 -0
  31. package/plugins/copilot-pbr/references/model-selection.md +32 -0
  32. package/plugins/copilot-pbr/references/pbr-rules.md +194 -0
  33. package/plugins/copilot-pbr/references/plan-authoring.md +182 -0
  34. package/plugins/copilot-pbr/references/plan-format.md +288 -0
  35. package/plugins/copilot-pbr/references/planning-config.md +214 -0
  36. package/plugins/copilot-pbr/references/questioning.md +215 -0
  37. package/plugins/copilot-pbr/references/reading-verification.md +128 -0
  38. package/plugins/copilot-pbr/references/stub-patterns.md +161 -0
  39. package/plugins/copilot-pbr/references/subagent-coordination.md +120 -0
  40. package/plugins/copilot-pbr/references/ui-formatting.md +462 -0
  41. package/plugins/copilot-pbr/references/verification-patterns.md +199 -0
  42. package/plugins/copilot-pbr/references/wave-execution.md +96 -0
  43. package/plugins/copilot-pbr/rules/pbr-workflow.mdc +48 -0
  44. package/plugins/copilot-pbr/setup.ps1 +93 -0
  45. package/plugins/copilot-pbr/setup.sh +92 -0
  46. package/plugins/copilot-pbr/skills/begin/SKILL.md +566 -0
  47. package/plugins/copilot-pbr/skills/begin/templates/PROJECT.md.tmpl +34 -0
  48. package/plugins/copilot-pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +19 -0
  49. package/plugins/copilot-pbr/skills/begin/templates/STATE.md.tmpl +50 -0
  50. package/plugins/copilot-pbr/skills/begin/templates/config.json.tmpl +64 -0
  51. package/plugins/copilot-pbr/skills/begin/templates/researcher-prompt.md.tmpl +20 -0
  52. package/plugins/copilot-pbr/skills/begin/templates/roadmap-prompt.md.tmpl +31 -0
  53. package/plugins/copilot-pbr/skills/begin/templates/synthesis-prompt.md.tmpl +17 -0
  54. package/plugins/copilot-pbr/skills/build/SKILL.md +901 -0
  55. package/plugins/copilot-pbr/skills/config/SKILL.md +253 -0
  56. package/plugins/copilot-pbr/skills/continue/SKILL.md +159 -0
  57. package/plugins/copilot-pbr/skills/dashboard/SKILL.md +31 -0
  58. package/plugins/copilot-pbr/skills/debug/SKILL.md +511 -0
  59. package/plugins/copilot-pbr/skills/debug/templates/continuation-prompt.md.tmpl +17 -0
  60. package/plugins/copilot-pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +28 -0
  61. package/plugins/copilot-pbr/skills/discuss/SKILL.md +343 -0
  62. package/plugins/copilot-pbr/skills/discuss/templates/CONTEXT.md.tmpl +62 -0
  63. package/plugins/copilot-pbr/skills/discuss/templates/decision-categories.md +10 -0
  64. package/plugins/copilot-pbr/skills/do/SKILL.md +66 -0
  65. package/plugins/copilot-pbr/skills/explore/SKILL.md +374 -0
  66. package/plugins/copilot-pbr/skills/health/SKILL.md +218 -0
  67. package/plugins/copilot-pbr/skills/health/templates/check-pattern.md.tmpl +31 -0
  68. package/plugins/copilot-pbr/skills/health/templates/output-format.md.tmpl +64 -0
  69. package/plugins/copilot-pbr/skills/help/SKILL.md +152 -0
  70. package/plugins/copilot-pbr/skills/import/SKILL.md +498 -0
  71. package/plugins/copilot-pbr/skills/milestone/SKILL.md +703 -0
  72. package/plugins/copilot-pbr/skills/milestone/templates/audit-report.md.tmpl +49 -0
  73. package/plugins/copilot-pbr/skills/milestone/templates/stats-file.md.tmpl +31 -0
  74. package/plugins/copilot-pbr/skills/note/SKILL.md +227 -0
  75. package/plugins/copilot-pbr/skills/pause/SKILL.md +246 -0
  76. package/plugins/copilot-pbr/skills/pause/templates/continue-here.md.tmpl +72 -0
  77. package/plugins/copilot-pbr/skills/plan/SKILL.md +649 -0
  78. package/plugins/copilot-pbr/skills/plan/templates/checker-prompt.md.tmpl +22 -0
  79. package/plugins/copilot-pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +33 -0
  80. package/plugins/copilot-pbr/skills/plan/templates/planner-prompt.md.tmpl +39 -0
  81. package/plugins/copilot-pbr/skills/plan/templates/researcher-prompt.md.tmpl +20 -0
  82. package/plugins/copilot-pbr/skills/plan/templates/revision-prompt.md.tmpl +24 -0
  83. package/plugins/copilot-pbr/skills/quick/SKILL.md +351 -0
  84. package/plugins/copilot-pbr/skills/resume/SKILL.md +399 -0
  85. package/plugins/copilot-pbr/skills/review/SKILL.md +648 -0
  86. package/plugins/copilot-pbr/skills/review/templates/debugger-prompt.md.tmpl +61 -0
  87. package/plugins/copilot-pbr/skills/review/templates/gap-planner-prompt.md.tmpl +41 -0
  88. package/plugins/copilot-pbr/skills/review/templates/verifier-prompt.md.tmpl +116 -0
  89. package/plugins/copilot-pbr/skills/scan/SKILL.md +301 -0
  90. package/plugins/copilot-pbr/skills/scan/templates/mapper-prompt.md.tmpl +202 -0
  91. package/plugins/copilot-pbr/skills/setup/SKILL.md +250 -0
  92. package/plugins/copilot-pbr/skills/shared/commit-planning-docs.md +36 -0
  93. package/plugins/copilot-pbr/skills/shared/config-loading.md +103 -0
  94. package/plugins/copilot-pbr/skills/shared/context-budget.md +41 -0
  95. package/plugins/copilot-pbr/skills/shared/context-loader-task.md +87 -0
  96. package/plugins/copilot-pbr/skills/shared/digest-select.md +80 -0
  97. package/plugins/copilot-pbr/skills/shared/domain-probes.md +126 -0
  98. package/plugins/copilot-pbr/skills/shared/error-reporting.md +80 -0
  99. package/plugins/copilot-pbr/skills/shared/gate-prompts.md +389 -0
  100. package/plugins/copilot-pbr/skills/shared/phase-argument-parsing.md +46 -0
  101. package/plugins/copilot-pbr/skills/shared/progress-display.md +54 -0
  102. package/plugins/copilot-pbr/skills/shared/revision-loop.md +82 -0
  103. package/plugins/copilot-pbr/skills/shared/state-loading.md +63 -0
  104. package/plugins/copilot-pbr/skills/shared/state-update.md +162 -0
  105. package/plugins/copilot-pbr/skills/shared/universal-anti-patterns.md +34 -0
  106. package/plugins/copilot-pbr/skills/status/SKILL.md +362 -0
  107. package/plugins/copilot-pbr/skills/todo/SKILL.md +256 -0
  108. package/plugins/copilot-pbr/templates/CONTEXT.md.tmpl +53 -0
  109. package/plugins/copilot-pbr/templates/INTEGRATION-REPORT.md.tmpl +152 -0
  110. package/plugins/copilot-pbr/templates/RESEARCH-SUMMARY.md.tmpl +98 -0
  111. package/plugins/copilot-pbr/templates/ROADMAP.md.tmpl +41 -0
  112. package/plugins/copilot-pbr/templates/SUMMARY.md.tmpl +82 -0
  113. package/plugins/copilot-pbr/templates/VERIFICATION-DETAIL.md.tmpl +117 -0
  114. package/plugins/copilot-pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -0
  115. package/plugins/copilot-pbr/templates/codebase/CONCERNS.md.tmpl +93 -0
  116. package/plugins/copilot-pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -0
  117. package/plugins/copilot-pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -0
  118. package/plugins/copilot-pbr/templates/codebase/STACK.md.tmpl +78 -0
  119. package/plugins/copilot-pbr/templates/codebase/STRUCTURE.md.tmpl +80 -0
  120. package/plugins/copilot-pbr/templates/codebase/TESTING.md.tmpl +107 -0
  121. package/plugins/copilot-pbr/templates/continue-here.md.tmpl +74 -0
  122. package/plugins/copilot-pbr/templates/prompt-partials/phase-project-context.md.tmpl +38 -0
  123. package/plugins/copilot-pbr/templates/research/ARCHITECTURE.md.tmpl +124 -0
  124. package/plugins/copilot-pbr/templates/research/STACK.md.tmpl +71 -0
  125. package/plugins/copilot-pbr/templates/research/SUMMARY.md.tmpl +112 -0
  126. package/plugins/copilot-pbr/templates/research-outputs/phase-research.md.tmpl +81 -0
  127. package/plugins/copilot-pbr/templates/research-outputs/project-research.md.tmpl +99 -0
  128. package/plugins/copilot-pbr/templates/research-outputs/synthesis.md.tmpl +36 -0
  129. package/plugins/cursor-pbr/.cursor-plugin/plugin.json +13 -3
  130. package/plugins/cursor-pbr/skills/dashboard/SKILL.md +14 -4
  131. package/plugins/cursor-pbr/skills/do/SKILL.md +67 -0
  132. package/plugins/cursor-pbr/skills/milestone/SKILL.md +10 -7
  133. package/plugins/cursor-pbr/skills/todo/SKILL.md +28 -5
  134. package/plugins/cursor-pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -0
  135. package/plugins/cursor-pbr/templates/codebase/CONCERNS.md.tmpl +93 -0
  136. package/plugins/cursor-pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -0
  137. package/plugins/cursor-pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -0
  138. package/plugins/cursor-pbr/templates/codebase/STACK.md.tmpl +78 -0
  139. package/plugins/cursor-pbr/templates/codebase/STRUCTURE.md.tmpl +80 -0
  140. package/plugins/cursor-pbr/templates/codebase/TESTING.md.tmpl +107 -0
  141. package/plugins/cursor-pbr/templates/research/ARCHITECTURE.md.tmpl +124 -0
  142. package/plugins/cursor-pbr/templates/research/STACK.md.tmpl +71 -0
  143. package/plugins/cursor-pbr/templates/research/SUMMARY.md.tmpl +112 -0
  144. package/plugins/cursor-pbr/templates/research-outputs/phase-research.md.tmpl +81 -0
  145. package/plugins/cursor-pbr/templates/research-outputs/project-research.md.tmpl +99 -0
  146. package/plugins/cursor-pbr/templates/research-outputs/synthesis.md.tmpl +36 -0
  147. package/plugins/pbr/.claude-plugin/plugin.json +7 -2
  148. package/plugins/pbr/scripts/validate-skill-args.js +54 -10
  149. package/plugins/pbr/skills/do/SKILL.md +70 -0
  150. package/plugins/pbr/skills/milestone/SKILL.md +10 -7
  151. package/plugins/pbr/skills/todo/SKILL.md +29 -6
@@ -0,0 +1,36 @@
1
+ # Research Synthesis: {Topic}
2
+
3
+ > Synthesized: {date}
4
+ > Mode: synthesis
5
+ > Input documents: {count}
6
+ > Confidence: {overall}
7
+
8
+ ## Executive Summary
9
+
10
+ {Unified findings across all input documents}
11
+
12
+ ## Key Findings
13
+
14
+ {Numbered list of the most important findings, with source document attribution}
15
+
16
+ ## Contradictions Resolved
17
+
18
+ {Where input documents disagreed and how it was resolved}
19
+
20
+ | Topic | Document A Says | Document B Says | Resolution | Basis |
21
+ |-------|----------------|----------------|------------|-------|
22
+ | ... | ... | ... | ... | ... |
23
+
24
+ ## Recommended Approach
25
+
26
+ {The synthesized recommendation}
27
+
28
+ ## Risks and Mitigations
29
+
30
+ | Risk | Likelihood | Impact | Mitigation |
31
+ |------|-----------|--------|------------|
32
+ | ... | ... | ... | ... |
33
+
34
+ ## Sources
35
+
36
+ {Consolidated source list from all input documents}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pbr",
3
3
  "displayName": "Plan-Build-Run",
4
- "version": "2.3.0",
4
+ "version": "2.4.0",
5
5
  "description": "Plan-Build-Run — Structured development workflow for Cursor. Solves context rot through disciplined subagent delegation, structured planning, atomic execution, and goal-backward verification.",
6
6
  "author": {
7
7
  "name": "SienkLogic",
@@ -12,9 +12,19 @@
12
12
  "repository": "https://github.com/SienkLogic/plan-build-run",
13
13
  "license": "MIT",
14
14
  "logo": "../assets/logo.svg",
15
- "keywords": ["cursor", "context-engineering", "development-workflow", "subagent-delegation"],
15
+ "keywords": [
16
+ "cursor",
17
+ "context-engineering",
18
+ "development-workflow",
19
+ "subagent-delegation"
20
+ ],
16
21
  "category": "developer-tools",
17
- "tags": ["planning", "workflow", "structured-development", "context-management"],
22
+ "tags": [
23
+ "planning",
24
+ "workflow",
25
+ "structured-development",
26
+ "context-management"
27
+ ],
18
28
  "skills": "./skills/",
19
29
  "agents": "./agents/",
20
30
  "rules": "./rules/",
@@ -8,15 +8,25 @@ argument-hint: "[--port N]"
8
8
 
9
9
  1. **Parse arguments**: Extract `--port N` from the user's input. Default to `3000`.
10
10
 
11
- 2. **Check dependencies**: Check if the dashboard `node_modules/` exists in the plugin's dashboard directory. If not, run `npm install` in that directory.
11
+ 2. **Locate dashboard**: The dashboard lives at `../../dashboard/` relative to this plugin's root directory (i.e. two levels up from `plugins/cursor-pbr/`). Resolve the absolute path.
12
12
 
13
- 3. **Launch dashboard**: Run in background:
13
+ 3. **Check dependencies**: Check if `node_modules/` exists in the dashboard directory. If not, run:
14
14
  ```
15
- node <plugin-root>/dashboard/bin/cli.js --dir <cwd> --port <port> &
15
+ npm install --prefix <dashboard-dir>
16
16
  ```
17
17
 
18
- 4. **Output to user**:
18
+ 4. **Launch dashboard**: Run in background:
19
+ ```
20
+ node <dashboard-dir>/bin/cli.js --dir <cwd> --port <port> &
21
+ ```
22
+
23
+ 5. **Output to user**:
19
24
  ```
20
25
  Dashboard running at http://localhost:<port>
21
26
  Open this URL in your browser to view your project's planning state.
22
27
  ```
28
+
29
+ ## Notes
30
+
31
+ - If the port is already in use, the dashboard will fail to start — suggest the user try a different port with `--port`.
32
+ - The dashboard watches `.planning/` for live updates via SSE.
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: do
3
+ description: "Route freeform text to the right PBR skill automatically."
4
+ argument-hint: "<freeform description of what you want to do>"
5
+ ---
6
+
7
+ # /pbr:do — Freeform Task Router
8
+
9
+ You are running the **do** skill. Your job is to analyze freeform text from the user and route it to the most appropriate PBR skill. You are a dispatcher, not an executor — you never do the work yourself.
10
+
11
+ ## Step 0 — Immediate Output
12
+
13
+ **Before ANY tool calls**, display this banner:
14
+
15
+ ```
16
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
17
+ PLAN-BUILD-RUN ► ROUTING
18
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
19
+ ```
20
+
21
+ Then proceed to Step 1.
22
+
23
+ ## Step 1 — Validate Input
24
+
25
+ If `$ARGUMENTS` is empty, ask the user what they want to do via AskUserQuestion:
26
+ ```
27
+ What would you like to do? Describe the task, bug, or idea and I'll route it to the right skill.
28
+ ```
29
+
30
+ ## Step 2 — Analyze and Route
31
+
32
+ Evaluate `$ARGUMENTS` against these routing criteria. Apply the **first matching** rule:
33
+
34
+ | If the text describes... | Route to | Why |
35
+ |--------------------------|----------|-----|
36
+ | A bug, error, crash, failure, or something broken | `/pbr:debug` | Needs systematic investigation |
37
+ | Exploration, research, comparison, or "how does X work" | `/pbr:explore` | Open-ended investigation |
38
+ | A complex task: refactoring, migration, multi-file architecture, system redesign | `/pbr:plan add` | Needs a full phase with research/plan/build cycle |
39
+ | A review or quality concern about existing work | `/pbr:review` | Needs verification against plan |
40
+ | A note, idea, or "remember to..." | `/pbr:note` | Capture for later |
41
+ | A specific, actionable task (add feature, fix typo, update config, write test) | `/pbr:quick` | Self-contained, single executor |
42
+
43
+ **Ambiguity handling**: If the text could reasonably match multiple routes, ask the user via AskUserQuestion with the top 2-3 options. For example:
44
+
45
+ ```
46
+ "Refactor the authentication system" could be:
47
+ - /pbr:plan add — Full planning cycle (recommended for multi-file refactors)
48
+ - /pbr:quick — Quick execution (if scope is small and clear)
49
+ ```
50
+
51
+ ## Step 3 — Confirm and Dispatch
52
+
53
+ Display the routing decision:
54
+
55
+ ```
56
+ **Input:** {first 80 chars of arguments}
57
+ **Routing to:** {chosen skill}
58
+ **Reason:** {one-line explanation}
59
+ ```
60
+
61
+ Then invoke the chosen skill via the Skill tool, passing `$ARGUMENTS` as the args.
62
+
63
+ **Special case for `/pbr:plan add`**: When routing to plan, check if `.planning/ROADMAP.md` exists first (via Read). If it doesn't, suggest `/pbr:begin` instead — the user needs to set up the project before they can add phases.
64
+
65
+ ## Step 4 — No Follow-Up
66
+
67
+ After invoking the skill, your job is done. The dispatched skill handles everything from here (execution, commits, state updates). Do not add any additional output after the Skill tool call.
@@ -260,10 +260,13 @@ Archive a completed milestone and prepare for the next one.
260
260
 
261
261
  5. **Archive milestone documents:**
262
262
 
263
- Copy/create archive files:
264
- - `.planning/milestones/{version}-ROADMAP.md` — snapshot of ROADMAP.md at completion
265
- - `.planning/milestones/{version}-REQUIREMENTS.md` — snapshot of REQUIREMENTS.md
266
- - `.planning/milestones/{version}-STATS.md` — milestone statistics
263
+ Create a versioned archive directory and move phase directories into it:
264
+ - `.planning/milestones/{version}/ROADMAP.md` — snapshot of ROADMAP.md at completion
265
+ - `.planning/milestones/{version}/REQUIREMENTS.md` — snapshot of REQUIREMENTS.md
266
+ - `.planning/milestones/{version}/STATS.md` — milestone statistics
267
+ - `.planning/milestones/{version}/phases/{NN}-{slug}/` — move each milestone phase directory from `.planning/phases/` into the archive
268
+
269
+ **Move phases:** For each phase belonging to this milestone, move (not copy) its directory from `.planning/phases/{NN}-{slug}/` to `.planning/milestones/{version}/phases/{NN}-{slug}/`. This keeps the active phases directory clean for the next milestone.
267
270
 
268
271
  **Stats file content:**
269
272
 
@@ -290,7 +293,7 @@ Archive a completed milestone and prepare for the next one.
290
293
  ```markdown
291
294
  ## Milestone: {name} ({version}) -- COMPLETED
292
295
 
293
- Phases {start}-{end} completed on {date}. See `.planning/milestones/{version}-ROADMAP.md` for details.
296
+ Phases {start}-{end} completed on {date}. See `.planning/milestones/{version}/ROADMAP.md` for details.
294
297
 
295
298
  | Phase | Status |
296
299
  |-------|--------|
@@ -322,7 +325,7 @@ Archive a completed milestone and prepare for the next one.
322
325
 
323
326
  9. **Commit:**
324
327
  ```bash
325
- git add .planning/milestones/ .planning/ROADMAP.md .planning/PROJECT.md .planning/STATE.md .planning/HISTORY.md
328
+ git add .planning/milestones/ .planning/phases/ .planning/ROADMAP.md .planning/PROJECT.md .planning/STATE.md .planning/HISTORY.md
326
329
  git commit -m "docs(planning): complete milestone {version}"
327
330
  ```
328
331
 
@@ -339,7 +342,7 @@ Archive a completed milestone and prepare for the next one.
339
342
  - {count} commits, {lines} lines of code
340
343
  - {duration} days
341
344
 
342
- Archived to: .planning/milestones/{version}-*
345
+ Archived to: .planning/milestones/{version}/
343
346
  Git tag: {version}
344
347
 
345
348
  ───────────────────────────────────────────────────────────────
@@ -184,17 +184,38 @@ Todo {NNN} not found in pending todos.
184
184
  2. If not found, display the same error block as `done` — suggest `/pbr:todo list`
185
185
  3. Read the todo file content (frontmatter + body)
186
186
  4. Extract the `title` from frontmatter and the full body (Goal, Scope, Acceptance Criteria sections)
187
- 5. Display branded output:
187
+
188
+ 5. **Assess complexity** to choose the right skill. Evaluate the todo content against these criteria:
189
+
190
+ | Signal | Route to |
191
+ |--------|----------|
192
+ | Single file change, small fix, simple addition | `/pbr:quick` |
193
+ | Multiple acceptance criteria, multi-file scope, architectural decisions, needs research | `/pbr:plan` (requires an active phase) |
194
+ | Investigation needed, unclear root cause | `/pbr:debug` |
195
+ | Open-ended exploration, no clear deliverable | `/pbr:explore` |
196
+
197
+ If unsure, ask the user via AskUserQuestion:
198
+ ```
199
+ Todo {NNN} could be handled as a quick task or may need full planning.
200
+
201
+ Which approach?
202
+ - Quick task (/pbr:quick) — single executor, atomic commit
203
+ - Full planning (/pbr:plan) — research, plan, build cycle
204
+ - Debug (/pbr:debug) — systematic investigation
205
+ - Explore (/pbr:explore) — open-ended investigation
206
+ ```
207
+
208
+ 6. Display branded output:
188
209
  ```
189
210
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
190
211
  PLAN-BUILD-RUN ► WORKING ON TODO {NNN}
191
212
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
192
213
 
193
214
  **Todo {NNN}:** {title}
194
-
195
- Launching /pbr:quick with todo context...
215
+ **Routing to:** /pbr:{chosen-skill}
196
216
  ```
197
- 6. Invoke the Skill tool: `skill: "pbr:quick"` with `args` set to the todo title followed by the body content. Format the args as:
217
+
218
+ 7. Invoke the chosen skill via the Skill tool, passing the todo title and body as args:
198
219
 
199
220
  ```
200
221
  {title}
@@ -203,7 +224,9 @@ Context from todo {NNN}:
203
224
  {body content — Goal, Scope, Acceptance Criteria sections}
204
225
  ```
205
226
 
206
- This hands off execution to `/pbr:quick`, which will spawn an executor agent, make atomic commits, and track the work. When quick completes, remind the user:
227
+ For `/pbr:plan`, if no phase exists for this work yet, suggest the user run `/pbr:plan add` first to create one, then re-run `/pbr:todo work {NNN}`.
228
+
229
+ 8. When the skill completes, remind the user:
207
230
 
208
231
  ```
209
232
  ───────────────────────────────────────────────────────────────
@@ -0,0 +1,98 @@
1
+ <!-- Source: agents/codebase-mapper.md | Purpose: Output format for ARCHITECTURE.md codebase analysis -->
2
+ # Architecture
3
+
4
+ > Analyzed: {date}
5
+ > Pattern: {MVC / Layered / Hexagonal / Microservices / Monolith / etc.}
6
+
7
+ ## Pattern Overview
8
+
9
+ {2-3 paragraphs describing the overall architectural pattern with evidence from the codebase}
10
+
11
+ **Evidence**: {file paths, import patterns, directory structure that support this classification}
12
+
13
+ ## Layers
14
+
15
+ | Layer | Purpose | Directory | Key Files |
16
+ |-------|---------|-----------|-----------|
17
+ | {Presentation} | {UI rendering} | {src/components/} | {App.tsx, Layout.tsx} |
18
+ | {API/Routes} | {HTTP handling} | {src/routes/ or src/app/api/} | {users.ts, auth.ts} |
19
+ | {Business Logic} | {Core domain} | {src/services/} | {UserService.ts} |
20
+ | {Data Access} | {Database interaction} | {src/repositories/ or src/db/} | {UserRepo.ts} |
21
+ | {Infrastructure} | {External services} | {src/lib/ or src/integrations/} | {email.ts, storage.ts} |
22
+
23
+ ### Layer Rules
24
+
25
+ {How layers communicate — what imports what? What are the dependency rules?}
26
+
27
+ ```
28
+ Presentation → API → Business → Data Access → Database
29
+
30
+ Infrastructure
31
+ ```
32
+
33
+ ## Data Flow
34
+
35
+ ### Request Lifecycle
36
+
37
+ {How a typical request flows through the system}
38
+
39
+ ```
40
+ 1. Client sends request
41
+ 2. → {Router/Framework} routes to handler
42
+ 3. → {Middleware} runs (auth, validation, logging)
43
+ 4. → {Controller/Handler} processes request
44
+ 5. → {Service} executes business logic
45
+ 6. → {Repository/Model} queries database
46
+ 7. → Response returns through the stack
47
+ ```
48
+
49
+ ### State Management
50
+
51
+ | Context | Approach | Implementation | Files |
52
+ |---------|----------|---------------|-------|
53
+ | Client state | {Redux / Zustand / Context / etc.} | {how it's structured} | {store files} |
54
+ | Server state | {React Query / SWR / etc.} | {how it's used} | {hook files} |
55
+ | Session state | {JWT / cookies / etc.} | {how it's managed} | {auth files} |
56
+
57
+ ## Key Abstractions
58
+
59
+ | Abstraction | Purpose | Implementation | Used By |
60
+ |-------------|---------|---------------|---------|
61
+ | {Repository} | {Database access} | {Abstract class + implementations} | {Services} |
62
+ | {Middleware} | {Cross-cutting concerns} | {Function signature} | {Routes} |
63
+ | {DTO/Schema} | {Data validation} | {Zod schemas / class-validator} | {Routes, Services} |
64
+
65
+ ## Entry Points
66
+
67
+ | Type | File | Config | Notes |
68
+ |------|------|--------|-------|
69
+ | Web app | {src/app/page.tsx} | {port 3000} | {Next.js App Router} |
70
+ | API server | {src/server.ts} | {port 8080} | {Express server} |
71
+ | CLI | {src/cli.ts} | - | {Commander.js} |
72
+ | Workers | {src/workers/} | {queue config} | {Bull/BullMQ} |
73
+ | Cron | {src/cron/} | {schedule} | {node-cron} |
74
+
75
+ ## Error Handling Strategy
76
+
77
+ | Layer | Pattern | Implementation |
78
+ |-------|---------|---------------|
79
+ | API | {Error middleware + HTTP status codes} | {src/middleware/error.ts} |
80
+ | Service | {Custom error classes} | {src/errors/} |
81
+ | Client | {Error boundaries + toast notifications} | {src/components/ErrorBoundary.tsx} |
82
+
83
+ ### Error Flow
84
+
85
+ ```
86
+ Service throws AppError → Controller catches → Error middleware formats response → Client displays
87
+ ```
88
+
89
+ ## Security Architecture
90
+
91
+ | Aspect | Implementation | Files |
92
+ |--------|---------------|-------|
93
+ | Authentication | {how auth works} | {files} |
94
+ | Authorization | {RBAC / ABAC / etc.} | {files} |
95
+ | Input validation | {where and how} | {files} |
96
+ | CORS | {configuration} | {files} |
97
+ | Rate limiting | {if present} | {files} |
98
+ | CSRF protection | {if present} | {files} |
@@ -0,0 +1,93 @@
1
+ <!-- Source: agents/codebase-mapper.md | Purpose: Output format for CONCERNS.md codebase analysis -->
2
+ # Concerns & Technical Debt
3
+
4
+ > Analyzed: {date}
5
+ > Severity summary: {n critical, n high, n medium, n low}
6
+
7
+ ## Technical Debt
8
+
9
+ | # | Area | Issue | Severity | Files | Evidence |
10
+ |---|------|-------|----------|-------|----------|
11
+ | 1 | {area} | {what's wrong} | critical/high/medium/low | {file paths} | {what you saw} |
12
+ | 2 | {area} | {what's wrong} | {severity} | {file paths} | {what you saw} |
13
+
14
+ ### Debt Details
15
+
16
+ #### TD-1: {Issue Title}
17
+
18
+ **Severity**: {critical / high / medium / low}
19
+ **Files**: {list of affected files}
20
+ **Description**: {detailed description of the issue}
21
+ **Evidence**: {specific code examples, line numbers}
22
+ **Impact**: {what problems this causes or could cause}
23
+ **Recommendation**: {specific action to fix}
24
+
25
+ ## Known Bugs
26
+
27
+ | # | Description | Severity | Location | Reproduction |
28
+ |---|-------------|----------|----------|--------------|
29
+ | 1 | {bug description} | {severity} | {file:line} | {how to trigger} |
30
+
31
+ ## Security Considerations
32
+
33
+ | # | Issue | Severity | Location | Recommendation |
34
+ |---|-------|----------|----------|----------------|
35
+ | 1 | {Missing input validation on API} | high | {src/routes/users.ts} | {Add zod schema validation} |
36
+ | 2 | {Hardcoded secret in source} | critical | {src/config.ts:42} | {Move to environment variable} |
37
+ | 3 | {SQL injection risk} | critical | {src/db/queries.ts:15} | {Use parameterized queries} |
38
+ | 4 | {No rate limiting} | medium | {src/server.ts} | {Add express-rate-limit} |
39
+ | 5 | {No CSRF protection} | medium | {src/routes/} | {Add csrf tokens} |
40
+
41
+ ## Performance Risks
42
+
43
+ | # | Issue | Location | Impact | Recommendation |
44
+ |---|-------|----------|--------|----------------|
45
+ | 1 | {N+1 query in user list} | {src/routes/users.ts:30} | {Slow page load} | {Use eager loading} |
46
+ | 2 | {No pagination on large queries} | {src/routes/posts.ts:15} | {Memory exhaustion} | {Add cursor pagination} |
47
+ | 3 | {Synchronous file operations} | {src/utils/file.ts} | {Blocks event loop} | {Use async fs methods} |
48
+
49
+ ## Fragile Areas
50
+
51
+ | # | Area | Why Fragile | Impact of Breaking | Files |
52
+ |---|------|-------------|-------------------|-------|
53
+ | 1 | {Auth middleware} | {Tightly coupled to 5 services} | {All protected routes fail} | {files} |
54
+ | 2 | {Data migration} | {No rollback mechanism} | {Data loss on failure} | {files} |
55
+
56
+ ## Dependency Risks
57
+
58
+ | Package | Version | Issue | Recommendation |
59
+ |---------|---------|-------|----------------|
60
+ | {package} | {version} | {Deprecated / EOL / Known vulnerability} | {Update to X / Replace with Y} |
61
+
62
+ ## Scaling Limitations
63
+
64
+ | # | Limitation | When It Breaks | Current State | Fix Approach |
65
+ |---|-----------|---------------|---------------|-------------|
66
+ | 1 | {Single database instance} | {>1000 concurrent users} | {adequate for current load} | {Read replicas} |
67
+ | 2 | {In-memory session store} | {Multiple server instances} | {single instance} | {Redis session store} |
68
+
69
+ ## Missing Infrastructure
70
+
71
+ | Category | Status | Impact | Priority |
72
+ |----------|--------|--------|----------|
73
+ | Error monitoring | {absent/partial/present} | {bugs go unnoticed} | {high} |
74
+ | Logging | {absent/partial/present} | {hard to debug production} | {high} |
75
+ | CI/CD | {absent/partial/present} | {manual deployments} | {medium} |
76
+ | Automated tests | {absent/partial/present} | {regressions not caught} | {high} |
77
+ | Documentation | {absent/partial/present} | {onboarding difficulty} | {low} |
78
+ | Backup/Recovery | {absent/partial/present} | {data loss risk} | {critical} |
79
+ | Health checks | {absent/partial/present} | {outages not detected} | {medium} |
80
+
81
+ ## Recommendations (Prioritized)
82
+
83
+ ### Critical (Fix Immediately)
84
+ 1. {Recommendation with specific action}
85
+
86
+ ### High (Fix Soon)
87
+ 1. {Recommendation with specific action}
88
+
89
+ ### Medium (Plan to Fix)
90
+ 1. {Recommendation with specific action}
91
+
92
+ ### Low (When Convenient)
93
+ 1. {Recommendation with specific action}
@@ -0,0 +1,104 @@
1
+ <!-- Source: agents/codebase-mapper.md | Purpose: Output format for CONVENTIONS.md codebase analysis -->
2
+ # Code Conventions
3
+
4
+ > Analyzed: {date}
5
+ > Based on: {n} files inspected
6
+
7
+ ## Naming Conventions
8
+
9
+ | Entity | Convention | Example |
10
+ |--------|-----------|---------|
11
+ | Files (components) | {PascalCase.tsx} | `UserProfile.tsx` |
12
+ | Files (utilities) | {camelCase.ts} | `formatDate.ts` |
13
+ | Functions | {camelCase} | `getUserById` |
14
+ | Classes | {PascalCase} | `UserService` |
15
+ | Interfaces | {PascalCase, no I prefix} | `UserProfile` |
16
+ | Types | {PascalCase} | `CreateUserInput` |
17
+ | Constants | {SCREAMING_SNAKE_CASE or camelCase} | `MAX_RETRIES` or `maxRetries` |
18
+ | Enum members | {PascalCase} | `UserRole.Admin` |
19
+ | Environment variables | {SCREAMING_SNAKE_CASE} | `DATABASE_URL` |
20
+ | CSS classes | {kebab-case or camelCase modules} | `user-profile` |
21
+ | Database tables | {snake_case} | `user_profiles` |
22
+ | API endpoints | {kebab-case} | `/api/user-profiles` |
23
+
24
+ ## Code Style
25
+
26
+ | Aspect | Setting | Config File |
27
+ |--------|---------|-------------|
28
+ | Indentation | {2 spaces / 4 spaces / tabs} | {.editorconfig / .prettierrc} |
29
+ | Quotes | {single / double} | {.prettierrc} |
30
+ | Semicolons | {yes / no} | {.prettierrc} |
31
+ | Trailing commas | {all / es5 / none} | {.prettierrc} |
32
+ | Line width | {80 / 100 / 120} | {.prettierrc} |
33
+ | Line endings | {LF / CRLF} | {.editorconfig} |
34
+
35
+ ## Import Organization
36
+
37
+ {Observed import order pattern from the codebase}
38
+
39
+ ```{language}
40
+ // 1. Node.js built-in modules
41
+ import path from 'path';
42
+
43
+ // 2. External packages
44
+ import React from 'react';
45
+ import { z } from 'zod';
46
+
47
+ // 3. Internal aliases
48
+ import { Button } from '@/components/ui';
49
+ import { useAuth } from '@/hooks/useAuth';
50
+
51
+ // 4. Relative imports
52
+ import { UserCard } from './UserCard';
53
+ import type { User } from './types';
54
+
55
+ // 5. Style imports
56
+ import styles from './UserProfile.module.css';
57
+ ```
58
+
59
+ ## Function Patterns
60
+
61
+ ### Async Functions
62
+
63
+ ```{language}
64
+ // Pattern used in this codebase: {evidence file:line}
65
+ {actual code pattern from codebase}
66
+ ```
67
+
68
+ ### Error Handling
69
+
70
+ ```{language}
71
+ // Pattern used in this codebase: {evidence file:line}
72
+ {actual code pattern from codebase}
73
+ ```
74
+
75
+ ### API Route Handlers
76
+
77
+ ```{language}
78
+ // Pattern used in this codebase: {evidence file:line}
79
+ {actual code pattern from codebase}
80
+ ```
81
+
82
+ ### React Components
83
+
84
+ ```{language}
85
+ // Pattern used in this codebase: {evidence file:line}
86
+ {actual code pattern from codebase}
87
+ ```
88
+
89
+ ## Comment Conventions
90
+
91
+ | When | Style | Example |
92
+ |------|-------|---------|
93
+ | {Complex logic} | {inline comment} | `// Calculate tax with progressive rates` |
94
+ | {Public API} | {JSDoc} | `/** @param user - The user to validate */` |
95
+ | {Temporary} | {TODO with ticket} | `// TODO(#123): refactor after migration` |
96
+ | {Warning} | {IMPORTANT prefix} | `// IMPORTANT: this must run before auth` |
97
+
98
+ ## Git Conventions
99
+
100
+ | Aspect | Convention | Example |
101
+ |--------|-----------|---------|
102
+ | Branch naming | {pattern} | `feature/add-user-auth` |
103
+ | Commit format | {conventional commits / custom} | `feat(auth): add login flow` |
104
+ | PR titles | {pattern} | `[Feature] Add user authentication` |
@@ -0,0 +1,78 @@
1
+ <!-- Source: agents/codebase-mapper.md | Purpose: Output format for INTEGRATIONS.md codebase analysis -->
2
+ # External Integrations
3
+
4
+ > Analyzed: {date}
5
+ > Total integrations: {n}
6
+
7
+ ## APIs
8
+
9
+ | Service | Type | Auth Method | Config Var | Used In | Documentation |
10
+ |---------|------|-------------|------------|---------|---------------|
11
+ | {Discord API} | REST | {OAuth2} | DISCORD_TOKEN | {src/integrations/discord.ts} | {URL} |
12
+ | {Stripe} | REST | {API Key} | STRIPE_SECRET_KEY | {src/payments/} | {URL} |
13
+
14
+ ### API Client Patterns
15
+
16
+ {How API calls are made in this codebase — fetch wrapper? axios instance? SDK?}
17
+
18
+ ```{language}
19
+ // Example from codebase: {file:line}
20
+ {actual code pattern}
21
+ ```
22
+
23
+ ## Databases
24
+
25
+ | Database | Type | ORM/Driver | Config | Schema Location | Migrations |
26
+ |----------|------|-----------|--------|-----------------|------------|
27
+ | {PostgreSQL} | {Relational} | {Prisma} | DATABASE_URL | {prisma/schema.prisma} | {prisma/migrations/} |
28
+ | {Redis} | {Key-value} | {ioredis} | REDIS_URL | - | - |
29
+
30
+ ### Database Patterns
31
+
32
+ {How database access is structured — repository pattern? direct queries? ORM models?}
33
+
34
+ ## Authentication & Authorization
35
+
36
+ | Aspect | Implementation | Config | Files |
37
+ |--------|---------------|--------|-------|
38
+ | Method | {JWT / Session / OAuth} | {env vars} | {files} |
39
+ | Provider | {self / Auth0 / Clerk / etc.} | {env vars} | {files} |
40
+ | Storage | {cookie / localStorage / header} | - | {files} |
41
+ | Roles | {admin, user, etc.} | {where defined} | {files} |
42
+
43
+ ## Email/Notifications
44
+
45
+ | Service | Purpose | Config | Used In |
46
+ |---------|---------|--------|---------|
47
+ | {SendGrid} | {Transactional email} | SENDGRID_KEY | {src/email/} |
48
+
49
+ ## File Storage
50
+
51
+ | Service | Purpose | Config | Used In |
52
+ |---------|---------|--------|---------|
53
+ | {S3} | {User uploads} | AWS_* vars | {src/storage/} |
54
+
55
+ ## Monitoring & Logging
56
+
57
+ | Tool | Purpose | Config | Used In |
58
+ |------|---------|--------|---------|
59
+ | {Sentry} | {Error tracking} | SENTRY_DSN | {src/lib/sentry.ts} |
60
+ | {Winston} | {Logging} | - | {src/lib/logger.ts} |
61
+
62
+ ## CI/CD
63
+
64
+ | Platform | Config | Stages | Deployment |
65
+ |----------|--------|--------|------------|
66
+ | {GitHub Actions} | {.github/workflows/} | {lint, test, build, deploy} | {Vercel / AWS / etc.} |
67
+
68
+ ### Pipeline Details
69
+
70
+ {Description of the CI/CD pipeline flow}
71
+
72
+ ## Infrastructure
73
+
74
+ | Component | Provider | Config | Notes |
75
+ |-----------|----------|--------|-------|
76
+ | {Hosting} | {Vercel} | {vercel.json} | {auto-deploy from main} |
77
+ | {DNS} | {Cloudflare} | - | {if relevant} |
78
+ | {CDN} | {included with host} | - | - |