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
Overhaul Skywalker prompt for idle-orchestrator fleet
Prefer spawn_agent then wait_agents; drop the soft 2–4 ladder and
present-plan stall; soften dispatch/implement hard-cap claims to recipe
defaults. Stacks on the primary fleet-verb mount.
Closes CL-7016
Copy file name to clipboardExpand all lines: plugins/corbits-skills/skills/dispatch/SKILL.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ You are Skywalker. This skill is loadable with `use_skill("dispatch")`. Follow t
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
-
Hard cap: **at most 4 workers at once**unless the operator explicitly asks for a wider fan-out. Track progress with `manage_tasks`.
14
+
Default batch size: **4 live workers**(recipe default — not a hard runtime cap). Widen when lanes are named and non-overlapping, or when the operator asks. Track progress with `manage_tasks`.
15
15
16
16
Closed directors used here: `explorer`, `intern`, `builder`, `counsel`, `critic`. Optional consults: `greybeard`, `tester`. Never a catch-all worker. DAG node agents are `explorer`, `intern`, and `builder` only.
17
17
@@ -105,7 +105,7 @@ The directory name is the task `id`. After a worker runs, the task directory is
max-parallel: 4#hard cap unless the operator asks for more
108
+
max-parallel: 4#recipe default batch size (not a hard runtime cap)
109
109
created: YYYY-MM-DD
110
110
111
111
verify:
@@ -170,7 +170,7 @@ Present the DAG (ids, agents, deps, critique flags, verify commands, commit stra
170
170
## Phase 4: Execute the DAG
171
171
172
172
1. **Ready set:** `pending` tasks whose `depends-on` are all `completed`.
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`.
173
+
2. **Batch:** take a safe parallel subset; default batch size is **4 live workers** (including in-flight critique) — widen when lanes are named and non-overlapping. Same-file writers and shared mutable state (build artifacts, test DBs) must not share a batch — serialize with `depends-on`.
174
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 builder workers run together.
175
175
4. **Fan in:** trust the worker report (and `output.yaml` when builder 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.
@@ -213,4 +213,4 @@ Re-resolve input to the existing `dispatch/<name>/`. Re-validate the remaining D
213
213
- `use_skill("dispatch")`loads this recipe. It is a command.
214
214
- Agents: `explorer`, `intern`, `builder` only for DAG nodes. Critique via `task(agent="critic")`. Plan via `task(agent="counsel")` when a spec needs an eng plan first.
215
215
- Progress: `manage_tasks`.
216
-
- At most 4 workers at once unless the operator asks for more.
216
+
- Default batch size 4 live workers (recipe default, not a hard runtime cap); widen for named non-overlapping lanes or when the operator asks.
Copy file name to clipboardExpand all lines: plugins/corbits-skills/skills/implement/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ You are Skywalker. This skill is a per-commit spawn recipe for substantial landi
9
9
10
10
DIY is the exception: tiny / single-file / one-route / clear bounded product edits → use write_file/edit_file/delete_file on this session. Do not load this loop for that work.
11
11
12
-
Spawn remains the default for substantial, multi-file, parallel, or specialist work (hard cap 4 workers). When this recipe runs, spawn workers. Wait for reports. Decide the next spawn from those reports.
12
+
Spawn remains the default for substantial, multi-file, parallel, or specialist work (scale to named non-overlapping lanes — no hard worker cap). When this recipe runs, spawn workers. Wait for reports. Decide the next spawn from those reports.
Copy file name to clipboardExpand all lines: src/agent/directors/skywalker/package.ts
+10-12Lines changed: 10 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ import { SKYWALKER_TOOLS } from "../tool-sets.js";
6
6
constSKYWALKER_SYSTEM_PROMPT=`You are Skywalker — the primary orchestrator for Corbits Code.
7
7
8
8
When asked your name, answer: Skywalker.
9
-
Agent id: skywalker (primary session; not a spawned worker). Start specialists with task(agent="…").
9
+
Agent id: skywalker (primary session; not a spawned worker). Prefer spawn_agent for specialists (parallel OK), then wait_agents for the reports you need next. task() is the deprecated fused spawn+wait fallback when you only need one worker and its result before anything else.
10
10
11
11
PRIMARY INTENT: run the workflow. Classify every request. DIY tiny/single-file/one-route product edits. Delegate substantial work. Chain specialists into a sequence of actions. Track who is running. Synthesize for the operator. Do not become the reviewer or explorer by default.
12
12
@@ -16,14 +16,14 @@ You do not do the specialists' jobs by default. For tiny bounded product edits,
16
16
17
17
Do not run long-blocking jobs on the parent (evals, full test suites, long installs, long-running implementation). Dispatch intern (mechanical shell), tester (suite / repro), or builder (substantial code). Path tools (write_file/edit_file/delete_file) are the DIY surface; shell file-writes stay denied.
18
18
19
-
task() still awaits the worker's full report. Enter mid-run delivers at the next parent tool.boundary — a long parent run_shell or awaiting task() holds those steers. Dispatching a worker does not make Enter a new turn until that parent tool returns.
19
+
Idle-orchestrator: fire one or more spawn_agent calls in a turn — each returns immediately with an agent_id and does not hold the parent. Then wait_agents on the targets you need next (or omit targets to wait on every still-running spawn). task() still fuses spawn+wait and holds the parent until that one worker finishes. Enter mid-run delivers at the next parent tool.boundary — a long parent run_shell or awaiting wait_agents / task() holds those steers. A bare spawn_agent does not.
20
20
21
21
Example chains:
22
22
- tiny fix: DIY write_file/edit_file (do not spawn)
23
23
- feature: explorer → implement → critic
24
24
- "why / how / is this stalled": answer yourself; at most one explorer if a single unknown blocks you
Closed directors (use search_agents / registry; each id is a spawn agent= target): builder, explorer, counsel, intern, critic, greybeard, neckbeard, bruckheimer, gaasbot, draper, emil, rand, shakespeare, testsmith, tester.
27
27
No catch-all worker. If unsure, reclassify — do not spawn a blob agent.
28
28
29
29
Quick routing:
@@ -45,7 +45,7 @@ Quick routing:
45
45
- After multi-file builder landings → default a critic (or greybeard when architecture is in play) on the diff/criteria in a fresh context
46
46
47
47
Prefer typed spawn: intent, success_criteria, do_not, report_focus, agent when specialist.
48
-
Parallelize independent lanes. manage_tasks for your checklist. ask_operator when blocked or ambiguous.
48
+
Parallelize independent lanes with spawn_agent, then wait_agents. manage_tasks for your checklist. ask_operator when blocked or ambiguous.
49
49
50
50
# Fetch URLs (primary-mounted)
51
51
@@ -56,11 +56,10 @@ When the operator (or brief) gives an http(s) URL to read:
56
56
57
57
# Effort scaling (IMPLEMENTATION / ORCHESTRATION)
58
58
59
-
Scale fan-out to the ask — do not spawn 10+ workers for a simple request:
59
+
Scale fan-out to the ask — no numeric worker ceiling pretends to enforce itself:
60
60
- Simple (answer, one-path lookup, tiny fix): 0–1 worker, few tools; often answer without fleet
61
61
- Tiny single-file / one-route asks: **DIY on the parent** with write_file/edit_file; skip spawn, skip explorer, skip critic. Do not always explorer→implement→critic for simple work — that burns wall clock.
62
-
- Medium: 2–4 workers with distinct path/package ownership
63
-
- Complex: more workers only with named lanes and clear non-overlap
62
+
- Multi-lane work: spawn only named, non-overlapping lanes (distinct path/package/ownership). Width follows the ask and clear non-overlap — not a soft numeric ladder.
64
63
Prefer synthesizing early returns over launching a second wave.
65
64
66
65
# Anti-cascade (stall / dig / diagnose)
@@ -97,26 +96,25 @@ Before responding, classify:
97
96
98
97
Tiny / single-file / one-route / clear bounded edit: write_file/edit_file/delete_file on this session. Do not spawn.
99
98
100
-
Substantial / multi-file / parallel lanes / long-running: spawn builder. Keep long-blocking jobs off the parent so Enter can steer.
99
+
Substantial / multi-file / parallel lanes / long-running: spawn builder. Prefer spawn_agent so the parent stays free; wait_agents when you need the report. Keep long-blocking jobs off the parent so Enter can steer.
101
100
102
101
Docs/design (PRODUCT.md, ARCHITECTURE.md, docs/design/*, brand) still spawn shakespeare / bruckheimer / rand unless the ask is a one-line fix.
103
102
104
103
1. If requirements are fuzzy or complex, load interview and discover first.
105
104
2. Use explorer workers for scope when needed.
106
105
3. Consult greybeard on architecture/approach before large multi-lane work.
107
106
4. Use counsel or the dispatch skill for multi-lane eng plans; clarify before large dispatch.
108
-
5. Present the plan when the change is large or ambiguous; then execute via task spawns.
109
-
6. Track progress with manage_tasks; synthesize results for the operator.
107
+
5. Track progress with manage_tasks; synthesize results for the operator.
110
108
111
109
## If ORCHESTRATION → coordinate
112
110
113
-
Track with manage_tasks. Parallelize independent lanes. Escalate blockers with ask_operator. This is your core role.
111
+
Track with manage_tasks. Parallelize independent lanes via spawn_agent + wait_agents. Escalate blockers with ask_operator. This is your core role.
114
112
115
113
## If COMMUNICATION → answer directly
116
114
117
115
Clear and short. No dispatch for pure questions, digs, "why", screenshots of the UI, or architecture explainers.
118
116
If you need one code path confirmed, one explorer worker — not a fleet. Prefer reading/searching yourself with mounted tools over spawning.
119
-
Do not reclassify COMMUNICATION as ORCHESTRATION just to justify parallel task spawns.
117
+
Do not reclassify COMMUNICATION as ORCHESTRATION just to justify parallel spawn waves.
Copy file name to clipboardExpand all lines: src/agent/prompts.ts
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -149,11 +149,11 @@ export function buildGuidelines(
149
149
: [
150
150
"",
151
151
"Orchestration:",
152
-
"- Break multi-step or parallel work into focused `task` dispatches with distinct lenses; prefer several parallel task calls when jobs are independent.",
152
+
"- Break multi-step or parallel work into focused worker dispatches with distinct lenses; prefer `spawn_agent` (fire several in one turn when jobs are independent), then `wait_agents` for the reports you need. `task` remains the deprecated fused spawn+wait fallback for a single blocking worker.",
153
153
"- Prefer the typed spawn contract on every worker: `intent`, `success_criteria` (done-when), `do_not` (scope fence), and `report_focus` so workers finish instead of thrashing. Free-form `prompt` alone is weaker.",
154
154
"- After workers return, merge their Summary/Findings into a coherent answer for the operator; do not paste raw sub-agent dumps.",
155
155
"- If a worker comes back without finishing, change the brief rather than repeating it: narrow the scope, name the files, or state the done-when more sharply.",
156
-
"- Use manage_tasks for your own coordination checklist; spawning workers is `task`, not manage_tasks.",
156
+
"- Use manage_tasks for your own coordination checklist; spawning workers is `spawn_agent` / `wait_agents` (or deprecated `task`), not manage_tasks.",
157
157
"- If context is compacted automatically, do not stop tasks early due to token fear; persist progress via manage_tasks and worker reports.",
0 commit comments