@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,362 +1,378 @@
1
- ---
2
- name: explore
3
- description: "Explore ideas, think through approaches, and route insights to the right artifacts."
4
- allowed-tools: Read, Write, Glob, Grep, Task, AskUserQuestion
5
- argument-hint: "[topic]"
6
- ---
7
-
8
- # /pbr:explore Idea Exploration
9
-
10
- You are running the **explore** skill. Your job is to help the user think through ideas that might become a todo, requirement, phase, decision, or nothing yet. This is Socratic conversation, not requirements gathering. No phase number is needed.
11
-
12
- This skill runs **inline** (no Task delegation), with optional Task() spawns for context loading and mid-conversation research.
13
-
14
- ---
15
-
16
- ## Context Budget
17
-
18
- Reference: `skills/shared/context-budget.md` for the universal orchestrator rules.
19
-
20
- Additionally for this skill:
21
- - **Minimize** file reads — this is a thinking skill, not a code analysis skill
22
- - **Delegate** deep research to a researcher subagent if investigation exceeds 3-4 file reads
23
-
24
- ---
25
-
26
- ## How /pbr:explore Differs from /pbr:discuss
27
-
28
- | | /pbr:discuss | /pbr:explore |
29
- |---|---|---|
30
- | Purpose | Make decisions for a phase | Discover what you actually want |
31
- | Structure | Pre-computed gray areas with options | Open-ended Socratic conversation |
32
- | Requires | Phase number | Nothing |
33
- | Output | CONTEXT.md (locked decisions) | Routes to the right artifact |
34
- | Feels like | Making decisions | Thinking with a partner |
35
-
36
- ---
37
-
38
- ## Invocation
39
-
40
- - `/pbr:explore` Open-ended: "I have an idea"
41
- - `/pbr:explore auth` — Topic-specific exploration
42
- - `/pbr:explore "should we add caching?"` — Specific question
43
-
44
- Parse `$ARGUMENTS` for an optional topic. If provided, use it to seed the opening question. If empty, start fully open-ended.
45
-
46
- ---
47
-
48
- ## Pre-Conversation Context Loader
49
-
50
- Reference: `skills/shared/context-loader-task.md` for the full briefing Task() pattern.
51
-
52
- **Only runs if `.planning/` directory exists.** Fresh explores with no project skip this entirely.
53
-
54
- When a project exists, spawn a briefing Task() per the context-loader-task pattern with `skill_purpose` = "exploring new ideas". If a topic was provided, use the topic-scoped variation with that topic.
55
-
56
- Use the briefing to inform your conversation reference existing decisions, avoid re-litigating settled questions, and connect new ideas to the existing project structure.
57
-
58
- ---
59
-
60
- ## Conversation Design
61
-
62
- The conversation is Socratic, not extractive. You are a thinking partner, not an interviewer.
63
-
64
- ### Principles
65
-
66
- 1. **Open with curiosity.** Start with "What are you thinking about?" or "What's on your mind?" — not "Please describe the feature you want."
67
-
68
- 2. **Follow their energy.** Dig into what excites or concerns them. If they light up about a technical approach, explore it. If they hesitate, probe why.
69
-
70
- 3. **Surface implications.** "If you go with X, that usually means Y and Z. Is that intentional?" Connect their idea to downstream consequences they may not see yet.
71
-
72
- 4. **Challenge with alternatives.** "You mentioned X, but have you considered Y?" Don't be adversarial — offer genuine alternatives that might fit better.
73
-
74
- 5. **Present trade-offs, not options.** "A gives you speed but locks you into a vendor. B is slower but keeps options open." Frame choices as trade-offs with real consequences, not a menu.
75
-
76
- 6. **Know when to research.** "I'm not sure about the best approach here. Want me to research it?" Don't fake knowledge — admit gaps and offer to investigate.
77
-
78
- 7. **Don't rush to outputs.** Explore until understanding is genuinely deep. The user will know when they're ready to wrap up.
79
-
80
- ### Domain-Aware Probing
81
-
82
- Reference `skills/shared/domain-probes.md` for technology-specific follow-up questions. When the user mentions a domain (auth, caching, search, etc.), pick the 2-3 most relevant probes from that domain's table. Do NOT run through the table as a checklist.
83
-
84
- ### Conversation Starters by Invocation
85
-
86
- | Invocation | Opening |
87
- |---|---|
88
- | `/pbr:explore` | "What are you thinking about?" |
89
- | `/pbr:explore auth` | "What's your thinking on auth? Are you starting from scratch or rethinking something?" |
90
- | `/pbr:explore "should we add caching?"` | "Caching for what specifically? What's feeling slow or what do you expect to be slow?" |
91
-
92
- ---
93
-
94
- ## Mid-Conversation Research
95
-
96
- When a knowledge gap emerges during the conversation you're unsure about a library, pattern, or approach surface it explicitly.
97
-
98
- **Ask the user** using the **yes-no** pattern from `skills/shared/gate-prompts.md`:
99
- question: "I'm not sure about the best approach for {topic}. Research it now?"
100
- options:
101
- - label: "Research now" description: "Spawn a researcher agent to investigate"
102
- - label: "Save for later" description: "Add as a research question for future investigation"
103
-
104
- **If research now:**
105
-
106
- Display to the user: `◐ Spawning researcher...`
107
-
108
- ```
109
- Task({
110
- subagent_type: "pbr:researcher",
111
- prompt: "<research_assignment>
112
- Topic: {specific research question}
113
- Output file: .planning/research/{topic-slug}.md
114
- Mode: project-research
115
-
116
- Research this specific question: {the question}
117
-
118
- Write findings to the output file.
119
- </research_assignment>"
120
- })
121
- ```
122
-
123
- After the researcher completes:
124
- - Read ONLY the frontmatter and summary section of the research file (not the full document)
125
- - Incorporate the 2-3 key findings into the conversation
126
- - Main context gets ~200 tokens of research insight, not the full document
127
-
128
- **If save for later:**
129
- - Note it as a research question to include in output routing
130
-
131
- ---
132
-
133
- ## Context Pressure Awareness
134
-
135
- After approximately 10 exchanges or when the conversation has been substantial, mention:
136
-
137
- "We've been exploring for a while. Want to wrap up with outputs, or keep going?"
138
-
139
- Don't force a conclusion — some explorations legitimately need extended conversation. But surface the option so the user can choose.
140
-
141
- ---
142
-
143
- ## Output Routing
144
-
145
- This is the key innovation of `/pbr:explore`. At conversation end, the agent summarizes key insights and routes them to the right artifacts.
146
-
147
- ### Step 1: Summarize
148
-
149
- Provide a concise summary of the key insights from the conversation:
150
- - What was the core idea or question?
151
- - What did we discover or decide?
152
- - What remains uncertain?
153
-
154
- ### Step 2: Propose Outputs
155
-
156
- Suggest specific outputs with reasoning. Present no more than 4 suggestions — focus on what matters most.
157
-
158
- | Output Type | When to Suggest | Where It Goes |
159
- |---|---|---|
160
- | Todo | Small, actionable item discovered | `.planning/todos/pending/{id}.md` |
161
- | Requirement | New project feature identified | Append to `REQUIREMENTS.md` with REQ-ID |
162
- | Phase decision | Clarifies an existing phase | Write/append to phase `CONTEXT.md` |
163
- | Research question | Needs deeper investigation | `.planning/research/questions.md` |
164
- | New phase | Big enough for its own phase | Append to `ROADMAP.md` |
165
- | Note | Not actionable yet, worth remembering | `.planning/notes/{slug}.md` |
166
- | Quick capture | One-liner idea, no context needed | Suggest `/pbr:note <text>` to the user |
167
- | Seed | Idea with trigger conditions | `.planning/seeds/SEED-{NNN}-{slug}.md` |
168
-
169
- **Format for proposals:**
170
-
171
- ```
172
- Based on our conversation, here's what I'd suggest capturing:
173
-
174
- 1. **Todo**: "{title}" {why this is a todo and not something bigger}
175
- 2. **Seed**: "{title}" — {why this should wait for a trigger condition}
176
- 3. **Research question**: "{question}" {why we need to investigate this}
177
-
178
- Want to adjust, add, or remove any of these?
179
- ```
180
-
181
- ### Step 3: Confirm
182
-
183
- Use the **output-routing** pattern from `skills/shared/gate-prompts.md`:
184
- question: "How do you want to handle these proposed outputs?"
185
-
186
- Handle responses:
187
- - "Approve all": Create all suggested artifacts (proceed to Step 4)
188
- - "Adjust": The user wants to modify proposals. Have a freeform conversation to adjust, then re-present with another AskUserQuestion.
189
- - "Add more": The user has additional outputs. Gather them conversationally, add to the list, then re-present.
190
- - "Skip": End the session without creating artifacts. This is fine sometimes exploring is enough.
191
-
192
- Do NOT create any artifacts until the user selects "Approve all" on the final set.
193
-
194
- ### Step 4: Create Artifacts
195
-
196
- **Directory creation:** Before writing any artifact, ensure the target directory exists. Create `.planning/notes/`, `.planning/seeds/`, `.planning/research/`, or `.planning/todos/pending/` as needed if they don't already exist.
197
-
198
- Create only the approved artifacts. A single explore session can produce multiple outputs across different types.
199
-
200
- ### Step 5: Completion
201
-
202
- After creating artifacts (or if user chose "Skip"), display:
203
-
204
- ```
205
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
206
- PLAN-BUILD-RUN EXPLORATION CAPTURED
207
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
208
-
209
- {count} artifacts created: {list of artifact types}
210
-
211
- ───────────────────────────────────────────────────────────────
212
-
213
- ## ▶ Next Up
214
-
215
- **{Primary route based on what was created}**
216
-
217
- {Smart routing — pick the most relevant primary command:}
218
- - If a todo was created: **Manage tasks** → `/pbr:todo`
219
- - If a phase decision was captured: **Plan the phase** → `/pbr:plan {N}`
220
- - If a new phase was added: **Discuss the new phase** → `/pbr:discuss {N}`
221
- - If research questions were logged: **Plan with research** → `/pbr:plan {N}`
222
- - Default: **See project status** → `/pbr:status`
223
-
224
- `{primary command}`
225
-
226
- <sub>`/clear` first → fresh context window</sub>
227
-
228
- ───────────────────────────────────────────────────────────────
229
-
230
- **Also available:**
231
- - `/pbr:status` see project status
232
- - `/pbr:continue` — execute next logical step
233
-
234
- ───────────────────────────────────────────────────────────────
235
- ```
236
-
237
- ---
238
-
239
- ## Output Formats
240
-
241
- ### Todo
242
-
243
- Write to `.planning/todos/pending/{NNN}-{slug}.md`. Follow the format used by the existing todo skill.
244
-
245
- ### Requirement
246
-
247
- Append to `.planning/REQUIREMENTS.md` with the next available REQ-ID in the appropriate category. If the category doesn't exist, create it.
248
-
249
- ### Phase Decision
250
-
251
- Append to `.planning/phases/{NN}-{slug}/CONTEXT.md`. If CONTEXT.md doesn't exist for that phase, create it with the standard header. Mark the decision as coming from `/pbr:explore`.
252
-
253
- ### Research Question
254
-
255
- Append to `.planning/research/questions.md`. Create the file if it doesn't exist:
256
-
257
- ```markdown
258
- # Research Questions
259
-
260
- Questions identified during exploration that need deeper investigation.
261
-
262
- ## Open
263
-
264
- - [ ] {Question} — Source: /pbr:explore session ({date})
265
-
266
- ## Answered
267
-
268
- (none yet)
269
- ```
270
-
271
- ### New Phase
272
-
273
- Append to `.planning/ROADMAP.md` following the existing phase format. Assign the next available phase number.
274
-
275
- ### Note
276
-
277
- Write to `.planning/notes/{slug}.md`:
278
-
279
- ```markdown
280
- ---
281
- created: {ISO date}
282
- source: "/pbr:explore session"
283
- topic: "{topic}"
284
- ---
285
- # {Title}
286
-
287
- {Content from the conversation — key insights, reasoning, context}
288
- ```
289
-
290
- ### Seed
291
-
292
- Write to `.planning/seeds/SEED-{NNN}-{slug}.md`:
293
-
294
- ```markdown
295
- ---
296
- id: SEED-{NNN}
297
- status: dormant
298
- planted: {ISO date}
299
- trigger: "{phase-slug}"
300
- scope_estimate: "small|medium|large"
301
- source: "/pbr:explore session"
302
- ---
303
- # {Title}
304
-
305
- ## Context
306
- {Why this idea came up}
307
-
308
- ## Breadcrumbs
309
- {Related phases, technologies, user preferences}
310
- ```
311
-
312
- ---
313
-
314
- ## Git Integration
315
-
316
- Reference: `skills/shared/commit-planning-docs.md` for the standard commit pattern.
317
-
318
- If `planning.commit_docs: true` in config.json, commit created artifacts:
319
-
320
- ```
321
- docs(planning): capture explore session outputs
322
- ```
323
-
324
- Stage only the files created during this session. Do not stage unrelated changes.
325
-
326
- ---
327
-
328
- ## Error Handling
329
-
330
- ### Researcher agent fails
331
- If a mid-conversation researcher Task() fails, display:
332
- ```
333
- ╔══════════════════════════════════════════════════════════════╗
334
- ║ ERROR ║
335
- ╚══════════════════════════════════════════════════════════════╝
336
-
337
- Research agent failed for topic: {topic}.
338
-
339
- **To fix:** Continue the conversation without research, or try `/pbr:explore` again with a more specific topic.
340
- ```
341
-
342
- ### Context loader fails
343
- If the briefing Task() fails:
344
- - Display: `⚠ Context loading failed. Proceeding without project context.`
345
- - Continue with the exploration — the conversation can still be valuable without project context.
346
-
347
- ---
348
-
349
- ## Anti-Patterns
350
-
351
- Reference: `skills/shared/universal-anti-patterns.md` for rules that apply to ALL skills.
352
-
353
- Additionally for this skill:
354
-
355
- 1. **DO NOT** act like an interviewer be a thinking partner
356
- 2. **DO NOT** cycle through a checklist of questions
357
- 3. **DO NOT** rush to outputs before understanding is deep
358
- 4. **DO NOT** auto-research without asking (unless config mode is autonomous)
359
- 5. **DO NOT** present more than 4 output suggestions — focus on what matters
360
- 6. **DO NOT** create artifacts the user didn't approve
361
- 7. **DO NOT** re-litigate decisions that are already locked in CONTEXT.md
362
- 8. **DO NOT** force the user to produce outputs — sometimes exploring is enough
1
+ ---
2
+ name: explore
3
+ description: "Explore ideas, think through approaches, and route insights to the right artifacts."
4
+ allowed-tools: Read, Write, Glob, Grep, Task, AskUserQuestion
5
+ argument-hint: "[topic]"
6
+ ---
7
+
8
+ **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.**
9
+
10
+ ## Step 0 Immediate Output
11
+
12
+ **Before ANY tool calls**, display this banner:
13
+
14
+ ```
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ PLAN-BUILD-RUN ► EXPLORING
17
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
18
+ ```
19
+
20
+ Then proceed to Step 1.
21
+
22
+ # /pbr:explore Idea Exploration
23
+
24
+ You are running the **explore** skill. Your job is to help the user think through ideas that might become a todo, requirement, phase, decision, or nothing yet. This is Socratic conversation, not requirements gathering. No phase number is needed.
25
+
26
+ This skill runs **inline** (no Task delegation), with optional Task() spawns for context loading and mid-conversation research.
27
+
28
+ ---
29
+
30
+ ## Context Budget
31
+
32
+ Reference: `skills/shared/context-budget.md` for the universal orchestrator rules.
33
+
34
+ Additionally for this skill:
35
+ - **Minimize** file reads — this is a thinking skill, not a code analysis skill
36
+ - **Delegate** deep research to a researcher subagent if investigation exceeds 3-4 file reads
37
+
38
+ ---
39
+
40
+ ## How /pbr:explore Differs from /pbr:discuss
41
+
42
+ | | /pbr:discuss | /pbr:explore |
43
+ |---|---|---|
44
+ | Purpose | Make decisions for a phase | Discover what you actually want |
45
+ | Structure | Pre-computed gray areas with options | Open-ended Socratic conversation |
46
+ | Requires | Phase number | Nothing |
47
+ | Output | CONTEXT.md (locked decisions) | Routes to the right artifact |
48
+ | Feels like | Making decisions | Thinking with a partner |
49
+
50
+ ---
51
+
52
+ ## Invocation
53
+
54
+ - `/pbr:explore` Open-ended: "I have an idea"
55
+ - `/pbr:explore auth` — Topic-specific exploration
56
+ - `/pbr:explore "should we add caching?"`Specific question
57
+
58
+ Parse `$ARGUMENTS` for an optional topic. If provided, use it to seed the opening question. If empty, start fully open-ended.
59
+
60
+ ---
61
+
62
+ ## Pre-Conversation Context Loader
63
+
64
+ Reference: `skills/shared/context-loader-task.md` for the full briefing Task() pattern.
65
+
66
+ **Only runs if `.planning/` directory exists.** Fresh explores with no project skip this entirely.
67
+
68
+ When a project exists, spawn a briefing Task() per the context-loader-task pattern with `skill_purpose` = "exploring new ideas". If a topic was provided, use the topic-scoped variation with that topic.
69
+
70
+ Use the briefing to inform your conversation reference existing decisions, avoid re-litigating settled questions, and connect new ideas to the existing project structure.
71
+
72
+ ---
73
+
74
+ ## Conversation Design
75
+
76
+ The conversation is Socratic, not extractive. You are a thinking partner, not an interviewer.
77
+
78
+ ### Principles
79
+
80
+ 1. **Open with curiosity.** Start with "What are you thinking about?" or "What's on your mind?" — not "Please describe the feature you want."
81
+
82
+ 2. **Follow their energy.** Dig into what excites or concerns them. If they light up about a technical approach, explore it. If they hesitate, probe why.
83
+
84
+ 3. **Surface implications.** "If you go with X, that usually means Y and Z. Is that intentional?" Connect their idea to downstream consequences they may not see yet.
85
+
86
+ 4. **Challenge with alternatives.** "You mentioned X, but have you considered Y?" Don't be adversarial — offer genuine alternatives that might fit better.
87
+
88
+ 5. **Present trade-offs, not options.** "A gives you speed but locks you into a vendor. B is slower but keeps options open." Frame choices as trade-offs with real consequences, not a menu.
89
+
90
+ 6. **Know when to research.** "I'm not sure about the best approach here. Want me to research it?" Don't fake knowledge admit gaps and offer to investigate.
91
+
92
+ 7. **Don't rush to outputs.** Explore until understanding is genuinely deep. The user will know when they're ready to wrap up.
93
+
94
+ ### Domain-Aware Probing
95
+
96
+ Reference `skills/shared/domain-probes.md` for technology-specific follow-up questions. When the user mentions a domain (auth, caching, search, etc.), pick the 2-3 most relevant probes from that domain's table. Do NOT run through the table as a checklist.
97
+
98
+ ### Conversation Starters by Invocation
99
+
100
+ | Invocation | Opening |
101
+ |---|---|
102
+ | `/pbr:explore` | "What are you thinking about?" |
103
+ | `/pbr:explore auth` | "What's your thinking on auth? Are you starting from scratch or rethinking something?" |
104
+ | `/pbr:explore "should we add caching?"` | "Caching for what specifically? What's feeling slow or what do you expect to be slow?" |
105
+
106
+ ---
107
+
108
+ ## Mid-Conversation Research
109
+
110
+ When a knowledge gap emerges during the conversation — you're unsure about a library, pattern, or approach — surface it explicitly.
111
+
112
+ **Ask the user** using the **yes-no** pattern from `skills/shared/gate-prompts.md`:
113
+ question: "I'm not sure about the best approach for {topic}. Research it now?"
114
+ options:
115
+ - label: "Research now" description: "Spawn a researcher agent to investigate"
116
+ - label: "Save for later" description: "Add as a research question for future investigation"
117
+
118
+ **If research now:**
119
+
120
+ Display to the user: `◐ Spawning researcher...`
121
+
122
+ ```
123
+ Task({
124
+ subagent_type: "pbr:researcher",
125
+ prompt: "<research_assignment>
126
+ Topic: {specific research question}
127
+ Output file: .planning/research/{topic-slug}.md
128
+ Mode: project-research
129
+
130
+ Research this specific question: {the question}
131
+
132
+ Write findings to the output file.
133
+ </research_assignment>"
134
+ })
135
+ ```
136
+
137
+ After the researcher completes, display: `✓ Research complete results in .planning/research/{topic-slug}.md`
138
+
139
+ Then:
140
+ - Read ONLY the frontmatter and summary section of the research file (not the full document)
141
+ - Incorporate the 2-3 key findings into the conversation
142
+ - Main context gets ~200 tokens of research insight, not the full document
143
+
144
+ **If save for later:**
145
+ - Note it as a research question to include in output routing
146
+
147
+ ---
148
+
149
+ ## Context Pressure Awareness
150
+
151
+ After approximately 10 exchanges or when the conversation has been substantial, mention:
152
+
153
+ "We've been exploring for a while. Want to wrap up with outputs, or keep going?"
154
+
155
+ Don't force a conclusion — some explorations legitimately need extended conversation. But surface the option so the user can choose.
156
+
157
+ ---
158
+
159
+ ## Output Routing
160
+
161
+ This is the key innovation of `/pbr:explore`. At conversation end, the agent summarizes key insights and routes them to the right artifacts.
162
+
163
+ ### Step 1: Summarize
164
+
165
+ Provide a concise summary of the key insights from the conversation:
166
+ - What was the core idea or question?
167
+ - What did we discover or decide?
168
+ - What remains uncertain?
169
+
170
+ ### Step 2: Propose Outputs
171
+
172
+ Suggest specific outputs with reasoning. Present no more than 4 suggestions — focus on what matters most.
173
+
174
+ | Output Type | When to Suggest | Where It Goes |
175
+ |---|---|---|
176
+ | Todo | Small, actionable item discovered | `.planning/todos/pending/{id}.md` |
177
+ | Requirement | New project feature identified | Append to `REQUIREMENTS.md` with REQ-ID |
178
+ | Phase decision | Clarifies an existing phase | Write/append to phase `CONTEXT.md` |
179
+ | Research question | Needs deeper investigation | `.planning/research/questions.md` |
180
+ | New phase | Big enough for its own phase | Append to `ROADMAP.md` |
181
+ | Note | Not actionable yet, worth remembering | `.planning/notes/{slug}.md` |
182
+ | Quick capture | One-liner idea, no context needed | Suggest `/pbr:note <text>` to the user |
183
+ | Seed | Idea with trigger conditions | `.planning/seeds/SEED-{NNN}-{slug}.md` |
184
+
185
+ **Format for proposals:**
186
+
187
+ ```
188
+ Based on our conversation, here's what I'd suggest capturing:
189
+
190
+ 1. **Todo**: "{title}" {why this is a todo and not something bigger}
191
+ 2. **Seed**: "{title}" — {why this should wait for a trigger condition}
192
+ 3. **Research question**: "{question}" {why we need to investigate this}
193
+
194
+ Want to adjust, add, or remove any of these?
195
+ ```
196
+
197
+ ### Step 3: Confirm
198
+
199
+ Use the **output-routing** pattern from `skills/shared/gate-prompts.md`:
200
+ question: "How do you want to handle these proposed outputs?"
201
+
202
+ Handle responses:
203
+ - "Approve all": Create all suggested artifacts (proceed to Step 4)
204
+ - "Adjust": The user wants to modify proposals. Have a freeform conversation to adjust, then re-present with another AskUserQuestion.
205
+ - "Add more": The user has additional outputs. Gather them conversationally, add to the list, then re-present.
206
+ - "Skip": End the session without creating artifacts. This is fine — sometimes exploring is enough.
207
+
208
+ Do NOT create any artifacts until the user selects "Approve all" on the final set.
209
+
210
+ ### Step 4: Create Artifacts
211
+
212
+ **Directory creation:** Before writing any artifact, ensure the target directory exists. Create `.planning/notes/`, `.planning/seeds/`, `.planning/research/`, or `.planning/todos/pending/` as needed if they don't already exist.
213
+
214
+ Create only the approved artifacts. A single explore session can produce multiple outputs across different types.
215
+
216
+ ### Step 5: Completion
217
+
218
+ After creating artifacts (or if user chose "Skip"), display:
219
+
220
+ ```
221
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
222
+ PLAN-BUILD-RUN EXPLORATION CAPTURED
223
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
224
+
225
+ {count} artifacts created: {list of artifact types}
226
+
227
+ ───────────────────────────────────────────────────────────────
228
+
229
+ ## ▶ Next Up
230
+
231
+ **{Primary route based on what was created}**
232
+
233
+ {Smart routing — pick the most relevant primary command:}
234
+ - If a todo was created: **Manage tasks** → `/pbr:todo`
235
+ - If a phase decision was captured: **Plan the phase** → `/pbr:plan {N}`
236
+ - If a new phase was added: **Discuss the new phase** → `/pbr:discuss {N}`
237
+ - If research questions were logged: **Plan with research** → `/pbr:plan {N}`
238
+ - Default: **See project status** → `/pbr:status`
239
+
240
+ `{primary command}`
241
+
242
+ <sub>`/clear` first → fresh context window</sub>
243
+
244
+ ───────────────────────────────────────────────────────────────
245
+
246
+ **Also available:**
247
+ - `/pbr:status` see project status
248
+ - `/pbr:continue` — execute next logical step
249
+
250
+ ───────────────────────────────────────────────────────────────
251
+ ```
252
+
253
+ ---
254
+
255
+ ## Output Formats
256
+
257
+ ### Todo
258
+
259
+ Write to `.planning/todos/pending/{NNN}-{slug}.md` where NNN is a zero-padded 3-digit sequential number (001, 002, 003...). Scan both `.planning/todos/pending/` and `.planning/todos/done/` for the highest existing number, increment by 1, and zero-pad. Follow the format used by the existing todo skill.
260
+
261
+ ### Requirement
262
+
263
+ Append to `.planning/REQUIREMENTS.md` with the next available REQ-ID in the appropriate category. If the category doesn't exist, create it.
264
+
265
+ ### Phase Decision
266
+
267
+ Append to `.planning/phases/{NN}-{slug}/CONTEXT.md`. If CONTEXT.md doesn't exist for that phase, create it with the standard header. Mark the decision as coming from `/pbr:explore`.
268
+
269
+ ### Research Question
270
+
271
+ Append to `.planning/research/questions.md`. Create the file if it doesn't exist:
272
+
273
+ ```markdown
274
+ # Research Questions
275
+
276
+ Questions identified during exploration that need deeper investigation.
277
+
278
+ ## Open
279
+
280
+ - [ ] {Question} — Source: /pbr:explore session ({date})
281
+
282
+ ## Answered
283
+
284
+ (none yet)
285
+ ```
286
+
287
+ ### New Phase
288
+
289
+ Append to `.planning/ROADMAP.md` following the existing phase format. Assign the next available phase number.
290
+
291
+ ### Note
292
+
293
+ Write to `.planning/notes/{NNN}-{slug}.md` where NNN is a zero-padded 3-digit sequential number (001, 002, 003...). Scan `.planning/notes/` for the highest existing number prefix, increment by 1, and zero-pad.
294
+
295
+ ```markdown
296
+ ---
297
+ created: {ISO date}
298
+ source: "/pbr:explore session"
299
+ topic: "{topic}"
300
+ ---
301
+ # {Title}
302
+
303
+ {Content from the conversation — key insights, reasoning, context}
304
+ ```
305
+
306
+ ### Seed
307
+
308
+ Write to `.planning/seeds/SEED-{NNN}-{slug}.md` where NNN is a zero-padded 3-digit sequential number (001, 002, 003...). Scan `.planning/seeds/` for the highest existing SEED number, increment by 1, and zero-pad.
309
+
310
+ ```markdown
311
+ ---
312
+ id: SEED-{NNN}
313
+ status: dormant
314
+ planted: {ISO date}
315
+ trigger: "{phase-slug}"
316
+ scope_estimate: "small|medium|large"
317
+ source: "/pbr:explore session"
318
+ ---
319
+ # {Title}
320
+
321
+ ## Context
322
+ {Why this idea came up}
323
+
324
+ ## Breadcrumbs
325
+ {Related phases, technologies, user preferences}
326
+ ```
327
+
328
+ ---
329
+
330
+ ## Git Integration
331
+
332
+ Reference: `skills/shared/commit-planning-docs.md` for the standard commit pattern.
333
+
334
+ If `planning.commit_docs: true` in config.json, commit created artifacts:
335
+
336
+ ```
337
+ docs(planning): capture explore session outputs
338
+ ```
339
+
340
+ Stage only the files created during this session. Do not stage unrelated changes.
341
+
342
+ ---
343
+
344
+ ## Error Handling
345
+
346
+ ### Researcher agent fails
347
+ If a mid-conversation researcher Task() fails, display:
348
+ ```
349
+ ╔══════════════════════════════════════════════════════════════╗
350
+ ║ ERROR ║
351
+ ╚══════════════════════════════════════════════════════════════╝
352
+
353
+ Research agent failed for topic: {topic}.
354
+
355
+ **To fix:** Continue the conversation without research, or try `/pbr:explore` again with a more specific topic.
356
+ ```
357
+
358
+ ### Context loader fails
359
+ If the briefing Task() fails:
360
+ - Display: `⚠ Context loading failed. Proceeding without project context.`
361
+ - Continue with the exploration the conversation can still be valuable without project context.
362
+
363
+ ---
364
+
365
+ ## Anti-Patterns
366
+
367
+ Reference: `skills/shared/universal-anti-patterns.md` for rules that apply to ALL skills.
368
+
369
+ Additionally for this skill:
370
+
371
+ 1. **DO NOT** act like an interviewer — be a thinking partner
372
+ 2. **DO NOT** cycle through a checklist of questions
373
+ 3. **DO NOT** rush to outputs before understanding is deep
374
+ 4. **DO NOT** auto-research without asking (unless config mode is autonomous)
375
+ 5. **DO NOT** present more than 4 output suggestions — focus on what matters
376
+ 6. **DO NOT** create artifacts the user didn't approve
377
+ 7. **DO NOT** re-litigate decisions that are already locked in CONTEXT.md
378
+ 8. **DO NOT** force the user to produce outputs — sometimes exploring is enough