Cursor Dispatch
by @slk1061569042-lab
Orchestrate Cursor Agent CLI for coding tasks with concurrency control, timeout recovery, and multi-task coordination. Use when: (1) dispatching coding tasks...
clawhub install cursor-dispatch📖 About This Skill
name: cursor-dispatch description: "Orchestrate Cursor Agent CLI for coding tasks with concurrency control, timeout recovery, and multi-task coordination. Use when: (1) dispatching coding tasks to cursor agent via CLI, (2) analyzing code before modifying (plan mode), (3) running parallel batch coding tasks with concurrency limits, (4) coordinating multi-step code changes with review gates, (5) recovering from stuck/timeout cursor processes. Triggers: cursor dispatch, plan then execute, code analysis pipeline, batch coding tasks, cursor agent orchestration, parallel coding, concurrent tasks."
Cursor Agent CLI Dispatch
Orchestrate cursor agent CLI with concurrency control, timeout recovery, and retry.
Hard Constraints (from testing)
| Constraint | Value | Source |
|-----------|-------|--------|
| PTY required | pty: true mandatory | No output without PTY |
| Max safe concurrency | 6 parallel tasks | Tested 8 OK, 6 is safe margin |
| Plan timeout (single file) | 60-120s | Tested on .gd files |
| Plan timeout (multi-file) | >180s, WILL timeout | Don't attempt |
| Execute timeout | 60-90s typical | Up to 180s for complex |
| --output-format json | BROKEN in PTY | Use text format only |
| Empty output = failure | Check output size > 20 bytes | Retry if empty |
Command Template
exec(
command: "cd && cursor agent -p --trust [FLAGS] --model auto --workspace . ''",
pty: true,
timeout:
)
| Mode | Flags | Timeout | Use |
|------|-------|---------|-----|
| Plan | --plan | 180s | Read-only analysis |
| Execute | --yolo | 180s | Auto-approve changes |
| Ask | --mode ask | 120s | Q&A, no changes |
Concurrency Control Protocol
State Tracking
Before launching cursor tasks, track them via process(action=list). Each running exec session with cursor agent counts toward the limit.
Launch Rules
1. Check: process(action=list) → count sessions with "cursor agent" in command
2. If count >= MAX_CONCURRENT (default 4, max 6): WAIT or QUEUE
3. Launch: exec(command=..., pty=true, timeout=T, background=true)
4. Record: sessionId + taskId + startTime
5. Poll: process(action=poll, sessionId=X, timeout=T*1000)
Concurrency Limits by Task Type
| Scenario | Max Concurrent | Why | |----------|---------------|-----| | Plan-only (read) | 6 | No file conflicts | | Execute (write) | 3 | Avoid git/file conflicts | | Mixed plan+execute | 4 | Balance safety and speed | | Same-file tasks | 1 (serial only) | NEVER parallel on same file |
Timeout & Recovery Protocol
Detection
A task is stuck when:
process(action=poll, timeout=T) returns with process still running after timeoutRecovery Steps
1. DETECT: poll returns "still running" or exit 143/137 or empty output
2. KILL: process(action=kill, sessionId=X)
3. WAIT: 3 seconds cooldown (avoid API rate limits)
4. SIMPLIFY: reduce prompt scope (fewer files, simpler question)
5. RETRY: relaunch with simplified prompt, same or higher timeout
6. MAX RETRIES: 2 attempts total. After 2 failures → report to user
Simplification Strategy
When a task times out, simplify before retrying:
| Original | Simplified | |----------|-----------| | "Scan all dungeon scripts for bugs" | "Scan dungeon_manager.gd for null refs" | | "Fix 5 issues in this file" | "Fix issue #1 and #2 only" | | "Analyze architecture of combat system" | "List all functions in arpg_monster.gd" |
Cleanup Protocol
When to Clean Up
How to Clean Up
1. process(action=list) → find all cursor-related sessions
2. For each: check if still running
3. If running > 10 minutes: process(action=kill, sessionId=X)
4. Verify: ps aux | grep "cursor agent -p" | grep -v grep
5. Nuclear option: pkill -f "cursor agent -p" (kills ALL cursor CLI agents)
Orphan Detection
Cursor agent processes that outlive their exec session become orphans:
# Find orphan cursor agent processes
ps aux | grep "cursor agent -p" | grep -v grep
Kill specific orphan
kill
Four Dispatch Chains
Chain A: Direct Execute
For simple tasks (1-3 files, clear logic). Single exec call.
exec(
command: "cd && cursor agent -p --trust --yolo --model auto --workspace . ''",
pty: true, timeout: 180
)
→ poll → verify output not empty → done
Chain B: Plan → Review → Execute ⭐
For complex tasks. Most reliable chain.
Step 1 — PLAN (pty:true, timeout:180):
"检查 中会导致运行时崩溃的问题。重点:。只列会崩溃的。"Step 2 — REVIEW (agent decides):
Parse output → grade 🔴🟠🟡🟢 → select fixes for this round
Step 3 — EXECUTE (pty:true, timeout:180):
"修复 中 N 个问题:[paste selected items with line numbers and fix code]。
修复后运行:。确认无错误后 git commit。"
Step 4 — VERIFY:
Run headless build/test to confirm
Chain C: Parallel Batch
For independent tasks across different files. Use background exec.
# Launch (respect concurrency limit)
exec(cmd="cursor agent ... task1", pty:true, background:true) → session1
exec(cmd="cursor agent ... task2", pty:true, background:true) → session2
exec(cmd="cursor agent ... task3", pty:true, background:true) → session3Monitor
process(action=poll, sessionId=session1, timeout=180000)
process(action=poll, sessionId=session2, timeout=180000)
process(action=poll, sessionId=session3, timeout=180000)Verify all
Run headless build/test
Rules:
Chain D: Plan Global → Serial Execute
For large refactors with dependencies.
1. Plan pass on each file (can parallel, up to 6)
2. Collect all findings → sort by dependency
3. Execute in dependency order (serial)
4. Verify after each execute before next
5. If verify fails: stop, fix, re-plan remaining
Prompt Engineering for Cursor Agent
Plan Prompts (what works)
Good: "检查 scripts/dungeon/dungeon_manager.gd 中所有可能返回 null 的函数调用,以及调用方是否有 null 检查"
Good: "列出
Execute Prompts (what works)
Good: Include exact line numbers + expected code change + verify command + git commit Bad: Vague "fix the bugs" without specifics
Template
Plan: "检查 中 。只列会崩溃/卡死的问题,给出行号和修复方案。"
Execute: "修复 中 N 个问题:
1. 第 X 行: →
2. 第 Y 行: →
修复后运行:
确认无错误后 git commit -m ''。"
Model Selection
| Task | Model | Timeout |
|------|-------|---------|
| Default | auto | — |
| Simple edits | auto | 120s |
| Complex analysis | auto + --plan | 180s |
| Code review | auto + --mode ask | 120s |
auto routes to best available model (typically opus-4.6-thinking). Don't override unless needed.
Session Resume
cursor agent ls # List past sessions
cursor agent -p --trust --continue "..." # Continue last
cursor agent -p --trust --resume "..." # Resume specific
Timing Benchmarks
v2.6.12 (tested 2026-03-06 evening, cursor 2.6.12)
| Task Type | Time | Concurrency Tested | |-----------|------|--------------------| | List functions (small file <50 lines) | 8-14s | 6/6 parallel ✅ | | List functions (medium file ~600 lines) | 17s | single ✅ | | List functions (large file ~1000 lines) | 40s | single ✅ | | Simple execute (add comment, 1 file) | 16-19s | 3/3 parallel ✅ | | Ask mode (simple Q&A) | 8s | single ✅ | | Complex analysis (null-check scan, 660 lines) | 84s | single ✅ | | Long complex prompt (3+ concerns, multi-file ref) | >180s | TIMEOUT ⚠️ | | Execute with broad prompt (3 bugs, multi-concern) | >180s | TIMEOUT ⚠️ |
Key Findings (v2.6.12)
Failure Mode: Prompt Complexity (NOT concurrency)
Timeouts correlate with prompt complexity, not concurrency:
Previous version (v2026.02.27, tested 2026-03-06 morning)
| Task Type | Time | Concurrency Tested | |-----------|------|--------------------| | List functions (1 file) | 15s | 8/8 passed | | Null-check scan (1 file) | 80-120s | 4/4 parallel ✅ | | Execute fix (1 file, 1-4 issues) | 55-90s | 3/3 parallel ✅ | | Multi-file analysis | >180s | TIMEOUT |
Validated Workflows
Workflow 1: Parallel Plan → Review → Parallel Execute (2026-03-06)
Round 1 (Chain B serial): 3 files × plan→execute = 9 fixes, 3 commits
Round 2 (Chain C parallel): 4 files × plan (parallel) → review → 3 files × execute (parallel) = 3 fixes, 3 commits
Total: 12 runtime crash risks fixed, 6 commits, Godot headless zero errors
Workflow 2: Skip Plan, Direct Execute (2026-03-06 evening)
When you already know exactly what to change, skip Plan and go straight to Execute:
3 parallel Execute (different files) = all pass, 16-19s each
Pre-requisite: dispatcher already analyzed the code and wrote precise prompts
Key insight: Plan can always be parallelized (read-only). Execute can be parallelized only when tasks touch different files. Review is always serial (agent decides). Critical: Keep prompts focused — 1 file, 1 concern, specific line numbers.
For model list and CLI parameters, see references/models-and-params.md.