
Description
Worker-side callback and completion rules for assigned and handed-off tasks in CAO
SKILL.md
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 automaticallyassign: 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:
- Format the result clearly and concisely.
- Call
send_message(message=...)— omittingreceiver_idroutes the result to the terminal that assigned the task (the recorded caller). This is the reliable default. - If the task message names a different callback terminal (directly or in an appended suffix such as
[Assigned by terminal ...]), pass that ID asreceiver_idinstead.
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_messageis 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.
More skills from the cli-agent-orchestrator repository
View all 14 skillsadd-app-to-server
add interactive UI to MCP servers
Jul 12FrontendMCPPlugin DevelopmentUI Componentsagui-author
emit interactive dashboard UI components
Jul 22AgentsDashboardsMCPUI Componentscao-mcp-apps
operate CAO MCP application surfaces
Jul 22AgentsCLIMCPUI Componentscao-memory
manage durable agent memory and preferences
Jul 12AgentsMemoryProductivitycao-plugin
scaffold CAO agent plugins
Jul 12AgentsAutomationCLIPlugin Developmentcao-provider
create CLI agent providers for CAO
Jul 12AgentsAutomationCLIEngineering
More from AWS Labs
View publisheragentcore-investigation
investigate Bedrock AgentCore runtime sessions
mcp
Jul 12AWSDebuggingLogsObservabilityamazon aurora dsql
build applications with Aurora DSQL
mcp
Jul 12AuroraAWSDatabaseServerless +1aurora dsql
build applications with Aurora DSQL
mcp
Jul 12AWSDatabaseServerlessSQLaws dsql
build applications with Aurora DSQL
mcp
Jul 12AWSDatabaseMigrationServerless +1distributed postgres
build applications with Aurora DSQL
mcp
Jul 12AWSDatabasePostgreSQLServerless +1distributed sql
build applications with Aurora DSQL
mcp
Jul 12AWSDatabaseServerlessSQL