forge-workflow 0.0.3 → 0.0.5

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 (209) hide show
  1. package/.claude/commands/dev.md +340 -314
  2. package/.claude/commands/plan.md +521 -478
  3. package/.claude/commands/premerge.md +176 -179
  4. package/.claude/commands/research.md +42 -42
  5. package/.claude/commands/review.md +442 -442
  6. package/.claude/commands/rollback.md +721 -721
  7. package/.claude/commands/ship.md +164 -134
  8. package/.claude/commands/sonarcloud.md +152 -152
  9. package/.claude/commands/status.md +48 -77
  10. package/.claude/commands/validate.md +282 -237
  11. package/.claude/commands/verify.md +221 -221
  12. package/.claude/rules/greptile-review-process.md +285 -285
  13. package/.claude/rules/workflow.md +105 -105
  14. package/.claude/scripts/greptile-resolve.sh +526 -526
  15. package/.claude/scripts/load-env.sh +32 -32
  16. package/.cline/workflows/dev.md +337 -311
  17. package/.cline/workflows/plan.md +518 -475
  18. package/.cline/workflows/premerge.md +173 -176
  19. package/.cline/workflows/research.md +39 -39
  20. package/.cline/workflows/review.md +439 -439
  21. package/.cline/workflows/rollback.md +718 -718
  22. package/.cline/workflows/ship.md +161 -131
  23. package/.cline/workflows/sonarcloud.md +146 -146
  24. package/.cline/workflows/status.md +45 -74
  25. package/.cline/workflows/validate.md +279 -234
  26. package/.cline/workflows/verify.md +218 -218
  27. package/.codex/config.toml +11 -11
  28. package/.codex/skills/dev/SKILL.md +340 -314
  29. package/.codex/skills/plan/SKILL.md +521 -478
  30. package/.codex/skills/premerge/SKILL.md +176 -179
  31. package/.codex/skills/research/SKILL.md +42 -42
  32. package/.codex/skills/review/SKILL.md +442 -442
  33. package/.codex/skills/rollback/SKILL.md +721 -721
  34. package/.codex/skills/ship/SKILL.md +164 -134
  35. package/.codex/skills/sonarcloud/SKILL.md +149 -149
  36. package/.codex/skills/status/SKILL.md +48 -77
  37. package/.codex/skills/validate/SKILL.md +282 -237
  38. package/.codex/skills/verify/SKILL.md +221 -221
  39. package/.cursor/commands/dev.md +337 -311
  40. package/.cursor/commands/plan.md +518 -475
  41. package/.cursor/commands/premerge.md +173 -176
  42. package/.cursor/commands/research.md +39 -39
  43. package/.cursor/commands/review.md +439 -439
  44. package/.cursor/commands/rollback.md +718 -718
  45. package/.cursor/commands/ship.md +161 -131
  46. package/.cursor/commands/sonarcloud.md +146 -146
  47. package/.cursor/commands/status.md +45 -74
  48. package/.cursor/commands/validate.md +279 -234
  49. package/.cursor/commands/verify.md +218 -218
  50. package/.cursor/rules/permissions-guidance.mdc +37 -37
  51. package/.forge/hooks/check-tdd.js +240 -240
  52. package/.github/PLUGIN_TEMPLATE.json +32 -32
  53. package/.github/prompts/dev.prompt.md +342 -316
  54. package/.github/prompts/plan.prompt.md +523 -480
  55. package/.github/prompts/premerge.prompt.md +178 -181
  56. package/.github/prompts/research.prompt.md +44 -44
  57. package/.github/prompts/review.prompt.md +444 -444
  58. package/.github/prompts/rollback.prompt.md +723 -723
  59. package/.github/prompts/ship.prompt.md +166 -136
  60. package/.github/prompts/sonarcloud.prompt.md +151 -151
  61. package/.github/prompts/status.prompt.md +50 -79
  62. package/.github/prompts/validate.prompt.md +284 -239
  63. package/.github/prompts/verify.prompt.md +223 -223
  64. package/.github/workflows/beads-to-github.yml +56 -0
  65. package/.github/workflows/github-to-beads.yml +97 -0
  66. package/.kilocode/workflows/dev.md +341 -315
  67. package/.kilocode/workflows/plan.md +522 -479
  68. package/.kilocode/workflows/premerge.md +177 -180
  69. package/.kilocode/workflows/research.md +43 -43
  70. package/.kilocode/workflows/review.md +443 -443
  71. package/.kilocode/workflows/rollback.md +722 -722
  72. package/.kilocode/workflows/ship.md +165 -135
  73. package/.kilocode/workflows/sonarcloud.md +150 -150
  74. package/.kilocode/workflows/status.md +49 -78
  75. package/.kilocode/workflows/validate.md +283 -238
  76. package/.kilocode/workflows/verify.md +222 -222
  77. package/.mcp.json.example +12 -12
  78. package/.opencode/commands/dev.md +340 -314
  79. package/.opencode/commands/plan.md +521 -478
  80. package/.opencode/commands/premerge.md +176 -179
  81. package/.opencode/commands/research.md +42 -42
  82. package/.opencode/commands/review.md +442 -442
  83. package/.opencode/commands/rollback.md +721 -721
  84. package/.opencode/commands/ship.md +164 -134
  85. package/.opencode/commands/sonarcloud.md +149 -149
  86. package/.opencode/commands/status.md +48 -77
  87. package/.opencode/commands/validate.md +282 -237
  88. package/.opencode/commands/verify.md +221 -221
  89. package/.roo/commands/dev.md +341 -315
  90. package/.roo/commands/plan.md +522 -479
  91. package/.roo/commands/premerge.md +177 -180
  92. package/.roo/commands/research.md +43 -43
  93. package/.roo/commands/review.md +443 -443
  94. package/.roo/commands/rollback.md +722 -722
  95. package/.roo/commands/ship.md +165 -135
  96. package/.roo/commands/sonarcloud.md +150 -150
  97. package/.roo/commands/status.md +49 -78
  98. package/.roo/commands/validate.md +283 -238
  99. package/.roo/commands/verify.md +222 -222
  100. package/AGENTS.md +175 -169
  101. package/CLAUDE.md +100 -99
  102. package/LICENSE +21 -21
  103. package/README.md +429 -414
  104. package/bin/forge-cmd.js +313 -313
  105. package/bin/{forge-validate.js → forge-preflight.js} +309 -303
  106. package/bin/forge.js +4596 -4232
  107. package/docs/AGENT_INSTALL_PROMPT.md +342 -342
  108. package/docs/BEADS_GITHUB_SYNC.md +251 -0
  109. package/docs/ENHANCED_ONBOARDING.md +602 -602
  110. package/docs/EXAMPLES.md +482 -482
  111. package/docs/GREPTILE_SETUP.md +400 -400
  112. package/docs/MANUAL_REVIEW_GUIDE.md +106 -106
  113. package/docs/ROADMAP.md +359 -359
  114. package/docs/SETUP.md +663 -632
  115. package/docs/TOOLCHAIN.md +630 -630
  116. package/docs/VALIDATION.md +363 -363
  117. package/install.sh +40 -1058
  118. package/lefthook.yml +39 -39
  119. package/lib/agents/README.md +198 -198
  120. package/lib/agents/claude.plugin.json +28 -28
  121. package/lib/agents/cline.plugin.json +22 -22
  122. package/lib/agents/codex.plugin.json +19 -19
  123. package/lib/agents/copilot.plugin.json +24 -24
  124. package/lib/agents/cursor.plugin.json +25 -25
  125. package/lib/agents/kilocode.plugin.json +22 -22
  126. package/lib/agents/opencode.plugin.json +20 -20
  127. package/lib/agents/roo.plugin.json +23 -23
  128. package/lib/agents-config.js +2112 -2112
  129. package/lib/beads-health-check.js +143 -0
  130. package/lib/beads-setup.js +341 -0
  131. package/lib/beads-sync-scaffold.js +260 -0
  132. package/lib/commands/dev.js +513 -513
  133. package/lib/commands/plan.js +692 -692
  134. package/lib/commands/recommend.js +119 -119
  135. package/lib/commands/ship.js +377 -377
  136. package/lib/commands/status.js +378 -378
  137. package/lib/commands/validate.js +602 -602
  138. package/lib/context-merge.js +359 -359
  139. package/lib/dep-guard/analyzer.js +294 -294
  140. package/lib/dep-guard/behavior-detector.js +98 -98
  141. package/lib/dep-guard/contract-detector.js +162 -162
  142. package/lib/dep-guard/import-detector.js +498 -498
  143. package/lib/dep-guard/path-utils.js +13 -13
  144. package/lib/dep-guard/rubric.js +120 -120
  145. package/lib/dep-guard/task-parser.js +318 -318
  146. package/lib/detect-agent.js +191 -0
  147. package/lib/detect-worktree.js +47 -0
  148. package/lib/file-hash.js +26 -0
  149. package/lib/husky-migration.js +450 -0
  150. package/lib/lefthook-check.js +65 -0
  151. package/lib/pat-setup.js +207 -0
  152. package/lib/plugin-catalog.js +350 -350
  153. package/lib/plugin-manager.js +166 -166
  154. package/lib/plugin-recommender.js +141 -141
  155. package/lib/project-discovery.js +491 -491
  156. package/lib/setup-action-log.js +139 -0
  157. package/lib/setup-summary-renderer.js +106 -0
  158. package/lib/setup-utils.js +96 -0
  159. package/lib/setup.js +192 -118
  160. package/lib/smart-merge.js +64 -0
  161. package/lib/symlink-utils.js +81 -0
  162. package/lib/workflow-profiles.js +197 -197
  163. package/package.json +131 -129
  164. package/scripts/beads-context.sh +291 -0
  165. package/scripts/beads-context.test.js +563 -0
  166. package/scripts/behavioral-judge.sh +378 -0
  167. package/scripts/benchmark.js +85 -0
  168. package/scripts/branch-protection.js +183 -0
  169. package/scripts/check-agents.js +172 -0
  170. package/scripts/commitlint.js +42 -0
  171. package/scripts/conflict-detect.sh +323 -0
  172. package/scripts/dep-guard-analyze.js +71 -0
  173. package/scripts/dep-guard.sh +811 -0
  174. package/scripts/eval_win.py +249 -0
  175. package/scripts/file-index.sh +399 -0
  176. package/scripts/github-beads-sync/comment.mjs +64 -0
  177. package/scripts/github-beads-sync/config.mjs +148 -0
  178. package/scripts/github-beads-sync/github-api.mjs +131 -0
  179. package/scripts/github-beads-sync/index.mjs +332 -0
  180. package/scripts/github-beads-sync/label-mapper.mjs +54 -0
  181. package/scripts/github-beads-sync/mapping.mjs +78 -0
  182. package/scripts/github-beads-sync/reverse-sync-cli.mjs +31 -0
  183. package/scripts/github-beads-sync/reverse-sync.mjs +138 -0
  184. package/scripts/github-beads-sync/run-bd.mjs +159 -0
  185. package/scripts/github-beads-sync/sanitize.mjs +121 -0
  186. package/scripts/github-beads-sync.config.json +26 -0
  187. package/scripts/improve-command.js +375 -0
  188. package/scripts/lib/eval-runner.js +229 -0
  189. package/scripts/lib/eval-schema.js +135 -0
  190. package/scripts/lib/eval-storage.js +78 -0
  191. package/scripts/lib/grading.js +203 -0
  192. package/scripts/lib/transcript-parser.js +63 -0
  193. package/scripts/lint.js +47 -0
  194. package/scripts/migrate-to-bun-test.js +412 -0
  195. package/scripts/run-command-eval.js +236 -0
  196. package/scripts/smart-status.sh +782 -0
  197. package/scripts/sync-commands.js +571 -0
  198. package/scripts/sync-utils.sh +460 -0
  199. package/scripts/test-dashboard.js +123 -0
  200. package/scripts/test.js +44 -0
  201. package/scripts/validate.sh +94 -0
  202. package/skills/parallel-deep-research/SKILL.md +108 -108
  203. package/skills/parallel-deep-research/evals/README.md +27 -27
  204. package/skills/parallel-deep-research/evals/evals.json +62 -62
  205. package/skills/sonarcloud-analysis/SKILL.md +171 -171
  206. package/skills/sonarcloud-analysis/evals/README.md +27 -27
  207. package/skills/sonarcloud-analysis/evals/evals.json +50 -50
  208. package/skills/sonarcloud-analysis/references/api-reference.md +466 -466
  209. package/docs/WORKFLOW.md +0 -400
