From toby-essentials
Spawns persistent Codex (--full-auto) and Gemini (--yolo) panes in cmux alongside Claude for multi-agent parallel development. Useful when requesting 'toby team' or agent team setups.
npx claudepluginhub tobyilee/toby-plugins --plugin toby-essentialsThis skill uses the workspace's default tool permissions.
Spawn Codex (`--full-auto`) and Gemini (`--yolo`) in cmux panes alongside the current Claude session. Skips creation if they're already running in the same workspace.
Orchestrates multi-pane terminal sessions via cmux CLI: splits panes, spawns Claude/Codex sub-agents, sends keys between panes, reads output, updates sidebar, manages browser/markdown panes.
Splits cmux panels for parallel Codex (code), Gemini (design), and Claude (planning) task execution via log streaming and agent teams. Use /cmux-ai-run for multi-AI workflows in cmux.
Multi-agent orchestration using dmux (tmux pane manager for AI agents). Patterns for parallel agent workflows across Claude Code, Codex, OpenCode, and other harnesses. Use when running multiple agent sessions in parallel or coordinating multi-agent development workflows.
Share bugs, ideas, or general feedback.
Spawn Codex (--full-auto) and Gemini (--yolo) in cmux panes alongside the current Claude session. Skips creation if they're already running in the same workspace.
codex and gemini CLI binaries must be available# Check cmux is available and we're inside it
if [ -z "${CMUX_WORKSPACE_ID:-}" ]; then
echo "ERROR: Not inside a cmux workspace"
exit 1
fi
cmux ping
If cmux is not available or we're not inside a cmux terminal, inform the user and stop.
Before creating new panes, check if codex or gemini are already running in the current workspace. The skill labels panes with rename-tab on creation, so we can detect them by title.
# Get the tree of current workspace in JSON
cmux tree --json
Parse the JSON to get all surfaces in the selected workspace. Check each surface's title field:
CODEX_RUNNING=true if any surface title is exactly "Codex"GEMINI_RUNNING=true if any surface title is exactly "Gemini"Also save the caller's pane_ref (the pane containing CMUX_SURFACE_ID) — you'll need it in Step 6 to return focus.
If both are already running, inform the user and stop:
"Codex와 Gemini가 이미 이 workspace에서 실행 중입니다."
Only check for CLIs that need to be launched:
# Check codex (only if not already running)
command -v codex &>/dev/null && echo "codex available"
# Check gemini (only if not already running)
command -v gemini &>/dev/null && echo "gemini available"
If a needed CLI is not found, warn the user but continue with the other agent.
Skip if codex is already running or codex CLI is not available.
new-split returns a line like OK surface:26 workspace:7. Capture the surface ref to send commands to it.
# Split right from current pane
CODEX_OUT=$(cmux new-split right)
CODEX_SURFACE=$(echo "$CODEX_OUT" | grep -o 'surface:[0-9]*')
# Wait for shell to initialize, then start codex
sleep 0.5
cmux send --surface "$CODEX_SURFACE" "codex --full-auto\n"
# Label the pane for future detection
cmux rename-tab --surface "$CODEX_SURFACE" "Codex"
Skip if gemini is already running or gemini CLI is not available.
Split down from the Codex surface specifically (use --surface flag) so Gemini appears below Codex, not below Claude.
# Split down from the Codex pane
GEMINI_OUT=$(cmux new-split down --surface "$CODEX_SURFACE")
GEMINI_SURFACE=$(echo "$GEMINI_OUT" | grep -o 'surface:[0-9]*')
# Wait for shell to initialize, then start gemini
sleep 0.5
cmux send --surface "$GEMINI_SURFACE" "gemini --yolo --model gemini-3.1-pro-preview\n"
# Label the pane for future detection
cmux rename-tab --surface "$GEMINI_SURFACE" "Gemini"
If only Gemini needs to be created (Codex already running), split down from the existing Codex surface (find it from the tree by title "Codex"). If Codex is not present either, split right from the current Claude pane:
GEMINI_OUT=$(cmux new-split right)
Use focus-pane (not focus-surface — that command doesn't exist). Get the caller's pane ref from the cmux tree --json output obtained in Step 2.
# The caller's pane ref was captured in Step 2 from tree output
# Look for the pane where caller.surface_ref matches CMUX_SURFACE_ID
cmux focus-pane --pane <caller_pane_ref>
Send a notification and report the result:
cmux notify --title "Agent Team Ready" --body "Codex and Gemini are running"
Display a summary to the user:
Agent Team 구성 완료:
┌─────────────────┬─────────────────┐
│ │ Codex │
│ Claude (현재) │ (--full-auto) │
│ ├─────────────────┤
│ │ Gemini │
│ │ (--yolo) │
└─────────────────┴─────────────────┘