forge-workflow 0.0.1 → 0.0.3

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 (150) hide show
  1. package/.claude/commands/plan.md +93 -4
  2. package/.cline/workflows/dev.md +311 -0
  3. package/.cline/workflows/plan.md +475 -0
  4. package/.cline/workflows/premerge.md +176 -0
  5. package/.cline/workflows/research.md +39 -0
  6. package/.cline/workflows/review.md +439 -0
  7. package/.cline/workflows/rollback.md +718 -0
  8. package/.cline/workflows/ship.md +131 -0
  9. package/.cline/workflows/sonarcloud.md +146 -0
  10. package/.cline/workflows/status.md +74 -0
  11. package/.cline/workflows/validate.md +234 -0
  12. package/.cline/workflows/verify.md +218 -0
  13. package/.codex/config.toml +11 -0
  14. package/.codex/skills/dev/SKILL.md +314 -0
  15. package/.codex/skills/plan/SKILL.md +478 -0
  16. package/.codex/skills/premerge/SKILL.md +179 -0
  17. package/.codex/skills/research/SKILL.md +42 -0
  18. package/.codex/skills/review/SKILL.md +442 -0
  19. package/.codex/skills/rollback/SKILL.md +721 -0
  20. package/.codex/skills/ship/SKILL.md +134 -0
  21. package/.codex/skills/sonarcloud/SKILL.md +149 -0
  22. package/.codex/skills/status/SKILL.md +77 -0
  23. package/.codex/skills/validate/SKILL.md +237 -0
  24. package/.codex/skills/verify/SKILL.md +221 -0
  25. package/.cursor/commands/dev.md +311 -0
  26. package/.cursor/commands/plan.md +475 -0
  27. package/.cursor/commands/premerge.md +176 -0
  28. package/.cursor/commands/research.md +39 -0
  29. package/.cursor/commands/review.md +439 -0
  30. package/.cursor/commands/rollback.md +718 -0
  31. package/.cursor/commands/ship.md +131 -0
  32. package/.cursor/commands/sonarcloud.md +146 -0
  33. package/.cursor/commands/status.md +74 -0
  34. package/.cursor/commands/validate.md +234 -0
  35. package/.cursor/commands/verify.md +218 -0
  36. package/.cursor/rules/permissions-guidance.mdc +37 -0
  37. package/.github/prompts/dev.prompt.md +316 -0
  38. package/.github/prompts/plan.prompt.md +480 -0
  39. package/.github/prompts/premerge.prompt.md +181 -0
  40. package/.github/prompts/research.prompt.md +44 -0
  41. package/.github/prompts/review.prompt.md +444 -0
  42. package/.github/prompts/rollback.prompt.md +723 -0
  43. package/.github/prompts/ship.prompt.md +136 -0
  44. package/.github/prompts/sonarcloud.prompt.md +151 -0
  45. package/.github/prompts/status.prompt.md +79 -0
  46. package/.github/prompts/validate.prompt.md +239 -0
  47. package/.github/prompts/verify.prompt.md +223 -0
  48. package/.kilocode/workflows/dev.md +315 -0
  49. package/.kilocode/workflows/plan.md +479 -0
  50. package/.kilocode/workflows/premerge.md +180 -0
  51. package/.kilocode/workflows/research.md +43 -0
  52. package/.kilocode/workflows/review.md +443 -0
  53. package/.kilocode/workflows/rollback.md +722 -0
  54. package/.kilocode/workflows/ship.md +135 -0
  55. package/.kilocode/workflows/sonarcloud.md +150 -0
  56. package/.kilocode/workflows/status.md +78 -0
  57. package/.kilocode/workflows/validate.md +238 -0
  58. package/.kilocode/workflows/verify.md +222 -0
  59. package/.opencode/commands/dev.md +314 -0
  60. package/.opencode/commands/plan.md +478 -0
  61. package/.opencode/commands/premerge.md +179 -0
  62. package/.opencode/commands/research.md +42 -0
  63. package/.opencode/commands/review.md +442 -0
  64. package/.opencode/commands/rollback.md +721 -0
  65. package/.opencode/commands/ship.md +134 -0
  66. package/.opencode/commands/sonarcloud.md +149 -0
  67. package/.opencode/commands/status.md +77 -0
  68. package/.opencode/commands/validate.md +237 -0
  69. package/.opencode/commands/verify.md +221 -0
  70. package/.roo/commands/dev.md +315 -0
  71. package/.roo/commands/plan.md +479 -0
  72. package/.roo/commands/premerge.md +180 -0
  73. package/.roo/commands/research.md +43 -0
  74. package/.roo/commands/review.md +443 -0
  75. package/.roo/commands/rollback.md +722 -0
  76. package/.roo/commands/ship.md +135 -0
  77. package/.roo/commands/sonarcloud.md +150 -0
  78. package/.roo/commands/status.md +78 -0
  79. package/.roo/commands/validate.md +238 -0
  80. package/.roo/commands/verify.md +222 -0
  81. package/LICENSE +21 -21
  82. package/bin/forge.js +8 -4
  83. package/docs/ENHANCED_ONBOARDING.md +2 -2
  84. package/docs/TOOLCHAIN.md +15 -234
  85. package/install.sh +35 -39
  86. package/lib/agents/cline.plugin.json +1 -1
  87. package/lib/agents/roo.plugin.json +1 -1
  88. package/lib/commands/plan.js +11 -15
  89. package/lib/commands/recommend.js +2 -2
  90. package/lib/dep-guard/analyzer.js +294 -0
  91. package/lib/dep-guard/behavior-detector.js +98 -0
  92. package/lib/dep-guard/contract-detector.js +162 -0
  93. package/lib/dep-guard/import-detector.js +498 -0
  94. package/lib/dep-guard/path-utils.js +13 -0
  95. package/lib/dep-guard/rubric.js +120 -0
  96. package/lib/dep-guard/task-parser.js +318 -0
  97. package/lib/plugin-catalog.js +18 -28
  98. package/lib/workflow-profiles.js +5 -11
  99. package/package.json +18 -4
  100. package/skills/parallel-deep-research/SKILL.md +108 -0
  101. package/skills/parallel-deep-research/evals/README.md +27 -0
  102. package/skills/parallel-deep-research/evals/evals.json +62 -0
  103. package/skills/sonarcloud-analysis/SKILL.md +171 -0
  104. package/skills/sonarcloud-analysis/evals/README.md +27 -0
  105. package/skills/sonarcloud-analysis/evals/evals.json +50 -0
  106. package/skills/sonarcloud-analysis/references/api-reference.md +466 -0
  107. package/docs/planning/PROGRESS.md +0 -396
  108. package/docs/plans/.gitkeep +0 -0
  109. package/docs/plans/2026-02-27-forge-test-suite-v2-decisions.md +0 -21
  110. package/docs/plans/2026-02-27-forge-test-suite-v2-design.md +0 -362
  111. package/docs/plans/2026-02-27-forge-test-suite-v2-tasks.md +0 -343
  112. package/docs/plans/2026-03-02-superpowers-gaps-decisions.md +0 -26
  113. package/docs/plans/2026-03-02-superpowers-gaps-design.md +0 -239
  114. package/docs/plans/2026-03-02-superpowers-gaps-tasks.md +0 -260
  115. package/docs/plans/2026-03-04-agent-command-parity-design.md +0 -163
  116. package/docs/plans/2026-03-04-verify-worktree-cleanup-decisions.md +0 -7
  117. package/docs/plans/2026-03-04-verify-worktree-cleanup-design.md +0 -165
  118. package/docs/plans/2026-03-05-forge-uto-decisions.md +0 -6
  119. package/docs/plans/2026-03-05-forge-uto-design.md +0 -116
  120. package/docs/plans/2026-03-05-forge-uto-tasks.md +0 -244
  121. package/docs/plans/2026-03-10-command-creator-and-eval-decisions.md +0 -52
  122. package/docs/plans/2026-03-10-command-creator-and-eval-design.md +0 -350
  123. package/docs/plans/2026-03-10-command-creator-and-eval-tasks.md +0 -426
  124. package/docs/plans/2026-03-10-stale-workflow-refs-decisions.md +0 -8
  125. package/docs/plans/2026-03-10-stale-workflow-refs-design.md +0 -80
  126. package/docs/plans/2026-03-10-stale-workflow-refs-tasks.md +0 -90
  127. package/docs/plans/2026-03-14-beads-plan-context-decisions.md +0 -9
  128. package/docs/plans/2026-03-14-beads-plan-context-design.md +0 -171
  129. package/docs/plans/2026-03-14-beads-plan-context-tasks.md +0 -160
  130. package/docs/plans/2026-03-14-skill-eval-loop-decisions.md +0 -33
  131. package/docs/plans/2026-03-14-skill-eval-loop-design.md +0 -118
  132. package/docs/plans/2026-03-14-skill-eval-loop-results.md +0 -78
  133. package/docs/plans/2026-03-14-skill-eval-loop-tasks.md +0 -160
  134. package/docs/plans/2026-03-15-agent-command-parity-v2-decisions.md +0 -11
  135. package/docs/plans/2026-03-15-agent-command-parity-v2-design.md +0 -145
  136. package/docs/plans/2026-03-15-agent-command-parity-v2-tasks.md +0 -211
  137. package/docs/research/TEMPLATE.md +0 -292
  138. package/docs/research/advanced-testing.md +0 -297
  139. package/docs/research/agent-permissions.md +0 -167
  140. package/docs/research/dependency-chain.md +0 -328
  141. package/docs/research/forge-workflow-v2.md +0 -550
  142. package/docs/research/plugin-architecture.md +0 -772
  143. package/docs/research/pr4-cli-automation.md +0 -326
  144. package/docs/research/premerge-verify-restructure.md +0 -205
  145. package/docs/research/skills-restructure.md +0 -508
  146. package/docs/research/sonarcloud-perfection-plan.md +0 -166
  147. package/docs/research/sonarcloud-quality-gate.md +0 -184
  148. package/docs/research/superpowers-integration.md +0 -403
  149. package/docs/research/superpowers.md +0 -319
  150. package/docs/research/test-environment.md +0 -519
