Claude Code Orchestrator (tmux-first)
Trigger Claude Code development tasks in observable tmux sessions with stable startup, progress visibility, and completion callback to OpenClaw. Use when use...
Description
name: claude-code description: Trigger Claude Code development tasks in observable tmux sessions with stable startup, progress visibility, and completion callback to OpenClaw. Use when user asks to run coding work via Claude Code and wants to SSH in, monitor progress, and get auto-notified for review after completion.
Claude Code Orchestrator (tmux-first)
Use tmux-based orchestration for long coding tasks to avoid silent hangs and make progress observable.
Standard workflow
- Create prompt file (avoid long shell quote issues).
- Start a dedicated tmux session.
- Launch
claude --dangerously-skip-permissionsin interactive mode. - Paste prompt into Claude.
- Require callback command in prompt (via wrapper):
bash {baseDir}/scripts/wake.sh "..." now - Share socket/session attach command with user.
- On completion, review diff + lint/build + risk summary.
Start command
bash {baseDir}/scripts/start-tmux-task.sh \
--label "gallery-detail-polish" \
--workdir "/Users/yaxuan/.openclaw/workspace/work/active/02-gallery-ops" \
--prompt-file "/Users/yaxuan/Downloads/gallery-website-design-system.md" \
--task "参考这个修改我当前的画廊官网,注意优先打磨细节和质感,对整体结构展示先不用大改。"
Monitor commands
# attach
bash {baseDir}/scripts/monitor-tmux-task.sh --attach --session <session>
# capture last 200 lines
bash {baseDir}/scripts/monitor-tmux-task.sh --session <session> --lines 200
Task overview
List all running cc-* tasks at a glance — useful for "butler-style" summaries.
# Human-readable one-liner per task
bash {baseDir}/scripts/list-tasks.sh
# Structured JSON array (pipe to jq, feed to OpenClaw, etc.)
bash {baseDir}/scripts/list-tasks.sh --json | jq .
Options:
--lines <n>— number of trailing pane lines to capture per task (default 20).--socket <path>— tmux socket path (default$TMPDIR/clawdbot-tmux-sockets/clawdbot.sock).--json— emit JSON array instead of human table.--target ssh --ssh-host <alias>— list sessions on a remote host.
Each entry contains: label, session, status, sessionAlive, reportExists, reportJsonPath, lastLines, updatedAt.
Combine with OpenClaw to generate a periodic butler summary:
# In an OpenClaw prompt / cron:
bash {baseDir}/scripts/list-tasks.sh --json | \
openclaw gateway call summarize-tasks --stdin
Rules
- Prefer interactive Claude in tmux for visibility (not long
claude -pone-shot for large tasks). - Always include callback via wrapper
bash {baseDir}/scripts/wake.sh "..." nowin prompt. - Startup script now uses robust submit (ready-check + multi-Enter retry + execution-state detection) to avoid "prompt pasted but not submitted".
- If no pane output for >2-3 min, inspect and restart session.
- Kill stale Claude processes before restart.
- Always return: session name + attach command + current status.
Status check (zero-token)
If wake not received within expected time, check task status before consuming tokens:
bash {baseDir}/scripts/status-tmux-task.sh --label <label>
Output: STATUS=running|likely_done|stuck|idle|dead|done_session_ended
likely_done/done_session_ended→ proceed to completion looprunning→ waitstuck→ inspect (attach or capture-pane)dead→ session lost, run complete-tmux-task.sh fallbackidle→ Claude may be waiting for input, inspect
Completion loop (mandatory)
When wake event "Claude Code done (...)" arrives, complete this loop immediately:
- Acknowledge user within 60s: "已收到完成信号,正在评估改动".
- Preferred path: read completion report generated by Claude Code task:
/tmp/cc-<label>-completion-report.json
- If report missing, run local fallback immediately:
bash {baseDir}/scripts/complete-tmux-task.sh --label <label> --workdir <workdir>
- Mandatory deep-read: read full JSON/MD report before replying.
- Read context before replying:
- Read completion report file(s) (
/tmp/cc-<label>-completion-report.json/.md) - Read recent tmux transcript (monitor script) to capture what Claude actually did/failed/tried
- Incorporate the latest user constraints from current chat
- Read completion report file(s) (
- Then provide assistant analysis (not a fixed template):
- what was actually completed
- what is reliable vs uncertain
- key risks/tradeoffs in the user's context
- concrete next-step options
- Ask explicit decision from user if scope drift exists.
Do not stop at wake-only notification. Wake is trigger, not final delivery.
Anti-pattern to avoid
- Forbidden: one-line fixed reply after wake without reading transcript + report.
- Forbidden: only relaying "done + report path" without analysis in user context.
- Forbidden: rigid templated output that ignores current conversation context.
Hard guardrails added
- Prompt now enforces “no wake without report”:
- task must write
/tmp/cc-<label>-completion-report.json+.md - final wake must include
report=<json_path>
- task must write
- Recovery command exists for deterministic fallback:
scripts/complete-tmux-task.shreproduces evidence and emits structured report
- Delivery SLA remains mandatory:
- wake received -> ack <= 60s -> report
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!