forge-workflow 0.0.2 → 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 (147) 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/docs/ENHANCED_ONBOARDING.md +2 -2
  83. package/docs/TOOLCHAIN.md +15 -234
  84. package/install.sh +32 -36
  85. package/lib/commands/plan.js +11 -15
  86. package/lib/commands/recommend.js +2 -2
  87. package/lib/dep-guard/analyzer.js +294 -0
  88. package/lib/dep-guard/behavior-detector.js +98 -0
  89. package/lib/dep-guard/contract-detector.js +162 -0
  90. package/lib/dep-guard/import-detector.js +498 -0
  91. package/lib/dep-guard/path-utils.js +13 -0
  92. package/lib/dep-guard/rubric.js +120 -0
  93. package/lib/dep-guard/task-parser.js +318 -0
  94. package/lib/plugin-catalog.js +18 -28
  95. package/lib/workflow-profiles.js +5 -11
  96. package/package.json +15 -4
  97. package/skills/parallel-deep-research/SKILL.md +108 -0
  98. package/skills/parallel-deep-research/evals/README.md +27 -0
  99. package/skills/parallel-deep-research/evals/evals.json +62 -0
  100. package/skills/sonarcloud-analysis/SKILL.md +171 -0
  101. package/skills/sonarcloud-analysis/evals/README.md +27 -0
  102. package/skills/sonarcloud-analysis/evals/evals.json +50 -0
  103. package/skills/sonarcloud-analysis/references/api-reference.md +466 -0
  104. package/docs/planning/PROGRESS.md +0 -396
  105. package/docs/plans/.gitkeep +0 -0
  106. package/docs/plans/2026-02-27-forge-test-suite-v2-decisions.md +0 -21
  107. package/docs/plans/2026-02-27-forge-test-suite-v2-design.md +0 -362
  108. package/docs/plans/2026-02-27-forge-test-suite-v2-tasks.md +0 -343
  109. package/docs/plans/2026-03-02-superpowers-gaps-decisions.md +0 -26
  110. package/docs/plans/2026-03-02-superpowers-gaps-design.md +0 -239
  111. package/docs/plans/2026-03-02-superpowers-gaps-tasks.md +0 -260
  112. package/docs/plans/2026-03-04-agent-command-parity-design.md +0 -163
  113. package/docs/plans/2026-03-04-verify-worktree-cleanup-decisions.md +0 -7
  114. package/docs/plans/2026-03-04-verify-worktree-cleanup-design.md +0 -165
  115. package/docs/plans/2026-03-05-forge-uto-decisions.md +0 -6
  116. package/docs/plans/2026-03-05-forge-uto-design.md +0 -116
  117. package/docs/plans/2026-03-05-forge-uto-tasks.md +0 -244
  118. package/docs/plans/2026-03-10-command-creator-and-eval-decisions.md +0 -52
  119. package/docs/plans/2026-03-10-command-creator-and-eval-design.md +0 -350
  120. package/docs/plans/2026-03-10-command-creator-and-eval-tasks.md +0 -426
  121. package/docs/plans/2026-03-10-stale-workflow-refs-decisions.md +0 -8
  122. package/docs/plans/2026-03-10-stale-workflow-refs-design.md +0 -80
  123. package/docs/plans/2026-03-10-stale-workflow-refs-tasks.md +0 -90
  124. package/docs/plans/2026-03-14-beads-plan-context-decisions.md +0 -9
  125. package/docs/plans/2026-03-14-beads-plan-context-design.md +0 -171
  126. package/docs/plans/2026-03-14-beads-plan-context-tasks.md +0 -160
  127. package/docs/plans/2026-03-14-skill-eval-loop-decisions.md +0 -33
  128. package/docs/plans/2026-03-14-skill-eval-loop-design.md +0 -118
  129. package/docs/plans/2026-03-14-skill-eval-loop-results.md +0 -78
  130. package/docs/plans/2026-03-14-skill-eval-loop-tasks.md +0 -160
  131. package/docs/plans/2026-03-15-agent-command-parity-v2-decisions.md +0 -11
  132. package/docs/plans/2026-03-15-agent-command-parity-v2-design.md +0 -145
  133. package/docs/plans/2026-03-15-agent-command-parity-v2-tasks.md +0 -211
  134. package/docs/research/TEMPLATE.md +0 -292
  135. package/docs/research/advanced-testing.md +0 -297
  136. package/docs/research/agent-permissions.md +0 -167
  137. package/docs/research/dependency-chain.md +0 -328
  138. package/docs/research/forge-workflow-v2.md +0 -550
  139. package/docs/research/plugin-architecture.md +0 -772
  140. package/docs/research/pr4-cli-automation.md +0 -326
  141. package/docs/research/premerge-verify-restructure.md +0 -205
  142. package/docs/research/skills-restructure.md +0 -508
  143. package/docs/research/sonarcloud-perfection-plan.md +0 -166
  144. package/docs/research/sonarcloud-quality-gate.md +0 -184
  145. package/docs/research/superpowers-integration.md +0 -403
  146. package/docs/research/superpowers.md +0 -319
  147. package/docs/research/test-environment.md +0 -519