@@ -20,7 +20,7 @@ Before ANY planning work begins:
20
20
  - Tell the user: "You are on '<branch>'. Planning must start from a clean worktree on master.
21
21
  Run: git checkout master — then re-run /plan."
22
22
  3. If on master, create the worktree NOW before asking any questions:
23
- a. git worktree add -b feat/<slug> .worktrees/<slug>
23
+ a. bd worktree create .worktrees/<slug> --branch feat/<slug>
24
24
  b. cd .worktrees/<slug>
25
25
  4. Confirm: "Working in isolated worktree: .worktrees/<slug> (branch: feat/<slug>)"
26
26
  5. ONLY THEN begin Phase 1.
@@ -48,6 +48,62 @@ between parallel features or sessions.
48
48
 
49
49
  **Goal**: Capture WHAT to build — purpose, constraints, success criteria, edge cases, approach.
50
50
 
51
+ ### Step 0: Dependency ripple check (advisory)
52
+
53
+ Before exploring context or asking questions, check for potential conflicts with in-flight work:
54
+
55
+ ```bash
56
+ # If a Beads issue ID is known (e.g., from /status or bd ready):
57
+ bash scripts/dep-guard.sh check-ripple <beads-issue-id>
58
+
59
+ # If no issue exists yet (first-time plan):
60
+ bd list --status=open,in_progress
61
+ ```
62
+
63
+ Review the output. If overlaps are detected:
64
+ - Consider whether the overlapping issue should be a dependency
65
+ - Note any shared areas for the design Q&A
66
+ - This check is **advisory only** — always proceed to Step 1 regardless of findings
67
+
68
+ #### Ripple Analyst Agent (spawned when contract overlaps found)
69
+
70
+ When `check-ripple` detects overlapping issues AND contract metadata is available, spawn a Ripple Analyst subagent with this prompt:
71
+
72
+ **Input to agent**:
73
+ - Current issue's contract changes (from `extract-contracts` output)
74
+ - Consumer code snippets (from `find-consumers` output for each changed contract)
75
+ - Overlapping issue's title, description, and contract metadata
76
+
77
+ **Agent instructions**:
78
+ 1. For each overlapping contract, imagine 2-3 concrete break scenarios:
79
+ - "If [contract X] changes [specific behavior], then [consumer Y] will [specific failure]"
80
+ 2. Rate overall impact as one of:
81
+ - **NONE**: No real conflict despite keyword overlap
82
+ - **LOW**: Consumers need trivial adjustment (add parameter, rename call)
83
+ - **HIGH**: Consumer needs significant rework (parsing logic, data handling changes)
84
+ - **CRITICAL**: Consumer is in an active in_progress issue's task list
85
+ 3. **When uncertain, default to HIGH** — conservative over permissive
86
+ 4. Recommend one action:
87
+ - Add dependency (`bd dep add <source> <target>`)
88
+ - Coordinate with other issue's developer
89
+ - Scope down current feature to avoid overlap
90
+ - Proceed as-is (no real conflict)
91
+
92
+ **Output format**:
93
+ ```
94
+ Impact: [NONE|LOW|HIGH|CRITICAL]
95
+ Confidence: [high|medium|low]
96
+
97
+ Break scenarios:
98
+ 1. [scenario description]
99
+ 2. [scenario description]
100
+
101
+ Recommendation: [action]
102
+ Reason: [why this action]
103
+ ```
104
+
105
+ This agent is advisory only. The developer always makes the final decision.
106
+
51
107
  ### Step 1: Explore project context
