cursor-multitask — Parallel Fan-Out Routing
Encoded-preference skill. Picks the right parallelism engine for a fan-out task.
The expensive mistake is reaching for an in-editor GUI feature when a headless,
deterministic, observable fan-out is what the task actually needs.
Scope
The engines in full: Cursor /multitask, headless cursor-agent, Claude Workflow, cmux.
TL;DR — the one decision
Cursor /multitask is an in-EDITOR (GUI) slash command. It is NOT invocable from the headless cursor-agent CLI. (Verified 2026-06-05 on Cursor 3.3.2 / cursor-agent 2026.06.04: absent from cursor-agent --help, no flag. In -p print mode the /multitask text is passed through as a PLAIN PROMPT to a single agent — transcript JSONL confirms one thread, zero subagents — and the model answers all the parts inline while claiming "ran in parallel." It looks like it worked. It didn't.) So if you are an orchestrator running in a terminal/cmux and you want parallelism, /multitask is not your tool — it requires a human sitting in the Cursor Agents Window. Use headless shell fan-out, the Workflow tool, or the cmux fleet instead.
Cursor is Auto-only in every engine in this skill. Never pass -m/--model or a
model field: pinned Cursor drains the shared subscription pool fast.
GUI prompt contract (when Etan asks for "a prompt")
When Etan asks for "a prompt" for the Cursor GUI /multitask:
- Deliver ONE complete self-contained paste-ready inline text — the full prompt in chat, ready to paste.
- No file indirection — no "Read X first", no prompt packs, no path references he must open separately.
"Read X first" is for agent dispatch briefs only, not for GUI prompts Etan pastes himself.
Evidence: corrected twice in 3 min — "I am using the GUI, give me a full prompt" (paraphrased; ea8514a2 [950]).
Dispatch hygiene (orchestrator-written worker prompts)
- Never hardcode file-derived numbers into async worker prompts (counts, baselines, finding totals). Instruct workers to read the file — stale
838/47/29-class numbers corrupted census synthesis twice.
- Validate scope/ownership with the human BEFORE expensive per-repo fan-out — confirm repos/domains in scope; don't burn a full cmux fork audit on out-of-scope repos.
- Slow ≠ stalled — read why a worker is slow (
read_screen, collab, PR activity) before spawning a duplicate; duplicate auditors overwrite originals.
- Never mandate sleep-poll loops in dispatched prompts — use
wait_for, file contracts, or cron with live-query-first frames (/cron-payload-discipline).
WHEN-TO-USE MATRIX
| Task shape |
Engine |
Why |
| Human is in the Cursor editor, wants the foreground free, has independent prompts |
Cursor /multitask |
Async subagents, Agents-panel visualization, shared parent context/rules/MCP, results aggregate back. v0 — no conflict locking; keep tasks read-heavy or non-overlapping. |
| Headless / scripted / CI / orchestrator-in-terminal, N independent units, want determinism + token accounting |
Headless cursor-agent shell fan-out (& + wait, or find | while read) |
You control concurrency, capture per-agent usage tokens via --output-format json, exit codes. ~2x wall-clock on 3 tasks (measured: 14s vs 28s). |
| Inside a Claude session, work decomposes into independent subtasks, want the parent to make the parallelism call |
Claude Workflow / Agent tools |
Implicit fan-out, subagents share plan/rate-limit, summaries return to parent. Best when you want Claude to decide what's parallel. |
| Need visible, multi-vendor workers (Cursor + Codex + Gemini side-by-side), long-running, human-watchable |
cmux fleet (/cmux-agents, repoGolem launchers) |
Etan wants to SEE agents working. Multi-vendor, persistent, monitorable. Heavier setup. |
| Single coherent edit, OR step B needs step A's output |
None — run serially in one agent |
Parallelism wastes tokens on work that gets redone. |
Explicit vs implicit (the control axis)
/multitask = explicit: you list the prompts (||| separator), you know what's parallel.
- Workflow tool / Claude subagents = implicit: you hand a high-level task, the agent decides the split.
- Pick explicit when you already know the independent units; implicit when delegating the decomposition itself.
INVOCATION RECIPES
A. Cursor /multitask (GUI only)
- Open the Agents Window:
Cmd+Shift+P → Agents Window (or the agent input dropdown).
- Type
/multitask, then your read-only prompts separated by |||:
/multitask Audit auth tests for coverage gaps ||| Audit auth docs for missing setup ||| Inspect type-checker errors without edits
- Each prompt becomes its own async subagent (own context window, own system prompt, shared parent rules/MCP). Watch them in the Agents panel; results aggregate back to the parent thread.
- Controls (Settings → Subagents): Leave the model control at Auto/default; never select a specific Explore model or enable Max Mode. Adjust only the concurrency cap and cost ceiling. Flags reported by users:
/multitask --max 3, /multitask --budget 50000, /multitask --resume.
- Gotchas: v0 — no automatic write-conflict locking (Cursor's words: agents "done a pretty good job" but nothing formal). Subagents cannot nest another
/multitask (blast radius capped at one fan-out level). Default 10-min per-subagent timeout. NOT scriptable, NOT headless.
B. Headless cursor-agent shell fan-out (the orchestrator's tool)
# N independent units in parallel; capture per-agent tokens + exit codes
for item in "$@"; do
# Cursor stays on Auto: never add -m/--model.
cursor-agent -p --force --output-format json \
"Classify $item as POSITIVE/NEGATIVE, one word" > "out.$item.json" &
done
wait
# each out.*.json has .result and .usage.{inputTokens,outputTokens}
--force/--yolo is REQUIRED non-interactively (bypasses workspace-trust + approval prompts).
--output-format json → structured result + usage token accounting; stream-json for live progress.
- Concurrency = how many
& you launch (add a semaphore/xargs -P N to cap). Deterministic, CI-safe.
C. Claude Workflow tool / parallel subagents
- Use the Claude Workflow/Agent tools when you have 2+ independent, no-shared-state tasks and want Claude to fan them out. Subagents return summaries to the parent; counts against your plan rate limit, not usage billing.
D. cmux fleet (visible multi-vendor)
- Invoke
/cmux-agents. Use when the human wants to watch heterogeneous workers. See also /agent-routing (Cursor=gather, Codex=implement, Claude=orchestrate).
GOTCHAS / ANTI-PATTERNS
- Do NOT tell a headless agent or a terminal orchestrator to "use
/multitask" — the slash command is not recognized; the text degrades to a plain prompt handled by ONE agent that may falsely report it parallelized. Success-looking output ≠ subagents ran. This is the #1 misroute this skill exists to prevent.
- Do NOT model-pin any Cursor path, including internal/headless fan-out.
- Do NOT parallelize sequentially-dependent steps — wasted tokens.
/multitask v0 has no write-conflict locking — keep parallel writes to disjoint files, or prefer worktrees (Cursor's own worktree feature, or headless fan-out into separate dirs).
- Each subagent ≈ one parent-context-window of overhead. On usage-based pricing this adds up — cap with
--max/--budget (GUI) or a -P semaphore (headless).
- Discovery-then-change pattern: fan out the discovery phase (read-heavy, naturally parallel), then make the changes in a single agent holding the whole picture.
If this skill's own dispatch exhausts a shared quota, report that dispatch as
the cause; never relabel the resulting error as an external finding.
Compact Instructions
- Preserve: the GUI-only verdict for
/multitask, the when-to-use matrix routing rules, the headless fan-out recipe (B), the measured 2x wall-clock figure, and the "headless agents silently ignore /multitask" gotcha.
- Discard: raw
cursor-agent --help dumps, per-run token JSON blobs, intermediate timing experiments, exact subagent model enum lists (they churn between Cursor versions — re-verify against --help / changelog when needed).
- Re-verify on Cursor version bump: whether
/multitask ever gains a headless CLI surface (cursor-agent --help | grep -i multitask). If it does, update the matrix.
Integration Points
/agent-routing — decides Cursor vs Codex vs Claude by task TYPE (gather/implement/orchestrate). This skill decides the PARALLELISM ENGINE once you know it's a fan-out. Use together.
/cmux-agents — the visible-fleet implementation referenced in row 4.
- Claude's built-in Workflow/Agent tools — the in-session fan-out path (row 3).
1---2name: cursor-multitask3description: Route fan-out work to the right engine: /multitask, cursor-agent, Claude Workflow, or cmux. Triggers: multitask, /multitask, parallel agents, fan out, in parallel, batch classify/audit. NOT for one edit or dependent steps.4---56# cursor-multitask — Parallel Fan-Out Routing78> Encoded-preference skill. Picks the right parallelism engine for a fan-out task.9> The expensive mistake is reaching for an in-editor GUI feature when a headless,10> deterministic, observable fan-out is what the task actually needs.1112## Scope1314The engines in full: Cursor /multitask, headless cursor-agent, Claude Workflow, cmux.1516## TL;DR — the one decision1718**Cursor `/multitask` is an in-EDITOR (GUI) slash command. It is NOT invocable from the headless `cursor-agent` CLI.** (Verified 2026-06-05 on Cursor 3.3.2 / cursor-agent 2026.06.04: absent from `cursor-agent --help`, no flag. In `-p` print mode the `/multitask` text is passed through as a PLAIN PROMPT to a single agent — transcript JSONL confirms one thread, zero subagents — and the model answers all the parts inline while *claiming* "ran in parallel." It looks like it worked. It didn't.) So if you are an orchestrator running in a terminal/cmux and you want parallelism, `/multitask` is **not your tool** — it requires a human sitting in the Cursor Agents Window. Use headless shell fan-out, the Workflow tool, or the cmux fleet instead.1920**Cursor is Auto-only in every engine in this skill.** Never pass `-m`/`--model` or a21model field: pinned Cursor drains the shared subscription pool fast.2223## GUI prompt contract (when Etan asks for "a prompt")2425When Etan asks for **"a prompt"** for the Cursor GUI `/multitask`:26271. Deliver **ONE complete self-contained paste-ready inline text** — the full prompt in chat, ready to paste.282. **No file indirection** — no "Read X first", no prompt packs, no path references he must open separately.293. `"Read X first"` is for **agent dispatch briefs only**, not for GUI prompts Etan pastes himself.3031Evidence: corrected twice in 3 min — *"I am using the GUI, give me a full prompt"* (paraphrased; ea8514a2 [950]).3233## Dispatch hygiene (orchestrator-written worker prompts)34351. **Never hardcode file-derived numbers** into async worker prompts (counts, baselines, finding totals). Instruct workers to **read the file** — stale `838/47/29`-class numbers corrupted census synthesis twice.362. **Validate scope/ownership with the human BEFORE expensive per-repo fan-out** — confirm repos/domains in scope; don't burn a full cmux fork audit on out-of-scope repos.373. **Slow ≠ stalled** — read why a worker is slow (`read_screen`, collab, PR activity) before spawning a duplicate; duplicate auditors overwrite originals.384. **Never mandate sleep-poll loops** in dispatched prompts — use `wait_for`, file contracts, or cron with live-query-first frames (`/cron-payload-discipline`).3940## WHEN-TO-USE MATRIX4142| Task shape | Engine | Why |43|------------|--------|-----|44| Human is **in the Cursor editor**, wants the foreground free, has independent prompts | **Cursor `/multitask`** | Async subagents, Agents-panel visualization, shared parent context/rules/MCP, results aggregate back. v0 — no conflict locking; keep tasks read-heavy or non-overlapping. |45| Headless / scripted / CI / orchestrator-in-terminal, N independent units, want **determinism + token accounting** | **Headless `cursor-agent` shell fan-out** (`&` + `wait`, or `find \| while read`) | You control concurrency, capture per-agent `usage` tokens via `--output-format json`, exit codes. ~2x wall-clock on 3 tasks (measured: 14s vs 28s). |46| Inside a **Claude** session, work decomposes into independent subtasks, want the parent to make the parallelism call | **Claude Workflow / Agent tools** | Implicit fan-out, subagents share plan/rate-limit, summaries return to parent. Best when you want Claude to *decide* what's parallel. |47| Need **visible, multi-vendor** workers (Cursor + Codex + Gemini side-by-side), long-running, human-watchable | **cmux fleet** (`/cmux-agents`, repoGolem launchers) | Etan wants to SEE agents working. Multi-vendor, persistent, monitorable. Heavier setup. |48| Single coherent edit, OR step B needs step A's output | **None — run serially in one agent** | Parallelism wastes tokens on work that gets redone. |4950### Explicit vs implicit (the control axis)51- **`/multitask`** = *explicit*: you list the prompts (`|||` separator), you know what's parallel.52- **Workflow tool / Claude subagents** = *implicit*: you hand a high-level task, the agent decides the split.53- Pick explicit when you already know the independent units; implicit when delegating the decomposition itself.5455## INVOCATION RECIPES5657### A. Cursor `/multitask` (GUI only)581. Open the **Agents Window**: `Cmd+Shift+P → Agents Window` (or the agent input dropdown).592. Type `/multitask`, then your read-only prompts separated by `|||`:60 `/multitask Audit auth tests for coverage gaps ||| Audit auth docs for missing setup ||| Inspect type-checker errors without edits`613. Each prompt becomes its own async subagent (own context window, own system prompt, shared parent rules/MCP). Watch them in the Agents panel; results aggregate back to the parent thread.624. **Controls (Settings → Subagents):** Leave the model control at Auto/default; never select a specific Explore model or enable Max Mode. Adjust only the concurrency cap and cost ceiling. Flags reported by users: `/multitask --max 3`, `/multitask --budget 50000`, `/multitask --resume`.635. **Gotchas:** v0 — no automatic write-conflict locking (Cursor's words: agents "done a pretty good job" but nothing formal). Subagents **cannot** nest another `/multitask` (blast radius capped at one fan-out level). Default 10-min per-subagent timeout. NOT scriptable, NOT headless.6465### B. Headless `cursor-agent` shell fan-out (the orchestrator's tool)66```bash67# N independent units in parallel; capture per-agent tokens + exit codes68for item in "$@"; do69 # Cursor stays on Auto: never add -m/--model.70 cursor-agent -p --force --output-format json \71 "Classify $item as POSITIVE/NEGATIVE, one word" > "out.$item.json" &72done73wait74# each out.*.json has .result and .usage.{inputTokens,outputTokens}75```76- `--force`/`--yolo` is REQUIRED non-interactively (bypasses workspace-trust + approval prompts).77- `--output-format json` → structured `result` + `usage` token accounting; `stream-json` for live progress.78- Concurrency = how many `&` you launch (add a semaphore/`xargs -P N` to cap). Deterministic, CI-safe.7980### C. Claude Workflow tool / parallel subagents81- Use the Claude Workflow/Agent tools when you have 2+ independent, no-shared-state tasks and want Claude to fan them out. Subagents return summaries to the parent; counts against your plan rate limit, not usage billing.8283### D. cmux fleet (visible multi-vendor)84- Invoke `/cmux-agents`. Use when the human wants to watch heterogeneous workers. See also `/agent-routing` (Cursor=gather, Codex=implement, Claude=orchestrate).8586## GOTCHAS / ANTI-PATTERNS87- **Do NOT** tell a headless agent or a terminal orchestrator to "use `/multitask`" — the slash command is not recognized; the text degrades to a plain prompt handled by ONE agent that may falsely report it parallelized. Success-looking output ≠ subagents ran. This is the #1 misroute this skill exists to prevent.88- **Do NOT** model-pin any Cursor path, including internal/headless fan-out.89- **Do NOT** parallelize sequentially-dependent steps — wasted tokens.90- **`/multitask` v0 has no write-conflict locking** — keep parallel writes to disjoint files, or prefer worktrees (Cursor's own worktree feature, or headless fan-out into separate dirs).91- Each subagent ≈ one parent-context-window of overhead. On usage-based pricing this adds up — cap with `--max`/`--budget` (GUI) or a `-P` semaphore (headless).92- Discovery-then-change pattern: fan out the *discovery* phase (read-heavy, naturally parallel), then make the *changes* in a single agent holding the whole picture.9394If this skill's own dispatch exhausts a shared quota, report that dispatch as95the cause; never relabel the resulting error as an external finding.9697## Compact Instructions98- **Preserve:** the GUI-only verdict for `/multitask`, the when-to-use matrix routing rules, the headless fan-out recipe (B), the measured 2x wall-clock figure, and the "headless agents silently ignore /multitask" gotcha.99- **Discard:** raw `cursor-agent --help` dumps, per-run token JSON blobs, intermediate timing experiments, exact subagent model enum lists (they churn between Cursor versions — re-verify against `--help` / changelog when needed).100- **Re-verify on Cursor version bump:** whether `/multitask` ever gains a headless CLI surface (`cursor-agent --help | grep -i multitask`). If it does, update the matrix.101102## Integration Points103- `/agent-routing` — decides Cursor vs Codex vs Claude by task TYPE (gather/implement/orchestrate). This skill decides the PARALLELISM ENGINE once you know it's a fan-out. Use together.104- `/cmux-agents` — the visible-fleet implementation referenced in row 4.105- Claude's built-in Workflow/Agent tools — the in-session fan-out path (row 3).