You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The `agent` field determines who writes the code (the squad agent). The
175
+
`moeExperts` field determines who reviews before implementation.
176
+
177
+
#### Fallback: Tasks Without Explicit Assignments
177
178
178
-
**Override rule:** If the task description or acceptance criteria suggest special concerns (e.g., high security, strict performance target), adjust the expert mix accordingly.
179
+
If a task is missing `agent` or `moeExperts` (pre-v1.1 tasks.json or manually
180
+
created), use the `mixture-of-experts` skill to select the appropriate experts
181
+
based on the task's tags and domain. See `mixture-of-experts` → "Common Patterns"
182
+
for the canonical tag-to-expert mapping table.
183
+
184
+
Prefer updating the tasks.json with explicit assignments — it's more reliable
185
+
and reviewable than runtime inference.
179
186
180
187
### Step 5: Delegate via MoE
181
188
@@ -201,19 +208,25 @@ When multiple tasks have no mutual dependencies, run them concurrently:
201
208
202
209
```bash
203
210
# Tasks T004 and T005 are independent (both depend on T003 but not each other)
204
-
# Spawn them in parallel tmux sessions
211
+
# Read their moeExperts from tasks.json and spawn in parallel
212
+
213
+
# T004: moeExperts read from tasks.json, e.g., ["architect", "api-designer", "security"]
214
+
EXPERTS_T004=$(python3 -c "
215
+
import json
216
+
t = [t for t in json.load(open('tasks.json'))['tasks'] if t['id']=='T004'][0]
Use MoE experts: data-modeler, performance, architect.'" C-m
229
+
Use MoE experts: \$EXPERTS_T005.'" C-m
217
230
```
218
231
219
232
### Step 6: Verify Completion
@@ -374,29 +387,17 @@ echo ""
374
387
375
388
# Execute each task
376
389
forTIDin$ORDER;do
377
-
# Get task details
390
+
# Get task details including pre-assigned agent and MoE experts
378
391
TITLE=$(python3 -c "import json; [print(t['title']) for t in json.load(open('$TASKS_FILE'))['tasks'] if t['id']=='$TID']")
379
392
DESC=$(python3 -c "import json; [print(t['description']) for t in json.load(open('$TASKS_FILE'))['tasks'] if t['id']=='$TID']")
380
-
TAGS=$(python3 -c "import json; [print(' '.join(t.get('tags',[]))) for t in json.load(open('$TASKS_FILE'))['tasks'] if t['id']=='$TID']")
393
+
AGENT=$(python3 -c "import json; [print(t['agent']) for t in json.load(open('$TASKS_FILE'))['tasks'] if t['id']=='$TID']")
394
+
EXPERTS=$(python3 -c "import json; [print(','.join(t['moeExperts'])) for t in json.load(open('$TASKS_FILE'))['tasks'] if t['id']=='$TID']")
381
395
CRITERIA=$(python3 -c "import json; [print('\n'.join('- ' + a for a in t['acceptanceCriteria'])) for t in json.load(open('$TASKS_FILE'))['tasks'] if t['id']=='$TID']")
-**Verify each task against acceptance criteria** — Don't mark done without checking
436
437
-**Fix problems at the source** — If T005 fails because T002 is buggy, fix T002
437
438
-**Report progress clearly** — Phase + task status so the user knows what's happening
438
-
-**Adjust expert mix per task** — Auth tasks need `security`, UI tasks don't
439
+
-**Use explicit agent and moeExperts from tasks.json** — Read them directly, don't infer. They were assigned during `prd-to-tasks` step 6 for a reason.
439
440
-**Keep the user in the loop** — Especially when a task is blocked or needs clarification
440
441
441
442
### DON'Ts
@@ -481,7 +482,7 @@ Last Updated: 2026-04-27 14:30
0 commit comments