@@ -0,0 +1,218 @@
1
+
2
+ Verify that the merge landed correctly and everything is running properly after merge.
3
+
4
+ # Verify
5
+
6
+ This command runs AFTER the user has merged the PR. It checks system health — not documentation (that was handled in `/premerge`).
7
+
8
+ ## Usage
9
+
10
+ ```bash
11
+ /verify
12
+ ```
13
+
14
+ ## What This Command Does
15
+
16
+ ### Step 1: Switch to Main and Pull
17
+
18
+ ```bash
19
+ git checkout master
20
+ git pull
21
+ ```
22
+
23
+ Confirm the merge actually landed on main. If the PR isn't merged yet, stop and tell the user to merge first.
24
+
25
+ ### Step 2: Confirm PR Is Merged
26
+
27
+ Detect the most recently merged PR from the current HEAD commit:
28
+
29
+ ```bash
30
+ gh pr list --state merged --base master --limit 1 --json number,state,mergedAt,mergedBy
31
+ ```
32
+
33
+ - `state` should be `MERGED`
34
+ - If no PR found: the merge may not have landed yet — stop and tell the user to merge first
35
+ - If the wrong PR appears: user can specify the number directly with `gh pr view <number> --json state,mergedAt,mergedBy`
36
+
37
+ ### Step 3: Check CI on Main After Merge
38
+
39
+ ```bash
40
+ gh run list --branch master --limit 5
41
+ ```
42
+
43
+ Check the most recent workflow runs on `master`:
44
+ - All should be passing or in progress
45
+ - If any failed: identify which workflow and what failed
46
+ - Failed CI on main after merge may need a hotfix PR
47
+
48
+ ### Step 4: Check Deployments (if applicable)
49
+
50
+ Check if the project has a deployment target:
51
+
52
+ ```bash
53
+ # Check deployment status from latest run
54
+ gh run list --branch master --limit 1
55
+
56
+ # Check Vercel deployments for the merged PR (use number from Step 2)
57
+ gh pr view <number> --json deployments
58
+ ```
59
+
60
+ If deployments exist:
61
+ - Are they showing as successful?
62
+ - Is the production/preview URL responding?
63
+
64
+ ### Step 5: Report Status
65
+
66
+ **If everything is clean**:
67
+ ```
68
+ ✅ Merge verified — everything is healthy
69
+
70
+ PR: #<number> merged by <user> at <time>
71
+ CI on master: ✓ All passing
72
+ Deployments: ✓ Up (if applicable)
73
+
74
+ Ready for next feature → run /status
75
+ ```
76
+
77
+ **If issues found**:
78
+ ```
79
+ ⚠️ Post-merge issues detected
80
+
81
+ PR: #<number> merged ✓
82
+ CI on master: ✗ <workflow-name> failing
83
+ - Error: <description>
84
+ - Action needed: <hotfix or investigation>
85
+
86
+ Deployments: ✗ <deployment> not responding
87
+
88
+ Next: Create hotfix branch or investigate root cause
89
+ ```
90
+
91
+ ### Step 6: Clean Up Worktree and Branch
92
+
93
+ Only run this step after CI is confirmed healthy (Step 3 passed).
94
+
95
+ Get the merged branch name:
96
+
97
+ ```bash
98
+ gh pr view <number> --json headRefName --jq '.headRefName'
99
+ ```
100
+
101
+ If the branch name cannot be determined (empty output or error), skip cleanup and tell the user to run `git worktree list` and clean up manually.
102
+
103
+ Find and remove the matching worktree (if it exists):
104
+
105
+ ```bash
106
+ # Get the worktree path for this exact branch
107
+ WORKTREE_PATH=$(git worktree list --porcelain \
108
+ | awk -v branch="refs/heads/<branch>" '
109
+ /^worktree / { path=substr($0, 10) }
110
+ $0 == "branch " branch { print path }
111
+ ')
112
+
113
+ if [ -n "$WORKTREE_PATH" ]; then
114
+ git worktree remove "$WORKTREE_PATH" --force
115
+ echo "Worktree: removed ✓ ($WORKTREE_PATH)"
116
+ else
117
+ echo "Worktree: not found (already removed or never created) — skipping"
118
+ fi
119
+ ```
120
+
121
+ If no worktree is found for that branch, skip gracefully with a note: "Worktree: not found (already removed or never created)".
122
+
123
+ Delete the local branch (safe delete only):
124
+
125
+ ```bash
126
+ git branch -d <branch> 2>/dev/null || echo "Branch: already deleted — skipping"
127
+ ```
128
+
129
+ The `|| echo` fallback handles the case where the branch is already gone (e.g., deleted by a previous run or the remote), so the command never fails the verify step.
130
+
131
+ Report cleanup in output:
132
+ ```
133
+ Worktree: removed ✓
134
+ Branch: <branch-name> deleted ✓
135
+ ```
136
+
137
+ ### Step 7: If Issues Found — Create Beads Issue
138
+
139
+ **Never commit inline.** If something is wrong, create a tracking issue:
140
+
141
+ ```bash
142
+ bd create --title="Post-merge: <description of issue>" --type=bug --priority=1
143
+ ```
144
+
145
+ ### Step 8: Close Beads Issue (if healthy)
146
+
147
+ If everything is clean, close the Beads issue:
148
+
149
+ ```bash
150
+ bd close <id> --reason="Merged and verified on master"
151
+ ```
152
+
153
+ ```
154
+ <HARD-GATE: /verify exit>
155
+ Do NOT declare /verify complete until:
156
+ 1. gh run list --branch master --limit 3 shows actual CI output (not "should be fine")
157
+ 2. If healthy: Beads issue is closed (bd close <id> run and confirmed)
158
+ 3. If issues found: Beads tracking issue created for every problem
159
+ 4. Worktree removed (or confirmed already gone) — OR Step 6 was intentionally skipped because CI was unhealthy; if skipped, state explicitly: "cleanup deferred, CI was not healthy"
160
+ "It should be fine" is not evidence. Run the command. Show the output.
161
+ </HARD-GATE>
162
+ ```
163
+
164
+ ## Rules
165
+
166
+ - **Never commits** — this command is read-only
167
+ - **Never creates PRs** — if fixes are needed, that's a new /dev cycle
168
+ - **Runs after user confirms merge** — not before
169
+ - **Reports honestly** — if CI is broken on main, say so clearly
170
+
171
+ ## Example Output (Healthy)
172
+
173
+ ```
174
+ ✅ Merge verified — everything is healthy
175
+
176
+ PR: #89 merged by harshanandak at 2026-02-24T14:30:00Z
177
+ Branch: feat/auth-refresh deleted ✓
178
+ CI on master:
179
+ ✓ Test Suite (ubuntu, node 20): passing
180
+ ✓ Test Suite (windows, node 22): passing
181
+ ✓ ESLint: passing
182
+ ✓ SonarCloud: passing
183
+ ✓ CodeQL: passing
184
+ Deployments: N/A (no deployment configured)
185
+
186
+ Ready for next feature → run /status
187
+ ```
188
+
189
+ ## Example Output (Issues Found)
190
+
191
+ ```
192
+ ⚠️ Post-merge issues detected
193
+
194
+ PR: #89 merged ✓
195
+ CI on master:
196
+ ✓ Test Suite: passing
197
+ ✗ SonarCloud: quality gate failing
198
+ - 2 new code smells introduced
199
+ - Action: investigate or create hotfix
200
+
201
+ Created Beads issue: forge-xyz
202
+ "Post-merge: SonarCloud quality gate failing on master after PR #89"
203
+
204
+ Run /status to assess next steps
205
+ ```
206
+
207
+ ## Integration with Workflow
208
+
209
+ ```
210
+ Utility: /status → Understand current context before starting
211
+ Stage 1: /plan → Design intent → research → branch + worktree + task list
212
+ Stage 2: /dev → Implement each task with subagent-driven TDD
213
+ Stage 3: /validate → Type check, lint, tests, security — all fresh output
214
+ Stage 4: /ship → Push + create PR
215
+ Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
216
+ Stage 6: /premerge → Update docs, hand off PR to user
217
+ Stage 7: /verify → Post-merge CI check on main (you are here) ✓
218
+ ```
@@ -0,0 +1,11 @@
1
+ # OpenAI Codex CLI project configuration
2
+ # https://developers.openai.com/codex/config-reference/
3
+ #
4
+ # approval_policy options:
5
+ # untrusted = require approval for all state-changing commands
6
+ # on-request = agent decides when to ask (recommended for interactive dev)
7
+ # never = no prompts (for CI / fully automated runs)
8
+ approval_policy = "on-request"
9
+
10
+ # Restrict file access to project workspace only (prevents access outside project root)
11
+ sandbox_mode = "workspace-write"
@@ -0,0 +1,314 @@
1
+ ---
2
+ description: Subagent-driven TDD implementation per task from /plan task list
3
+ ---
4
+
5
+ Implement each task from the /plan task list using a subagent-driven loop: implementer → spec compliance reviewer → code quality reviewer per task.
6
+
7
+ # Dev
8
+
9
+ 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.
10
+
11
+ ## Usage
12
+
13
+ ```bash
14
+ /dev
15
+ ```
16
+
17
+ ---
18
+
19
+ ## Setup
20
+
21
+ ### Step 1: Load context
22
+
23
+ ```bash
24
+ # Find task list and design doc
25
+ ls docs/plans/
26
+ ```
27
+
28
+ Read:
29
+ - **Task list**: `docs/plans/YYYY-MM-DD-<slug>-tasks.md` — extract ALL task text upfront
30
+ - **Design doc**: `docs/plans/YYYY-MM-DD-<slug>-design.md` — including ambiguity policy section
31
+
32
+ ### Step 2: Create decisions log
33
+
34
+ Create an empty decisions log at the start of every /dev session:
35
+
36
+ ```bash
37
+ # docs/plans/YYYY-MM-DD-<slug>-decisions.md
38
+ ```
39
+
40
+ Format for each entry:
41
+ ```
42
+ ## Decision N
43
+ **Date**: YYYY-MM-DD
44
+ **Task**: Task N — <title>
45
+ **Gap**: [what the spec didn't cover]
46
+ **Score**: [filled checklist total]
47
+ **Route**: PROCEED / SPEC-REVIEWER / BLOCKED
48
+ **Choice made**: [if PROCEED: what was decided and why]
49
+ **Status**: RESOLVED / PENDING-DEVELOPER-INPUT
50
+ ```
51
+
52
+ ### Step 3: Pre-flight checks
53
+
54
+ ```
55
+ <HARD-GATE: /dev start>
56
+ Do NOT write any code until ALL confirmed:
57
+ 1. git branch --show-current output is NOT main or master
58
+ 2. git worktree list shows the worktree path for this feature
59
+ 3. Task list file confirmed to exist (use Read tool — do not assume)
60
+ 4. Decisions log file created
61
+ </HARD-GATE>
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Per-Task Loop
67
+
68
+ Repeat for each task in the task list, in order:
69
+
70
+ ### Step A: Dispatch implementer subagent
71
+
72
+ Provide the subagent with:
73
+ - **Full task text** (copy the complete task content — do NOT send just the file path)
74
+ - **Relevant design doc sections** for this task
75
+ - **Recent git log** showing what has already been implemented
76
+
77
+ The implementer subagent:
78
+ 1. Asks clarifying questions before writing any code
79
+ 2. Implements using RED-GREEN-REFACTOR
80
+ 3. Self-reviews for correctness
81
+ 4. Commits with a descriptive message
82
+
83
+ ```
84
+ <HARD-GATE: TDD enforcement (inside implementer subagent)>
85
+ Do NOT write any production code until:
86
+ 1. A FAILING test exists for that code
87
+ 2. The test has been run and output shows it FAILING
88
+ 3. The failure reason matches the expected missing behavior
89
+
90
+ If code was written before its test: delete it. Start with the test.
91
+ "The test would obviously fail" is not evidence. Run it and show the output.
92
+ </HARD-GATE>
93
+ ```
94
+
95
+ ---
96
+
97
+ ### Step B: Decision gate (when implementer hits a spec gap)
98
+
99
+ If the implementer encounters something not specified in the design doc, STOP and fill this checklist BEFORE deciding how to proceed:
100
+
101
+ ```
102
+ Gap: [describe exactly what the spec doesn't cover]
103
+
104
+ Score each dimension (0=No / 1=Possibly / 2=Yes):
105
+ [ ] 1. Files affected beyond the current task?
106
+ [ ] 2. Changes a function signature or public export?
107
+ [ ] 3. Changes a shared module used by other tasks?
108
+ [ ] 4. Changes or touches persistent data or schema?
109
+ [ ] 5. Changes user-visible behavior not discussed in design doc?
110
+ [ ] 6. Affects auth, permissions, or data exposure?
111
+ [ ] 7. Hard to reverse without cascading changes to other files?
112
+ TOTAL: ___ / 14
113
+
114
+ Mandatory overrides — any of these = automatically BLOCKED:
115
+ [ ] Security dimension (6) scored 2
116
+ [ ] Schema migration or data model change
117
+ [ ] Removes or changes an existing public API endpoint
118
+ [ ] Affects a task that is already implemented and committed
119
+ ```
120
+
121
+ **Score routing**:
122
+ - **0-3**: PROCEED — make the decision, document in decisions log with full reasoning
123
+ - **4-7**: SPEC-REVIEWER — route this decision to spec reviewer. Continue other independent tasks while waiting
124
+ - **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
125
+
126
+ Log the decision entry before continuing.
127
+
128
+ ---
129
+
130
+ ### Step C: Spec compliance review
131
+
132
+ After the implementer finishes the task, dispatch a **spec compliance reviewer** subagent.
133
+
134
+ Provide:
135
+ - Full task text (what was supposed to be implemented)
136
+ - Relevant design doc sections
137
+ - `git diff` for this task's commits
138
+
139
+ Reviewer checks:
140
+ - All requirements from the task text are implemented
141
+ - Nothing extra was added beyond task scope
142
+ - Edge cases documented in design doc are handled
143
+ - TDD evidence: test exists, test was run failing, then passing
144
+
145
+ If spec issues found: implementer fixes → re-review → repeat until ✅
146
+
147
+ ```
148
+ <HARD-GATE: spec before quality>
149
+ Do NOT dispatch code quality reviewer until spec compliance reviewer returns ✅ for this task.
150
+ Running quality review before spec compliance is the wrong order.
151
+ </HARD-GATE>
152
+ ```
153
+
154
+ ---
155
+
156
+ ### Step D: Code quality review
157
+
158
+ After spec ✅, dispatch a **code quality reviewer** subagent.
159
+
160
+ Provide:
161
+ - git SHAs for this task's commits
162
+ - The changed code (`git diff`)
163
+
164
+ Reviewer checks:
165
+ - Naming: clear, descriptive, consistent with codebase conventions
166
+ - Structure: functions not too long, proper separation of concerns
167
+ - Duplication: no copy-paste that could be extracted
168
+ - Test coverage: tests cover happy path and at least one error path
169
+ - No magic numbers, no commented-out code, no TODO without a Beads issue
170
+
171
+ If quality issues found: implementer fixes → re-review → repeat until ✅
172
+
173
+ ---
174
+
175
+ ### Step E: Task completion
176
+
177
+ ```
178
+ <HARD-GATE: task completion>
179
+ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
180
+
181
+ Do NOT mark task complete or move to next task until ALL confirmed in this session:
182
+ 1. Spec compliance reviewer returned ✅
183
+ 2. Code quality reviewer returned ✅
184
+ 3. Identify what command proves this task is done (e.g. `bun test`, a CLI invocation, a script run).
185
+ 4. Run it fresh — show the actual output. "Last run was fine" is not evidence.
186
+ 5. Tests run fresh — actual output shows passing.
187
+ 6. Implementer has committed (git log shows the commit).
188
+ 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.
189
+
190
+ Forbidden phrases (these are not evidence):
191
+ - "should pass"
192
+ - "looks good"
193
+ - "seems to work"
194
+ </HARD-GATE>
195
+ ```
196
+
197
+ Mark task complete. Move to next task.
198
+
199
+ ---
200
+
201
+ ## /dev Completion
202
+
203
+ After all tasks are complete (or BLOCKED):
204
+
205
+ ### Final code review
206
+
207
+ Dispatch a final code reviewer for the full implementation:
208
+ - Overall coherence: does the feature hang together as a whole?
209
+ - Cross-task consistency: naming, patterns, style consistent across all tasks?
210
+ - Integration: do all the pieces connect correctly?
211
+
212
+ ### Surface BLOCKED decisions
213
+
214
+ If any decisions have Status=PENDING-DEVELOPER-INPUT:
215
+
216
+ ```
217
+ ⏸️ /dev blocked — developer input needed
218
+
219
+ The following decisions were deferred during implementation:
220
+
221
+ Decision 1: [gap description]
222
+ Task: Task N — <title>
223
+ Score: 11/14 (mandatory override: schema change)
224
+ Options considered: [A] vs [B]
225
+ Recommendation: [A] because [reason]
226
+ Blocked tasks: Task 6, Task 7 (depend on this decision)
227
+
228
+ Decision 2: ...
229
+
230
+ Please review and respond. After decisions are resolved, the implementer
231
+ will complete the blocked tasks and re-run spec + quality review.
232
+ ```
233
+
234
+ Wait for developer input. After decisions resolved: implement blocked tasks → spec review → quality review → complete.
235
+
236
+ ### /dev exit gate
237
+
238
+ ```
239
+ <HARD-GATE: /dev exit>
240
+ Do NOT declare /dev complete until:
241
+ 1. All tasks are marked complete OR have BLOCKED status with PENDING-DEVELOPER-INPUT
242
+ 2. BLOCKED decisions have been surfaced to developer and are awaiting input
243
+ 3. Final code reviewer has approved (or issues fixed and re-reviewed)
244
+ 4. All decisions in decisions log have Status of RESOLVED or PENDING-DEVELOPER-INPUT
245
+ 5. No unresolved spec or quality issues remain
246
+ </HARD-GATE>
247
+ ```
248
+
249
+ ### Beads update
250
+
251
+ ```bash
252
+ bash scripts/beads-context.sh stage-transition <id> dev validate
253
+ ```
254
+
255
+ ---
256
+
257
+ ## Decision Gate Calibration
258
+
259
+ The frequency of decision gates is a **plan quality metric**:
260
+ - **0 gates fired**: Excellent — Phase 1 Q&A covered all cases
261
+ - **1-2 gates fired**: Good — minor gaps, normal
262
+ - **3-5 gates fired**: Plan was incomplete — note for Phase 1 improvement next feature
263
+ - **5+ gates fired**: Phase 1 Q&A was insufficient — the ambiguity policy field needed to be more specific
264
+
265
+ Document the gate count in the final commit message.
266
+
267
+ ---
268
+
269
+ ## Example Output (all tasks complete)
270
+
271
+ ```
272
+ ✓ Task 1: Types and interfaces — COMPLETE
273
+ Spec: ✅ Quality: ✅ Tests: 4/4 passing Commit: abc1234
274
+ Decision gates: 0
275
+
276
+ ✓ Task 2: Validation logic — COMPLETE
277
+ Spec: ✅ Quality: ✅ Tests: 8/8 passing Commit: def5678
278
+ Decision gates: 1 (PROCEED, score 2 — documented in decisions log)
279
+
280
+ ✓ Task 3: API endpoint — COMPLETE
281
+ Spec: ✅ Quality: ✅ Tests: 6/6 passing Commit: ghi9012
282
+ Decision gates: 0
283
+
284
+ ✓ Final code review: ✅ (coherent, consistent, correctly integrated)
285
+
286
+ ✓ Decisions log: docs/plans/2026-02-26-stripe-billing-decisions.md
287
+ - Decision 1: RESOLVED (score 2, proceeded with conservative choice)
288
+ - Decision gates fired: 1 (plan quality: Good)
289
+
290
+ ✓ Beads updated: forge-xyz → implementation complete
291
+
292
+ Ready for /validate
293
+ ```
294
+
295
+ ## Integration with Workflow
296
+
297
+ ```
298
+ Utility: /status → Understand current context before starting
299
+ Stage 1: /plan → Design intent → research → branch + worktree + task list
300
+ Stage 2: /dev → Implement each task with subagent-driven TDD (you are here)
301
+ Stage 3: /validate → Type check, lint, tests, security — all fresh output
302
+ Stage 4: /ship → Push + create PR
303
+ Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
304
+ Stage 6: /premerge → Update docs, hand off PR to user
305
+ Stage 7: /verify → Post-merge CI check on main
306
+ ```
307
+
308
+ ## Tips
309
+
310
+ - **Send full task text to subagents**: Never send the file path — copy the complete task text directly into the subagent prompt
311
+ - **TDD lives inside the implementer**: The implementer subagent is responsible for RED-GREEN-REFACTOR, not the orchestrating /dev session
312
+ - **Spec before quality — always**: A task that passes quality review but fails spec compliance has still failed
313
+ - **Decision gates are rare with a good plan**: If gates fire frequently, the Phase 1 Q&A needs more depth next time
314
+ - **BLOCKED ≠ failed**: Surfacing a blocked decision with documentation and a recommendation is the correct behavior