cao-agent-plugin-audit
Audit an existing Agent Plugins 1.0.0 package - check its plugin.json manifest and mcp.json against CAO's vendored schemas, andโฆ
Find available CAO (CLI Agent Orchestrator) agent profiles, and talk to the
Claude Code
$ npx -y skills add awslabs/cli-agent-orchestrator --skill cao-session-management --agent claude-code
Codex
$ npx skills add awslabs/cli-agent-orchestrator --skill cao-session-management -a codex -y
Cursor
$ npx skills add awslabs/cli-agent-orchestrator --skill cao-session-management -a cursor -y
Gemini CLI
$ npx skills add awslabs/cli-agent-orchestrator --skill cao-session-management -a gemini-cli -y
GitHub Copilot
$ npx skills add awslabs/cli-agent-orchestrator --skill cao-session-management -a github-copilot -y
OpenCode
$ npx skills add awslabs/cli-agent-orchestrator --skill cao-session-management -a opencode -y
Windsurf
$ npx skills add awslabs/cli-agent-orchestrator --skill cao-session-management -a windsurf -y
name: cao-session-management description: Find available CAO (CLI Agent Orchestrator) agent profiles, and talk to the conductor and worker terminals of a running CAO session, including unblocking a stuck worker. Use when choosing a profile to launch, messaging or unblocking workers, or diagnosing a stuck session. For preflight, launching, session commands, statuses, delegation and safety, run `cao --skill` first.
Run `cao --skill` for the CAO operating guide: preflight, launch, session commands, statuses, delegation, and safety. Run `cao <group> --help` for exact syntax.
Two rules apply to every launch from an agent:
policy unchanged; whether that policy is enforced depends on the provider (read the `Enforcement:` line launch prints). `--yolo` also skips the prompt but removes all tool restrictions, so the agent can run any command, including `aws`, `rm` and `curl`. Use `--yolo` only when the user asks for it.
`curl -sf http://localhost:9889/health`.
A reported status is inferred from the rendered terminal screen, so it can disagree with reality. Before reporting readiness, progress, or completion to a user, corroborate the status with an output read; see [cao-session-liveness](../cao-session-liveness/SKILL.md).
Profiles are CAO-level entities, installed with `cao install` regardless of which CLI provider runs them. To find available profiles:
| Source | Command | |--------|---------| | All available profiles, with the source each one resolved from | `cao profile list` (no server needed), or `curl -sf http://localhost:9889/agents/profiles` | | Profiles matching a keyword | `cao profile find "<keywords>"` | | Custom/local profile files only | `ls ~/.aws/cli-agent-orchestrator/agent-store/` | | Profiles installed via `cao install <name>` | `ls ~/.aws/cli-agent-orchestrator/agent-context/` | | Profile installation and keyword discovery | see [Agent profile installation](../../docs/agent-profile.md#installation) and [profile discovery](../../docs/agent-profile.md#profile-discovery) | | Provider-native list (`kiro_cli` only) | `kiro-cli agent list`, useful because CAO mirrors profiles into `~/.kiro/agents/` |
`cao profile list` and the HTTP endpoint return the same list. Discovery scans the local store (`agent-store/`) first, then provider-specific directories (including `agent-context/`), then extra directories from settings, and the built-in packaged store last. The first match wins, so a local copy of a profile shadows the built-in one with the same name. Each entry has a `source` label showing where it came from.
A profile runs on its frontmatter `provider:` unless `--provider` overrides it; the default is `kiro_cli`. Run `cao install --help` for the provider IDs.
If unsure which profile to use, ask the user rather than guessing.
Inside a session, the conductor talks to workers via two MCP tools, described below.
**Prefer communicating through the conductor** (`cao session send SESSION "msg"`) rather than directly to worker terminals. Bypassing the conductor leaves it without state on what was asked or answered, which causes confusion. Two exceptions: unblocking a stuck worker, and follow-up questions to a persistent async worker (see below).
**handoff** (blocking) โ conductor sends task and waits for the worker to reach `COMPLETED` status, then reads the output. If it times out, the worker is still running โ the conductor just stopped waiting.
**assign** (non-blocking) โ conductor sends task and returns immediately. The worker is expected to call `send_message` back to the conductor's terminal ID when done. Each terminal only knows its own ID via `$CAO_TERMINAL_ID`.
By default the conductor uses sync (handoff). You can override this by explicitly asking it to use async or sync protocol when sending it a task.
Async workers (assign) stay alive after completing their task and can answer follow-up questions โ useful for ongoing investigation where you want to keep querying the same worker. In this case, sending directly to the worker terminal is appropriate:
cao session send SESSION "<follow-up question>" --terminal <worker-terminal-id>
For SOP-driven work on the `kiro_cli` provider, send `/prompts` to discover the available SOPs, then the matched SOP name prefixed with `@` (for example `@my-sop-name`), then the task. Send each as a separate message, and wait for `completed` status between them.
**Wrong working directory** โ agents won't find files, builds fail with confusing errors. Pass an absolute path in single quotes to `--working-directory`. A wrong path cannot be fixed without shutting down and relaunching; ask the user if the path is unclear.
**Launching with `--yolo` to avoid prompts** โ `--auto-approve` already skips the confirmation prompt. `--yolo` additionally removes every tool restriction, which the task almost never needs.
**Stuck conductor** โ conductor is waiting on a worker that stopped responding. Check the worker's status first, then decide: prompt it to continue and send results back, or ask it to resend if it already finished. Never re-delegate work that may still be running โ it risks duplicate work.
cao session status SESSION --workers cao session status SESSION --terminal <worker-terminal-id> cao session send SESSION "continue your work, then send results to terminal <conductor-terminal-id>" --terminal <worker-terminal-id>
Get the conductor's terminal ID from `cao session status SESSION --json`.
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.
Audit an existing Agent Plugins 1.0.0 package - check its plugin.json manifest and mcp.json against CAO's vendored schemas, andโฆ
Author a new Agent Plugins 1.0.0 package from an empty directory - write the plugin.json manifest, lay out skills/, optionallyโฆ
Contribute changes to the CAO (CLI Agent Orchestrator) codebase โ the local
Create a new CAO (CLI Agent Orchestrator) plugin. Use this skill whenever the user wants to add a plugin that reacts to CAOโฆ
Create a new CLI agent provider for CAO (CLI Agent Orchestrator). Use this skill whenever the user wants to add support for a newโฆ
Find and select the best installed CAO agent profile for a task before
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also coversโฆ
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, fillingโฆ