subagent
Run a one-shot or flat parallel batch of provider LLM subagents (headless `cc-fleet subagent`) that return a result. Use when fanning out N independent tasks,…
Spawn long-lived provider LLM teammates in tmux panes that you message via the native agent-team tools — multi-turn, collaborative, watchable. Use for sustained parallel build/work ("spawn workers", N teammates on N files), or when you need a collaborator you message across
$ npx -y skills add ethanhq/cc-fleet --skill team --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/teamContext preview
The summary Claude sees to decide when to auto-load this skill.
Spawn long-lived provider LLM teammates in tmux panes that you message via the native agent-team tools — multi-turn, collaborative, watchable. Use for sustained parallel build/work ("spawn workers", N teammates on N files), or when you need a collaborator you message across
name: team
description: Spawn long-lived provider LLM teammates in tmux panes that you message via the native agent-team tools — multi-turn, collaborative, watchable. Use for sustained parallel build/work ("spawn workers", N teammates on N files), or when you need a collaborator you message across turns. NOT a fire-and-forget one-shot or a flat batch of independent prompts — that is /cc-fleet:subagent. NOT a scripted multi-phase run — that is /cc-fleet:workflow.Run a third-party provider model as a real Claude Code teammate in a tmux pane: same tool stack and team coordination as a native teammate, LLM backend swapped to the provider. Your main session's own auth stays untouched.
**Wrong lane?** A fire-and-forget one-shot or flat batch → /cc-fleet:subagent; a scripted multi-phase run → /cc-fleet:workflow; full arbitration in cc-fleet-shared/routing.md.
When this skill cites `cc-fleet-shared/<file>.md`, OPEN it with the Read tool at `../cc-fleet-shared/<file>.md` relative to this SKILL.md — the cited content is load-bearing, not optional background.
> **Execution environment — check before running anything.** Confirm your shell tool executes on the host where cc-fleet is installed. In sandboxed or remote agent sessions, a tool named Bash may run on an isolated machine with a different filesystem, PATH, processes, and tmux server — `command not found`, a healthy-looking `doctor` whose leaves can't reach your files, or a wrong working directory should prompt you to verify whether you are in a sandbox shell, not conclude that cc-fleet is broken. If so, route commands through a host-executing bridge tool (for example, desktop-commander) and pass host paths for any files you reference; do not retry the same Bash call expecting different results. If no host-executing tool is available, stop and explain that cc-fleet must run on its installation host.
**Precondition — agent-teams must be ON:** check your own tool list for `SendMessage` / `TeamCreate`; absent → do NOT spawn (an unmessageable pane bills the provider with no work) — enablement + fallback in cc-fleet-shared/routing.md.
---
Steps 1, 3, 6 are **native tools**; steps 2, 5, 6a are `cc-fleet` via Bash with `--json`.
1. TeamCreate({team_name: "<team>"})
← native, FIRST — the main session becomes the lead
2. cc-fleet spawn [<provider>] --as <name> --team <team> [--model <slot|id>] --json
← Bash; check ok:true, grab .pane_id / .agent_id
The provider arg is OPTIONAL — omitted, the default provider applies
(see "The provider ask ladder"). Full flag table: cc-fleet-shared/cli-reference.md.
3. SendMessage({to: "<name>", message: "<task>. When done, send your result
back with SendMessage."})
← native; always tell it to report — see "Getting a result back"
4. (optional) repeat 2+3 to fan out more workers in parallel
5. wait for idle notifications — WITH a timeout. A teammate on a failed
provider API (429 / out-of-balance / 401) wedges in a retry loop and never
goes idle, so "just wait" blocks forever. Poll cc-fleet ps --json --check
and dispatch on error_class — see "Watching for stuck teammates".
6. report to the user, then ASK before tearing down. On confirm, BOTH, in order:
a. cc-fleet teardown <team> --json ← Bash FIRST: kills provider panes + reaps procs
b. TeamDelete() ← native SECOND: removes the team/tasks dirsOn a spawn failure (`ok:false`), dispatch on `error_code` — table + self-heal flow in cc-fleet-shared/troubleshooting.md.
**Teardown order — two hard rules** (apply to wedged and probe teams too): 1. `cc-fleet teardown` FIRST, `TeamDelete()` SECOND — teardown reads the team's `config.json` (the swarm socket lives there), which `TeamDelete()` deletes; and `TeamDelete()` alone never touches tmux, so a provider pane/process would be orphaned and keep billing. 2. ASK before tearing down — a teammate is reusable (SendMessage it the next task) and the user may want its pane. Skip the ask only if the user already said "clean up when done" or it's a throwaway probe team.
TeamCreate({team_name: "refactor-api"}) # native
cc-fleet spawn --as worker-1 --team refactor-api --model strong --json # default provider
# → {"ok":true,"agent_id":"worker-1@refactor-api","name":"worker-1","pane_id":"%42", ...}
SendMessage({to: "worker-1", message: "Refactor src/api/handlers.go: split each handler into its own file under src/api/handlers/. Keep tests passing. Report your result via SendMessage when done."})
# … wait with timeout + ps --check …
# report; tear down only after the user confirms:
cc-fleet teardown refactor-api --json # Bash, FIRST
TeamDelete() # nativeTeamCreate({team_name: "translate-docs"})
cc-fleet spawn kimi --as zh-1 --team translate-docs --json # leaf: omit --model
cc-fleet spawn kimi --as zh-2 --team translate-docs --json
cc-fleet spawn deepseek --as polish --team translate-docs --model strong --json # synthesis: strong
SendMessage({to: "zh-1", message: "Translate docs/intro.md to zh-CN beside it. SendMessage me when done."})
SendMessage({to: "zh-2", message: "Translate docs/api.md to zh-CN beside it. SendMessage me when done."})
SendMessage({to: "polish", message: "When zh-1 and zh-2 finish, copy-edit their outputs for tone consistency. SendMessage me the result."})
# … notifications per worker; report first, tear down on confirm:
cc-fleet teardown translate-docs --json # FIRST: kills all three panes + procs
TeamDelete()---
1. The user named a provider or model → use it. 2. Else run `cc-fleet default --json`: if it returns a provider (source "configured" or "auto"), use it and STATE it in your kickoff line (e.g. "using glm (default
🚢 Run Claude Code's ⚙️ Dynamic Workflows, 👥 Agent Teams & ⚡ Subagents on any third-party model — DeepSeek · GLM · Kimi · Qwen … or your Codex subscription. No Anthropic subscription needed. | 🚢 让 Claude Code 的 ⚙️ Dynamic Workflow、👥 Agent Team、⚡ Subagent 用上任意第三方模型 — DeepSeek · GLM · Kimi · Qwen…… 或你的 Codex 订阅,无需 Claude 订阅
Repo: ethanhq/cc-fleet
Run a one-shot or flat parallel batch of provider LLM subagents (headless `cc-fleet subagent`) that return a result. Use when fanning out N independent tasks,…
Orchestrate a MULTI-PHASE, dependent, or resumable run over many provider subagents from a JS script, off the main context (`cc-fleet workflow`). Use for…