一键导入
cao-supervisor-protocols
Supervisor-side orchestration patterns for assign, handoff, and idle inbox delivery in CAO
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Supervisor-side orchestration patterns for assign, handoff, and idle inbox delivery in CAO
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Author live dashboard UI from an agent via the `emit_ui` MCP tool. Emit one of six allow-listed components (approval_card, choice_prompt, diff_summary, progress, metric, agent_card) with JSON props and it renders in any AG-UI client watching the fleet. Use when you want the operator to see a decision, a diff, or a status readout instead of scrolling terminal text. Arbitrary HTML/markup is refused.
Author and run CAO Python workflow scripts — multi-step, parameterized, fan-out orchestrations executed by `cao workflow run`. Use when the user wants a repeatable multi-step job (e.g. data analysis over many files, a review pipeline, a parameterized batch). Authoring ends at a validated script file; running it is a separate, user-approved step.
Create a new CAO (CLI Agent Orchestrator) plugin. Use this skill whenever the user wants to add a plugin that reacts to CAO lifecycle or messaging events, scaffold a plugin package, understand plugin requirements, or integrate an external system (Discord, Slack, dashboards, logging, metrics) with CAO. Also use when the user asks what plugin events are available, how plugin discovery works, or how to install a plugin into a CAO environment.
Create a new CLI agent provider for CAO (CLI Agent Orchestrator). Use this skill whenever the user wants to add support for a new CLI-based AI agent (e.g., a new coding assistant CLI), integrate a new provider, or scaffold a provider implementation. Also use when the user asks about the provider architecture, what files to modify, or how providers work in CAO.
Interact with CAO (CLI Agent Orchestrator) — launch multi-agent sessions, check status, send follow-up instructions, unblock stuck terminals, or shut down sessions. Use when working with CAO sessions in any capacity.
Enable, operate, and extend CAO's MCP Apps surface — the sandboxed host-rendered fleet UI (SEP-1865) with the ui://cao/* views, the topology widget, the submit_command mutation choke point, SEP-2133 capability advertisement, and the default-off OAuth scope layer. Use whenever the user wants to turn on the MCP Apps UI, observe/steer a CAO fleet from inside an MCP App host (Claude / Claude Desktop, ChatGPT, VS Code GitHub Copilot, Microsoft 365 Copilot, Goose, Postman, MCPJam, Archestra.AI), debug why the views don't render, build the frontend bundles, or extend the surface (new view, tool, or command kind).
| name | cao-supervisor-protocols |
| description | Supervisor-side orchestration patterns for assign, handoff, and idle inbox delivery in CAO |
Use this skill when supervising worker agents through CLI Agent Orchestrator.
This skill covers how supervisors should dispatch work, decide between assign and handoff, and receive worker results without blocking inbox delivery.
From cao-mcp-server, supervisors orchestrate work with:
assign(agent_profile, message) for asynchronous work that returns immediatelyhandoff(agent_profile, message) for synchronous work that blocks until the worker finishessend_message(message, receiver_id=None) for direct messages — receiver_id defaults to the terminal that created yours via handoff/assignanswer_user_prompt(terminal_id, answer) for answering a Hermes worker that reports waiting_user_answerYour own terminal ID is available in the CAO_TERMINAL_ID environment variable. CAO appends it to assigned task messages and records it on worker terminals automatically, so you rarely need to handle it yourself.
Use assign when the worker should continue independently and report back later. This is the normal pattern for fan-out work or parallel execution.
Use handoff when the next step is blocked on the worker result. The orchestrator waits for completion, captures the worker output, and returns it directly to the supervisor.
Typical pattern:
assign for analysis, research, or code changes that can run in parallel.handoff for report generation, blocking review steps, or any task where you need the result before you can continue.Assigned workers usually return results through send_message. Those inbox messages are delivered to the supervisor automatically when the supervisor terminal becomes idle.
This means supervisors should:
Do not keep the terminal busy with sleep, echo, or similar commands while waiting. A busy terminal delays inbox delivery.
If you need multiple worker results, dispatch them all first, then end the turn. Do not poll manually in a loop.
By default, CAO appends your terminal ID and callback instructions to every assigned message automatically, and records your terminal as the worker's caller — workers can reply with send_message without a receiver_id. You do not need to hand-write callback instructions.
You may still include an explicit callback ID in the task message for emphasis:
Analyze dataset A. Send results back to terminal abc123 using send_message.
If your deployment disables the automatic suffix (CAO_ENABLE_SENDER_ID_INJECTION=false), the explicit pattern above is required: the structural caller record still works, but the worker gets no in-message reminder.
Use send_message when you need to contact an existing terminal directly rather than spawning a new worker.
Examples:
When sending direct messages, include enough context that the receiver can act without re-reading the full original task.
Hermes workers can stop on approval prompts or clarify pickers and report waiting_user_answer. When a Hermes worker is in that state, do not use assign, handoff, or send_message to answer it. Use answer_user_prompt(terminal_id, answer) with the exact selection or text to submit, such as 1, o, or a custom answer.
Other providers may still emit prompts in their terminal output without reporting waiting_user_answer. For those providers, treat the prompt as ordinary terminal output and answer it with send_message or direct input according to the workflow you are running.
assign — callback routing is automatic (your terminal ID is appended to the message and recorded as the worker's caller).handoff only for steps that must finish before you can continue.