Official agent skill

Cao Provider

by awslabs in awslabs/cli-agent-orchestrator

Create a new CLI agent provider for CAO (CLI Agent Orchestrator).

OfficialApache-2.0Auto-check passedAgent Workflows

Install Cao Provider

skills CLI
$ npx skills add awslabs/cli-agent-orchestrator --skill cao-provider -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install awslabs/cli-agent-orchestrator cao-provider --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/awslabs/cli-agent-orchestrator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cao-provider .claude/skills/cao-provider && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
cao-provider
GitHub stars
1.4k
Token cost
~2.3k tokens
SKILL.md length
949 words
Files
4 (incl. references)
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

Create a new CLI agent provider for CAO (CLI Agent Orchestrator).

  • Works in 10 steps: Add to ProviderType enum → Create the provider class → Register in ProviderManager → …
  • The user wants to add support for a new CLI-based AI agent (e.g.
  • SKILL.md covers What You're Building, Before You Start, Step-by-Step Implementation and File Checklist
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Cao Provider is an agent skill from awslabs/cli-agent-orchestrator, published by the product's own GitHub organization. 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.

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/lessons-learnt.md`, `references/provider-template.md` and `references/test-guide.md`).

It sits in Agent Workflows, covering Multi-agent orchestration. It works with Model Context Protocol and tmux. The repository describes itself as: Multi-agent orchestration for AI coding CLIs — Claude Code, Kiro, Codex, and more, coordinated in isolated tmux sessions. The licence is Apache-2.0.

When your agent uses it

  • The user wants to add support for a new CLI-based AI agent (e.g.
  • A new coding assistant CLI)
  • Integrate a new provider
  • Scaffold a provider implementation

Example prompts

  • “/cao-provider”

Requirements

  • Python 3

Workflow steps

10 steps, taken from the step headings in SKILL.md.

  1. Add to ProviderType enum
  2. Create the provider class
  3. Register in ProviderManager
  4. Add to PROVIDERS_REQUIRING_WORKSPACE_ACCESS
  5. Tool restriction enforcement
  6. Handle startup prompts
  7. Write unit tests
  8. Write e2e tests
  9. Validate with assign + handoff orchestration
  10. Documentation

What it can do on your machine

Read from SKILL.md and the folder at commit 01c179a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Cao Provider loads about 2.3k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 94 tokens; SKILL.md has 949 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~94
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~13k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from awslabs/cli-agent-orchestrator at commit 01c179a, republished under its Apache-2.0 licence (© awslabs). 949 words, ~2,345 tokens.

Download SKILL.mdSave it as .claude/skills/cao-provider/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
cao-provider
description
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.

CAO Provider Creator

Guide for creating a new CLI agent provider for CLI Agent Orchestrator. A "provider" is an adapter that lets CAO interact with a specific CLI-based AI agent through tmux.

What You're Building

A provider translates between CAO's unified interface and a specific CLI tool's terminal output. It needs to:

  1. Launch the CLI tool in a tmux window with the right flags
  2. Detect status by parsing terminal output (IDLE, PROCESSING, COMPLETED, ERROR, WAITING_USER_ANSWER)
  3. Extract responses from the terminal buffer after the agent finishes
  4. Clean up when the terminal is deleted

Before You Start

Gather this information about the target CLI:

  • What command launches it? (e.g., claude, kiro-cli chat, codex)
  • What does the idle prompt look like? (e.g., > , ❯ , ask a question)
  • What does the processing state look like? (e.g., spinner characters, "Thinking...")
  • How are responses formatted? (e.g., preceded by ⏺, inside a box, plain text)
  • Does it support --dangerously-skip-permissions or similar flags?
  • Does it have a REPL mode or is it single-shot?
  • How does it handle MCP servers? (CLI flags, config file, agent JSON)
  • Does it use alt-screen (full-screen TUI) or scrollback (inline output)? This fundamentally changes status detection logic — see lesson #16
  • What's the exit command? (/exit, /quit, Ctrl+C)

Step-by-Step Implementation

Step 1: Add to ProviderType enum

File: src/cli_agent_orchestrator/models/provider.py

python
class ProviderType(str, Enum):
    # ... existing providers ...
    NEW_CLI = "new_cli"

The value string is used everywhere — in API requests, database, config. Use snake_case.

Step 2: Create the provider class

File: src/cli_agent_orchestrator/providers/new_cli.py

Read references/provider-template.md for the full annotated template. The key sections:

Regex patterns — Define at module level, not inside methods. You need patterns for:

  • ANSI code stripping (reuse r"\x1b\[[0-9;]*m")
  • Idle prompt detection (what the prompt looks like when waiting for input)
  • Processing detection (spinners, "Thinking...", progress indicators)
  • Response markers (how agent responses start — e.g., ⏺ for Claude Code)
  • Permission/confirmation prompts (if the CLI asks Y/n questions)

Status detection priority — The order in get_status() matters. Read references/lessons-learnt.md for the critical "stale buffer" lesson. The recommended pattern:

1. Strip ANSI codes from terminal output
2. Check WAITING_USER_ANSWER first (permission prompts need immediate attention)
3. Check COMPLETED (response marker + idle prompt both present in recent lines)
4. Check IDLE (just idle prompt, no response marker)
5. Check PROCESSING (spinner/thinking indicator in recent lines only)
6. Default to ERROR

Message extraction — Find the last response boundary in the terminal output and extract everything between it and the next prompt. Always strip ANSI codes from the final extracted text.

Step 3: Register in ProviderManager

File: src/cli_agent_orchestrator/providers/manager.py

Add the import and elif branch:

python
from cli_agent_orchestrator.providers.new_cli import NewCliProvider

# In create_provider():
elif provider_type == ProviderType.NEW_CLI.value:
    provider = NewCliProvider(
        terminal_id, tmux_session, tmux_window, agent_profile, allowed_tools
    )
Step 4: Add to PROVIDERS_REQUIRING_WORKSPACE_ACCESS

File: src/cli_agent_orchestrator/cli/commands/launch.py

If the provider executes code or accesses the filesystem, add it:

python
PROVIDERS_REQUIRING_WORKSPACE_ACCESS = {
    # ... existing ...
    "new_cli",
}
Step 5: Tool restriction enforcement

Two separate questions, answered in two places. Read docs/tool-restrictions.md for full context.

How CAO delivers the policy (one of three mechanisms):

  • CLI flags (e.g., Claude Code --disallowedTools, Copilot CLI --deny-tool, Grok --allow/--deny): add the provider to TOOL_MAPPING in src/cli_agent_orchestrator/utils/tool_mapping.py to translate CAO vocabulary to native tool names.
  • Agent file (e.g., Kiro CLI, OpenCode CLI): CAO writes allowedTools into the agent file at install time in its own vocabulary or the CLI's permission schema. No TOOL_MAPPING entry needed.
  • System prompt (e.g., Kimi CLI, Codex): CAO prepends restriction instructions to the system prompt. No TOOL_MAPPING entry needed.

Whether the CLI then enforces it is a separate fact, recorded per provider in src/cli_agent_orchestrator/utils/enforcement.py (native, prompt, none) and shown to the operator on the launch gate. The mechanism does not decide it: OpenCode enforces its agent-file permission block (native, at install time), while Kiro is launched --trust-all-tools with tools: ["*"] and its allowedTools only suppresses approval prompts (none). Adding a provider means adding BOTH its delivery code and its PROVIDER_ENFORCEMENT row; test/test_enforcement_tables.py fails until the docs tables agree.

Only add a TOOL_MAPPING entry if the CLI has its own native tool names that differ from CAO's vocabulary.

Show full SKILL.md (374 more words)Show less
Step 6: Handle startup prompts

Many CLIs show cascading prompts on first launch (workspace trust, permission bypass, terms acceptance). Handle these in initialize() or a dedicated _handle_startup_prompts() method using a polling loop — not a single check. See references/lessons-learnt.md #17 for the stabilization loop pattern. Also consider shell warm-up (#14) and TERM variable compatibility (#15).

Step 7: Write unit tests

File: test/providers/test_new_cli_unit.py

Read references/test-guide.md for the full test structure. Minimum coverage:

  1. Initialization — successful start, shell timeout, CLI timeout, agent profiles
  2. Status detection — IDLE, PROCESSING, COMPLETED, WAITING_USER_ANSWER, ERROR, empty output
  3. Message extraction — successful extraction, edge cases, error handling
  4. Regex patterns — verify each pattern matches expected terminal output
  5. Edge cases — ANSI codes, Unicode, long outputs, multiple responses

Use unittest.mock.patch to mock tmux_client. Create fixture files in test/providers/fixtures/.

Step 8: Write e2e tests

Add test classes to existing e2e test files and a fixture in test/e2e/conftest.py. Read references/test-guide.md for the full list of e2e test classes to add.

Step 9: Validate with assign + handoff orchestration

This is the canonical multi-agent e2e test. It exercises assign (non-blocking), handoff (blocking), send_message (async inbox), and status detection under concurrent load. Use the examples/assign/ profiles:

bash
cao install examples/assign/data_analyst.md
cao install examples/assign/report_generator.md
cao install examples/assign/analysis_supervisor.md
cao launch --agents analysis_supervisor --provider new_cli --auto-approve

Test flow: Supervisor assigns 3x data_analyst workers in parallel + handoff 1x report_generator (blocking) → analysts send_message results back to supervisor → supervisor combines template + results into final report.

If any step fails, investigate:

  • Assign fails: Status detection not recognizing IDLE after analyst finishes, or per-directory lock conflict (see lesson #19)
  • Handoff times out: COMPLETED not detected — check stale buffer (lesson #1) or alt-screen detection (lesson #16)
  • send_message not delivered: Supervisor not reaching IDLE state, blocking message delivery — check startup prompt loop (lesson #17)
  • Concurrent failures: Race conditions in shared config files (lesson #19) or TERM env issues (lesson #15)

See test/e2e/test_assign.py for the automated version. Reference: https://github.com/awslabs/cli-agent-orchestrator/tree/feature/kimi-cli/examples/assign

Step 10: Documentation

Create docs/new-cli.md with prerequisites, launch examples, agent profile format, known limitations, and troubleshooting. Update README.md provider table and CHANGELOG.md.

File Checklist

When your provider is complete, verify you've touched all these files:

  • src/cli_agent_orchestrator/models/provider.py — ProviderType enum
  • src/cli_agent_orchestrator/providers/new_cli.py — Provider class
  • src/cli_agent_orchestrator/providers/manager.py — Import + elif branch
  • src/cli_agent_orchestrator/cli/commands/launch.py — PROVIDERS_REQUIRING_WORKSPACE_ACCESS
  • src/cli_agent_orchestrator/utils/tool_mapping.py — TOOL_MAPPING (only if CLI needs translation)
  • test/providers/test_new_cli_unit.py — Unit tests
  • test/providers/fixtures/new_cli_*.txt — Test fixtures
  • test/e2e/conftest.py — require_new_cli fixture
  • test/e2e/test_*.py — E2E test classes
  • docs/new-cli.md — Provider documentation
  • README.md — Provider table
  • CHANGELOG.md — New provider entry

© awslabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in skills/cao-provider of awslabs/cli-agent-orchestrator.

  • SKILL.md
  • references/lessons-learnt.md
  • references/provider-template.md
  • references/test-guide.md

Open the folder on GitHubat commit 01c179a

Compare with similar skills

Cao Provider next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Cao Provider compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cao Provider this skillawslabs/cli-agent-orchestrator1.4k—~2.3kAutomated safety check: PassApache-2.0
Agent Manager Fleet TUIYoanWai/agent-manager582—~1kAutomated safety check: PassApache-2.0
Agtx Task Sweepfynnfluegge/agtx1.7k—~1.7kAutomated safety check: PassApache-2.0
Flow SwarmLeoYeAI/openclaw-master-skills2.2k—~5.3kAutomated safety check: PassMIT
Codex with ChatGPT Planning LoopXiaoDuoYa/codex-with-chatgpt7.2k—~11kAutomated safety check: NotesMIT
MemPalace Task HandoffMemPalace/mempalace60k—~1.9kAutomated safety check: PassMIT

Similar skills

  • Agent Manager Fleet TUI

    YoanWai/agent-manager

    Runs several coding-agent CLIs as real tmux sessions in one terminal UI, color-coded by whether each is working, waiting, idle or blocked.

    582 GitHub stars~1k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Agtx Task Sweep

    fynnfluegge/agtx

    Breaks a conversation's results into feature-level tasks and pushes them to the agtx kanban board, where each task gets its own worktree and agent session.

    1.7k GitHub stars~1.7k tokensUpdated 8 days ago
    Agent WorkflowsAuto-check passed
  • Flow Swarm

    LeoYeAI/openclaw-master-skills

    Multi-agent swarm orchestration via RuFlo + Claude Code. An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~5.3k tokensUpdated 2 mo ago
    Agent WorkflowsAuto-check passed
  • Codex with ChatGPT Planning Loop

    XiaoDuoYa/codex-with-chatgpt

    Uses ChatGPT in the browser as the planning and review brain for a Codex session, with Codex keeping all execution and ChatGPT reading the workspace through a bridge.

    7.2k GitHub stars~11k tokensUpdated 10 days ago
    Agent WorkflowsAuto-check: notes
  • MemPalace Task Handoff

    MemPalace/mempalace

    Creates, hands off, claims, executes and closes agent tasks through the MemPalace logstream, with approval of the exact task before it is recorded.

    60k GitHub stars~1.9k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Agent of Empires Session Manager

    agent-of-empires/agent-of-empires

    Launches, monitors and organizes AI coding agent sessions such as Claude Code or Codex inside tmux, tracking status, capturing output and managing git worktrees for parallel branches.

    3.3k GitHub stars~2.5k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from awslabs/cli-agent-orchestrator

All 14 skills in this repo
  • Cao MCP Apps

    awslabs/cli-agent-orchestrator

    Official

    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).

    1.4k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Agui Author

    awslabs/cli-agent-orchestrator

    Official

    Author live dashboard UI from an agent via the emitui MCP tool.

    1.4k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • MCP Apps Builder

    awslabs/cli-agent-orchestrator

    Official

    Load the official MCP Apps builder skills (create-mcp-app, migrate-oai-app, add-app-to-server, convert-web-app) from github.com/modelcontextprotocol/ext-apps.

    1.4k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Cao Plugin

    awslabs/cli-agent-orchestrator

    Official

    Create a new CAO (CLI Agent Orchestrator) plugin. An agent skill from awslabs/cli-agent-orchestrator.

    1.4k GitHub stars~3.1k tokensUpdated today
    Auto-check: notes
  • Cao Agent Routing

    awslabs/cli-agent-orchestrator

    Official

    Find and select the best installed CAO agent profile for a task before delegating with assign or handoff.

    1.4k GitHub stars~552 tokensUpdated today
    Auto-check passed
  • Cao Contributing

    awslabs/cli-agent-orchestrator

    Official

    Contribute changes to the CAO (CLI Agent Orchestrator) codebase — the local dev loop, the CI gate map, and the pre-PR checklist.

    1.4k GitHub stars~4.1k tokensUpdated today
    Auto-check passed

Questions about Cao Provider

What does Cao Provider do?

Create a new CLI agent provider for CAO (CLI Agent Orchestrator). Cao Provider is an agent skill from awslabs/cli-agent-orchestrator, published by the product's own GitHub organization. Create a new CLI agent provider for CAO (CLI Agent Orchestrator).

When should I use Cao Provider?

Cao Provider fits situations like: the user wants to add support for a new CLI-based AI agent (e.g; A new coding assistant CLI); integrate a new provider; scaffold a provider implementation.

How do I install Cao Provider in Claude Code?

Run `npx skills add awslabs/cli-agent-orchestrator --skill cao-provider -a claude-code`. Or copy the skill folder (skills/cao-provider in awslabs/cli-agent-orchestrator) into .claude/skills/cao-provider in your project. Claude Code loads it when a task matches its description.

How do I install Cao Provider in Codex?

Run `npx skills add awslabs/cli-agent-orchestrator --skill cao-provider -a codex`. Or copy the skill folder (skills/cao-provider in awslabs/cli-agent-orchestrator) into .agents/skills/cao-provider in your project. Codex loads it when a task matches its description.

Can I use Cao Provider in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add awslabs/cli-agent-orchestrator --skill cao-provider -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cao-provider, .gemini/skills/cao-provider, .github/skills/cao-provider and .opencode/skills/cao-provider in your project.

What does Cao Provider need to run?

SKILL.md names no scripts, command-line tools or credentials: Cao Provider is instructions for the agent only. Our summary lists: Python 3.

Does Cao Provider access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Cao Provider safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Cao Provider use?

Cao Provider is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cao Provider use?

About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 10k tokens, read only when the agent opens those files.

What are the alternatives to Cao Provider?

Skills that share tags, products or a category with Cao Provider: Agent Manager Fleet TUI (YoanWai/agent-manager, 582 stars), Agtx Task Sweep (fynnfluegge/agtx, 1.7k stars), Flow Swarm (LeoYeAI/openclaw-master-skills, 2.2k stars) and Codex with ChatGPT Planning Loop (XiaoDuoYa/codex-with-chatgpt, 7.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cao Provider?

awslabs (a GitHub organization, an official publisher) maintains it in awslabs/cli-agent-orchestrator, which has 1,406 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 11, 2026.

Source: awslabs/cli-agent-orchestrator on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.