52
108
 
53
109
  Before asking any questions, read relevant files:
@@ -239,10 +295,9 @@ else
239
295
  # Step 2b: Verify .worktrees/ is gitignored — add if missing
240
296
  git check-ignore -v .worktrees/ || echo ".worktrees/" >> .gitignore
241
297
 
242
- # Step 2c: Create branch + worktree in one command (from master)
243
- # Using -b with worktree add avoids "branch already checked out" error
298
+ # Step 2c: Create a Beads-aware worktree rooted on master
244
299
  git checkout master
245
- git worktree add -b feat/<slug> .worktrees/<slug>
300
+ bd worktree create .worktrees/<slug> --branch feat/<slug>
246
301
  cd .worktrees/<slug>
247
302
  fi
248
303
  ```
@@ -315,6 +370,38 @@ bash scripts/beads-context.sh set-acceptance <id> "<success-criteria from design
315
370
 
316
371
  Both commands must exit with code 0. If either fails, investigate (wrong issue ID? missing script?) before continuing.
317
372
 
373
+ ### Step 5c: Contract extraction and logic-level dependency review
374
+
375
+ After saving the task list and Beads context, extract and store contract metadata, then run the logic-level Phase 3 dependency review:
376
+
377
+ ```bash
378
+ # Extract contracts — only call store-contracts if extract succeeds (exit 0)
379
+ if bash scripts/dep-guard.sh extract-contracts docs/plans/YYYY-MM-DD-<slug>-tasks.md > /tmp/contracts.txt; then
380
+ bash scripts/dep-guard.sh store-contracts <id> "$(cat /tmp/contracts.txt)"
381
+ else
382
+ echo "No contracts found — skipping store-contracts"
383
+ fi
384
+
385
+ # Re-run ripple check using Beads JSON + logic-level analysis
386
+ bash scripts/dep-guard.sh check-ripple <id>
387
+ ```
388
+
389
+ `extract-contracts` exits 1 when no contracts are found (not an error — just nothing to store). `store-contracts` must exit 0 if called.
390
+
391
+ `check-ripple` is now advisory but logic-aware. It should:
392
+ - read Beads issue data via JSON
393
+ - analyze import/call-chain, contract, and behavioral dependency signals
394
+ - show rubric score, confidence, issue pairs, and proposed dependency updates with pros/cons
395
+ - stop for user approval whenever a dependency mutation is proposed
396
+
397
+ If the user approves a dependency mutation, apply it explicitly:
398
+
399
+ ```bash
400
+ bash scripts/dep-guard.sh apply-decision <id> <dependent-id> <depends-on-id> "<approval rationale>"
401
+ ```
402
+
403
+ That approval step must validate with `bd dep cycles`, show `bd graph`, summarize `bd ready`, and persist the decision via `bd set-state` plus `bd comments`. Beads remains the canonical machine-readable decision record; the plan docs hold only the concise summary.
404
+
318
405
  ### Step 6: User review
319
406
 
320
407
  Present the full task list. Allow the user to reorder, split, or remove tasks.
@@ -332,6 +419,8 @@ Do NOT proceed to /dev until ALL are confirmed:
332
419
  6. User has confirmed task list is correct
333
420
  7. `beads-context.sh set-design` ran successfully (exit code 0)
334
421
  8. `beads-context.sh set-acceptance` ran successfully (exit code 0)
422
+ 9. `dep-guard.sh store-contracts` ran successfully (exit code 0) — or skipped if no contracts found
423
+ 10. `dep-guard.sh check-ripple` ran successfully and any proposed dependency mutation was reviewed with the user before calling `apply-decision`
335
424
  </HARD-GATE>
336
425
  ```
337
426
 
@@ -0,0 +1,311 @@
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