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
description: Multi-lane DAG orchestration. Skywalker recipe — use_skill("dispatch"). Spawns explore, intern, implement, plan, and critique. DAG product tasks go through implement; Skywalker may DIY tiny edits outside the DAG.
5
+
description: Multi-lane DAG orchestration. Skywalker recipe — use_skill("dispatch"). Spawns explore, intern, build, plan, and critique. DAG product tasks go through build; Skywalker may DIY tiny edits outside the DAG.
6
6
---
7
7
8
8
# Dispatch
9
9
10
-
You are Skywalker. This skill is loadable with `use_skill("dispatch")`. Follow this recipe. DAG product tasks go through implement workers. Do not write `dispatch.yaml` or `plan.md` yourself (intern cannot write; implement writes manifests). Tiny / single-file / one-route product edits outside this DAG may be DIY with write_file/edit_file/delete_file.
10
+
You are Skywalker. This skill is loadable with `use_skill("dispatch")`. Follow this recipe. DAG product tasks go through build workers. Do not write `dispatch.yaml` or `plan.md` yourself (intern cannot write; build writes manifests). Tiny / single-file / one-route product edits outside this DAG may be DIY with write_file/edit_file/delete_file.
11
11
12
12
Orchestrate parallel director runs across a dependency graph. Fan out work, fan in reports, critique, verify, re-dispatch fixes, and synthesize until done.
13
13
14
14
Hard cap: **at most 4 workers at once** unless the operator explicitly asks for a wider fan-out. Track progress with `manage_tasks`.
15
15
16
-
Closed directors used here: `explore`, `intern`, `implement`, `plan`, `critique`. Optional consults: `greybeard`, `tester`. Never a catch-all worker. DAG node agents are `explore`, `intern`, and `implement` only.
16
+
Closed directors used here: `explore`, `intern`, `build`, `plan`, `critique`. Optional consults: `greybeard`, `tester`. Never a catch-all worker. DAG node agents are `explore`, `intern`, and `build` only.
17
17
18
18
## Input resolution
19
19
@@ -33,13 +33,13 @@ If the spec is vague, incomplete, or contradictory: stop and report Blockers. Do
33
33
|---|---|
34
34
| Map the codebase, gather facts |`task(agent="explore")`|
35
35
| Eng plan from a spec (no ship) |`task(agent="plan")`|
36
-
| Write `dispatch.yaml` / `plan.md` / status artifacts (mechanical brief; no product feature work) |`task(agent="implement")`|
| Review a landed task (defects, evidence, no fix) |`task(agent="critique")`|
39
39
| Architecture judgment before a large DAG |`task(agent="greybeard")`|
40
40
| Independent suite / repro evidence |`task(agent="tester")`|
41
41
42
-
Skywalker classifies, spawns, tracks, and synthesizes. Path tools (`write_file` / `edit_file` / `delete_file`) are mounted for DIY tiny/bounded product edits; spawn remains the default for DAG product work. Durable orchestration artifacts (`dispatch.yaml`, `plan.md`, status) still go through implement — intern does not have write tools (`INTERN_TOOLS` = run_shell, read_file, list_dir). Do not spawn a blob agent to author the manifest. Do not write those manifests on Skywalker.
42
+
Skywalker classifies, spawns, tracks, and synthesizes. Path tools (`write_file` / `edit_file` / `delete_file`) are mounted for DIY tiny/bounded product edits; spawn remains the default for DAG product work. Durable orchestration artifacts (`dispatch.yaml`, `plan.md`, status) still go through build — intern does not have write tools (`INTERN_TOOLS` = run_shell, read_file, list_dir). Do not spawn a blob agent to author the manifest. Do not write those manifests on Skywalker.
43
43
44
44
Prefer typed briefs: `intent`, `success_criteria`, `do_not`, `report_focus`, and `agent`.
45
45
@@ -49,9 +49,9 @@ Use **explore** when the task is pure research. No code changes. Output is findi
49
49
50
50
Use **intern** when the work is mechanical and well-specified: git commit after a level fans in, exact shell, mechanical git. Intern cannot write files.
51
51
52
-
Use **implement** when the task ships product code — including work that needs judgment, new abstractions, or tests — and for mechanical writes of `dispatch.yaml` / `plan.md` / status artifacts (write tools; intern does not have them). There is no catch-all implementation agent.
52
+
Use **build** when the task ships product code — including work that needs judgment, new abstractions, or tests — and for mechanical writes of `dispatch.yaml` / `plan.md` / status artifacts (write tools; intern does not have them). There is no catch-all implementation agent.
53
53
54
-
Critique is not a DAG node agent type. After implement (and after non-trivial intern landings), spawn `task(agent="critique")` with the task's objective, paths, and diff. Simple intern tasks may skip critique.
54
+
Critique is not a DAG node agent type. After build (and after non-trivial intern landings), spawn `task(agent="critique")` with the task's objective, paths, and diff. Simple intern tasks may skip critique.
55
55
56
56
Classify each product task as `feature` or `bugfix`:
57
57
@@ -61,25 +61,25 @@ Classify each product task as `feature` or `bugfix`:
61
61
62
62
## Phase 1: Planning
63
63
64
-
Runs when the input is a spec (or a request with no existing manifest). The spec should be complete enough that an implement worker could succeed from it.
64
+
Runs when the input is a spec (or a request with no existing manifest). The spec should be complete enough that a build worker could succeed from it.
65
65
66
66
1. If the spec still needs an ordered eng plan, spawn `task(agent="plan")`. Do not skip this when requirements are large or ambiguous.
67
67
2. Spawn `explore` workers only as needed to map scope. Distinct path/package lenses if parallel.
68
68
3. Consult `greybeard` before large multi-lane work when architecture is in play.
69
69
4. Break the goal into discrete tasks, each small enough for one director.
70
70
5. Identify dependencies (DAG edges). Same-file writers at the same level must be merged or serialized via `depends-on`.
71
-
6. Assign `explore` | `intern` | `implement` per the guide above.
71
+
6. Assign `explore` | `intern` | `build` per the guide above.
72
72
7. Detect verify commands from `package.json`, Makefile, or project docs.
73
73
8. Add per-task verification to each plan (build for compiled changes, tests for test-writing tasks).
74
74
9. Default commit strategy is **per-task** (debuggable). Use grouped only when the operator wants a cleaner history **and** Phase 5 will catch issues.
75
-
10. Mark which tasks need critique (complex implement → yes; simple intern → no; when unsure, yes).
75
+
10. Mark which tasks need critique (complex build → yes; simple intern → no; when unsure, yes).
76
76
11. Seed `manage_tasks` with one item per DAG task (plus plan / verify / critique items as needed).
77
77
78
-
If requirements are not actionable, stop. Ask: "Can an implement worker succeed with only this information?"
78
+
If requirements are not actionable, stop. Ask: "Can a build worker succeed with only this information?"
79
79
80
80
## Phase 2: Directory structure
81
81
82
-
Have **implement** write the run tree (mechanical brief; no product feature work). Do not write these files on Skywalker. Do not use intern — intern cannot write files. Do not use a catch-all worker.
82
+
Have **build** write the run tree (mechanical brief; no product feature work). Do not write these files on Skywalker. Do not use intern — intern cannot write files. Do not use a catch-all worker.
83
83
84
84
```
85
85
dispatch/
@@ -125,7 +125,7 @@ commits:
125
125
tasks:
126
126
- id: 1a-extract_auth_module
127
127
type: feature # feature | bugfix (omit for explore)
128
-
agent: implement#implement | intern | explore
128
+
agent: build#build | intern | explore
129
129
depends-on: []
130
130
receives: [] # subset of depends-on; default = depends-on
Implement writes one per task (mechanical brief). Include: objective, requirements covered, context (paths and symbols — no line numbers, no dispatch-dir cross-refs), files to modify, constraints, verification (test-first for bugfix), and `do_not`.
146
+
Build writes one per task (mechanical brief). Include: objective, requirements covered, context (paths and symbols — no line numbers, no dispatch-dir cross-refs), files to modify, constraints, verification (test-first for bugfix), and `do_not`.
147
147
148
148
Every product-task brief must tell the worker:
149
149
@@ -165,16 +165,16 @@ Before any product spawn:
165
165
166
166
Empty task list → mark the run `completed` and report. Do not invent work.
167
167
168
-
Present the DAG (ids, agents, deps, critique flags, verify commands, commit strategy) to the operator. Wait for go-ahead on large or ambiguous runs. Then set status `in-progress` (implement updates the manifest if it is on disk).
168
+
Present the DAG (ids, agents, deps, critique flags, verify commands, commit strategy) to the operator. Wait for go-ahead on large or ambiguous runs. Then set status `in-progress` (build updates the manifest if it is on disk).
169
169
170
170
## Phase 4: Execute the DAG
171
171
172
172
1. **Ready set:** `pending` tasks whose `depends-on` are all `completed`.
173
173
2. **Batch:** take a safe parallel subset, **at most 4 live workers** (including in-flight critique). Same-file writers and shared mutable state (build artifacts, test DBs) must not share a batch — serialize with `depends-on`.
174
-
3. **Spawn** each task with `task(agent="<id from manifest>")`. Inject upstream reports (not a rewritten `plan.md`) into the brief. Split ownership by path/package when two implement workers run together.
175
-
4. **Fan in:** trust the worker report (and `output.yaml` when implement wrote one). Missing report or `status: failed` → mark `failed`. Do not re-fan-out an identical brief; change `success_criteria` / `do_not` or tell the operator.
174
+
3. **Spawn** each task with `task(agent="<id from manifest>")`. Inject upstream reports (not a rewritten `plan.md`) into the brief. Split ownership by path/package when two build workers run together.
175
+
4. **Fan in:** trust the worker report (and `output.yaml` when build wrote one). Missing report or `status: failed` → mark `failed`. Do not re-fan-out an identical brief; change `success_criteria` / `do_not` or tell the operator.
176
176
5. **Level commit:** after a level's product tasks self-report complete, intern commits per the strategy (per-task default). Workers must not have committed.
177
-
6. **Critique:** for tasks with `critique.enabled`, spawn `task(agent="critique")` on that commit/diff + objective. Blocking findings → re-dispatch `implement` with those findings in `success_criteria` / `do_not` (status `fixing`). Cap re-fix rounds (1–2), then report Blockers.
177
+
6. **Critique:** for tasks with `critique.enabled`, spawn `task(agent="critique")` on that commit/diff + objective. Blocking findings → re-dispatch `build` with those findings in `success_criteria` / `do_not` (status `fixing`). Cap re-fix rounds (1–2), then report Blockers.
178
178
7. Repeat until no pending tasks remain, or deadlock / all remaining failed → stop and ask.
179
179
180
180
Keep `manage_tasks` in sync as items move `todo` → `doing` → `done` / stay blocked.
@@ -186,7 +186,7 @@ If the working tree has unrelated uncommitted changes before Phase 4, ask the op
186
186
Must `task(agent="tester")` for the suite (or intern for one named mechanical command). Do not run the full verify pipeline on the parent via Skywalker `run_shell`. Compare against any baseline you captured.
187
187
188
188
- Green, or same failures as baseline → proceed.
189
-
- New failures → attribute to a task/commit, re-dispatch `implement` on that lane, re-verify. Cap rounds, then Blockers.
189
+
- New failures → attribute to a task/commit, re-dispatch `build` on that lane, re-verify. Cap rounds, then Blockers.
190
190
- Do not declare done on a worker "ready" that ignored blocking critique or verify.
191
191
192
192
## Phase 6: Complete
@@ -206,8 +206,8 @@ Re-resolve input to the existing `dispatch/<name>/`. Re-validate the remaining D
206
206
207
207
## Non-negotiables
208
208
209
-
- You are Skywalker. Spawn directors. Do not implement product features. Do not author dispatch YAML/plan files yourself or via a catch-all worker. Durable orchestration files go through implement.
209
+
- You are Skywalker. Spawn directors. Do not implement product features. Do not author dispatch YAML/plan files yourself or via a catch-all worker. Durable orchestration files go through build.
210
210
- `use_skill("dispatch")`loads this recipe. It is a command.
211
-
- Agents: `explore`, `intern`, `implement` only for DAG nodes. Critique via `task(agent="critique")`. Plan via `task(agent="plan")` when a spec needs an eng plan first.
211
+
- Agents: `explore`, `intern`, `build` only for DAG nodes. Critique via `task(agent="critique")`. Plan via `task(agent="plan")` when a spec needs an eng plan first.
212
212
- Progress: `manage_tasks`.
213
213
- At most 4 workers at once unless the operator asks for more.
@@ -26,7 +26,7 @@ Track commit-sized units with `manage_tasks`. One item per unit that will become
26
26
27
27
## Per-commit spawn loop
28
28
29
-
For each unit, run these steps in order. Do not skip. When this loop is running, do not DIY the unit — spawn implement.
29
+
For each unit, run these steps in order. Do not skip. When this loop is running, do not DIY the unit — spawn build.
30
30
31
31
### 1. Review — greybeard
32
32
@@ -38,18 +38,18 @@ Send:
38
38
- Design decisions and trade-offs
39
39
- Uncertainties
40
40
41
-
Adjust the plan from the report, then spawn implement. Greybeard is for approach, not execution.
41
+
Adjust the plan from the report, then spawn build. Greybeard is for approach, not execution.
42
42
43
43
### 2. Implement
44
44
45
-
`task(agent="implement")` with a typed brief:
45
+
`task(agent="build")` with a typed brief:
46
46
47
47
-`intent`
48
48
-`success_criteria`
49
49
-`do_not`
50
50
-`report_focus`
51
51
52
-
**Bug fixes:** tell implement to start from a failing test — write the repro, confirm it fails, then fix, then confirm it passes. If the test does not fail first, the bug is not understood.
52
+
**Bug fixes:** tell build to start from a failing test — write the repro, confirm it fails, then fix, then confirm it passes. If the test does not fail first, the bug is not understood.
53
53
54
54
**Features:** tests ship with the change. The test asserts the new behavior, not merely that the process did not crash.
55
55
@@ -62,20 +62,20 @@ Keep scope to this unit. Additional work becomes a later `manage_tasks` item, no
62
62
-`intern` — mechanical full pipeline
63
63
-`tester` — suite / repro
64
64
65
-
Do not move forward with a broken build. If failures come from this unit, re-dispatch implement. If they are pre-existing and unrelated, report Blockers and stop. Do not substitute a partial compile for the full gate.
65
+
Do not move forward with a broken build. If failures come from this unit, re-dispatch build. If they are pre-existing and unrelated, report Blockers and stop. Do not substitute a partial compile for the full gate.
66
66
67
67
### 4. Critique
68
68
69
69
`task(agent="critique")` on the diff. Include the intent agreed with greybeard so critique evaluates plan vs execution, not only surface quality. Limit findings to this unit; pre-existing issues in touched files are out of scope unless they block the gate.
70
70
71
-
If critique is **blocking**, re-dispatch implement once or twice with those findings in `success_criteria` / `do_not`, then re-run the build gate and critique. After two re-fix rounds, report Blockers — do not loop forever.
71
+
If critique is **blocking**, re-dispatch build once or twice with those findings in `success_criteria` / `do_not`, then re-run the build gate and critique. After two re-fix rounds, report Blockers — do not loop forever.
72
72
73
73
When critique is clean (or remaining findings are acknowledged judgment calls), mark the unit done and start the next.
74
74
75
75
## Hard rules
76
76
77
77
- Tiny / single-file / one-route / clear bounded edits: DIY with write_file/edit_file/delete_file. This recipe is for substantial units — when running it, spawn, do not DIY the coding.
78
-
- Spawn with `task(agent="greybeard")`, `task(agent="implement")`, `task(agent="intern")` or `task(agent="tester")`, and `task(agent="critique")`.
78
+
- Spawn with `task(agent="greybeard")`, `task(agent="build")`, `task(agent="intern")` or `task(agent="tester")`, and `task(agent="critique")`.
79
79
- Track only with `manage_tasks`.
80
80
- Do not shortcut the loop. Skipping greybeard “because this is simple” or skipping critique “because the build passed” defeats the recipe.
0 commit comments