@sienklogic/plan-build-run 2.0.0 → 2.0.2

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 (233) 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/cursor-pbr/.cursor-plugin/plugin.json +22 -0
  53. package/plugins/cursor-pbr/agents/.gitkeep +0 -0
  54. package/plugins/cursor-pbr/assets/.gitkeep +0 -0
  55. package/plugins/cursor-pbr/hooks/hooks.json +11 -0
  56. package/plugins/cursor-pbr/references/.gitkeep +0 -0
  57. package/plugins/cursor-pbr/rules/.gitkeep +0 -0
  58. package/plugins/cursor-pbr/skills/.gitkeep +0 -0
  59. package/plugins/cursor-pbr/templates/.gitkeep +0 -0
  60. package/plugins/pbr/.claude-plugin/plugin.json +13 -13
  61. package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -61
  62. package/plugins/pbr/agents/codebase-mapper.md +279 -271
  63. package/plugins/pbr/agents/debugger.md +281 -281
  64. package/plugins/pbr/agents/executor.md +428 -407
  65. package/plugins/pbr/agents/general.md +164 -164
  66. package/plugins/pbr/agents/integration-checker.md +169 -141
  67. package/plugins/pbr/agents/plan-checker.md +296 -280
  68. package/plugins/pbr/agents/planner.md +358 -358
  69. package/plugins/pbr/agents/researcher.md +363 -363
  70. package/plugins/pbr/agents/synthesizer.md +230 -230
  71. package/plugins/pbr/agents/verifier.md +489 -454
  72. package/plugins/pbr/commands/begin.md +5 -5
  73. package/plugins/pbr/commands/build.md +5 -5
  74. package/plugins/pbr/commands/config.md +5 -5
  75. package/plugins/pbr/commands/continue.md +5 -5
  76. package/plugins/pbr/commands/debug.md +5 -5
  77. package/plugins/pbr/commands/discuss.md +5 -5
  78. package/plugins/pbr/commands/explore.md +5 -5
  79. package/plugins/pbr/commands/health.md +5 -5
  80. package/plugins/pbr/commands/help.md +5 -5
  81. package/plugins/pbr/commands/import.md +5 -5
  82. package/plugins/pbr/commands/milestone.md +5 -5
  83. package/plugins/pbr/commands/note.md +5 -5
  84. package/plugins/pbr/commands/pause.md +5 -5
  85. package/plugins/pbr/commands/plan.md +5 -5
  86. package/plugins/pbr/commands/quick.md +5 -5
  87. package/plugins/pbr/commands/resume.md +5 -5
  88. package/plugins/pbr/commands/review.md +5 -5
  89. package/plugins/pbr/commands/scan.md +5 -5
  90. package/plugins/pbr/commands/setup.md +5 -5
  91. package/plugins/pbr/commands/status.md +5 -5
  92. package/plugins/pbr/commands/todo.md +5 -5
  93. package/plugins/pbr/contexts/dev.md +27 -27
  94. package/plugins/pbr/contexts/research.md +28 -28
  95. package/plugins/pbr/contexts/review.md +36 -36
  96. package/plugins/pbr/hooks/hooks.json +183 -183
  97. package/plugins/pbr/references/agent-anti-patterns.md +24 -24
  98. package/plugins/pbr/references/agent-interactions.md +134 -134
  99. package/plugins/pbr/references/agent-teams.md +54 -54
  100. package/plugins/pbr/references/checkpoints.md +157 -157
  101. package/plugins/pbr/references/common-bug-patterns.md +13 -13
  102. package/plugins/pbr/references/config-reference.md +441 -0
  103. package/plugins/pbr/references/continuation-format.md +212 -212
  104. package/plugins/pbr/references/deviation-rules.md +112 -112
  105. package/plugins/pbr/references/git-integration.md +226 -226
  106. package/plugins/pbr/references/integration-patterns.md +117 -117
  107. package/plugins/pbr/references/model-profiles.md +99 -99
  108. package/plugins/pbr/references/model-selection.md +31 -31
  109. package/plugins/pbr/references/pbr-rules.md +193 -193
  110. package/plugins/pbr/references/plan-authoring.md +181 -181
  111. package/plugins/pbr/references/plan-format.md +287 -283
  112. package/plugins/pbr/references/planning-config.md +213 -213
  113. package/plugins/pbr/references/questioning.md +214 -214
  114. package/plugins/pbr/references/reading-verification.md +127 -127
  115. package/plugins/pbr/references/stub-patterns.md +160 -160
  116. package/plugins/pbr/references/subagent-coordination.md +119 -119
  117. package/plugins/pbr/references/ui-formatting.md +461 -399
  118. package/plugins/pbr/references/verification-patterns.md +198 -198
  119. package/plugins/pbr/references/wave-execution.md +95 -95
  120. package/plugins/pbr/scripts/auto-continue.js +80 -80
  121. package/plugins/pbr/scripts/check-dangerous-commands.js +136 -136
  122. package/plugins/pbr/scripts/check-doc-sprawl.js +102 -102
  123. package/plugins/pbr/scripts/check-phase-boundary.js +196 -196
  124. package/plugins/pbr/scripts/check-plan-format.js +270 -270
  125. package/plugins/pbr/scripts/check-roadmap-sync.js +322 -252
  126. package/plugins/pbr/scripts/check-skill-workflow.js +262 -262
  127. package/plugins/pbr/scripts/check-state-sync.js +476 -476
  128. package/plugins/pbr/scripts/check-subagent-output.js +144 -144
  129. package/plugins/pbr/scripts/config-schema.json +251 -251
  130. package/plugins/pbr/scripts/context-budget-check.js +287 -287
  131. package/plugins/pbr/scripts/event-handler.js +151 -151
  132. package/plugins/pbr/scripts/event-logger.js +92 -92
  133. package/plugins/pbr/scripts/hook-logger.js +80 -76
  134. package/plugins/pbr/scripts/hooks-schema.json +79 -79
  135. package/plugins/pbr/scripts/log-subagent.js +164 -152
  136. package/plugins/pbr/scripts/log-tool-failure.js +88 -88
  137. package/plugins/pbr/scripts/pbr-tools.js +1378 -1301
  138. package/plugins/pbr/scripts/post-write-dispatch.js +66 -66
  139. package/plugins/pbr/scripts/post-write-quality.js +207 -207
  140. package/plugins/pbr/scripts/pre-bash-dispatch.js +86 -56
  141. package/plugins/pbr/scripts/pre-write-dispatch.js +97 -62
  142. package/plugins/pbr/scripts/progress-tracker.js +281 -228
  143. package/plugins/pbr/scripts/run-hook.js +92 -0
  144. package/plugins/pbr/scripts/session-cleanup.js +254 -254
  145. package/plugins/pbr/scripts/status-line.js +288 -285
  146. package/plugins/pbr/scripts/suggest-compact.js +119 -119
  147. package/plugins/pbr/scripts/task-completed.js +45 -45
  148. package/plugins/pbr/scripts/track-context-budget.js +149 -119
  149. package/plugins/pbr/scripts/validate-commit.js +200 -200
  150. package/plugins/pbr/scripts/validate-plugin-structure.js +183 -172
  151. package/plugins/pbr/scripts/validate-task.js +106 -0
  152. package/plugins/pbr/skills/begin/SKILL.md +594 -545
  153. package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -33
  154. package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -18
  155. package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -49
  156. package/plugins/pbr/skills/begin/templates/config.json.tmpl +64 -63
  157. package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -19
  158. package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -30
  159. package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -16
  160. package/plugins/pbr/skills/build/SKILL.md +943 -962
  161. package/plugins/pbr/skills/config/SKILL.md +256 -241
  162. package/plugins/pbr/skills/continue/SKILL.md +164 -127
  163. package/plugins/pbr/skills/debug/SKILL.md +515 -489
  164. package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -16
  165. package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -27
  166. package/plugins/pbr/skills/discuss/SKILL.md +347 -338
  167. package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -61
  168. package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -9
  169. package/plugins/pbr/skills/explore/SKILL.md +378 -362
  170. package/plugins/pbr/skills/health/SKILL.md +221 -186
  171. package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -30
  172. package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -63
  173. package/plugins/pbr/skills/help/SKILL.md +155 -140
  174. package/plugins/pbr/skills/import/SKILL.md +504 -490
  175. package/plugins/pbr/skills/milestone/SKILL.md +704 -673
  176. package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -48
  177. package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -30
  178. package/plugins/pbr/skills/note/SKILL.md +231 -212
  179. package/plugins/pbr/skills/pause/SKILL.md +249 -235
  180. package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -71
  181. package/plugins/pbr/skills/plan/SKILL.md +685 -628
  182. package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -98
  183. package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -21
  184. package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -32
  185. package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -38
  186. package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -19
  187. package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -23
  188. package/plugins/pbr/skills/quick/SKILL.md +354 -335
  189. package/plugins/pbr/skills/resume/SKILL.md +402 -388
  190. package/plugins/pbr/skills/review/SKILL.md +686 -652
  191. package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -60
  192. package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -40
  193. package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -115
  194. package/plugins/pbr/skills/scan/SKILL.md +304 -269
  195. package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -201
  196. package/plugins/pbr/skills/setup/SKILL.md +253 -227
  197. package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -35
  198. package/plugins/pbr/skills/shared/config-loading.md +102 -102
  199. package/plugins/pbr/skills/shared/context-budget.md +40 -40
  200. package/plugins/pbr/skills/shared/context-loader-task.md +86 -86
  201. package/plugins/pbr/skills/shared/digest-select.md +79 -79
  202. package/plugins/pbr/skills/shared/domain-probes.md +125 -125
  203. package/plugins/pbr/skills/shared/error-reporting.md +79 -79
  204. package/plugins/pbr/skills/shared/gate-prompts.md +388 -388
  205. package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -45
  206. package/plugins/pbr/skills/shared/progress-display.md +53 -53
  207. package/plugins/pbr/skills/shared/revision-loop.md +81 -81
  208. package/plugins/pbr/skills/shared/state-loading.md +62 -62
  209. package/plugins/pbr/skills/shared/state-update.md +161 -161
  210. package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -33
  211. package/plugins/pbr/skills/status/SKILL.md +367 -353
  212. package/plugins/pbr/skills/todo/SKILL.md +198 -181
  213. package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -52
  214. package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -151
  215. package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -97
  216. package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -40
  217. package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -81
  218. package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -116
  219. package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -98
  220. package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -93
  221. package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -104
  222. package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -78
  223. package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -78
  224. package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -80
  225. package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -107
  226. package/plugins/pbr/templates/continue-here.md.tmpl +73 -73
  227. package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -37
  228. package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -124
  229. package/plugins/pbr/templates/research/STACK.md.tmpl +71 -71
  230. package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -112
  231. package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -81
  232. package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -99
  233. 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.