/cao-worker-protocols
Worker-side callback and completion rules for assigned and handed-off tasks in CAO
$ npx -y skills add awslabs/cli-agent-orchestrator --skill cao-worker-protocols --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/cao-worker-protocols
Context preview
The summary Claude sees to decide when to auto-load this skill.
Worker-side callback and completion rules for assigned and handed-off tasks in CAO
SKILL.md
cao-worker-protocols.SKILL.mdname: cao-worker-protocols
description: Worker-side callback and completion rules for assigned and handed-off tasks in CAO
CAO Worker Protocols
Use this skill when acting as a worker agent inside CLI Agent Orchestrator.
This skill explains how workers should interpret assigned versus handed-off work, when to call `send_message`, and how to report results back cleanly.
Understand the Dispatch Mode
Workers receive tasks through one of two orchestration modes:
- `handoff`: blocking work where the orchestrator captures your final output automatically
- `assign`: non-blocking work where you must actively return results to the requesting terminal
Depending on provider and CAO behavior, a handoff may be made explicit in the task text. For example, Codex workers currently receive a `[CAO Handoff]` prefix for blocking handoffs. Other providers may rely on the task wording and orchestration context instead.
Rules for Handoff Tasks
When the task is a blocking handoff, complete the work and present the result in your normal response. The orchestrator captures that response automatically.
Do not call `send_message` for ordinary handoff completion unless the task explicitly asks for additional side-channel communication.
Rules for Assigned Tasks
When the task came through `assign`, send your results back after you finish the work:
1. Format the result clearly and concisely. 2. Call `send_message(message=...)` — omitting `receiver_id` routes the result to the terminal that assigned the task (the recorded caller). This is the reliable default. 3. If the task message names a different callback terminal (directly or in an appended suffix such as `[Assigned by terminal ...]`), pass that ID as `receiver_id` instead.
Do not stop after writing a normal response if the assignment explicitly requires a callback. The requesting terminal depends on `send_message` to receive the result.
Your own `CAO_TERMINAL_ID` identifies your terminal, not the callback target. Never pass it as `receiver_id`.
Message Formatting
Return results that are easy for the supervisor to merge into a larger workflow:
- Identify what task or dataset the result belongs to
- Include the requested output or deliverable
- Keep the message specific enough to act on without re-reading the whole task
If the task asks for progress updates, use `send_message` for those updates too. Otherwise prefer one final callback with the completed deliverable.
Filesystem and Reporting Discipline
If the task asks you to create files, write them before reporting completion. When sending results back to a supervisor, include absolute file paths so the supervisor can continue the workflow without ambiguity.
Reliability Guidelines
- If the task names an explicit callback terminal, note its ID before you start expensive work; otherwise rely on the default routing (omit `receiver_id`).
- If `send_message` is available and the task requires a callback, call it directly rather than ending with prose alone.
- Keep callback messages structured so the supervisor can merge them into a larger workflow.
- For handoff tasks, return the completed output directly and let the orchestrator handle delivery.
Read more
name: cao-worker-protocols description: Worker-side callback and completion rules for assigned and handed-off tasks in CAO
CAO Worker Protocols
Use this skill when acting as a worker agent inside CLI Agent Orchestrator.
This skill explains how workers should interpret assigned versus handed-off work, when to call `send_message`, and how to report results back cleanly.
Understand the Dispatch Mode
Workers receive tasks through one of two orchestration modes:
- `handoff`: blocking work where the orchestrator captures your final output automatically
- `assign`: non-blocking work where you must actively return results to the requesting terminal
Depending on provider and CAO behavior, a handoff may be made explicit in the task text. For example, Codex workers currently receive a `[CAO Handoff]` prefix for blocking handoffs. Other providers may rely on the task wording and orchestration context instead.
Rules for Handoff Tasks
When the task is a blocking handoff, complete the work and present the result in your normal response. The orchestrator captures that response automatically.
Do not call `send_message` for ordinary handoff completion unless the task explicitly asks for additional side-channel communication.
Rules for Assigned Tasks
When the task came through `assign`, send your results back after you finish the work:
1. Format the result clearly and concisely. 2. Call `send_message(message=...)` — omitting `receiver_id` routes the result to the terminal that assigned the task (the recorded caller). This is the reliable default. 3. If the task message names a different callback terminal (directly or in an appended suffix such as `[Assigned by terminal ...]`), pass that ID as `receiver_id` instead.
Do not stop after writing a normal response if the assignment explicitly requires a callback. The requesting terminal depends on `send_message` to receive the result.
Your own `CAO_TERMINAL_ID` identifies your terminal, not the callback target. Never pass it as `receiver_id`.
Message Formatting
Return results that are easy for the supervisor to merge into a larger workflow:
- Identify what task or dataset the result belongs to
- Include the requested output or deliverable
- Keep the message specific enough to act on without re-reading the whole task
If the task asks for progress updates, use `send_message` for those updates too. Otherwise prefer one final callback with the completed deliverable.
Filesystem and Reporting Discipline
If the task asks you to create files, write them before reporting completion. When sending results back to a supervisor, include absolute file paths so the supervisor can continue the workflow without ambiguity.
Reliability Guidelines
- If the task names an explicit callback terminal, note its ID before you start expensive work; otherwise rely on the default routing (omit `receiver_id`).
- If `send_message` is available and the task requires a callback, call it directly rather than ending with prose alone.
- Keep callback messages structured so the supervisor can merge them into a larger workflow.
- For handoff tasks, return the completed output directly and let the orchestrator handle delivery.
CLI Agent Orchestrator (CAO) coordinates multiple AI coding CLIs so a supervisor can delegate work to specialist agents in parallel or sequence. 📚 Documentation — guides, reference, and two interactive courses.
Other skills on cli-agent-orchestrator.
- /agui-author
Author live dashboard UI from an agent via the `emit_ui` MCP tool. Emit
Open skill - /cao-agent-routing
Find and select the best installed CAO agent profile for a task before
Open skill - /cao-learning
Report task outcomes and distill lessons so the team improves across
Open skill - /cao-mcp-apps
Enable, operate, and extend CAO's MCP Apps surface — the host-rendered fleet dashboard visible inside MCP App hosts (Claude Desktop, ChatGPT, VS Code Copilot, Goose, Postman). Use when the user says "enable MCP Apps in CAO", "the ui://cao views aren't rendering", "rebuild MCP
Open skill - /cao-memory
Store, recall, and forget durable facts with CAO memory — user preferences,
Open skill - /cao-plugin
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,
Open skill

