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.
- package/.claude/commands/plan.md +93 -4
- package/.cline/workflows/dev.md +311 -0
- package/.cline/workflows/plan.md +475 -0
- package/.cline/workflows/premerge.md +176 -0
- package/.cline/workflows/research.md +39 -0
- package/.cline/workflows/review.md +439 -0
- package/.cline/workflows/rollback.md +718 -0
- package/.cline/workflows/ship.md +131 -0
- package/.cline/workflows/sonarcloud.md +146 -0
- package/.cline/workflows/status.md +74 -0
- package/.cline/workflows/validate.md +234 -0
- package/.cline/workflows/verify.md +218 -0
- package/.codex/config.toml +11 -0
- package/.codex/skills/dev/SKILL.md +314 -0
- package/.codex/skills/plan/SKILL.md +478 -0
- package/.codex/skills/premerge/SKILL.md +179 -0
- package/.codex/skills/research/SKILL.md +42 -0
- package/.codex/skills/review/SKILL.md +442 -0
- package/.codex/skills/rollback/SKILL.md +721 -0
- package/.codex/skills/ship/SKILL.md +134 -0
- package/.codex/skills/sonarcloud/SKILL.md +149 -0
- package/.codex/skills/status/SKILL.md +77 -0
- package/.codex/skills/validate/SKILL.md +237 -0
- package/.codex/skills/verify/SKILL.md +221 -0
- package/.cursor/commands/dev.md +311 -0
- package/.cursor/commands/plan.md +475 -0
- package/.cursor/commands/premerge.md +176 -0
- package/.cursor/commands/research.md +39 -0
- package/.cursor/commands/review.md +439 -0
- package/.cursor/commands/rollback.md +718 -0
- package/.cursor/commands/ship.md +131 -0
- package/.cursor/commands/sonarcloud.md +146 -0
- package/.cursor/commands/status.md +74 -0
- package/.cursor/commands/validate.md +234 -0
- package/.cursor/commands/verify.md +218 -0
- package/.cursor/rules/permissions-guidance.mdc +37 -0
- package/.github/prompts/dev.prompt.md +316 -0
- package/.github/prompts/plan.prompt.md +480 -0
- package/.github/prompts/premerge.prompt.md +181 -0
- package/.github/prompts/research.prompt.md +44 -0
- package/.github/prompts/review.prompt.md +444 -0
- package/.github/prompts/rollback.prompt.md +723 -0
- package/.github/prompts/ship.prompt.md +136 -0
- package/.github/prompts/sonarcloud.prompt.md +151 -0
- package/.github/prompts/status.prompt.md +79 -0
- package/.github/prompts/validate.prompt.md +239 -0
- package/.github/prompts/verify.prompt.md +223 -0
- package/.kilocode/workflows/dev.md +315 -0
- package/.kilocode/workflows/plan.md +479 -0
- package/.kilocode/workflows/premerge.md +180 -0
- package/.kilocode/workflows/research.md +43 -0
- package/.kilocode/workflows/review.md +443 -0
- package/.kilocode/workflows/rollback.md +722 -0
- package/.kilocode/workflows/ship.md +135 -0
- package/.kilocode/workflows/sonarcloud.md +150 -0
- package/.kilocode/workflows/status.md +78 -0
- package/.kilocode/workflows/validate.md +238 -0
- package/.kilocode/workflows/verify.md +222 -0
- package/.opencode/commands/dev.md +314 -0
- package/.opencode/commands/plan.md +478 -0
- package/.opencode/commands/premerge.md +179 -0
- package/.opencode/commands/research.md +42 -0
- package/.opencode/commands/review.md +442 -0
- package/.opencode/commands/rollback.md +721 -0
- package/.opencode/commands/ship.md +134 -0
- package/.opencode/commands/sonarcloud.md +149 -0
- package/.opencode/commands/status.md +77 -0
- package/.opencode/commands/validate.md +237 -0
- package/.opencode/commands/verify.md +221 -0
- package/.roo/commands/dev.md +315 -0
- package/.roo/commands/plan.md +479 -0
- package/.roo/commands/premerge.md +180 -0
- package/.roo/commands/research.md +43 -0
- package/.roo/commands/review.md +443 -0
- package/.roo/commands/rollback.md +722 -0
- package/.roo/commands/ship.md +135 -0
- package/.roo/commands/sonarcloud.md +150 -0
- package/.roo/commands/status.md +78 -0
- package/.roo/commands/validate.md +238 -0
- package/.roo/commands/verify.md +222 -0
- package/LICENSE +21 -21
- package/bin/forge.js +8 -4
- package/docs/ENHANCED_ONBOARDING.md +2 -2
- package/docs/TOOLCHAIN.md +15 -234
- package/install.sh +35 -39
- package/lib/agents/cline.plugin.json +1 -1
- package/lib/agents/roo.plugin.json +1 -1
- package/lib/commands/plan.js +11 -15
- package/lib/commands/recommend.js +2 -2
- package/lib/dep-guard/analyzer.js +294 -0
- package/lib/dep-guard/behavior-detector.js +98 -0
- package/lib/dep-guard/contract-detector.js +162 -0
- package/lib/dep-guard/import-detector.js +498 -0
- package/lib/dep-guard/path-utils.js +13 -0
- package/lib/dep-guard/rubric.js +120 -0
- package/lib/dep-guard/task-parser.js +318 -0
- package/lib/plugin-catalog.js +18 -28
- package/lib/workflow-profiles.js +5 -11
- package/package.json +18 -4
- package/skills/parallel-deep-research/SKILL.md +108 -0
- package/skills/parallel-deep-research/evals/README.md +27 -0
- package/skills/parallel-deep-research/evals/evals.json +62 -0
- package/skills/sonarcloud-analysis/SKILL.md +171 -0
- package/skills/sonarcloud-analysis/evals/README.md +27 -0
- package/skills/sonarcloud-analysis/evals/evals.json +50 -0
- package/skills/sonarcloud-analysis/references/api-reference.md +466 -0
- package/docs/planning/PROGRESS.md +0 -396
- package/docs/plans/.gitkeep +0 -0
- package/docs/plans/2026-02-27-forge-test-suite-v2-decisions.md +0 -21
- package/docs/plans/2026-02-27-forge-test-suite-v2-design.md +0 -362
- package/docs/plans/2026-02-27-forge-test-suite-v2-tasks.md +0 -343
- package/docs/plans/2026-03-02-superpowers-gaps-decisions.md +0 -26
- package/docs/plans/2026-03-02-superpowers-gaps-design.md +0 -239
- package/docs/plans/2026-03-02-superpowers-gaps-tasks.md +0 -260
- package/docs/plans/2026-03-04-agent-command-parity-design.md +0 -163
- package/docs/plans/2026-03-04-verify-worktree-cleanup-decisions.md +0 -7
- package/docs/plans/2026-03-04-verify-worktree-cleanup-design.md +0 -165
- package/docs/plans/2026-03-05-forge-uto-decisions.md +0 -6
- package/docs/plans/2026-03-05-forge-uto-design.md +0 -116
- package/docs/plans/2026-03-05-forge-uto-tasks.md +0 -244
- package/docs/plans/2026-03-10-command-creator-and-eval-decisions.md +0 -52
- package/docs/plans/2026-03-10-command-creator-and-eval-design.md +0 -350
- package/docs/plans/2026-03-10-command-creator-and-eval-tasks.md +0 -426
- package/docs/plans/2026-03-10-stale-workflow-refs-decisions.md +0 -8
- package/docs/plans/2026-03-10-stale-workflow-refs-design.md +0 -80
- package/docs/plans/2026-03-10-stale-workflow-refs-tasks.md +0 -90
- package/docs/plans/2026-03-14-beads-plan-context-decisions.md +0 -9
- package/docs/plans/2026-03-14-beads-plan-context-design.md +0 -171
- package/docs/plans/2026-03-14-beads-plan-context-tasks.md +0 -160
- package/docs/plans/2026-03-14-skill-eval-loop-decisions.md +0 -33
- package/docs/plans/2026-03-14-skill-eval-loop-design.md +0 -118
- package/docs/plans/2026-03-14-skill-eval-loop-results.md +0 -78
- package/docs/plans/2026-03-14-skill-eval-loop-tasks.md +0 -160
- package/docs/plans/2026-03-15-agent-command-parity-v2-decisions.md +0 -11
- package/docs/plans/2026-03-15-agent-command-parity-v2-design.md +0 -145
- package/docs/plans/2026-03-15-agent-command-parity-v2-tasks.md +0 -211
- package/docs/research/TEMPLATE.md +0 -292
- package/docs/research/advanced-testing.md +0 -297
- package/docs/research/agent-permissions.md +0 -167
- package/docs/research/dependency-chain.md +0 -328
- package/docs/research/forge-workflow-v2.md +0 -550
- package/docs/research/plugin-architecture.md +0 -772
- package/docs/research/pr4-cli-automation.md +0 -326
- package/docs/research/premerge-verify-restructure.md +0 -205
- package/docs/research/skills-restructure.md +0 -508
- package/docs/research/sonarcloud-perfection-plan.md +0 -166
- package/docs/research/sonarcloud-quality-gate.md +0 -184
- package/docs/research/superpowers-integration.md +0 -403
- package/docs/research/superpowers.md +0 -319
- package/docs/research/test-environment.md +0 -519
package/.claude/commands/plan.md
CHANGED
|
@@ -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.
|
|
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
|
|
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
|
-
|
|
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
|