@@ -1,311 +1,337 @@
1
-
2
- Implement each task from the /plan task list using a subagent-driven loop: implementer → spec compliance reviewer → code quality reviewer per task.
3
-
4
- # Dev
5
-
6
- This command reads the task list created by `/plan` and implements each task using a three-stage subagent loop. TDD is enforced inside each implementer subagent.
7
-
8
- ## Usage
9
-
10
- ```bash
11
- /dev
12
- ```
13
-
14
- ---
15
-
16
- ## Setup
17
-
18
- ### Step 1: Load context
19
-
20
- ```bash
21
- # Find task list and design doc
22
- ls docs/plans/
23
- ```
24
-
25
- Read:
26
- - **Task list**: `docs/plans/YYYY-MM-DD-<slug>-tasks.md` — extract ALL task text upfront
27
- - **Design doc**: `docs/plans/YYYY-MM-DD-<slug>-design.md` — including ambiguity policy section
28
-
29
- ### Step 2: Create decisions log
30
-
31
- Create an empty decisions log at the start of every /dev session:
32
-
33
- ```bash
34
- # docs/plans/YYYY-MM-DD-<slug>-decisions.md
35
- ```
36
-
37
- Format for each entry:
38
- ```
39
- ## Decision N
40
- **Date**: YYYY-MM-DD
41
- **Task**: Task N — <title>
42
- **Gap**: [what the spec didn't cover]
43
- **Score**: [filled checklist total]
44
- **Route**: PROCEED / SPEC-REVIEWER / BLOCKED
45
- **Choice made**: [if PROCEED: what was decided and why]
46
- **Status**: RESOLVED / PENDING-DEVELOPER-INPUT
47
- ```
48
-
49
- ### Step 3: Pre-flight checks
50
-
51
- ```
52
- <HARD-GATE: /dev start>
53
- Do NOT write any code until ALL confirmed:
54
- 1. git branch --show-current output is NOT main or master
55
- 2. git worktree list shows the worktree path for this feature
56
- 3. Task list file confirmed to exist (use Read tool — do not assume)
57
- 4. Decisions log file created
58
- </HARD-GATE>
59
- ```
60
-
61
- ---
62
-
63
- ## Per-Task Loop
64
-
65
- Repeat for each task in the task list, in order:
66
-
67
- ### Step A: Dispatch implementer subagent
68
-
69
- Provide the subagent with:
70
- - **Full task text** (copy the complete task content — do NOT send just the file path)
71
- - **Relevant design doc sections** for this task
72
- - **Recent git log** showing what has already been implemented
73
-
74
- The implementer subagent:
75
- 1. Asks clarifying questions before writing any code
76
- 2. Implements using RED-GREEN-REFACTOR
77
- 3. Self-reviews for correctness
78
- 4. Commits with a descriptive message
79
-
80
- ```
81
- <HARD-GATE: TDD enforcement (inside implementer subagent)>
82
- Do NOT write any production code until:
83
- 1. A FAILING test exists for that code
84
- 2. The test has been run and output shows it FAILING
85
- 3. The failure reason matches the expected missing behavior
86
-
87
- If code was written before its test: delete it. Start with the test.
88
- "The test would obviously fail" is not evidence. Run it and show the output.
89
- </HARD-GATE>
90
- ```
91
-
92
- ---
93
-
94
- ### Step B: Decision gate (when implementer hits a spec gap)
95
-
96
- If the implementer encounters something not specified in the design doc, STOP and fill this checklist BEFORE deciding how to proceed:
97
-
98
- ```
99
- Gap: [describe exactly what the spec doesn't cover]
100
-
101
- Score each dimension (0=No / 1=Possibly / 2=Yes):
102
- [ ] 1. Files affected beyond the current task?
103
- [ ] 2. Changes a function signature or public export?
104
- [ ] 3. Changes a shared module used by other tasks?
105
- [ ] 4. Changes or touches persistent data or schema?
106
- [ ] 5. Changes user-visible behavior not discussed in design doc?
107
- [ ] 6. Affects auth, permissions, or data exposure?
108
- [ ] 7. Hard to reverse without cascading changes to other files?
109
- TOTAL: ___ / 14
110
-
111
- Mandatory overrides any of these = automatically BLOCKED:
112
- [ ] Security dimension (6) scored 2
113
- [ ] Schema migration or data model change
114
- [ ] Removes or changes an existing public API endpoint
115
- [ ] Affects a task that is already implemented and committed
116
- ```
117
-
118
- **Score routing**:
119
- - **0-3**: PROCEED — make the decision, document in decisions log with full reasoning
120
- - **4-7**: SPEC-REVIEWER route this decision to spec reviewer. Continue other independent tasks while waiting
121
- - **8+, or any mandatory override triggered**: BLOCKED — document in decisions log with Status=PENDING-DEVELOPER-INPUT. Complete all other independent tasks first. Surface to developer at /dev exit
122
-
123
- Log the decision entry before continuing.
124
-
125
- ---
126
-
127
- ### Step C: Spec compliance review
128
-
129
- After the implementer finishes the task, dispatch a **spec compliance reviewer** subagent.
130
-
131
- Provide:
132
- - Full task text (what was supposed to be implemented)
133
- - Relevant design doc sections
134
- - `git diff` for this task's commits
135
-
136
- Reviewer checks:
137
- - All requirements from the task text are implemented
138
- - Nothing extra was added beyond task scope
139
- - Edge cases documented in design doc are handled
140
- - TDD evidence: test exists, test was run failing, then passing
141
-
142
- If spec issues found: implementer fixes → re-review → repeat until ✅
143
-
144
- ```
145
- <HARD-GATE: spec before quality>
146
- Do NOT dispatch code quality reviewer until spec compliance reviewer returns for this task.
147
- Running quality review before spec compliance is the wrong order.
148
- </HARD-GATE>
149
- ```
150
-
151
- ---
152
-
153
- ### Step D: Code quality review
154
-
155
- After spec ✅, dispatch a **code quality reviewer** subagent.
156
-
157
- Provide:
158
- - git SHAs for this task's commits
159
- - The changed code (`git diff`)
160
-
161
- Reviewer checks:
162
- - Naming: clear, descriptive, consistent with codebase conventions
163
- - Structure: functions not too long, proper separation of concerns
164
- - Duplication: no copy-paste that could be extracted
165
- - Test coverage: tests cover happy path and at least one error path
166
- - No magic numbers, no commented-out code, no TODO without a Beads issue
167
-
168
- If quality issues found: implementer fixes → re-review → repeat until ✅
169
-
170
- ---
171
-
172
- ### Step E: Task completion
173
-
174
- ```
175
- <HARD-GATE: task completion>
176
- NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
177
-
178
- Do NOT mark task complete or move to next task until ALL confirmed in this session:
179
- 1. Spec compliance reviewer returned
180
- 2. Code quality reviewer returned ✅
181
- 3. Identify what command proves this task is done (e.g. `bun test`, a CLI invocation, a script run).
182
- 4. Run it fresh — show the actual output. "Last run was fine" is not evidence.
183
- 5. Tests run fresh — actual output shows passing.
184
- 6. Implementer has committed (git log shows the commit).
185
- 7. `bash scripts/beads-context.sh update-progress <id> <task-num> <total> "<title>" <commit-sha> <test-count> <gate-count>` ran successfully (exit code 0). If it fails: STOP. Show error. Do not proceed to next task.
186
-
187
- Forbidden phrases (these are not evidence):
188
- - "should pass"
189
- - "looks good"
190
- - "seems to work"
191
- </HARD-GATE>
192
- ```
193
-
194
- Mark task complete. Move to next task.
195
-
196
- ---
197
-
198
- ## /dev Completion
199
-
200
- After all tasks are complete (or BLOCKED):
201
-
202
- ### Final code review
203
-
204
- Dispatch a final code reviewer for the full implementation:
205
- - Overall coherence: does the feature hang together as a whole?
206
- - Cross-task consistency: naming, patterns, style consistent across all tasks?
207
- - Integration: do all the pieces connect correctly?
208
-
209
- ### Surface BLOCKED decisions
210
-
211
- If any decisions have Status=PENDING-DEVELOPER-INPUT:
212
-
213
- ```
214
- ⏸️ /dev blocked — developer input needed
215
-
216
- The following decisions were deferred during implementation:
217
-
218
- Decision 1: [gap description]
219
- Task: Task N — <title>
220
- Score: 11/14 (mandatory override: schema change)
221
- Options considered: [A] vs [B]
222
- Recommendation: [A] because [reason]
223
- Blocked tasks: Task 6, Task 7 (depend on this decision)
224
-
225
- Decision 2: ...
226
-
227
- Please review and respond. After decisions are resolved, the implementer
228
- will complete the blocked tasks and re-run spec + quality review.
229
- ```
230
-
231
- Wait for developer input. After decisions resolved: implement blocked tasks spec review quality review → complete.
232
-
233
- ### /dev exit gate
234
-
235
- ```
236
- <HARD-GATE: /dev exit>
237
- Do NOT declare /dev complete until:
238
- 1. All tasks are marked complete OR have BLOCKED status with PENDING-DEVELOPER-INPUT
239
- 2. BLOCKED decisions have been surfaced to developer and are awaiting input
240
- 3. Final code reviewer has approved (or issues fixed and re-reviewed)
241
- 4. All decisions in decisions log have Status of RESOLVED or PENDING-DEVELOPER-INPUT
242
- 5. No unresolved spec or quality issues remain
243
- </HARD-GATE>
244
- ```
245
-
246
- ### Beads update
247
-
248
- ```bash
249
- bash scripts/beads-context.sh stage-transition <id> dev validate
250
- ```
251
-
252
- ---
253
-
254
- ## Decision Gate Calibration
255
-
256
- The frequency of decision gates is a **plan quality metric**:
257
- - **0 gates fired**: Excellent Phase 1 Q&A covered all cases
258
- - **1-2 gates fired**: Good — minor gaps, normal
259
- - **3-5 gates fired**: Plan was incomplete — note for Phase 1 improvement next feature
260
- - **5+ gates fired**: Phase 1 Q&A was insufficient — the ambiguity policy field needed to be more specific
261
-
262
- Document the gate count in the final commit message.
263
-
264
- ---
265
-
266
- ## Example Output (all tasks complete)
267
-
268
- ```
269
- ✓ Task 1: Types and interfaces — COMPLETE
270
- Spec: ✅ Quality: ✅ Tests: 4/4 passing Commit: abc1234
271
- Decision gates: 0
272
-
273
- ✓ Task 2: Validation logic — COMPLETE
274
- Spec: ✅ Quality: ✅ Tests: 8/8 passing Commit: def5678
275
- Decision gates: 1 (PROCEED, score 2 — documented in decisions log)
276
-
277
- ✓ Task 3: API endpoint — COMPLETE
278
- Spec: ✅ Quality: ✅ Tests: 6/6 passing Commit: ghi9012
279
- Decision gates: 0
280
-
281
- ✓ Final code review: ✅ (coherent, consistent, correctly integrated)
282
-
283
- Decisions log: docs/plans/2026-02-26-stripe-billing-decisions.md
284
- - Decision 1: RESOLVED (score 2, proceeded with conservative choice)
285
- - Decision gates fired: 1 (plan quality: Good)
286
-
287
- ✓ Beads updated: forge-xyz → implementation complete
288
-
289
- Ready for /validate
290
- ```
291
-
292
- ## Integration with Workflow
293
-
294
- ```
295
- Utility: /status → Understand current context before starting
296
- Stage 1: /plan → Design intent → research → branch + worktree + task list
297
- Stage 2: /dev → Implement each task with subagent-driven TDD (you are here)
298
- Stage 3: /validate → Type check, lint, tests, security — all fresh output
299
- Stage 4: /ship → Push + create PR
300
- Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
301
- Stage 6: /premerge → Update docs, hand off PR to user
302
- Stage 7: /verify → Post-merge CI check on main
303
- ```
304
-
305
- ## Tips
306
-
307
- - **Send full task text to subagents**: Never send the file path — copy the complete task text directly into the subagent prompt
308
- - **TDD lives inside the implementer**: The implementer subagent is responsible for RED-GREEN-REFACTOR, not the orchestrating /dev session
309
- - **Spec before quality — always**: A task that passes quality review but fails spec compliance has still failed
310
- - **Decision gates are rare with a good plan**: If gates fire frequently, the Phase 1 Q&A needs more depth next time
311
- - **BLOCKED failed**: Surfacing a blocked decision with documentation and a recommendation is the correct behavior
1
+
2
+ Implement each task from the /plan task list using a subagent-driven loop: implementer → spec compliance reviewer → code quality reviewer per task.
3
+
4
+ # Dev
5
+
6
+ This command reads the task list created by `/plan` and implements each task using a three-stage subagent loop. TDD is enforced inside each implementer subagent.
7
+
8
+ ## Usage
9
+
10
+ ```bash
11
+ /dev
12
+ ```
13
+
14
+ ---
15
+
16
+ ## Setup
17
+
18
+ ### Step 1: Load context
19
+
20
+ ```bash
21
+ # Find task list and design doc
22
+ ls docs/plans/
23
+ ```
24
+
25
+ Read:
26
+ - **Task list**: `docs/plans/YYYY-MM-DD-<slug>-tasks.md` — extract ALL task text upfront
27
+ - **Design doc**: `docs/plans/YYYY-MM-DD-<slug>-design.md` — including ambiguity policy section
28
+
29
+ ### Step 2: Create decisions log
30
+
31
+ Create an empty decisions log at the start of every /dev session:
32
+
33
+ ```bash
34
+ # docs/plans/YYYY-MM-DD-<slug>-decisions.md
35
+ ```
36
+
37
+ Format for each entry:
38
+ ```
39
+ ## Decision N
40
+ **Date**: YYYY-MM-DD
41
+ **Task**: Task N — <title>
42
+ **Gap**: [what the spec didn't cover]
43
+ **Score**: [filled checklist total]
44
+ **Route**: PROCEED / SPEC-REVIEWER / BLOCKED
45
+ **Choice made**: [if PROCEED: what was decided and why]
46
+ **Status**: RESOLVED / PENDING-DEVELOPER-INPUT
47
+ ```
48
+
49
+ ### Step 3: Pre-flight checks
50
+
51
+ ```
52
+ <HARD-GATE: /dev start>
53
+ Do NOT write any code until ALL confirmed:
54
+ 1. git branch --show-current output is NOT main or master
55
+ 2. git worktree list shows the worktree path for this feature
56
+ 3. Task list file confirmed to exist (use Read tool — do not assume)
57
+ 4. Decisions log file created
58
+ </HARD-GATE>
59
+ ```
60
+
61
+ ---
62
+
63
+
64
+ ### Multi-developer conflict check (soft block)
65
+
66
+ Before starting the per-task loop, check for cross-developer conflicts:
67
+
68
+ ```bash
69
+ # Auto-sync to get latest team state
70
+ bash scripts/sync-utils.sh auto-sync
71
+
72
+ # Check for conflicts with the current beads issue
73
+ bash scripts/conflict-detect.sh --issue <beads-id>
74
+ ```
75
+
76
+ If exit code 2 (validation error): show error message, abort — do not show conflict prompt.
77
+
78
+ If exit code 1 (conflicts found):
79
+ - Display the conflict output to the developer
80
+ - Ask: "Other developers are working in overlapping areas. Proceed anyway? (y/n)"
81
+ - If `n`: exit cleanly, no side effects
82
+ - If `y`: log override via `bd comments add <id> "Conflict override: proceeding despite overlap with <conflicting-issues>"`, then continue to Per-Task Loop
83
+ - Audit: record conflict override per OWASP A09
84
+
85
+ If exit code 0: proceed silently to Per-Task Loop.
86
+
87
+ ---
88
+
89
+ ## Per-Task Loop
90
+
91
+ Repeat for each task in the task list, in order:
92
+
93
+ ### Step A: Dispatch implementer subagent
94
+
95
+ Provide the subagent with:
96
+ - **Full task text** (copy the complete task content do NOT send just the file path)
97
+ - **Relevant design doc sections** for this task
98
+ - **Recent git log** showing what has already been implemented
99
+
100
+ The implementer subagent:
101
+ 1. Asks clarifying questions before writing any code
102
+ 2. Implements using RED-GREEN-REFACTOR
103
+ 3. Self-reviews for correctness
104
+ 4. Commits with a descriptive message
105
+
106
+ ```
107
+ <HARD-GATE: TDD enforcement (inside implementer subagent)>
108
+ Do NOT write any production code until:
109
+ 1. A FAILING test exists for that code
110
+ 2. The test has been run and output shows it FAILING
111
+ 3. The failure reason matches the expected missing behavior
112
+
113
+ If code was written before its test: delete it. Start with the test.
114
+ "The test would obviously fail" is not evidence. Run it and show the output.
115
+ </HARD-GATE>
116
+ ```
117
+
118
+ ---
119
+
120
+ ### Step B: Decision gate (when implementer hits a spec gap)
121
+
122
+ If the implementer encounters something not specified in the design doc, STOP and fill this checklist BEFORE deciding how to proceed:
123
+
124
+ ```
125
+ Gap: [describe exactly what the spec doesn't cover]
126
+
127
+ Score each dimension (0=No / 1=Possibly / 2=Yes):
128
+ [ ] 1. Files affected beyond the current task?
129
+ [ ] 2. Changes a function signature or public export?
130
+ [ ] 3. Changes a shared module used by other tasks?
131
+ [ ] 4. Changes or touches persistent data or schema?
132
+ [ ] 5. Changes user-visible behavior not discussed in design doc?
133
+ [ ] 6. Affects auth, permissions, or data exposure?
134
+ [ ] 7. Hard to reverse without cascading changes to other files?
135
+ TOTAL: ___ / 14
136
+
137
+ Mandatory overrides any of these = automatically BLOCKED:
138
+ [ ] Security dimension (6) scored 2
139
+ [ ] Schema migration or data model change
140
+ [ ] Removes or changes an existing public API endpoint
141
+ [ ] Affects a task that is already implemented and committed
142
+ ```
143
+
144
+ **Score routing**:
145
+ - **0-3**: PROCEED — make the decision, document in decisions log with full reasoning
146
+ - **4-7**: SPEC-REVIEWER route this decision to spec reviewer. Continue other independent tasks while waiting
147
+ - **8+, or any mandatory override triggered**: BLOCKED document in decisions log with Status=PENDING-DEVELOPER-INPUT. Complete all other independent tasks first. Surface to developer at /dev exit
148
+
149
+ Log the decision entry before continuing.
150
+
151
+ ---
152
+
153
+ ### Step C: Spec compliance review
154
+
155
+ After the implementer finishes the task, dispatch a **spec compliance reviewer** subagent.
156
+
157
+ Provide:
158
+ - Full task text (what was supposed to be implemented)
159
+ - Relevant design doc sections
160
+ - `git diff` for this task's commits
161
+
162
+ Reviewer checks:
163
+ - All requirements from the task text are implemented
164
+ - Nothing extra was added beyond task scope
165
+ - Edge cases documented in design doc are handled
166
+ - TDD evidence: test exists, test was run failing, then passing
167
+
168
+ If spec issues found: implementer fixes → re-review → repeat until ✅
169
+
170
+ ```
171
+ <HARD-GATE: spec before quality>
172
+ Do NOT dispatch code quality reviewer until spec compliance reviewer returns ✅ for this task.
173
+ Running quality review before spec compliance is the wrong order.
174
+ </HARD-GATE>
175
+ ```
176
+
177
+ ---
178
+
179
+ ### Step D: Code quality review
180
+
181
+ After spec ✅, dispatch a **code quality reviewer** subagent.
182
+
183
+ Provide:
184
+ - git SHAs for this task's commits
185
+ - The changed code (`git diff`)
186
+
187
+ Reviewer checks:
188
+ - Naming: clear, descriptive, consistent with codebase conventions
189
+ - Structure: functions not too long, proper separation of concerns
190
+ - Duplication: no copy-paste that could be extracted
191
+ - Test coverage: tests cover happy path and at least one error path
192
+ - No magic numbers, no commented-out code, no TODO without a Beads issue
193
+
194
+ If quality issues found: implementer fixes → re-review → repeat until ✅
195
+
196
+ ---
197
+
198
+ ### Step E: Task completion
199
+
200
+ ```
201
+ <HARD-GATE: task completion>
202
+ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
203
+
204
+ Do NOT mark task complete or move to next task until ALL confirmed in this session:
205
+ 1. Spec compliance reviewer returned
206
+ 2. Code quality reviewer returned
207
+ 3. Identify what command proves this task is done (e.g. `bun test`, a CLI invocation, a script run).
208
+ 4. Run it fresh — show the actual output. "Last run was fine" is not evidence.
209
+ 5. Tests run fresh — actual output shows passing.
210
+ 6. Implementer has committed (git log shows the commit).
211
+ 7. `bash scripts/beads-context.sh update-progress <id> <task-num> <total> "<title>" <commit-sha> <test-count> <gate-count>` ran successfully (exit code 0). If it fails: STOP. Show error. Do not proceed to next task.
212
+
213
+ Forbidden phrases (these are not evidence):
214
+ - "should pass"
215
+ - "looks good"
216
+ - "seems to work"
217
+ </HARD-GATE>
218
+ ```
219
+
220
+ Mark task complete. Move to next task.
221
+
222
+ ---
223
+
224
+ ## /dev Completion
225
+
226
+ After all tasks are complete (or BLOCKED):
227
+
228
+ ### Final code review
229
+
230
+ Dispatch a final code reviewer for the full implementation:
231
+ - Overall coherence: does the feature hang together as a whole?
232
+ - Cross-task consistency: naming, patterns, style consistent across all tasks?
233
+ - Integration: do all the pieces connect correctly?
234
+
235
+ ### Surface BLOCKED decisions
236
+
237
+ If any decisions have Status=PENDING-DEVELOPER-INPUT:
238
+
239
+ ```
240
+ ⏸️ /dev blocked developer input needed
241
+
242
+ The following decisions were deferred during implementation:
243
+
244
+ Decision 1: [gap description]
245
+ Task: Task N — <title>
246
+ Score: 11/14 (mandatory override: schema change)
247
+ Options considered: [A] vs [B]
248
+ Recommendation: [A] because [reason]
249
+ Blocked tasks: Task 6, Task 7 (depend on this decision)
250
+
251
+ Decision 2: ...
252
+
253
+ Please review and respond. After decisions are resolved, the implementer
254
+ will complete the blocked tasks and re-run spec + quality review.
255
+ ```
256
+
257
+ Wait for developer input. After decisions resolved: implement blocked tasks spec review → quality review → complete.
258
+
259
+ ### /dev exit gate
260
+
261
+ ```
262
+ <HARD-GATE: /dev exit>
263
+ Do NOT declare /dev complete until:
264
+ 1. All tasks are marked complete OR have BLOCKED status with PENDING-DEVELOPER-INPUT
265
+ 2. BLOCKED decisions have been surfaced to developer and are awaiting input
266
+ 3. Final code reviewer has approved (or issues fixed and re-reviewed)
267
+ 4. All decisions in decisions log have Status of RESOLVED or PENDING-DEVELOPER-INPUT
268
+ 5. No unresolved spec or quality issues remain
269
+ </HARD-GATE>
270
+ ```
271
+
272
+ ### Beads update
273
+
274
+ ```bash
275
+ bash scripts/beads-context.sh stage-transition <id> dev validate
276
+ ```
277
+
278
+ ---
279
+
280
+ ## Decision Gate Calibration
281
+
282
+ The frequency of decision gates is a **plan quality metric**:
283
+ - **0 gates fired**: Excellent — Phase 1 Q&A covered all cases
284
+ - **1-2 gates fired**: Good minor gaps, normal
285
+ - **3-5 gates fired**: Plan was incomplete — note for Phase 1 improvement next feature
286
+ - **5+ gates fired**: Phase 1 Q&A was insufficient — the ambiguity policy field needed to be more specific
287
+
288
+ Document the gate count in the final commit message.
289
+
290
+ ---
291
+
292
+ ## Example Output (all tasks complete)
293
+
294
+ ```
295
+ ✓ Task 1: Types and interfaces COMPLETE
296
+ Spec: ✅ Quality: ✅ Tests: 4/4 passing Commit: abc1234
297
+ Decision gates: 0
298
+
299
+ Task 2: Validation logic COMPLETE
300
+ Spec: ✅ Quality: ✅ Tests: 8/8 passing Commit: def5678
301
+ Decision gates: 1 (PROCEED, score 2 documented in decisions log)
302
+
303
+ ✓ Task 3: API endpoint — COMPLETE
304
+ Spec: ✅ Quality: ✅ Tests: 6/6 passing Commit: ghi9012
305
+ Decision gates: 0
306
+
307
+ Final code review: (coherent, consistent, correctly integrated)
308
+
309
+ Decisions log: docs/plans/2026-02-26-stripe-billing-decisions.md
310
+ - Decision 1: RESOLVED (score 2, proceeded with conservative choice)
311
+ - Decision gates fired: 1 (plan quality: Good)
312
+
313
+ ✓ Beads updated: forge-xyz → implementation complete
314
+
315
+ Ready for /validate
316
+ ```
317
+
318
+ ## Integration with Workflow
319
+
320
+ ```
321
+ Utility: /status → Understand current context before starting
322
+ Stage 1: /plan → Design intent → research → branch + worktree + task list
323
+ Stage 2: /dev → Implement each task with subagent-driven TDD (you are here)
324
+ Stage 3: /validate → Type check, lint, tests, security — all fresh output
325
+ Stage 4: /ship → Push + create PR
326
+ Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
327
+ Stage 6: /premerge → Update docs, hand off PR to user
328
+ Stage 7: /verify → Post-merge CI check on main
329
+ ```
330
+
331
+ ## Tips
332
+
333
+ - **Send full task text to subagents**: Never send the file path — copy the complete task text directly into the subagent prompt
334
+ - **TDD lives inside the implementer**: The implementer subagent is responsible for RED-GREEN-REFACTOR, not the orchestrating /dev session
335
+ - **Spec before quality — always**: A task that passes quality review but fails spec compliance has still failed
336
+ - **Decision gates are rare with a good plan**: If gates fire frequently, the Phase 1 Q&A needs more depth next time
337
+ - **BLOCKED ≠ failed**: Surfacing a blocked decision with documentation and a recommendation is the correct behavior