[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-cao-supervisor-protocols":3,"mdc-hsdso6-key":33,"related-org-aws-labs-cao-supervisor-protocols":548,"related-repo-aws-labs-cao-supervisor-protocols":726},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"cao-supervisor-protocols","orchestrate CAO supervisor protocols","Supervisor-side orchestration patterns for assign, handoff, and idle inbox delivery in CAO",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20],{"name":14,"slug":15,"type":16},"Automation","automation","tag",{"name":18,"slug":19,"type":16},"AWS","aws",{"name":21,"slug":22,"type":16},"Multi-Agent","multi-agent",871,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fcli-agent-orchestrator","2026-07-12T08:36:58.154322",null,164,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fcli-agent-orchestrator\u002Ftree\u002FHEAD\u002Fskills\u002Fcao-supervisor-protocols","---\nname: cao-supervisor-protocols\ndescription: Supervisor-side orchestration patterns for assign, handoff, and idle inbox delivery in CAO\n---\n\n# CAO Supervisor Protocols\n\nUse this skill when supervising worker agents through CLI Agent Orchestrator.\n\nThis skill covers how supervisors should dispatch work, decide between `assign` and `handoff`, and receive worker results without blocking inbox delivery.\n\n## Core MCP Tools\n\nFrom `cao-mcp-server`, supervisors orchestrate work with:\n\n- `assign(agent_profile, message)` for asynchronous work that returns immediately\n- `handoff(agent_profile, message)` for synchronous work that blocks until the worker finishes\n- `send_message(message, receiver_id=None)` for direct messages — `receiver_id` defaults to the terminal that created yours via handoff\u002Fassign\n- `answer_user_prompt(terminal_id, answer)` for answering a Hermes worker that reports `waiting_user_answer`\n\nYour 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.\n\n## Choosing Between Assign and Handoff\n\nUse `assign` when the worker should continue independently and report back later. This is the normal pattern for fan-out work or parallel execution.\n\nUse `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.\n\nTypical pattern:\n\n- Use `assign` for analysis, research, or code changes that can run in parallel.\n- Use `handoff` for report generation, blocking review steps, or any task where you need the result before you can continue.\n\n## Idle-Based Message Delivery\n\nAssigned workers usually return results through `send_message`. Those inbox messages are delivered to the supervisor automatically when the supervisor terminal becomes idle.\n\nThis means supervisors should:\n\n- Dispatch all planned worker tasks first\n- Finish the turn after dispatching work\n- Avoid running placeholder shell commands just to wait\n\nDo not keep the terminal busy with `sleep`, `echo`, or similar commands while waiting. A busy terminal delays inbox delivery.\n\nIf you need multiple worker results, dispatch them all first, then end the turn. Do not poll manually in a loop.\n\n## Callback Pattern\n\nBy 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.\n\nYou may still include an explicit callback ID in the task message for emphasis:\n\n```text\nAnalyze dataset A. Send results back to terminal abc123 using send_message.\n```\n\nIf 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.\n\n## Direct Supervisor Communication\n\nUse `send_message` when you need to contact an existing terminal directly rather than spawning a new worker.\n\nExamples:\n\n- Relay follow-up instructions to a worker you already created.\n- Forward a worker result to another coordinator terminal.\n- Send a concise status update to a collaborating supervisor.\n\nWhen sending direct messages, include enough context that the receiver can act without re-reading the full original task.\n\n## Interactive Worker Prompts\n\nHermes 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.\n\nOther 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.\n\n## Practical Workflow\n\n1. Dispatch asynchronous workers with `assign` — callback routing is automatic (your terminal ID is appended to the message and recorded as the worker's caller).\n2. Use `handoff` only for steps that must finish before you can continue.\n3. End the turn so asynchronous worker messages can be delivered.\n4. When messages arrive, synthesize the results and continue the workflow.\n\n## Reliability Guidelines\n\n- Tell workers exactly what deliverable they should return.\n- When workers create files, ask them to return absolute paths in their callback message.\n- Do not assume results will be delivered while your terminal is still busy.\n- Keep orchestration instructions separate from domain requirements so workers can parse both cleanly.\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,46,52,74,81,94,157,170,176,188,199,204,229,235,248,253,271,292,297,303,322,327,339,352,358,369,374,392,397,403,457,476,482,519,525],{"type":39,"tag":40,"props":41,"children":42},"element","h1",{"id":4},[43],{"type":44,"value":45},"text","CAO Supervisor Protocols",{"type":39,"tag":47,"props":48,"children":49},"p",{},[50],{"type":44,"value":51},"Use this skill when supervising worker agents through CLI Agent Orchestrator.",{"type":39,"tag":47,"props":53,"children":54},{},[55,57,64,66,72],{"type":44,"value":56},"This skill covers how supervisors should dispatch work, decide between ",{"type":39,"tag":58,"props":59,"children":61},"code",{"className":60},[],[62],{"type":44,"value":63},"assign",{"type":44,"value":65}," and ",{"type":39,"tag":58,"props":67,"children":69},{"className":68},[],[70],{"type":44,"value":71},"handoff",{"type":44,"value":73},", and receive worker results without blocking inbox delivery.",{"type":39,"tag":75,"props":76,"children":78},"h2",{"id":77},"core-mcp-tools",[79],{"type":44,"value":80},"Core MCP Tools",{"type":39,"tag":47,"props":82,"children":83},{},[84,86,92],{"type":44,"value":85},"From ",{"type":39,"tag":58,"props":87,"children":89},{"className":88},[],[90],{"type":44,"value":91},"cao-mcp-server",{"type":44,"value":93},", supervisors orchestrate work with:",{"type":39,"tag":95,"props":96,"children":97},"ul",{},[98,110,121,140],{"type":39,"tag":99,"props":100,"children":101},"li",{},[102,108],{"type":39,"tag":58,"props":103,"children":105},{"className":104},[],[106],{"type":44,"value":107},"assign(agent_profile, message)",{"type":44,"value":109}," for asynchronous work that returns immediately",{"type":39,"tag":99,"props":111,"children":112},{},[113,119],{"type":39,"tag":58,"props":114,"children":116},{"className":115},[],[117],{"type":44,"value":118},"handoff(agent_profile, message)",{"type":44,"value":120}," for synchronous work that blocks until the worker finishes",{"type":39,"tag":99,"props":122,"children":123},{},[124,130,132,138],{"type":39,"tag":58,"props":125,"children":127},{"className":126},[],[128],{"type":44,"value":129},"send_message(message, receiver_id=None)",{"type":44,"value":131}," for direct messages — ",{"type":39,"tag":58,"props":133,"children":135},{"className":134},[],[136],{"type":44,"value":137},"receiver_id",{"type":44,"value":139}," defaults to the terminal that created yours via handoff\u002Fassign",{"type":39,"tag":99,"props":141,"children":142},{},[143,149,151],{"type":39,"tag":58,"props":144,"children":146},{"className":145},[],[147],{"type":44,"value":148},"answer_user_prompt(terminal_id, answer)",{"type":44,"value":150}," for answering a Hermes worker that reports ",{"type":39,"tag":58,"props":152,"children":154},{"className":153},[],[155],{"type":44,"value":156},"waiting_user_answer",{"type":39,"tag":47,"props":158,"children":159},{},[160,162,168],{"type":44,"value":161},"Your own terminal ID is available in the ",{"type":39,"tag":58,"props":163,"children":165},{"className":164},[],[166],{"type":44,"value":167},"CAO_TERMINAL_ID",{"type":44,"value":169}," environment variable. CAO appends it to assigned task messages and records it on worker terminals automatically, so you rarely need to handle it yourself.",{"type":39,"tag":75,"props":171,"children":173},{"id":172},"choosing-between-assign-and-handoff",[174],{"type":44,"value":175},"Choosing Between Assign and Handoff",{"type":39,"tag":47,"props":177,"children":178},{},[179,181,186],{"type":44,"value":180},"Use ",{"type":39,"tag":58,"props":182,"children":184},{"className":183},[],[185],{"type":44,"value":63},{"type":44,"value":187}," when the worker should continue independently and report back later. This is the normal pattern for fan-out work or parallel execution.",{"type":39,"tag":47,"props":189,"children":190},{},[191,192,197],{"type":44,"value":180},{"type":39,"tag":58,"props":193,"children":195},{"className":194},[],[196],{"type":44,"value":71},{"type":44,"value":198}," 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.",{"type":39,"tag":47,"props":200,"children":201},{},[202],{"type":44,"value":203},"Typical pattern:",{"type":39,"tag":95,"props":205,"children":206},{},[207,218],{"type":39,"tag":99,"props":208,"children":209},{},[210,211,216],{"type":44,"value":180},{"type":39,"tag":58,"props":212,"children":214},{"className":213},[],[215],{"type":44,"value":63},{"type":44,"value":217}," for analysis, research, or code changes that can run in parallel.",{"type":39,"tag":99,"props":219,"children":220},{},[221,222,227],{"type":44,"value":180},{"type":39,"tag":58,"props":223,"children":225},{"className":224},[],[226],{"type":44,"value":71},{"type":44,"value":228}," for report generation, blocking review steps, or any task where you need the result before you can continue.",{"type":39,"tag":75,"props":230,"children":232},{"id":231},"idle-based-message-delivery",[233],{"type":44,"value":234},"Idle-Based Message Delivery",{"type":39,"tag":47,"props":236,"children":237},{},[238,240,246],{"type":44,"value":239},"Assigned workers usually return results through ",{"type":39,"tag":58,"props":241,"children":243},{"className":242},[],[244],{"type":44,"value":245},"send_message",{"type":44,"value":247},". Those inbox messages are delivered to the supervisor automatically when the supervisor terminal becomes idle.",{"type":39,"tag":47,"props":249,"children":250},{},[251],{"type":44,"value":252},"This means supervisors should:",{"type":39,"tag":95,"props":254,"children":255},{},[256,261,266],{"type":39,"tag":99,"props":257,"children":258},{},[259],{"type":44,"value":260},"Dispatch all planned worker tasks first",{"type":39,"tag":99,"props":262,"children":263},{},[264],{"type":44,"value":265},"Finish the turn after dispatching work",{"type":39,"tag":99,"props":267,"children":268},{},[269],{"type":44,"value":270},"Avoid running placeholder shell commands just to wait",{"type":39,"tag":47,"props":272,"children":273},{},[274,276,282,284,290],{"type":44,"value":275},"Do not keep the terminal busy with ",{"type":39,"tag":58,"props":277,"children":279},{"className":278},[],[280],{"type":44,"value":281},"sleep",{"type":44,"value":283},", ",{"type":39,"tag":58,"props":285,"children":287},{"className":286},[],[288],{"type":44,"value":289},"echo",{"type":44,"value":291},", or similar commands while waiting. A busy terminal delays inbox delivery.",{"type":39,"tag":47,"props":293,"children":294},{},[295],{"type":44,"value":296},"If you need multiple worker results, dispatch them all first, then end the turn. Do not poll manually in a loop.",{"type":39,"tag":75,"props":298,"children":300},{"id":299},"callback-pattern",[301],{"type":44,"value":302},"Callback Pattern",{"type":39,"tag":47,"props":304,"children":305},{},[306,308,313,315,320],{"type":44,"value":307},"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 ",{"type":39,"tag":58,"props":309,"children":311},{"className":310},[],[312],{"type":44,"value":245},{"type":44,"value":314}," without a ",{"type":39,"tag":58,"props":316,"children":318},{"className":317},[],[319],{"type":44,"value":137},{"type":44,"value":321},". You do not need to hand-write callback instructions.",{"type":39,"tag":47,"props":323,"children":324},{},[325],{"type":44,"value":326},"You may still include an explicit callback ID in the task message for emphasis:",{"type":39,"tag":328,"props":329,"children":334},"pre",{"className":330,"code":332,"language":44,"meta":333},[331],"language-text","Analyze dataset A. Send results back to terminal abc123 using send_message.\n","",[335],{"type":39,"tag":58,"props":336,"children":337},{"__ignoreMap":333},[338],{"type":44,"value":332},{"type":39,"tag":47,"props":340,"children":341},{},[342,344,350],{"type":44,"value":343},"If your deployment disables the automatic suffix (",{"type":39,"tag":58,"props":345,"children":347},{"className":346},[],[348],{"type":44,"value":349},"CAO_ENABLE_SENDER_ID_INJECTION=false",{"type":44,"value":351},"), the explicit pattern above is required: the structural caller record still works, but the worker gets no in-message reminder.",{"type":39,"tag":75,"props":353,"children":355},{"id":354},"direct-supervisor-communication",[356],{"type":44,"value":357},"Direct Supervisor Communication",{"type":39,"tag":47,"props":359,"children":360},{},[361,362,367],{"type":44,"value":180},{"type":39,"tag":58,"props":363,"children":365},{"className":364},[],[366],{"type":44,"value":245},{"type":44,"value":368}," when you need to contact an existing terminal directly rather than spawning a new worker.",{"type":39,"tag":47,"props":370,"children":371},{},[372],{"type":44,"value":373},"Examples:",{"type":39,"tag":95,"props":375,"children":376},{},[377,382,387],{"type":39,"tag":99,"props":378,"children":379},{},[380],{"type":44,"value":381},"Relay follow-up instructions to a worker you already created.",{"type":39,"tag":99,"props":383,"children":384},{},[385],{"type":44,"value":386},"Forward a worker result to another coordinator terminal.",{"type":39,"tag":99,"props":388,"children":389},{},[390],{"type":44,"value":391},"Send a concise status update to a collaborating supervisor.",{"type":39,"tag":47,"props":393,"children":394},{},[395],{"type":44,"value":396},"When sending direct messages, include enough context that the receiver can act without re-reading the full original task.",{"type":39,"tag":75,"props":398,"children":400},{"id":399},"interactive-worker-prompts",[401],{"type":44,"value":402},"Interactive Worker Prompts",{"type":39,"tag":47,"props":404,"children":405},{},[406,408,413,415,420,421,426,428,433,435,440,442,448,449,455],{"type":44,"value":407},"Hermes workers can stop on approval prompts or clarify pickers and report ",{"type":39,"tag":58,"props":409,"children":411},{"className":410},[],[412],{"type":44,"value":156},{"type":44,"value":414},". When a Hermes worker is in that state, do not use ",{"type":39,"tag":58,"props":416,"children":418},{"className":417},[],[419],{"type":44,"value":63},{"type":44,"value":283},{"type":39,"tag":58,"props":422,"children":424},{"className":423},[],[425],{"type":44,"value":71},{"type":44,"value":427},", or ",{"type":39,"tag":58,"props":429,"children":431},{"className":430},[],[432],{"type":44,"value":245},{"type":44,"value":434}," to answer it. Use ",{"type":39,"tag":58,"props":436,"children":438},{"className":437},[],[439],{"type":44,"value":148},{"type":44,"value":441}," with the exact selection or text to submit, such as ",{"type":39,"tag":58,"props":443,"children":445},{"className":444},[],[446],{"type":44,"value":447},"1",{"type":44,"value":283},{"type":39,"tag":58,"props":450,"children":452},{"className":451},[],[453],{"type":44,"value":454},"o",{"type":44,"value":456},", or a custom answer.",{"type":39,"tag":47,"props":458,"children":459},{},[460,462,467,469,474],{"type":44,"value":461},"Other providers may still emit prompts in their terminal output without reporting ",{"type":39,"tag":58,"props":463,"children":465},{"className":464},[],[466],{"type":44,"value":156},{"type":44,"value":468},". For those providers, treat the prompt as ordinary terminal output and answer it with ",{"type":39,"tag":58,"props":470,"children":472},{"className":471},[],[473],{"type":44,"value":245},{"type":44,"value":475}," or direct input according to the workflow you are running.",{"type":39,"tag":75,"props":477,"children":479},{"id":478},"practical-workflow",[480],{"type":44,"value":481},"Practical Workflow",{"type":39,"tag":483,"props":484,"children":485},"ol",{},[486,498,509,514],{"type":39,"tag":99,"props":487,"children":488},{},[489,491,496],{"type":44,"value":490},"Dispatch asynchronous workers with ",{"type":39,"tag":58,"props":492,"children":494},{"className":493},[],[495],{"type":44,"value":63},{"type":44,"value":497}," — callback routing is automatic (your terminal ID is appended to the message and recorded as the worker's caller).",{"type":39,"tag":99,"props":499,"children":500},{},[501,502,507],{"type":44,"value":180},{"type":39,"tag":58,"props":503,"children":505},{"className":504},[],[506],{"type":44,"value":71},{"type":44,"value":508}," only for steps that must finish before you can continue.",{"type":39,"tag":99,"props":510,"children":511},{},[512],{"type":44,"value":513},"End the turn so asynchronous worker messages can be delivered.",{"type":39,"tag":99,"props":515,"children":516},{},[517],{"type":44,"value":518},"When messages arrive, synthesize the results and continue the workflow.",{"type":39,"tag":75,"props":520,"children":522},{"id":521},"reliability-guidelines",[523],{"type":44,"value":524},"Reliability Guidelines",{"type":39,"tag":95,"props":526,"children":527},{},[528,533,538,543],{"type":39,"tag":99,"props":529,"children":530},{},[531],{"type":44,"value":532},"Tell workers exactly what deliverable they should return.",{"type":39,"tag":99,"props":534,"children":535},{},[536],{"type":44,"value":537},"When workers create files, ask them to return absolute paths in their callback message.",{"type":39,"tag":99,"props":539,"children":540},{},[541],{"type":44,"value":542},"Do not assume results will be delivered while your terminal is still busy.",{"type":39,"tag":99,"props":544,"children":545},{},[546],{"type":44,"value":547},"Keep orchestration instructions separate from domain requirements so workers can parse both cleanly.",{"items":549,"total":725},[550,569,590,600,613,626,636,646,667,682,697,710],{"slug":551,"name":551,"fn":552,"description":553,"org":554,"tags":555,"stars":566,"repoUrl":567,"updatedAt":568},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[556,557,560,563],{"name":18,"slug":19,"type":16},{"name":558,"slug":559,"type":16},"Debugging","debugging",{"name":561,"slug":562,"type":16},"Logs","logs",{"name":564,"slug":565,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":570,"name":571,"fn":572,"description":573,"org":574,"tags":575,"stars":566,"repoUrl":567,"updatedAt":589},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[576,579,580,583,586],{"name":577,"slug":578,"type":16},"Aurora","aurora",{"name":18,"slug":19,"type":16},{"name":581,"slug":582,"type":16},"Database","database",{"name":584,"slug":585,"type":16},"Serverless","serverless",{"name":587,"slug":588,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":591,"name":592,"fn":572,"description":573,"org":593,"tags":594,"stars":566,"repoUrl":567,"updatedAt":599},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[595,596,597,598],{"name":18,"slug":19,"type":16},{"name":581,"slug":582,"type":16},{"name":584,"slug":585,"type":16},{"name":587,"slug":588,"type":16},"2026-07-12T08:36:42.694299",{"slug":601,"name":602,"fn":572,"description":573,"org":603,"tags":604,"stars":566,"repoUrl":567,"updatedAt":612},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[605,606,607,610,611],{"name":18,"slug":19,"type":16},{"name":581,"slug":582,"type":16},{"name":608,"slug":609,"type":16},"Migration","migration",{"name":584,"slug":585,"type":16},{"name":587,"slug":588,"type":16},"2026-07-12T08:36:38.584057",{"slug":614,"name":615,"fn":572,"description":573,"org":616,"tags":617,"stars":566,"repoUrl":567,"updatedAt":625},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[618,619,620,623,624],{"name":18,"slug":19,"type":16},{"name":581,"slug":582,"type":16},{"name":621,"slug":622,"type":16},"PostgreSQL","postgresql",{"name":584,"slug":585,"type":16},{"name":587,"slug":588,"type":16},"2026-07-12T08:36:46.530743",{"slug":627,"name":628,"fn":572,"description":573,"org":629,"tags":630,"stars":566,"repoUrl":567,"updatedAt":635},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[631,632,633,634],{"name":18,"slug":19,"type":16},{"name":581,"slug":582,"type":16},{"name":584,"slug":585,"type":16},{"name":587,"slug":588,"type":16},"2026-07-12T08:36:48.104182",{"slug":637,"name":637,"fn":572,"description":573,"org":638,"tags":639,"stars":566,"repoUrl":567,"updatedAt":645},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[640,641,642,643,644],{"name":18,"slug":19,"type":16},{"name":581,"slug":582,"type":16},{"name":608,"slug":609,"type":16},{"name":584,"slug":585,"type":16},{"name":587,"slug":588,"type":16},"2026-07-12T08:36:36.374512",{"slug":647,"name":647,"fn":648,"description":649,"org":650,"tags":651,"stars":664,"repoUrl":665,"updatedAt":666},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[652,655,658,661],{"name":653,"slug":654,"type":16},"Accounting","accounting",{"name":656,"slug":657,"type":16},"Analytics","analytics",{"name":659,"slug":660,"type":16},"Cost Optimization","cost-optimization",{"name":662,"slug":663,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":668,"name":668,"fn":669,"description":670,"org":671,"tags":672,"stars":664,"repoUrl":665,"updatedAt":681},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[673,674,675,678],{"name":18,"slug":19,"type":16},{"name":662,"slug":663,"type":16},{"name":676,"slug":677,"type":16},"Management","management",{"name":679,"slug":680,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":683,"name":683,"fn":684,"description":685,"org":686,"tags":687,"stars":664,"repoUrl":665,"updatedAt":696},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[688,689,690,693],{"name":656,"slug":657,"type":16},{"name":662,"slug":663,"type":16},{"name":691,"slug":692,"type":16},"Financial Statements","financial-statements",{"name":694,"slug":695,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":698,"name":698,"fn":699,"description":700,"org":701,"tags":702,"stars":664,"repoUrl":665,"updatedAt":709},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[703,704,707],{"name":14,"slug":15,"type":16},{"name":705,"slug":706,"type":16},"Documents","documents",{"name":708,"slug":698,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":711,"name":711,"fn":712,"description":713,"org":714,"tags":715,"stars":664,"repoUrl":665,"updatedAt":724},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[716,717,720,721],{"name":653,"slug":654,"type":16},{"name":718,"slug":719,"type":16},"Data Analysis","data-analysis",{"name":662,"slug":663,"type":16},{"name":722,"slug":723,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150,{"items":727,"total":828},[728,747,762,774,790,803,817],{"slug":729,"name":729,"fn":730,"description":731,"org":732,"tags":733,"stars":23,"repoUrl":24,"updatedAt":746},"add-app-to-server","add interactive UI to MCP servers","This skill should be used when the user asks to \"add an app to my MCP server\", \"add UI to my MCP server\", \"add a view to my MCP tool\", \"enrich MCP tools with UI\", \"add interactive UI to existing server\", \"add MCP Apps to my server\", or needs to add interactive UI capabilities to an existing MCP server that already has tools. Provides guidance for analyzing existing tools and adding MCP Apps UI resources.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[734,737,740,743],{"name":735,"slug":736,"type":16},"Frontend","frontend",{"name":738,"slug":739,"type":16},"MCP","mcp",{"name":741,"slug":742,"type":16},"Plugin Development","plugin-development",{"name":744,"slug":745,"type":16},"UI Components","ui-components","2026-07-12T08:41:40.4008",{"slug":748,"name":748,"fn":749,"description":750,"org":751,"tags":752,"stars":23,"repoUrl":24,"updatedAt":761},"agui-author","emit interactive dashboard UI components","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\u002Fmarkup is refused.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[753,756,759,760],{"name":754,"slug":755,"type":16},"Agents","agents",{"name":757,"slug":758,"type":16},"Dashboards","dashboards",{"name":738,"slug":739,"type":16},{"name":744,"slug":745,"type":16},"2026-07-22T05:35:50.851108",{"slug":763,"name":763,"fn":764,"description":765,"org":766,"tags":767,"stars":23,"repoUrl":24,"updatedAt":773},"cao-agent-routing","route tasks to appropriate CAO agents","Find and select the best installed CAO agent profile for a task before delegating with assign or handoff. Use when a supervisor needs to route coding, documentation, infrastructure, review, research, or other specialist work and the user has not already chosen an agent profile.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[768,769,770],{"name":754,"slug":755,"type":16},{"name":18,"slug":19,"type":16},{"name":771,"slug":772,"type":16},"Orchestration","orchestration","2026-07-25T05:56:34.255071",{"slug":775,"name":775,"fn":776,"description":777,"org":778,"tags":779,"stars":23,"repoUrl":24,"updatedAt":789},"cao-learning","report task outcomes and distill lessons","Report task outcomes and distill lessons so the team improves across runs — report_outcome after each unit of work, retrospector handoffs at natural boundaries, and applying injected lessons. Use in workflows that run repeatedly over similar work items. Requires memory.learning_enabled; degrade silently when the tools report disabled.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[780,783,786],{"name":781,"slug":782,"type":16},"Best Practices","best-practices",{"name":784,"slug":785,"type":16},"Engineering","engineering",{"name":787,"slug":788,"type":16},"Operations","operations","2026-07-29T06:00:28.147989",{"slug":791,"name":791,"fn":792,"description":793,"org":794,"tags":795,"stars":23,"repoUrl":24,"updatedAt":802},"cao-mcp-apps","operate CAO MCP application surfaces","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:\u002F\u002Fcao views aren't rendering\", \"rebuild MCP Apps bundles\", \"add a new ui:\u002F\u002Fcao\u002F* view\", or \"configure the MCP Apps OAuth scope layer\". Operates on the CAO_MCP_APPS_ENABLED surface and cao_mcp_apps\u002F build system. Not for the localhost:9889 browser dashboard, not for plugins, providers, or session management.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[796,797,800,801],{"name":754,"slug":755,"type":16},{"name":798,"slug":799,"type":16},"CLI","cli",{"name":738,"slug":739,"type":16},{"name":744,"slug":745,"type":16},"2026-07-22T05:35:52.952289",{"slug":804,"name":804,"fn":805,"description":806,"org":807,"tags":808,"stars":23,"repoUrl":24,"updatedAt":816},"cao-memory","manage durable agent memory and preferences","Store, recall, and forget durable facts with CAO memory — user preferences, project conventions, decisions, and corrections that should persist across sessions and agents. Use proactively to check memory before asking the user, and to save anything worth remembering. Distinct from any provider-native memory.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[809,810,813],{"name":754,"slug":755,"type":16},{"name":811,"slug":812,"type":16},"Memory","memory",{"name":814,"slug":815,"type":16},"Productivity","productivity","2026-07-12T08:37:03.180421",{"slug":818,"name":818,"fn":819,"description":820,"org":821,"tags":822,"stars":23,"repoUrl":24,"updatedAt":827},"cao-plugin","scaffold CAO agent plugins","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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[823,824,825,826],{"name":754,"slug":755,"type":16},{"name":14,"slug":15,"type":16},{"name":798,"slug":799,"type":16},{"name":741,"slug":742,"type":16},"2026-07-12T08:36:49.784639",16]