@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,251 +1,251 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "Plan-Build-Run Config",
4
- "description": "Configuration schema for .planning/config.json",
5
- "type": "object",
6
- "properties": {
7
- "version": { "type": "integer", "enum": [1, 2] },
8
- "context_strategy": { "type": "string", "enum": ["aggressive", "conservative", "balanced"] },
9
- "mode": { "type": "string", "enum": ["interactive", "autonomous"] },
10
- "depth": { "type": "string", "enum": ["quick", "standard", "comprehensive"], "description": "Workflow depth: quick = budget mode (fewer spawns, skip optional stages), standard = balanced mode (conditional spawns), comprehensive = thorough mode (all spawns, current default)" },
11
- "features": {
12
- "type": "object",
13
- "properties": {
14
- "structured_planning": { "type": "boolean" },
15
- "goal_verification": { "type": "boolean" },
16
- "integration_verification": { "type": "boolean" },
17
- "context_isolation": { "type": "boolean" },
18
- "atomic_commits": { "type": "boolean" },
19
- "session_persistence": { "type": "boolean" },
20
- "research_phase": { "type": "boolean" },
21
- "plan_checking": { "type": "boolean" },
22
- "tdd_mode": { "type": "boolean" },
23
- "status_line": { "type": "boolean" },
24
- "auto_continue": { "type": "boolean" },
25
- "auto_advance": { "type": "boolean" },
26
- "team_discussions": { "type": "boolean" },
27
- "inline_verify": { "type": "boolean" }
28
- },
29
- "additionalProperties": false
30
- },
31
- "models": {
32
- "type": "object",
33
- "properties": {
34
- "researcher": { "type": "string" },
35
- "planner": { "type": "string" },
36
- "executor": { "type": "string" },
37
- "verifier": { "type": "string" },
38
- "integration_checker": { "type": "string" },
39
- "debugger": { "type": "string" },
40
- "mapper": { "type": "string" },
41
- "synthesizer": { "type": "string" },
42
- "complexity_map": {
43
- "type": "object",
44
- "properties": {
45
- "simple": { "type": "string", "default": "haiku" },
46
- "medium": { "type": "string", "default": "sonnet" },
47
- "complex": { "type": "string", "default": "inherit" }
48
- },
49
- "additionalProperties": false
50
- }
51
- },
52
- "additionalProperties": false
53
- },
54
- "parallelization": {
55
- "type": "object",
56
- "properties": {
57
- "enabled": { "type": "boolean" },
58
- "plan_level": { "type": "boolean" },
59
- "task_level": { "type": "boolean" },
60
- "max_concurrent_agents": { "type": "integer", "minimum": 1, "maximum": 10 },
61
- "min_plans_for_parallel": { "type": "integer", "minimum": 1 },
62
- "use_teams": { "type": "boolean" }
63
- },
64
- "additionalProperties": false
65
- },
66
- "teams": {
67
- "type": "object",
68
- "properties": {
69
- "planning_roles": {
70
- "type": "array",
71
- "items": { "type": "string" },
72
- "default": ["architect", "security-reviewer", "test-designer"]
73
- },
74
- "review_roles": {
75
- "type": "array",
76
- "items": { "type": "string" },
77
- "default": ["functional-reviewer", "security-auditor", "performance-analyst"]
78
- },
79
- "synthesis_model": {
80
- "type": "string",
81
- "default": "sonnet",
82
- "description": "Model used for the synthesizer agent that combines team outputs"
83
- },
84
- "coordination": {
85
- "type": "string",
86
- "enum": ["file-based", "sequential"],
87
- "default": "file-based",
88
- "description": "How team members coordinate: file-based (parallel writes to separate files) or sequential"
89
- }
90
- },
91
- "additionalProperties": false
92
- },
93
- "planning": {
94
- "type": "object",
95
- "properties": {
96
- "commit_docs": { "type": "boolean" },
97
- "max_tasks_per_plan": { "type": "integer", "minimum": 1, "maximum": 10 },
98
- "search_gitignored": { "type": "boolean" }
99
- },
100
- "additionalProperties": false
101
- },
102
- "git": {
103
- "type": "object",
104
- "properties": {
105
- "branching": { "type": "string", "enum": ["none", "phase", "milestone", "disabled"] },
106
- "commit_format": { "type": "string" },
107
- "phase_branch_template": { "type": "string" },
108
- "milestone_branch_template": { "type": "string" },
109
- "mode": { "type": "string", "enum": ["enabled", "disabled"] }
110
- },
111
- "additionalProperties": false
112
- },
113
- "gates": {
114
- "type": "object",
115
- "properties": {
116
- "confirm_project": { "type": "boolean" },
117
- "confirm_roadmap": { "type": "boolean" },
118
- "confirm_plan": { "type": "boolean" },
119
- "confirm_execute": { "type": "boolean" },
120
- "confirm_transition": { "type": "boolean" },
121
- "issues_review": { "type": "boolean" }
122
- },
123
- "additionalProperties": false
124
- },
125
- "safety": {
126
- "type": "object",
127
- "properties": {
128
- "always_confirm_destructive": { "type": "boolean" },
129
- "always_confirm_external_services": { "type": "boolean" },
130
- "enforce_phase_boundaries": { "type": "boolean" }
131
- },
132
- "additionalProperties": false
133
- },
134
- "hooks": {
135
- "type": "object",
136
- "properties": {
137
- "autoFormat": { "type": "boolean" },
138
- "typeCheck": { "type": "boolean" },
139
- "detectConsoleLogs": { "type": "boolean" },
140
- "blockDocSprawl": { "type": "boolean" },
141
- "compactThreshold": { "type": "integer", "minimum": 10, "maximum": 200 }
142
- },
143
- "additionalProperties": false
144
- },
145
- "depth_profiles": {
146
- "type": "object",
147
- "description": "Depth profile overrides. Each profile maps depth value to effective feature/gate settings.",
148
- "properties": {
149
- "quick": {
150
- "type": "object",
151
- "properties": {
152
- "features.research_phase": { "type": "boolean" },
153
- "features.plan_checking": { "type": "boolean" },
154
- "features.goal_verification": { "type": "boolean" },
155
- "features.inline_verify": { "type": "boolean" },
156
- "scan.mapper_count": { "type": "integer", "minimum": 1, "maximum": 4 },
157
- "scan.mapper_areas": { "type": "array", "items": { "type": "string" } },
158
- "debug.max_hypothesis_rounds": { "type": "integer", "minimum": 1, "maximum": 20 }
159
- },
160
- "additionalProperties": false
161
- },
162
- "standard": {
163
- "type": "object",
164
- "properties": {
165
- "features.research_phase": { "type": "boolean" },
166
- "features.plan_checking": { "type": "boolean" },
167
- "features.goal_verification": { "type": "boolean" },
168
- "features.inline_verify": { "type": "boolean" },
169
- "scan.mapper_count": { "type": "integer", "minimum": 1, "maximum": 4 },
170
- "scan.mapper_areas": { "type": "array", "items": { "type": "string" } },
171
- "debug.max_hypothesis_rounds": { "type": "integer", "minimum": 1, "maximum": 20 }
172
- },
173
- "additionalProperties": false
174
- },
175
- "comprehensive": {
176
- "type": "object",
177
- "properties": {
178
- "features.research_phase": { "type": "boolean" },
179
- "features.plan_checking": { "type": "boolean" },
180
- "features.goal_verification": { "type": "boolean" },
181
- "features.inline_verify": { "type": "boolean" },
182
- "scan.mapper_count": { "type": "integer", "minimum": 1, "maximum": 4 },
183
- "scan.mapper_areas": { "type": "array", "items": { "type": "string" } },
184
- "debug.max_hypothesis_rounds": { "type": "integer", "minimum": 1, "maximum": 20 }
185
- },
186
- "additionalProperties": false
187
- }
188
- },
189
- "additionalProperties": false
190
- },
191
- "debug": {
192
- "type": "object",
193
- "properties": {
194
- "max_hypothesis_rounds": { "type": "integer", "minimum": 1, "maximum": 20 }
195
- },
196
- "additionalProperties": false
197
- },
198
- "spinner_tips": {
199
- "type": "object",
200
- "description": "Custom spinner tips shown during agent execution (Claude Code 2.1.45+)",
201
- "properties": {
202
- "tips": {
203
- "type": "array",
204
- "items": { "type": "string" },
205
- "description": "Array of custom tip strings to display in the spinner"
206
- },
207
- "exclude_defaults": {
208
- "type": "boolean",
209
- "description": "When true, only show custom tips (no default Claude Code tips)"
210
- }
211
- },
212
- "additionalProperties": false
213
- },
214
- "status_line": {
215
- "type": "object",
216
- "properties": {
217
- "sections": {
218
- "type": "array",
219
- "items": { "type": "string", "enum": ["phase", "plan", "status", "context"] }
220
- },
221
- "brand_text": { "type": "string" },
222
- "max_status_length": { "type": "integer", "minimum": 10, "maximum": 200 },
223
- "context_bar": {
224
- "type": "object",
225
- "properties": {
226
- "width": { "type": "integer", "minimum": 1, "maximum": 50 },
227
- "thresholds": {
228
- "type": "object",
229
- "properties": {
230
- "green": { "type": "integer", "minimum": 0, "maximum": 100 },
231
- "yellow": { "type": "integer", "minimum": 0, "maximum": 100 }
232
- },
233
- "additionalProperties": false
234
- },
235
- "chars": {
236
- "type": "object",
237
- "properties": {
238
- "filled": { "type": "string" },
239
- "empty": { "type": "string" }
240
- },
241
- "additionalProperties": false
242
- }
243
- },
244
- "additionalProperties": false
245
- }
246
- },
247
- "additionalProperties": false
248
- }
249
- },
250
- "additionalProperties": false
251
- }
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Plan-Build-Run Config",
4
+ "description": "Configuration schema for .planning/config.json",
5
+ "type": "object",
6
+ "properties": {
7
+ "version": { "type": "integer", "enum": [1, 2] },
8
+ "context_strategy": { "type": "string", "enum": ["aggressive", "conservative", "balanced"] },
9
+ "mode": { "type": "string", "enum": ["interactive", "autonomous"] },
10
+ "depth": { "type": "string", "enum": ["quick", "standard", "comprehensive"], "description": "Workflow depth: quick = budget mode (fewer spawns, skip optional stages), standard = balanced mode (conditional spawns), comprehensive = thorough mode (all spawns, current default)" },
11
+ "features": {
12
+ "type": "object",
13
+ "properties": {
14
+ "structured_planning": { "type": "boolean" },
15
+ "goal_verification": { "type": "boolean" },
16
+ "integration_verification": { "type": "boolean" },
17
+ "context_isolation": { "type": "boolean" },
18
+ "atomic_commits": { "type": "boolean" },
19
+ "session_persistence": { "type": "boolean" },
20
+ "research_phase": { "type": "boolean" },
21
+ "plan_checking": { "type": "boolean" },
22
+ "tdd_mode": { "type": "boolean" },
23
+ "status_line": { "type": "boolean" },
24
+ "auto_continue": { "type": "boolean" },
25
+ "auto_advance": { "type": "boolean" },
26
+ "team_discussions": { "type": "boolean" },
27
+ "inline_verify": { "type": "boolean" }
28
+ },
29
+ "additionalProperties": false
30
+ },
31
+ "models": {
32
+ "type": "object",
33
+ "properties": {
34
+ "researcher": { "type": "string" },
35
+ "planner": { "type": "string" },
36
+ "executor": { "type": "string" },
37
+ "verifier": { "type": "string" },
38
+ "integration_checker": { "type": "string" },
39
+ "debugger": { "type": "string" },
40
+ "mapper": { "type": "string" },
41
+ "synthesizer": { "type": "string" },
42
+ "complexity_map": {
43
+ "type": "object",
44
+ "properties": {
45
+ "simple": { "type": "string", "default": "haiku" },
46
+ "medium": { "type": "string", "default": "sonnet" },
47
+ "complex": { "type": "string", "default": "inherit" }
48
+ },
49
+ "additionalProperties": false
50
+ }
51
+ },
52
+ "additionalProperties": false
53
+ },
54
+ "parallelization": {
55
+ "type": "object",
56
+ "properties": {
57
+ "enabled": { "type": "boolean" },
58
+ "plan_level": { "type": "boolean" },
59
+ "task_level": { "type": "boolean" },
60
+ "max_concurrent_agents": { "type": "integer", "minimum": 1, "maximum": 10 },
61
+ "min_plans_for_parallel": { "type": "integer", "minimum": 1 },
62
+ "use_teams": { "type": "boolean" }
63
+ },
64
+ "additionalProperties": false
65
+ },
66
+ "teams": {
67
+ "type": "object",
68
+ "properties": {
69
+ "planning_roles": {
70
+ "type": "array",
71
+ "items": { "type": "string" },
72
+ "default": ["architect", "security-reviewer", "test-designer"]
73
+ },
74
+ "review_roles": {
75
+ "type": "array",
76
+ "items": { "type": "string" },
77
+ "default": ["functional-reviewer", "security-auditor", "performance-analyst"]
78
+ },
79
+ "synthesis_model": {
80
+ "type": "string",
81
+ "default": "sonnet",
82
+ "description": "Model used for the synthesizer agent that combines team outputs"
83
+ },
84
+ "coordination": {
85
+ "type": "string",
86
+ "enum": ["file-based", "sequential"],
87
+ "default": "file-based",
88
+ "description": "How team members coordinate: file-based (parallel writes to separate files) or sequential"
89
+ }
90
+ },
91
+ "additionalProperties": false
92
+ },
93
+ "planning": {
94
+ "type": "object",
95
+ "properties": {
96
+ "commit_docs": { "type": "boolean" },
97
+ "max_tasks_per_plan": { "type": "integer", "minimum": 1, "maximum": 10 },
98
+ "search_gitignored": { "type": "boolean" }
99
+ },
100
+ "additionalProperties": false
101
+ },
102
+ "git": {
103
+ "type": "object",
104
+ "properties": {
105
+ "branching": { "type": "string", "enum": ["none", "phase", "milestone", "disabled"] },
106
+ "commit_format": { "type": "string" },
107
+ "phase_branch_template": { "type": "string" },
108
+ "milestone_branch_template": { "type": "string" },
109
+ "mode": { "type": "string", "enum": ["enabled", "disabled"] }
110
+ },
111
+ "additionalProperties": false
112
+ },
113
+ "gates": {
114
+ "type": "object",
115
+ "properties": {
116
+ "confirm_project": { "type": "boolean" },
117
+ "confirm_roadmap": { "type": "boolean" },
118
+ "confirm_plan": { "type": "boolean" },
119
+ "confirm_execute": { "type": "boolean" },
120
+ "confirm_transition": { "type": "boolean" },
121
+ "issues_review": { "type": "boolean" }
122
+ },
123
+ "additionalProperties": false
124
+ },
125
+ "safety": {
126
+ "type": "object",
127
+ "properties": {
128
+ "always_confirm_destructive": { "type": "boolean" },
129
+ "always_confirm_external_services": { "type": "boolean" },
130
+ "enforce_phase_boundaries": { "type": "boolean" }
131
+ },
132
+ "additionalProperties": false
133
+ },
134
+ "hooks": {
135
+ "type": "object",
136
+ "properties": {
137
+ "autoFormat": { "type": "boolean" },
138
+ "typeCheck": { "type": "boolean" },
139
+ "detectConsoleLogs": { "type": "boolean" },
140
+ "blockDocSprawl": { "type": "boolean" },
141
+ "compactThreshold": { "type": "integer", "minimum": 10, "maximum": 200 }
142
+ },
143
+ "additionalProperties": false
144
+ },
145
+ "depth_profiles": {
146
+ "type": "object",
147
+ "description": "Depth profile overrides. Each profile maps depth value to effective feature/gate settings.",
148
+ "properties": {
149
+ "quick": {
150
+ "type": "object",
151
+ "properties": {
152
+ "features.research_phase": { "type": "boolean" },
153
+ "features.plan_checking": { "type": "boolean" },
154
+ "features.goal_verification": { "type": "boolean" },
155
+ "features.inline_verify": { "type": "boolean" },
156
+ "scan.mapper_count": { "type": "integer", "minimum": 1, "maximum": 4 },
157
+ "scan.mapper_areas": { "type": "array", "items": { "type": "string" } },
158
+ "debug.max_hypothesis_rounds": { "type": "integer", "minimum": 1, "maximum": 20 }
159
+ },
160
+ "additionalProperties": false
161
+ },
162
+ "standard": {
163
+ "type": "object",
164
+ "properties": {
165
+ "features.research_phase": { "type": "boolean" },
166
+ "features.plan_checking": { "type": "boolean" },
167
+ "features.goal_verification": { "type": "boolean" },
168
+ "features.inline_verify": { "type": "boolean" },
169
+ "scan.mapper_count": { "type": "integer", "minimum": 1, "maximum": 4 },
170
+ "scan.mapper_areas": { "type": "array", "items": { "type": "string" } },
171
+ "debug.max_hypothesis_rounds": { "type": "integer", "minimum": 1, "maximum": 20 }
172
+ },
173
+ "additionalProperties": false
174
+ },
175
+ "comprehensive": {
176
+ "type": "object",
177
+ "properties": {
178
+ "features.research_phase": { "type": "boolean" },
179
+ "features.plan_checking": { "type": "boolean" },
180
+ "features.goal_verification": { "type": "boolean" },
181
+ "features.inline_verify": { "type": "boolean" },
182
+ "scan.mapper_count": { "type": "integer", "minimum": 1, "maximum": 4 },
183
+ "scan.mapper_areas": { "type": "array", "items": { "type": "string" } },
184
+ "debug.max_hypothesis_rounds": { "type": "integer", "minimum": 1, "maximum": 20 }
185
+ },
186
+ "additionalProperties": false
187
+ }
188
+ },
189
+ "additionalProperties": false
190
+ },
191
+ "debug": {
192
+ "type": "object",
193
+ "properties": {
194
+ "max_hypothesis_rounds": { "type": "integer", "minimum": 1, "maximum": 20 }
195
+ },
196
+ "additionalProperties": false
197
+ },
198
+ "spinner_tips": {
199
+ "type": "object",
200
+ "description": "Custom spinner tips shown during agent execution (Claude Code 2.1.45+)",
201
+ "properties": {
202
+ "tips": {
203
+ "type": "array",
204
+ "items": { "type": "string" },
205
+ "description": "Array of custom tip strings to display in the spinner"
206
+ },
207
+ "exclude_defaults": {
208
+ "type": "boolean",
209
+ "description": "When true, only show custom tips (no default Claude Code tips)"
210
+ }
211
+ },
212
+ "additionalProperties": false
213
+ },
214
+ "status_line": {
215
+ "type": "object",
216
+ "properties": {
217
+ "sections": {
218
+ "type": "array",
219
+ "items": { "type": "string", "enum": ["phase", "plan", "status", "context"] }
220
+ },
221
+ "brand_text": { "type": "string" },
222
+ "max_status_length": { "type": "integer", "minimum": 10, "maximum": 200 },
223
+ "context_bar": {
224
+ "type": "object",
225
+ "properties": {
226
+ "width": { "type": "integer", "minimum": 1, "maximum": 50 },
227
+ "thresholds": {
228
+ "type": "object",
229
+ "properties": {
230
+ "green": { "type": "integer", "minimum": 0, "maximum": 100 },
231
+ "yellow": { "type": "integer", "minimum": 0, "maximum": 100 }
232
+ },
233
+ "additionalProperties": false
234
+ },
235
+ "chars": {
236
+ "type": "object",
237
+ "properties": {
238
+ "filled": { "type": "string" },
239
+ "empty": { "type": "string" }
240
+ },
241
+ "additionalProperties": false
242
+ }
243
+ },
244
+ "additionalProperties": false
245
+ }
246
+ },
247
+ "additionalProperties": false
248
+ }
249
+ },
250
+ "additionalProperties": false
251
+ }