Skip to content

Commit 5f5d12c

Browse files
committed
Point Skywalker spawn targets at the build director
1 parent 7f91077 commit 5f5d12c

10 files changed

Lines changed: 71 additions & 53 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
1515

1616
### Directors
1717

18+
- **Skywalker spawn-target for product code is `build`.** Prompt and
19+
skill copy that still said `spawn implement` / `task(agent="implement")`
20+
now dispatch `build`. Intent graph `explore → implement → critique`
21+
and slash `/implement` are unchanged.
22+
1823
- **Skywalker may DIY tiny product writes (CL-6629).** Path tools
1924
(`write_file` / `edit_file` / `delete_file`) remount on the primary
2025
session. Tiny/single-file/one-route bounded edits are the exception;

plugins/corbits-skills/skills/dispatch/SKILL.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
name: dispatch
33
user-invocable: false
44
argument-hint: "[<name> | dispatch/<name>/ | dispatch/<name>/dispatch.yaml | <spec-file> ]"
5-
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.
66
---
77

88
# Dispatch
99

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.
1111

1212
Orchestrate parallel director runs across a dependency graph. Fan out work, fan in reports, critique, verify, re-dispatch fixes, and synthesize until done.
1313

1414
Hard cap: **at most 4 workers at once** unless the operator explicitly asks for a wider fan-out. Track progress with `manage_tasks`.
1515

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.
1717

1818
## Input resolution
1919

@@ -33,13 +33,13 @@ If the spec is vague, incomplete, or contradictory: stop and report Blockers. Do
3333
|---|---|
3434
| Map the codebase, gather facts | `task(agent="explore")` |
3535
| 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")` |
37-
| Ship product code + tests | `task(agent="implement")` |
36+
| Write `dispatch.yaml` / `plan.md` / status artifacts (mechanical brief; no product feature work) | `task(agent="build")` |
37+
| Ship product code + tests | `task(agent="build")` |
3838
| Review a landed task (defects, evidence, no fix) | `task(agent="critique")` |
3939
| Architecture judgment before a large DAG | `task(agent="greybeard")` |
4040
| Independent suite / repro evidence | `task(agent="tester")` |
4141

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.
4343

4444
Prefer typed briefs: `intent`, `success_criteria`, `do_not`, `report_focus`, and `agent`.
4545

@@ -49,9 +49,9 @@ Use **explore** when the task is pure research. No code changes. Output is findi
4949

5050
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.
5151

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.
5353

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.
5555

5656
Classify each product task as `feature` or `bugfix`:
5757

@@ -61,25 +61,25 @@ Classify each product task as `feature` or `bugfix`:
6161

6262
## Phase 1: Planning
6363

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.
6565

6666
1. If the spec still needs an ordered eng plan, spawn `task(agent="plan")`. Do not skip this when requirements are large or ambiguous.
6767
2. Spawn `explore` workers only as needed to map scope. Distinct path/package lenses if parallel.
6868
3. Consult `greybeard` before large multi-lane work when architecture is in play.
6969
4. Break the goal into discrete tasks, each small enough for one director.
7070
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.
7272
7. Detect verify commands from `package.json`, Makefile, or project docs.
7373
8. Add per-task verification to each plan (build for compiled changes, tests for test-writing tasks).
7474
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).
7676
11. Seed `manage_tasks` with one item per DAG task (plus plan / verify / critique items as needed).
7777

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?"
7979

8080
## Phase 2: Directory structure
8181

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.
8383

8484
```
8585
dispatch/
@@ -125,7 +125,7 @@ commits:
125125
tasks:
126126
- id: 1a-extract_auth_module
127127
type: feature # feature | bugfix (omit for explore)
128-
agent: implement # implement | intern | explore
128+
agent: build # build | intern | explore
129129
depends-on: []
130130
receives: [] # subset of depends-on; default = depends-on
131131
status: pending # pending | dispatched | completed | failed | fixing
@@ -134,7 +134,7 @@ tasks:
134134

135135
- id: 2a-integrate_modules
136136
type: feature
137-
agent: implement
137+
agent: build
138138
depends-on: [1a-extract_auth_module, 1b-extract_logging_module]
139139
status: pending
140140
```
@@ -143,7 +143,7 @@ Task statuses: `pending` → `dispatched` → `completed` | `failed` | `fixing`.
143143

144144
### Task `plan.md`
145145

146-
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`.
147147

148148
Every product-task brief must tell the worker:
149149

@@ -165,16 +165,16 @@ Before any product spawn:
165165

166166
Empty task list → mark the run `completed` and report. Do not invent work.
167167

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).
169169

170170
## Phase 4: Execute the DAG
171171

172172
1. **Ready set:** `pending` tasks whose `depends-on` are all `completed`.
173173
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.
176176
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.
178178
7. Repeat until no pending tasks remain, or deadlock / all remaining failed → stop and ask.
179179

180180
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
186186
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.
187187

188188
- 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.
190190
- Do not declare done on a worker "ready" that ignored blocking critique or verify.
191191

192192
## Phase 6: Complete
@@ -206,8 +206,8 @@ Re-resolve input to the existing `dispatch/<name>/`. Re-validate the remaining D
206206

207207
## Non-negotiables
208208

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.
210210
- `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.
212212
- Progress: `manage_tasks`.
213213
- At most 4 workers at once unless the operator asks for more.

plugins/corbits-skills/skills/implement/SKILL.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: implement
3-
description: Disciplined per-commit workflow — Skywalker spawns greybeard, implement, intern/tester, critique.
3+
description: Disciplined per-commit workflow — Skywalker spawns greybeard, build, intern/tester, critique.
44
---
55

66
# Implement
@@ -26,7 +26,7 @@ Track commit-sized units with `manage_tasks`. One item per unit that will become
2626

2727
## Per-commit spawn loop
2828

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.
3030

3131
### 1. Review — greybeard
3232

@@ -38,18 +38,18 @@ Send:
3838
- Design decisions and trade-offs
3939
- Uncertainties
4040

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.
4242

4343
### 2. Implement
4444

45-
`task(agent="implement")` with a typed brief:
45+
`task(agent="build")` with a typed brief:
4646

4747
- `intent`
4848
- `success_criteria`
4949
- `do_not`
5050
- `report_focus`
5151

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.
5353

5454
**Features:** tests ship with the change. The test asserts the new behavior, not merely that the process did not crash.
5555

@@ -62,20 +62,20 @@ Keep scope to this unit. Additional work becomes a later `manage_tasks` item, no
6262
- `intern` — mechanical full pipeline
6363
- `tester` — suite / repro
6464

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.
6666

6767
### 4. Critique
6868

6969
`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.
7070

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.
7272

7373
When critique is clean (or remaining findings are acknowledged judgment calls), mark the unit done and start the next.
7474

7575
## Hard rules
7676

7777
- 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")`.
7979
- Track only with `manage_tasks`.
8080
- Do not shortcut the loop. Skipping greybeard “because this is simple” or skipping critique “because the build passed” defeats the recipe.
8181
- Build must pass before treating a unit as done.

0 commit comments

Comments
 (0)