with one click
team
N coordinated agents on a shared task list using tmux-based crew execution
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
N coordinated agents on a shared task list using tmux-based crew execution
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Compatibility visual-delivery runtime for Roblox creator UI, HUD, and plugin work; the canonical completion owner is now Forge.
Run read-only deep repository analysis and return a ranked synthesis with explicit confidence, concrete file references, and clear evidence-vs-inference boundaries. Use when a user says 'analyze', 'investigate', 'why does', 'what's causing', or needs grounded cross-file explanation before any changes are proposed.
Persistent Roblox Studio execution loop that carries an approved creator plan to verified completion
Run an anti-slop cleanup/refactor/deslop workflow
Ask Claude via local CLI and capture a reusable artifact
Ask Gemini via local CLI and capture a reusable artifact
| name | team |
| description | N coordinated agents on a shared task list using tmux-based crew execution |
| surface-class | operator |
| domain | creator-runtime |
| audience | operator |
| artifact-type | skill |
$team is the tmux-based parallel crew execution mode for RCS. It starts real worker Codex and/or Claude CLI sessions in split panes and coordinates them through .rcs/state/team/... files plus CLI team interop (rcs team api ...) and state files.
This skill is operationally sensitive. Treat it as an operator workflow, not a generic prompt pattern. In Codex App or plain outside-tmux sessions, do not present $team / rcs team as directly available; launch RCS CLI from shell first, or stay on the nearest app-safe surface until the user explicitly wants the tmux runtime.
rcs team when you need durable tmux workers, shared task state, mailbox/dispatch coordination, worktrees, explicit lifecycle control, or long-running parallel execution that must survive beyond one local reasoning burst.Use the shared workflow guidance pattern: outcome-first framing, concise visible updates for multi-step work, local overrides for the active workflow branch, validation proportional to risk, explicit stop rules, and automatic continuation for safe reversible steps. Ask only for material, destructive, credentialed, external-production, or preference-dependent branches.
When user triggers $team, the agent must:
rcs team ...spawn_agent fanoutIf rcs team is unavailable, stop with a hard error.
rcs team [N:agent-type] "<task description>"
Examples:
rcs team 3:executor "analyze feature X and report flaws"
rcs team "debug flaky integration tests"
rcs team "ship end-to-end fix with verification"
rcs team ... is now the canonical launch path for coordinated execution.
Team mode should carry its own parallel delivery + verification lanes without
requiring a separate linked Forge launch up front.
rcs team ... / $team ... for coordinated workers.rcs forge ... / $forge ... only when a later manual follow-up still needs a persistent single-owner fix/verification loop.Important: N:agent-type (for example 2:executor) selects the worker role prompt, not the worker CLI (codex vs claude).
To launch Claude teammates, use the team worker CLI env vars:
# Force all teammates to Claude CLI
RCS_TEAM_WORKER_CLI=claude rcs team 2:executor "update docs and report"
# Mixed team (worker 1 = Codex, worker 2 = Claude)
RCS_TEAM_WORKER_CLI_MAP=codex,claude rcs team 2:executor "split doc/code tasks"
# Auto mode: Claude is selected when worker launch args/model contains 'claude'
RCS_TEAM_WORKER_CLI=auto RCS_TEAM_WORKER_LAUNCH_ARGS="--model claude-..." rcs team 2:executor "run mixed validation"
Before running $team, confirm:
tmux installed (tmux -V)$TMUX is set)rcs command resolves to the intended install/buildnode bin/rcs.js ..., run npm run build after src changeshud --watch panes before splitSuggested preflight:
tmux list-panes -F '#{pane_id}\t#{pane_start_command}' | rg 'hud --watch' || true
If duplicates exist, remove extras before rcs team to prevent HUD ending up in worker stack.
Before launching rcs team, require a grounded context snapshot:
.rcs/context/{slug}-*.md when available..rcs/context/{slug}-{timestamp}.md (UTC YYYYMMDDTHHMMSSZ) with:
explore first for brownfield facts, then run $deep-interview --quick <task> before team launch.researcher as an evidence lane before or alongside worker launch instead of relying on repo-local recall alone.Do not start worker panes until this gate is satisfied; if forced to proceed quickly, state explicit scope/risk limitations in the launch report.
For simple read-only brownfield lookups during intake, follow active session guidance: when USE_RCS_EXPLORE_CMD is enabled, prefer rcs explore with narrow, concrete prompts; otherwise use the richer normal explore path and fall back normally if rcs explore is unavailable.
When $team is used as a follow-up mode from blueprint, carry forward the approved plan's explicit available-agent-types roster and convert it into concrete staffing guidance before launch:
rcs team N "<task>" / $team N "<task>") for the coordinated team run; mention a later separate Forge follow-up only when genuinely neededrcs team currently performs:
N, agent-type, task).rcs/state/team/<team>/config.json.rcs/state/team/<team>/manifest.v2.json.rcs/state/team/<team>/tasks/task-<id>.json.rcs/state/team/<team>/worker-agents.mdAGENTS.md content (if present) + worker overlay, without mutating project AGENTS.md<leader-cwd>/.rcs/state)RCS_TEAM_WORKER=<team>/worker-<n>RCS_TEAM_STATE_ROOT=<leader-cwd>/.rcs/stateRCS_TEAM_LEADER_CWD=<leader-cwd>RCS_TEAM_WORKER_CLI / RCS_TEAM_WORKER_CLI_MAP (codex or claude)--worktree is usedcapture-pane polling)inbox.md and trigger via tmux send-keysstatus / resume / shutdownIf coarse active team mode state is missing while canonical team runtime state exists, restore/sync the active team mode state before relying on hook/mode-aware behavior.
Important:
rcs team --worktree[=<name>]) while sharing one team state rootmailbox/leader-fixed.jsonRCS_TEAM_WORKER_CLI_MAP entry for that worker index,RCS_TEAM_WORKER_CLI / auto detection.Tab on busy panes (strategy-dependent).C-m) rounds (never queue-first Tab).Team mode resolves worker model flags from one shared launch-arg set (not per-worker model selection).
Model precedence (highest to lowest):
RCS_TEAM_WORKER_LAUNCH_ARGS--model flagRCS_DEFAULT_SPARK_MODEL (legacy alias: RCS_SPARK_MODEL) when 1+2 are absent and team agentType is low-complexityDefault-model rule:
RCS_DEFAULT_FRONTIER_MODEL for frontier-default guidance.RCS_DEFAULT_SPARK_MODEL for spark/low-complexity worker-default guidance.Thinking-level rule (critical):
model_reasoning_effort from model-name substrings (e.g., spark, high-capability, mini).low, medium, high).RCS_TEAM_WORKER_LAUNCH_ARGS already includes -c model_reasoning_effort=..., that explicit value overrides dynamic allocation for every worker.Normalization requirements:
--model <value> and --model=<value>--model <value>-c model_reasoning_effort="<level>"; otherwise inject the worker role's default reasoning levelFollow this exact lifecycle when running $team:
rcs team status <team>, rcs team resume <team>, mailbox/state files)pending=0in_progress=0failed=0 (or explicitly acknowledged failure path)rcs team shutdown <team>Do not run shutdown while workers are actively writing updates unless user explicitly requested abort/cancel.
Do not treat ad-hoc pane typing as primary control flow when runtime/state evidence is available.
While a team is ON/running, the leader must not go blind. Keep checking live team state until terminal completion.
Minimum acceptable loop:
sleep 30 && rcs team status <team-name>
Repeat that check while the team stays active, or use rcs team await <team-name> --timeout-ms 30000 --json when event-driven waiting is a better fit.
If the leader gets a stale/team-stalled nudge, immediately run rcs team status <team-name> before taking any manual intervention.
To avoid brittle behavior, message/task delivery must not be driven by ad-hoc tmux typing.
Required default path:
rcs team ... runtime lifecycle commands for crew execution.rcs team api ... --json for mailbox/task mutations.mailbox/*.json, task status, rcs team status).Strict rules:
tmux send-keys as the primary mechanism to deliver instructions/messages.dispatch/requests.json, mailbox, inbox).worker_notify_failed:<worker>) or explicit user request (for example “press enter”).rcs team status <team-name>
rcs team resume <team-name>
rcs team shutdown <team-name>
Semantics:
status: reads team snapshot (task counts, dead/non-reporting workers)resume: reconnects to live team session if presentshutdown: graceful shutdown request, then cleanup (deletes .rcs/state/team/<team>)RCS_TEAM_WORKER per worker)tmux display-message.rcs/state/team/<team>/... files.rcs/state/team/<team>/mailbox/leader-fixed.json.rcs/state/team/<team>/mailbox/worker-<n>.json.rcs/state/team/<team>/dispatch/requests.json (durable dispatch queue; hook-preferred, fallback-aware).rcs/state/team/<team>/config.json.rcs/state/team/<team>/manifest.v2.json.rcs/state/team/<team>/tasks/task-<id>.json.rcs/state/team/<team>/workers/worker-<n>/identity.json.rcs/state/team/<team>/workers/worker-<n>/inbox.md.rcs/state/team/<team>/workers/worker-<n>/heartbeat.json.rcs/state/team/<team>/workers/worker-<n>/status.json.rcs/state/team-leader-nudge.jsonUse rcs team api for machine-readable mutation/reads instead of legacy team_* MCP tools.
rcs team api <operation> --input '{"team_name":"my-team",...}' --json
Examples:
rcs team api send-message --input '{"team_name":"my-team","from_worker":"worker-1","to_worker":"leader-fixed","body":"ACK"}' --json
rcs team api claim-task --input '{"team_name":"my-team","task_id":"1","worker":"worker-1"}' --json
rcs team api transition-task-status --input '{"team_name":"my-team","task_id":"1","from":"in_progress","to":"completed","claim_token":"<token>"}' --json
--json responses include stable metadata for automation:
schema_versiontimestampcommandokoperationdata or errorLeader-to-worker:
inbox.mdtmux send-keysWorker-to-leader:
leader-fixed mailbox via rcs team api send-message --jsonrcs team api <operation> --jsonWorker commit protocol (critical for incremental integration):
git add -A && git commit -m "task: <task-subject>"Task ID rule (critical):
task-<id>.json (example task-1.json)task_id uses bare id (example "1", not "task-1")tasks/{id}.jsonUseful runtime env vars:
RCS_TEAM_READY_TIMEOUT_MS
RCS_TEAM_SKIP_READY_WAIT=1
RCS_TEAM_AUTO_TRUST=0
RCS_TEAM_AUTO_ACCEPT_BYPASS=0
2 + Enter)RCS_TEAM_WORKER_LAUNCH_ARGS
RCS_TEAM_WORKER_CLI
auto|codex|claude (default: auto)auto chooses claude when worker --model contains claude, otherwise codexclaude mode, workers launch with exactly one --dangerously-skip-permissions
and ignore explicit model/config/effort launch overrides (uses default settings.json)RCS_TEAM_WORKER_CLI_MAP
auto|codex|claude)1 (broadcast) or exactly the team worker countRCS_TEAM_WORKER_CLI_MAP=codex,codex,claude,claudeRCS_TEAM_WORKER_CLIRCS_TEAM_AUTO_INTERRUPT_RETRY
0 disables adaptive queue->resend escalationRCS_TEAM_LEADER_NUDGE_MS
RCS_TEAM_STRICT_SUBMIT=1
Operator note (important for Claude panes):
tmux send-keys ... C-m) can appear to "do nothing" when a worker is actively processing; Enter may be queued by the pane/task flow.Use only after checking rcs team status <team> and mailbox/state evidence:
tmux capture-pane -t %<worker-pane> -p -S -120rcs sparkshell --tmux-pane %<worker-pane> --tail-lines 400 before improvising extra tmux commands.C-c or escape flow (CLI-specific) once, then re-check pane capturetmux send-keys -t %<worker-pane> "ack + continue current task; report status" C-mcapture-panemailbox/leader-fixed.json or worker mailbox)rcs team status <team>worker_notify_failed:<worker>Meaning:
Checks:
tmux list-panes -F '#{pane_id}\t#{pane_start_command}'tmux capture-pane -t %<worker-pane> -p -S -120npm run build)Checks:
.rcs/state/team/<team>/mailbox/leader-fixed.json existsrcs team api send-message --json calledrcs team api ... ENOENT (or legacy team_send_message ENOENT / team_update_task ENOENT)Meaning:
rcs team shutdown <team> (or removed .rcs/state/team/<team>) before worker finished.Checks:
rcs team status <team> and confirm whether tasks were still in_progress when shutdown occurred.rcs/state/team/<team>/ existsrm -rf .rcs/state/team/<team>) happened during executionPrevention:
shutdown only for terminal completion or explicit abortCause:
Fix:
Run from leader pane:
# 1) Inspect panes
tmux list-panes -F '#{pane_id}\t#{pane_current_command}\t#{pane_start_command}'
# 2) Kill stale worker panes only (examples)
tmux kill-pane -t %450
tmux kill-pane -t %451
# 3) Remove stale team state (example)
rm -rf .rcs/state/team/<team-name>
# 4) Retry
rcs team 1:executor "fresh retry"
Guidelines:
rcs hud --watch) unless intentionally restarting HUDWhen operating this skill, provide concrete progress evidence:
Team started: <name>)Do not claim success without file/pane evidence.
Do not claim clean completion if shutdown occurred with in_progress>0.
Use rcs sparkshell --tmux-pane ... as an explicit opt-in operator aid for pane inspection and summaries; keep raw tmux capture-pane evidence available for manual intervention and proof.
Use the rcs team ... CLI as the supported team-launch surface. For automation, drive the same CLI flow from scripts or supervising agents rather than relying on a separate MCP runner.
rcs team ... CLI — Primary method for interactive or automated team execution. Use this when you want direct tmux-pane visibility or a scriptable launch path..rcs/state/team/<team>/ when you need status, task, or mailbox evidence after launch.Two cleanup paths exist and must not be confused:
team_cleanup (state-server): Deletes team state files on disk (.rcs/state/team/<team>/). Use after a team run is fully complete.rcs team shutdown / cleanup flow when you need to stop worker panes or clean up an interrupted run.1. rcs team 1:executor "fix bugs"
2. rcs team status <team-name>
3. rcs team shutdown <team-name>
4. Clean up the finished team state for <team-name>
Good: The user says continue after the workflow already has a clear next step. Continue the current branch of work instead of restarting or re-asking the same question.
Good: The user changes only the output shape or downstream delivery step (for example make a PR). Preserve earlier non-conflicting workflow constraints and apply the update locally.
Bad: The user says continue, and the workflow restarts discovery or stops before the missing verification/evidence is gathered.