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