@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,181 +1,181 @@
1
- # Plan Authoring Guide
2
-
3
- Quality guidelines for writing executable plans. Used by planner and plan-checker.
4
-
5
- ---
6
-
7
- ## Action Writing Guidelines
8
-
9
- The `<action>` element is the most important part of the plan. It must be specific enough that the executor agent can follow it mechanically without making design decisions.
10
-
11
- ### Good Action
12
- ```xml
13
- <action>
14
- 1. Create file `src/auth/discord.ts`
15
- 2. Import `OAuth2Client` from `discord-oauth2` package
16
- 3. Export async function `authenticateWithDiscord(code: string): Promise<User>`
17
- - Create OAuth2Client with env vars: DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET
18
- - Exchange authorization code for access token
19
- - Fetch user profile from Discord API: GET /api/users/@me
20
- - Return User object with fields: id, username, avatar, email
21
- 4. Export function `getDiscordAuthUrl(): string`
22
- - Build OAuth2 authorization URL with scopes: identify, email
23
- - Include redirect URI from env: DISCORD_REDIRECT_URI
24
- - Return the URL string
25
- 5. Add to `.env.example`:
26
- DISCORD_CLIENT_ID=
27
- DISCORD_CLIENT_SECRET=
28
- DISCORD_REDIRECT_URI=http://localhost:3000/auth/callback
29
- </action>
30
- ```
31
-
32
- ### Bad Action
33
- ```xml
34
- <action>
35
- Set up Discord OAuth authentication.
36
- </action>
37
- ```
38
-
39
- ### Action Rules
40
-
41
- 1. **Number the steps** -- executor follows them in order
42
- 2. **Name specific files** -- never say "create necessary files"
43
- 3. **Name specific functions/exports** -- never say "implement the auth logic"
44
- 4. **Include type signatures** -- when the project uses TypeScript
45
- 5. **Reference existing code** -- when modifying files, say what to modify
46
- 6. **Include code snippets** -- for complex patterns or configurations
47
- 7. **Specify environment variables** -- with example values
48
- 8. **Note error handling** -- only when it's a critical part of the task
49
-
50
- ---
51
-
52
- ## Verify Command Guidelines
53
-
54
- The `<verify>` element must contain commands that the executor can run to check the task is complete.
55
-
56
- ### Good Verify
57
- ```xml
58
- <verify>
59
- npx tsc --noEmit
60
- npm run test -- --grep "discord auth"
61
- ls -la src/auth/discord.ts
62
- </verify>
63
- ```
64
-
65
- ### Bad Verify
66
- ```xml
67
- <verify>
68
- Check that authentication works.
69
- </verify>
70
- ```
71
-
72
- ### Verify Rules
73
-
74
- 1. **Must be executable** -- actual shell commands, not descriptions
75
- 2. **Must be deterministic** -- same result every time if code is correct
76
- 3. **Prefer automated checks** -- type checking, tests, linting
77
- 4. **Include existence checks** -- `ls` for created files
78
- 5. **Include build checks** -- `npx tsc --noEmit` for TypeScript
79
- 6. **Avoid interactive commands** -- no commands requiring user input
80
-
81
- ---
82
-
83
- ## Done Condition Guidelines
84
-
85
- The `<done>` element describes the observable outcome, not the implementation activity.
86
-
87
- ### Good Done
88
- - "User can authenticate via Discord OAuth and is redirected to dashboard"
89
- - "Auth middleware rejects invalid tokens and passes valid tokens"
90
- - "All 12 unit tests pass for the auth module"
91
-
92
- ### Bad Done
93
- - "Code was written"
94
- - "File was created"
95
- - "Feature is implemented"
96
-
97
- ### Done Rules
98
-
99
- 1. **Maps to a must-have** -- every done condition traces back to a frontmatter must-have
100
- 2. **Observable** -- describes a state of the system, not an activity
101
- 3. **Falsifiable** -- you can check whether it's true or false
102
- 4. **User-oriented** -- prefer "user can..." over "code does..."
103
-
104
- ---
105
-
106
- ## Scope Limits
107
-
108
- ### Per-Plan Limits
109
-
110
- | Constraint | Limit | Rationale |
111
- |-----------|-------|-----------|
112
- | Tasks per plan | **2-3** | Keeps plans atomic and recoverable |
113
- | Files per plan | **5-8** | Limits blast radius of failures |
114
- | Dependencies | **3 max** | Avoids deep dependency chains |
115
-
116
- ### When to Split
117
-
118
- - More than 3 tasks? Split.
119
- - More than 8 files? Split.
120
- - Tasks in different functional areas? Split.
121
- - Some tasks need human checkpoints, others don't? Split into autonomous and checkpoint plans.
122
-
123
- ### Split Signals
124
-
125
- | Signal | Action |
126
- |--------|--------|
127
- | >3 tasks needed | Split by subsystem -- one plan per subsystem |
128
- | Multiple unrelated subsystems | One plan per subsystem |
129
- | >5 files per task | Task is too big -- break it down |
130
- | Checkpoint + implementation in same plan | Separate the checkpoint into its own plan |
131
- | Discovery research + implementation | Separate plans -- research plan first |
132
-
133
- ---
134
-
135
- ## Discovery Levels
136
-
137
- When a plan requires research before execution, set the `discovery` field in plan frontmatter. Default is 1 for most plans.
138
-
139
- | Level | Name | Description | Executor Behavior |
140
- |-------|------|-------------|-------------------|
141
- | 0 | Skip | No research needed | Execute immediately |
142
- | 1 | Quick | Fast verification | Check official docs for 1-2 specific questions |
143
- | 2 | Standard | Normal research | Spawn researcher for phase research |
144
- | 3 | Deep | Extensive investigation | Full research cycle before execution |
145
-
146
- ### Level 0 -- Skip
147
- **When to use**: Simple refactors, documentation updates, file renames, configuration tweaks, or any task where the implementation approach is unambiguous from the plan's `<action>` steps alone.
148
-
149
- ### Level 1 -- Quick (default)
150
- **When to use**: Standard feature work where the technology is known but specific API signatures, config options, or version-specific behavior need a quick check.
151
-
152
- ### Level 2 -- Standard
153
- **When to use**: Work involving unfamiliar libraries, new integration patterns, or approaches the executor hasn't seen in this codebase before.
154
-
155
- ### Level 3 -- Deep
156
- **When to use**: High-risk or architecturally significant work where getting the approach wrong would require substantial rework.
157
-
158
- ---
159
-
160
- ## Dependency Graph Rules
161
-
162
- ### File Conflict Detection
163
-
164
- Two plans CONFLICT if their `files_modified` lists overlap. Conflicting plans:
165
- - MUST be in different waves (cannot run in parallel)
166
- - MUST have explicit `depends_on` relationship
167
- - Later plan's `<action>` must reference what the earlier plan produces
168
-
169
- ### Circular Dependencies
170
-
171
- **NEVER create circular dependencies.** If you detect a potential cycle, restructure the plans to break it. Common resolution: merge the circular plans into one, or extract the shared dependency into its own plan.
172
-
173
- ---
174
-
175
- ## Context Fidelity Checklist
176
-
177
- Before writing plan files, verify context compliance:
178
-
179
- 1. **Locked decision coverage**: For each locked decision in CONTEXT.md, identify the task that implements it.
180
- 2. **Deferred idea exclusion**: Scan all tasks -- no task should implement a deferred idea.
181
- 3. **Discretion area handling**: Each "Claude's Discretion" item should be addressed in at least one task.
1
+ # Plan Authoring Guide
2
+
3
+ Quality guidelines for writing executable plans. Used by planner and plan-checker.
4
+
5
+ ---
6
+
7
+ ## Action Writing Guidelines
8
+
9
+ The `<action>` element is the most important part of the plan. It must be specific enough that the executor agent can follow it mechanically without making design decisions.
10
+
11
+ ### Good Action
12
+ ```xml
13
+ <action>
14
+ 1. Create file `src/auth/discord.ts`
15
+ 2. Import `OAuth2Client` from `discord-oauth2` package
16
+ 3. Export async function `authenticateWithDiscord(code: string): Promise<User>`
17
+ - Create OAuth2Client with env vars: DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET
18
+ - Exchange authorization code for access token
19
+ - Fetch user profile from Discord API: GET /api/users/@me
20
+ - Return User object with fields: id, username, avatar, email
21
+ 4. Export function `getDiscordAuthUrl(): string`
22
+ - Build OAuth2 authorization URL with scopes: identify, email
23
+ - Include redirect URI from env: DISCORD_REDIRECT_URI
24
+ - Return the URL string
25
+ 5. Add to `.env.example`:
26
+ DISCORD_CLIENT_ID=
27
+ DISCORD_CLIENT_SECRET=
28
+ DISCORD_REDIRECT_URI=http://localhost:3000/auth/callback
29
+ </action>
30
+ ```
31
+
32
+ ### Bad Action
33
+ ```xml
34
+ <action>
35
+ Set up Discord OAuth authentication.
36
+ </action>
37
+ ```
38
+
39
+ ### Action Rules
40
+
41
+ 1. **Number the steps** -- executor follows them in order
42
+ 2. **Name specific files** -- never say "create necessary files"
43
+ 3. **Name specific functions/exports** -- never say "implement the auth logic"
44
+ 4. **Include type signatures** -- when the project uses TypeScript
45
+ 5. **Reference existing code** -- when modifying files, say what to modify
46
+ 6. **Include code snippets** -- for complex patterns or configurations
47
+ 7. **Specify environment variables** -- with example values
48
+ 8. **Note error handling** -- only when it's a critical part of the task
49
+
50
+ ---
51
+
52
+ ## Verify Command Guidelines
53
+
54
+ The `<verify>` element must contain commands that the executor can run to check the task is complete.
55
+
56
+ ### Good Verify
57
+ ```xml
58
+ <verify>
59
+ npx tsc --noEmit
60
+ npm run test -- --grep "discord auth"
61
+ ls -la src/auth/discord.ts
62
+ </verify>
63
+ ```
64
+
65
+ ### Bad Verify
66
+ ```xml
67
+ <verify>
68
+ Check that authentication works.
69
+ </verify>
70
+ ```
71
+
72
+ ### Verify Rules
73
+
74
+ 1. **Must be executable** -- actual shell commands, not descriptions
75
+ 2. **Must be deterministic** -- same result every time if code is correct
76
+ 3. **Prefer automated checks** -- type checking, tests, linting
77
+ 4. **Include existence checks** -- `ls` for created files
78
+ 5. **Include build checks** -- `npx tsc --noEmit` for TypeScript
79
+ 6. **Avoid interactive commands** -- no commands requiring user input
80
+
81
+ ---
82
+
83
+ ## Done Condition Guidelines
84
+
85
+ The `<done>` element describes the observable outcome, not the implementation activity.
86
+
87
+ ### Good Done
88
+ - "User can authenticate via Discord OAuth and is redirected to dashboard"
89
+ - "Auth middleware rejects invalid tokens and passes valid tokens"
90
+ - "All 12 unit tests pass for the auth module"
91
+
92
+ ### Bad Done
93
+ - "Code was written"
94
+ - "File was created"
95
+ - "Feature is implemented"
96
+
97
+ ### Done Rules
98
+
99
+ 1. **Maps to a must-have** -- every done condition traces back to a frontmatter must-have
100
+ 2. **Observable** -- describes a state of the system, not an activity
101
+ 3. **Falsifiable** -- you can check whether it's true or false
102
+ 4. **User-oriented** -- prefer "user can..." over "code does..."
103
+
104
+ ---
105
+
106
+ ## Scope Limits
107
+
108
+ ### Per-Plan Limits
109
+
110
+ | Constraint | Limit | Rationale |
111
+ |-----------|-------|-----------|
112
+ | Tasks per plan | **2-3** | Keeps plans atomic and recoverable |
113
+ | Files per plan | **5-8** | Limits blast radius of failures |
114
+ | Dependencies | **3 max** | Avoids deep dependency chains |
115
+
116
+ ### When to Split
117
+
118
+ - More than 3 tasks? Split.
119
+ - More than 8 files? Split.
120
+ - Tasks in different functional areas? Split.
121
+ - Some tasks need human checkpoints, others don't? Split into autonomous and checkpoint plans.
122
+
123
+ ### Split Signals
124
+
125
+ | Signal | Action |
126
+ |--------|--------|
127
+ | >3 tasks needed | Split by subsystem -- one plan per subsystem |
128
+ | Multiple unrelated subsystems | One plan per subsystem |
129
+ | >5 files per task | Task is too big -- break it down |
130
+ | Checkpoint + implementation in same plan | Separate the checkpoint into its own plan |
131
+ | Discovery research + implementation | Separate plans -- research plan first |
132
+
133
+ ---
134
+
135
+ ## Discovery Levels
136
+
137
+ When a plan requires research before execution, set the `discovery` field in plan frontmatter. Default is 1 for most plans.
138
+
139
+ | Level | Name | Description | Executor Behavior |
140
+ |-------|------|-------------|-------------------|
141
+ | 0 | Skip | No research needed | Execute immediately |
142
+ | 1 | Quick | Fast verification | Check official docs for 1-2 specific questions |
143
+ | 2 | Standard | Normal research | Spawn researcher for phase research |
144
+ | 3 | Deep | Extensive investigation | Full research cycle before execution |
145
+
146
+ ### Level 0 -- Skip
147
+ **When to use**: Simple refactors, documentation updates, file renames, configuration tweaks, or any task where the implementation approach is unambiguous from the plan's `<action>` steps alone.
148
+
149
+ ### Level 1 -- Quick (default)
150
+ **When to use**: Standard feature work where the technology is known but specific API signatures, config options, or version-specific behavior need a quick check.
151
+
152
+ ### Level 2 -- Standard
153
+ **When to use**: Work involving unfamiliar libraries, new integration patterns, or approaches the executor hasn't seen in this codebase before.
154
+
155
+ ### Level 3 -- Deep
156
+ **When to use**: High-risk or architecturally significant work where getting the approach wrong would require substantial rework.
157
+
158
+ ---
159
+
160
+ ## Dependency Graph Rules
161
+
162
+ ### File Conflict Detection
163
+
164
+ Two plans CONFLICT if their `files_modified` lists overlap. Conflicting plans:
165
+ - MUST be in different waves (cannot run in parallel)
166
+ - MUST have explicit `depends_on` relationship
167
+ - Later plan's `<action>` must reference what the earlier plan produces
168
+
169
+ ### Circular Dependencies
170
+
171
+ **NEVER create circular dependencies.** If you detect a potential cycle, restructure the plans to break it. Common resolution: merge the circular plans into one, or extract the shared dependency into its own plan.
172
+
173
+ ---
174
+
175
+ ## Context Fidelity Checklist
176
+
177
+ Before writing plan files, verify context compliance:
178
+
179
+ 1. **Locked decision coverage**: For each locked decision in CONTEXT.md, identify the task that implements it.
180
+ 2. **Deferred idea exclusion**: Scan all tasks -- no task should implement a deferred idea.
181
+ 3. **Discretion area handling**: Each "Claude's Discretion" item should be addressed in at least one task.