[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-mcp-apps-builder":3,"mdc-45c8vf-key":33,"related-repo-aws-labs-mcp-apps-builder":1065,"related-org-aws-labs-mcp-apps-builder":1168},{"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},"mcp-apps-builder","build MCP applications with mcp-apps-builder","Load the official MCP Apps builder skills (create-mcp-app, migrate-oai-app, add-app-to-server, convert-web-app) from github.com\u002Fmodelcontextprotocol\u002Fext-apps. Use when the user says \"build an MCP App\", \"add a ui:\u002F\u002F view to my MCP server\", \"create an interactive MCP App from scratch\", \"migrate from OpenAI Apps SDK to MCP\", or \"turn my web app into a hybrid MCP App\". Targets the MCP Apps SDK (SEP-1865 ui:\u002F\u002F resources) specifically. Not for regular web frontends, REST APIs, CAO provider adapters, SKILL.md authoring, or plugins.",{"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},"Architecture","architecture","tag",{"name":18,"slug":19,"type":16},"MCP","mcp",{"name":21,"slug":22,"type":16},"API Development","api-development",871,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fcli-agent-orchestrator","2026-07-22T05:35:51.816348",null,164,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fcli-agent-orchestrator\u002Ftree\u002FHEAD\u002Fskills\u002Fmcp-apps-builder","---\nname: mcp-apps-builder\ndescription: Load the official MCP Apps builder skills (create-mcp-app, migrate-oai-app, add-app-to-server, convert-web-app) from github.com\u002Fmodelcontextprotocol\u002Fext-apps. Use when the user says \"build an MCP App\", \"add a ui:\u002F\u002F view to my MCP server\", \"create an interactive MCP App from scratch\", \"migrate from OpenAI Apps SDK to MCP\", or \"turn my web app into a hybrid MCP App\". Targets the MCP Apps SDK (SEP-1865 ui:\u002F\u002F resources) specifically. Not for regular web frontends, REST APIs, CAO provider adapters, SKILL.md authoring, or plugins.\ncompatibility: Requires Node.js for ext-apps skill installation. For CAO views, also requires CAO_MCP_APPS_ENABLED=true.\n---\n\n# MCP Apps Builder (ext-apps Agent Skills bridge)\n\nThe Model Context Protocol [ext-apps](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps)\nrepo ships **four official Agent Skills** that teach an AI coding agent how to\nbuild [MCP Apps](https:\u002F\u002Fmodelcontextprotocol.io\u002Fextensions\u002Fapps\u002Foverview)\n(SEP-1865 — interactive `ui:\u002F\u002F` UIs that render inside a chat host). This skill\ntells you when to reach for them and how to install them, so MCP App work is\ndone with the canonical, up-to-date guidance instead of guesswork.\n\n## The four builder skills\n\n| Skill | Use it when… |\n|---|---|\n| [`create-mcp-app`](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps) | Scaffolding a **new** MCP App (server + interactive UI) from scratch. |\n| [`add-app-to-server`](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps) | Adding an interactive `ui:\u002F\u002F` view to an **existing** MCP server's tools. |\n| [`migrate-oai-app`](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps) | Converting an existing **OpenAI Apps SDK** app to MCP Apps. |\n| [`convert-web-app`](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps) | Turning an existing **web app** into a hybrid web + MCP App. |\n\n## Install \u002F load them\n\nPick whichever matches the agent you're driving (skills live in the agent's\nskills directory — install once, then ask the agent to build):\n\n- **Claude Code** (plugin marketplace):\n  ```\n  \u002Fplugin marketplace add modelcontextprotocol\u002Fext-apps\n  \u002Fplugin install mcp-apps@modelcontextprotocol-ext-apps\n  ```\n- **Any agent** (Vercel Skills CLI):\n  ```\n  npx skills add modelcontextprotocol\u002Fext-apps\n  ```\n- **Manual** (clone + copy into the agent's skills dir):\n  ```\n  git clone https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps.git\n  cp -r ext-apps\u002Fplugins\u002Fmcp-apps\u002Fskills\u002Fcreate-mcp-app ~\u002F.kiro\u002Fskills\u002Fcreate-mcp-app\n  # …repeat for add-app-to-server \u002F migrate-oai-app \u002F convert-web-app\n  ```\n  Skills dirs by agent: Kiro CLI `~\u002F.kiro\u002Fskills\u002F`, Claude Code `~\u002F.claude\u002Fskills\u002F`,\n  VS Code\u002FCopilot `~\u002F.copilot\u002Fskills\u002F`, Gemini CLI `~\u002F.gemini\u002Fskills\u002F`,\n  Codex `~\u002F.codex\u002Fskills\u002F`, Cursor `~\u002F.cursor\u002Fskills\u002F`, Goose\n  `~\u002F.config\u002Fgoose\u002Fskills\u002F`. Verify with: ask the agent \"what skills do you have?\"\n\nFor complete per-agent installation instructions and troubleshooting, see [references\u002Finstallation-per-agent.md](references\u002Finstallation-per-agent.md).\n\n## Building inside CAO (read this for `ui:\u002F\u002Fcao\u002F*` work)\n\nCAO's own views (`ui:\u002F\u002Fcao\u002Fdashboard` \u002F `agent` \u002F `event-stream`) are hand-rolled\nsingle-file React bundles — **not** generated by `create-mcp-app` — because CAO\nenforces stricter invariants than the starter templates. When you add a new\nCAO view, use `add-app-to-server`'s checklist for the spec-correct shape, but\nkeep CAO's guardrails:\n\n- **Default-off** behind `CAO_MCP_APPS_ENABLED` (end to end).\n- **JIT-free** bundles (no `eval` \u002F `new Function`; the host CSP forbids it; the\n  `scan:jit` gate fails otherwise).\n- **HTTP-only boundary**: `mcp_server\u002F*` reaches state only over HTTP (AST guard\n  `test\u002Ftest_http_only_boundary.py`).\n- Stay within the **bundle-size budget** (`check:size`) and the **coverage\n  ratchet** (`coverage:ratchet`).\n- Tag tools with `ui_meta(...)` (resource `_meta.ui`: `csp` \u002F `permissions` \u002F\n  `domain` \u002F `prefersBorder`; tool `_meta.ui`: `resourceUri` \u002F `visibility`).\n\nFor the full guardrail checklist and how to run each CI gate locally, see [references\u002Fcao-view-guardrails.md](references\u002Fcao-view-guardrails.md).\n\nFor the operator\u002Fextend playbook (turn it on, troubleshoot, the `submit_command`\nchoke point, host-delegated actions), load the **`cao-mcp-apps`** skill.\n\n## Sources of truth\n\n- [MCP Apps Overview](https:\u002F\u002Fmodelcontextprotocol.io\u002Fextensions\u002Fapps\u002Foverview) ·\n  [Build an MCP App](https:\u002F\u002Fmodelcontextprotocol.io\u002Fextensions\u002Fapps\u002Fbuild)\n- Stable spec [`2026-01-26\u002Fapps.mdx`](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps\u002Fblob\u002Fmain\u002Fspecification\u002F2026-01-26\u002Fapps.mdx) ·\n  SDK [`@modelcontextprotocol\u002Fext-apps`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@modelcontextprotocol\u002Fext-apps) (v1.7.4) ·\n  [API reference](https:\u002F\u002Fapps.extensions.modelcontextprotocol.io\u002Fapi\u002Findex.html)\n- [ext-apps repo](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps) ·\n  [client matrix](https:\u002F\u002Fmodelcontextprotocol.io\u002Fextensions\u002Fclient-matrix)\n\n## Gotchas\n\n- **CAO views are NOT generated by create-mcp-app:** CAO's own `ui:\u002F\u002Fcao\u002F*` views are hand-rolled single-file React bundles with stricter invariants than the starter templates. Use `add-app-to-server` for the spec-correct shape, but enforce CAO's guardrails (JIT-free, bundle-size budget, HTTP-only boundary).\n- **JIT-free is non-negotiable for CAO:** Host CSP forbids `eval` \u002F `new Function`. The CI `scan:jit` gate will fail the build if any JIT constructs are present.\n- **HTTP-only boundary:** `mcp_server\u002F*` must reach state only over HTTP to the Backplane. The AST guard test (`test\u002Ftest_http_only_boundary.py`) enforces this — direct state access bypasses governance.\n\n## Build → Test → Record Workflow\n\nWhen building or extending CAO MCP Apps views, always follow this complete cycle:\n\n```bash\ncd cao_mcp_apps\nnpm run build:all         # Build all view bundles (single-file HTML)\nnpm test                  # Unit tests (vitest)\nnpm run test:e2e          # Playwright E2E against built bundles\nnpm run demo              # Record demo video + screenshots + GIF\n```\n\nThe `npm run demo` step captures the current state of all views (including the unified\nfleet command center) into `docs\u002Fmedia\u002F` — this is what README.md and docs\u002Fmcp-apps.md\ndisplay. **Always regenerate after modifying views** so documentation stays current.\n\nFor CAO-specific views (`ui:\u002F\u002Fcao\u002F*`), also verify:\n- Bundle size within budget: `npm run check:size`\n- No JIT constructs: `npm run scan:jit`\n- TypeScript strict: `npx tsc --noEmit`\n\nFor installation details per agent host, see [references\u002Finstallation-per-agent.md](references\u002Finstallation-per-agent.md).\nFor CAO view guardrails, see [references\u002Fcao-view-guardrails.md](references\u002Fcao-view-guardrails.md).\n",{"data":34,"body":36},{"name":4,"description":6,"compatibility":35},"Requires Node.js for ext-apps skill installation. For CAO views, also requires CAO_MCP_APPS_ENABLED=true.",{"type":37,"children":38},"root",[39,48,91,98,245,251,256,379,391,405,454,637,648,672,678,754,760,841,847,852,967,995,1007,1043,1059],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"mcp-apps-builder-ext-apps-agent-skills-bridge",[45],{"type":46,"value":47},"text","MCP Apps Builder (ext-apps Agent Skills bridge)",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52,54,63,65,71,73,80,82,89],{"type":46,"value":53},"The Model Context Protocol ",{"type":40,"tag":55,"props":56,"children":60},"a",{"href":57,"rel":58},"https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps",[59],"nofollow",[61],{"type":46,"value":62},"ext-apps",{"type":46,"value":64},"\nrepo ships ",{"type":40,"tag":66,"props":67,"children":68},"strong",{},[69],{"type":46,"value":70},"four official Agent Skills",{"type":46,"value":72}," that teach an AI coding agent how to\nbuild ",{"type":40,"tag":55,"props":74,"children":77},{"href":75,"rel":76},"https:\u002F\u002Fmodelcontextprotocol.io\u002Fextensions\u002Fapps\u002Foverview",[59],[78],{"type":46,"value":79},"MCP Apps",{"type":46,"value":81},"\n(SEP-1865 — interactive ",{"type":40,"tag":83,"props":84,"children":86},"code",{"className":85},[],[87],{"type":46,"value":88},"ui:\u002F\u002F",{"type":46,"value":90}," UIs that render inside a chat host). This skill\ntells you when to reach for them and how to install them, so MCP App work is\ndone with the canonical, up-to-date guidance instead of guesswork.",{"type":40,"tag":92,"props":93,"children":95},"h2",{"id":94},"the-four-builder-skills",[96],{"type":46,"value":97},"The four builder skills",{"type":40,"tag":99,"props":100,"children":101},"table",{},[102,121],{"type":40,"tag":103,"props":104,"children":105},"thead",{},[106],{"type":40,"tag":107,"props":108,"children":109},"tr",{},[110,116],{"type":40,"tag":111,"props":112,"children":113},"th",{},[114],{"type":46,"value":115},"Skill",{"type":40,"tag":111,"props":117,"children":118},{},[119],{"type":46,"value":120},"Use it when…",{"type":40,"tag":122,"props":123,"children":124},"tbody",{},[125,154,189,217],{"type":40,"tag":107,"props":126,"children":127},{},[128,142],{"type":40,"tag":129,"props":130,"children":131},"td",{},[132],{"type":40,"tag":55,"props":133,"children":135},{"href":57,"rel":134},[59],[136],{"type":40,"tag":83,"props":137,"children":139},{"className":138},[],[140],{"type":46,"value":141},"create-mcp-app",{"type":40,"tag":129,"props":143,"children":144},{},[145,147,152],{"type":46,"value":146},"Scaffolding a ",{"type":40,"tag":66,"props":148,"children":149},{},[150],{"type":46,"value":151},"new",{"type":46,"value":153}," MCP App (server + interactive UI) from scratch.",{"type":40,"tag":107,"props":155,"children":156},{},[157,170],{"type":40,"tag":129,"props":158,"children":159},{},[160],{"type":40,"tag":55,"props":161,"children":163},{"href":57,"rel":162},[59],[164],{"type":40,"tag":83,"props":165,"children":167},{"className":166},[],[168],{"type":46,"value":169},"add-app-to-server",{"type":40,"tag":129,"props":171,"children":172},{},[173,175,180,182,187],{"type":46,"value":174},"Adding an interactive ",{"type":40,"tag":83,"props":176,"children":178},{"className":177},[],[179],{"type":46,"value":88},{"type":46,"value":181}," view to an ",{"type":40,"tag":66,"props":183,"children":184},{},[185],{"type":46,"value":186},"existing",{"type":46,"value":188}," MCP server's tools.",{"type":40,"tag":107,"props":190,"children":191},{},[192,205],{"type":40,"tag":129,"props":193,"children":194},{},[195],{"type":40,"tag":55,"props":196,"children":198},{"href":57,"rel":197},[59],[199],{"type":40,"tag":83,"props":200,"children":202},{"className":201},[],[203],{"type":46,"value":204},"migrate-oai-app",{"type":40,"tag":129,"props":206,"children":207},{},[208,210,215],{"type":46,"value":209},"Converting an existing ",{"type":40,"tag":66,"props":211,"children":212},{},[213],{"type":46,"value":214},"OpenAI Apps SDK",{"type":46,"value":216}," app to MCP Apps.",{"type":40,"tag":107,"props":218,"children":219},{},[220,233],{"type":40,"tag":129,"props":221,"children":222},{},[223],{"type":40,"tag":55,"props":224,"children":226},{"href":57,"rel":225},[59],[227],{"type":40,"tag":83,"props":228,"children":230},{"className":229},[],[231],{"type":46,"value":232},"convert-web-app",{"type":40,"tag":129,"props":234,"children":235},{},[236,238,243],{"type":46,"value":237},"Turning an existing ",{"type":40,"tag":66,"props":239,"children":240},{},[241],{"type":46,"value":242},"web app",{"type":46,"value":244}," into a hybrid web + MCP App.",{"type":40,"tag":92,"props":246,"children":248},{"id":247},"install-load-them",[249],{"type":46,"value":250},"Install \u002F load them",{"type":40,"tag":49,"props":252,"children":253},{},[254],{"type":46,"value":255},"Pick whichever matches the agent you're driving (skills live in the agent's\nskills directory — install once, then ask the agent to build):",{"type":40,"tag":257,"props":258,"children":259},"ul",{},[260,283,302],{"type":40,"tag":261,"props":262,"children":263},"li",{},[264,269,271],{"type":40,"tag":66,"props":265,"children":266},{},[267],{"type":46,"value":268},"Claude Code",{"type":46,"value":270}," (plugin marketplace):\n",{"type":40,"tag":272,"props":273,"children":277},"pre",{"className":274,"code":276,"language":46},[275],"language-text","\u002Fplugin marketplace add modelcontextprotocol\u002Fext-apps\n\u002Fplugin install mcp-apps@modelcontextprotocol-ext-apps\n",[278],{"type":40,"tag":83,"props":279,"children":281},{"__ignoreMap":280},"",[282],{"type":46,"value":276},{"type":40,"tag":261,"props":284,"children":285},{},[286,291,293],{"type":40,"tag":66,"props":287,"children":288},{},[289],{"type":46,"value":290},"Any agent",{"type":46,"value":292}," (Vercel Skills CLI):\n",{"type":40,"tag":272,"props":294,"children":297},{"className":295,"code":296,"language":46},[275],"npx skills add modelcontextprotocol\u002Fext-apps\n",[298],{"type":40,"tag":83,"props":299,"children":300},{"__ignoreMap":280},[301],{"type":46,"value":296},{"type":40,"tag":261,"props":303,"children":304},{},[305,310,312,321,323,329,331,337,339,345,347,353,355,361,363,369,371,377],{"type":40,"tag":66,"props":306,"children":307},{},[308],{"type":46,"value":309},"Manual",{"type":46,"value":311}," (clone + copy into the agent's skills dir):\n",{"type":40,"tag":272,"props":313,"children":316},{"className":314,"code":315,"language":46},[275],"git clone https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps.git\ncp -r ext-apps\u002Fplugins\u002Fmcp-apps\u002Fskills\u002Fcreate-mcp-app ~\u002F.kiro\u002Fskills\u002Fcreate-mcp-app\n# …repeat for add-app-to-server \u002F migrate-oai-app \u002F convert-web-app\n",[317],{"type":40,"tag":83,"props":318,"children":319},{"__ignoreMap":280},[320],{"type":46,"value":315},{"type":46,"value":322},"\nSkills dirs by agent: Kiro CLI ",{"type":40,"tag":83,"props":324,"children":326},{"className":325},[],[327],{"type":46,"value":328},"~\u002F.kiro\u002Fskills\u002F",{"type":46,"value":330},", Claude Code ",{"type":40,"tag":83,"props":332,"children":334},{"className":333},[],[335],{"type":46,"value":336},"~\u002F.claude\u002Fskills\u002F",{"type":46,"value":338},",\nVS Code\u002FCopilot ",{"type":40,"tag":83,"props":340,"children":342},{"className":341},[],[343],{"type":46,"value":344},"~\u002F.copilot\u002Fskills\u002F",{"type":46,"value":346},", Gemini CLI ",{"type":40,"tag":83,"props":348,"children":350},{"className":349},[],[351],{"type":46,"value":352},"~\u002F.gemini\u002Fskills\u002F",{"type":46,"value":354},",\nCodex ",{"type":40,"tag":83,"props":356,"children":358},{"className":357},[],[359],{"type":46,"value":360},"~\u002F.codex\u002Fskills\u002F",{"type":46,"value":362},", Cursor ",{"type":40,"tag":83,"props":364,"children":366},{"className":365},[],[367],{"type":46,"value":368},"~\u002F.cursor\u002Fskills\u002F",{"type":46,"value":370},", Goose\n",{"type":40,"tag":83,"props":372,"children":374},{"className":373},[],[375],{"type":46,"value":376},"~\u002F.config\u002Fgoose\u002Fskills\u002F",{"type":46,"value":378},". Verify with: ask the agent \"what skills do you have?\"",{"type":40,"tag":49,"props":380,"children":381},{},[382,384,389],{"type":46,"value":383},"For complete per-agent installation instructions and troubleshooting, see ",{"type":40,"tag":55,"props":385,"children":387},{"href":386},"references\u002Finstallation-per-agent.md",[388],{"type":46,"value":386},{"type":46,"value":390},".",{"type":40,"tag":92,"props":392,"children":394},{"id":393},"building-inside-cao-read-this-for-uicao-work",[395,397,403],{"type":46,"value":396},"Building inside CAO (read this for ",{"type":40,"tag":83,"props":398,"children":400},{"className":399},[],[401],{"type":46,"value":402},"ui:\u002F\u002Fcao\u002F*",{"type":46,"value":404}," work)",{"type":40,"tag":49,"props":406,"children":407},{},[408,410,416,418,424,425,431,433,438,440,445,447,452],{"type":46,"value":409},"CAO's own views (",{"type":40,"tag":83,"props":411,"children":413},{"className":412},[],[414],{"type":46,"value":415},"ui:\u002F\u002Fcao\u002Fdashboard",{"type":46,"value":417}," \u002F ",{"type":40,"tag":83,"props":419,"children":421},{"className":420},[],[422],{"type":46,"value":423},"agent",{"type":46,"value":417},{"type":40,"tag":83,"props":426,"children":428},{"className":427},[],[429],{"type":46,"value":430},"event-stream",{"type":46,"value":432},") are hand-rolled\nsingle-file React bundles — ",{"type":40,"tag":66,"props":434,"children":435},{},[436],{"type":46,"value":437},"not",{"type":46,"value":439}," generated by ",{"type":40,"tag":83,"props":441,"children":443},{"className":442},[],[444],{"type":46,"value":141},{"type":46,"value":446}," — because CAO\nenforces stricter invariants than the starter templates. When you add a new\nCAO view, use ",{"type":40,"tag":83,"props":448,"children":450},{"className":449},[],[451],{"type":46,"value":169},{"type":46,"value":453},"'s checklist for the spec-correct shape, but\nkeep CAO's guardrails:",{"type":40,"tag":257,"props":455,"children":456},{},[457,475,508,534,567],{"type":40,"tag":261,"props":458,"children":459},{},[460,465,467,473],{"type":40,"tag":66,"props":461,"children":462},{},[463],{"type":46,"value":464},"Default-off",{"type":46,"value":466}," behind ",{"type":40,"tag":83,"props":468,"children":470},{"className":469},[],[471],{"type":46,"value":472},"CAO_MCP_APPS_ENABLED",{"type":46,"value":474}," (end to end).",{"type":40,"tag":261,"props":476,"children":477},{},[478,483,485,491,492,498,500,506],{"type":40,"tag":66,"props":479,"children":480},{},[481],{"type":46,"value":482},"JIT-free",{"type":46,"value":484}," bundles (no ",{"type":40,"tag":83,"props":486,"children":488},{"className":487},[],[489],{"type":46,"value":490},"eval",{"type":46,"value":417},{"type":40,"tag":83,"props":493,"children":495},{"className":494},[],[496],{"type":46,"value":497},"new Function",{"type":46,"value":499},"; the host CSP forbids it; the\n",{"type":40,"tag":83,"props":501,"children":503},{"className":502},[],[504],{"type":46,"value":505},"scan:jit",{"type":46,"value":507}," gate fails otherwise).",{"type":40,"tag":261,"props":509,"children":510},{},[511,516,518,524,526,532],{"type":40,"tag":66,"props":512,"children":513},{},[514],{"type":46,"value":515},"HTTP-only boundary",{"type":46,"value":517},": ",{"type":40,"tag":83,"props":519,"children":521},{"className":520},[],[522],{"type":46,"value":523},"mcp_server\u002F*",{"type":46,"value":525}," reaches state only over HTTP (AST guard\n",{"type":40,"tag":83,"props":527,"children":529},{"className":528},[],[530],{"type":46,"value":531},"test\u002Ftest_http_only_boundary.py",{"type":46,"value":533},").",{"type":40,"tag":261,"props":535,"children":536},{},[537,539,544,546,552,554,559,560,566],{"type":46,"value":538},"Stay within the ",{"type":40,"tag":66,"props":540,"children":541},{},[542],{"type":46,"value":543},"bundle-size budget",{"type":46,"value":545}," (",{"type":40,"tag":83,"props":547,"children":549},{"className":548},[],[550],{"type":46,"value":551},"check:size",{"type":46,"value":553},") and the ",{"type":40,"tag":66,"props":555,"children":556},{},[557],{"type":46,"value":558},"coverage\nratchet",{"type":46,"value":545},{"type":40,"tag":83,"props":561,"children":563},{"className":562},[],[564],{"type":46,"value":565},"coverage:ratchet",{"type":46,"value":533},{"type":40,"tag":261,"props":568,"children":569},{},[570,572,578,580,586,587,593,594,600,602,608,609,615,617,622,623,629,630,636],{"type":46,"value":571},"Tag tools with ",{"type":40,"tag":83,"props":573,"children":575},{"className":574},[],[576],{"type":46,"value":577},"ui_meta(...)",{"type":46,"value":579}," (resource ",{"type":40,"tag":83,"props":581,"children":583},{"className":582},[],[584],{"type":46,"value":585},"_meta.ui",{"type":46,"value":517},{"type":40,"tag":83,"props":588,"children":590},{"className":589},[],[591],{"type":46,"value":592},"csp",{"type":46,"value":417},{"type":40,"tag":83,"props":595,"children":597},{"className":596},[],[598],{"type":46,"value":599},"permissions",{"type":46,"value":601}," \u002F\n",{"type":40,"tag":83,"props":603,"children":605},{"className":604},[],[606],{"type":46,"value":607},"domain",{"type":46,"value":417},{"type":40,"tag":83,"props":610,"children":612},{"className":611},[],[613],{"type":46,"value":614},"prefersBorder",{"type":46,"value":616},"; tool ",{"type":40,"tag":83,"props":618,"children":620},{"className":619},[],[621],{"type":46,"value":585},{"type":46,"value":517},{"type":40,"tag":83,"props":624,"children":626},{"className":625},[],[627],{"type":46,"value":628},"resourceUri",{"type":46,"value":417},{"type":40,"tag":83,"props":631,"children":633},{"className":632},[],[634],{"type":46,"value":635},"visibility",{"type":46,"value":533},{"type":40,"tag":49,"props":638,"children":639},{},[640,642,647],{"type":46,"value":641},"For the full guardrail checklist and how to run each CI gate locally, see ",{"type":40,"tag":55,"props":643,"children":645},{"href":644},"references\u002Fcao-view-guardrails.md",[646],{"type":46,"value":644},{"type":46,"value":390},{"type":40,"tag":49,"props":649,"children":650},{},[651,653,659,661,670],{"type":46,"value":652},"For the operator\u002Fextend playbook (turn it on, troubleshoot, the ",{"type":40,"tag":83,"props":654,"children":656},{"className":655},[],[657],{"type":46,"value":658},"submit_command",{"type":46,"value":660},"\nchoke point, host-delegated actions), load the ",{"type":40,"tag":66,"props":662,"children":663},{},[664],{"type":40,"tag":83,"props":665,"children":667},{"className":666},[],[668],{"type":46,"value":669},"cao-mcp-apps",{"type":46,"value":671}," skill.",{"type":40,"tag":92,"props":673,"children":675},{"id":674},"sources-of-truth",[676],{"type":46,"value":677},"Sources of truth",{"type":40,"tag":257,"props":679,"children":680},{},[681,699,737],{"type":40,"tag":261,"props":682,"children":683},{},[684,690,692],{"type":40,"tag":55,"props":685,"children":687},{"href":75,"rel":686},[59],[688],{"type":46,"value":689},"MCP Apps Overview",{"type":46,"value":691}," ·\n",{"type":40,"tag":55,"props":693,"children":696},{"href":694,"rel":695},"https:\u002F\u002Fmodelcontextprotocol.io\u002Fextensions\u002Fapps\u002Fbuild",[59],[697],{"type":46,"value":698},"Build an MCP App",{"type":40,"tag":261,"props":700,"children":701},{},[702,704,715,717,728,730],{"type":46,"value":703},"Stable spec ",{"type":40,"tag":55,"props":705,"children":708},{"href":706,"rel":707},"https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fext-apps\u002Fblob\u002Fmain\u002Fspecification\u002F2026-01-26\u002Fapps.mdx",[59],[709],{"type":40,"tag":83,"props":710,"children":712},{"className":711},[],[713],{"type":46,"value":714},"2026-01-26\u002Fapps.mdx",{"type":46,"value":716}," ·\nSDK ",{"type":40,"tag":55,"props":718,"children":721},{"href":719,"rel":720},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@modelcontextprotocol\u002Fext-apps",[59],[722],{"type":40,"tag":83,"props":723,"children":725},{"className":724},[],[726],{"type":46,"value":727},"@modelcontextprotocol\u002Fext-apps",{"type":46,"value":729}," (v1.7.4) ·\n",{"type":40,"tag":55,"props":731,"children":734},{"href":732,"rel":733},"https:\u002F\u002Fapps.extensions.modelcontextprotocol.io\u002Fapi\u002Findex.html",[59],[735],{"type":46,"value":736},"API reference",{"type":40,"tag":261,"props":738,"children":739},{},[740,746,747],{"type":40,"tag":55,"props":741,"children":743},{"href":57,"rel":742},[59],[744],{"type":46,"value":745},"ext-apps repo",{"type":46,"value":691},{"type":40,"tag":55,"props":748,"children":751},{"href":749,"rel":750},"https:\u002F\u002Fmodelcontextprotocol.io\u002Fextensions\u002Fclient-matrix",[59],[752],{"type":46,"value":753},"client matrix",{"type":40,"tag":92,"props":755,"children":757},{"id":756},"gotchas",[758],{"type":46,"value":759},"Gotchas",{"type":40,"tag":257,"props":761,"children":762},{},[763,787,817],{"type":40,"tag":261,"props":764,"children":765},{},[766,771,773,778,780,785],{"type":40,"tag":66,"props":767,"children":768},{},[769],{"type":46,"value":770},"CAO views are NOT generated by create-mcp-app:",{"type":46,"value":772}," CAO's own ",{"type":40,"tag":83,"props":774,"children":776},{"className":775},[],[777],{"type":46,"value":402},{"type":46,"value":779}," views are hand-rolled single-file React bundles with stricter invariants than the starter templates. Use ",{"type":40,"tag":83,"props":781,"children":783},{"className":782},[],[784],{"type":46,"value":169},{"type":46,"value":786}," for the spec-correct shape, but enforce CAO's guardrails (JIT-free, bundle-size budget, HTTP-only boundary).",{"type":40,"tag":261,"props":788,"children":789},{},[790,795,797,802,803,808,810,815],{"type":40,"tag":66,"props":791,"children":792},{},[793],{"type":46,"value":794},"JIT-free is non-negotiable for CAO:",{"type":46,"value":796}," Host CSP forbids ",{"type":40,"tag":83,"props":798,"children":800},{"className":799},[],[801],{"type":46,"value":490},{"type":46,"value":417},{"type":40,"tag":83,"props":804,"children":806},{"className":805},[],[807],{"type":46,"value":497},{"type":46,"value":809},". The CI ",{"type":40,"tag":83,"props":811,"children":813},{"className":812},[],[814],{"type":46,"value":505},{"type":46,"value":816}," gate will fail the build if any JIT constructs are present.",{"type":40,"tag":261,"props":818,"children":819},{},[820,825,827,832,834,839],{"type":40,"tag":66,"props":821,"children":822},{},[823],{"type":46,"value":824},"HTTP-only boundary:",{"type":46,"value":826}," ",{"type":40,"tag":83,"props":828,"children":830},{"className":829},[],[831],{"type":46,"value":523},{"type":46,"value":833}," must reach state only over HTTP to the Backplane. The AST guard test (",{"type":40,"tag":83,"props":835,"children":837},{"className":836},[],[838],{"type":46,"value":531},{"type":46,"value":840},") enforces this — direct state access bypasses governance.",{"type":40,"tag":92,"props":842,"children":844},{"id":843},"build-test-record-workflow",[845],{"type":46,"value":846},"Build → Test → Record Workflow",{"type":40,"tag":49,"props":848,"children":849},{},[850],{"type":46,"value":851},"When building or extending CAO MCP Apps views, always follow this complete cycle:",{"type":40,"tag":272,"props":853,"children":857},{"className":854,"code":855,"language":856,"meta":280,"style":280},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cd cao_mcp_apps\nnpm run build:all         # Build all view bundles (single-file HTML)\nnpm test                  # Unit tests (vitest)\nnpm run test:e2e          # Playwright E2E against built bundles\nnpm run demo              # Record demo video + screenshots + GIF\n","bash",[858],{"type":40,"tag":83,"props":859,"children":860},{"__ignoreMap":280},[861,879,905,923,945],{"type":40,"tag":862,"props":863,"children":866},"span",{"class":864,"line":865},"line",1,[867,873],{"type":40,"tag":862,"props":868,"children":870},{"style":869},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[871],{"type":46,"value":872},"cd",{"type":40,"tag":862,"props":874,"children":876},{"style":875},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[877],{"type":46,"value":878}," cao_mcp_apps\n",{"type":40,"tag":862,"props":880,"children":882},{"class":864,"line":881},2,[883,889,894,899],{"type":40,"tag":862,"props":884,"children":886},{"style":885},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[887],{"type":46,"value":888},"npm",{"type":40,"tag":862,"props":890,"children":891},{"style":875},[892],{"type":46,"value":893}," run",{"type":40,"tag":862,"props":895,"children":896},{"style":875},[897],{"type":46,"value":898}," build:all",{"type":40,"tag":862,"props":900,"children":902},{"style":901},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[903],{"type":46,"value":904},"         # Build all view bundles (single-file HTML)\n",{"type":40,"tag":862,"props":906,"children":908},{"class":864,"line":907},3,[909,913,918],{"type":40,"tag":862,"props":910,"children":911},{"style":885},[912],{"type":46,"value":888},{"type":40,"tag":862,"props":914,"children":915},{"style":875},[916],{"type":46,"value":917}," test",{"type":40,"tag":862,"props":919,"children":920},{"style":901},[921],{"type":46,"value":922},"                  # Unit tests (vitest)\n",{"type":40,"tag":862,"props":924,"children":926},{"class":864,"line":925},4,[927,931,935,940],{"type":40,"tag":862,"props":928,"children":929},{"style":885},[930],{"type":46,"value":888},{"type":40,"tag":862,"props":932,"children":933},{"style":875},[934],{"type":46,"value":893},{"type":40,"tag":862,"props":936,"children":937},{"style":875},[938],{"type":46,"value":939}," test:e2e",{"type":40,"tag":862,"props":941,"children":942},{"style":901},[943],{"type":46,"value":944},"          # Playwright E2E against built bundles\n",{"type":40,"tag":862,"props":946,"children":948},{"class":864,"line":947},5,[949,953,957,962],{"type":40,"tag":862,"props":950,"children":951},{"style":885},[952],{"type":46,"value":888},{"type":40,"tag":862,"props":954,"children":955},{"style":875},[956],{"type":46,"value":893},{"type":40,"tag":862,"props":958,"children":959},{"style":875},[960],{"type":46,"value":961}," demo",{"type":40,"tag":862,"props":963,"children":964},{"style":901},[965],{"type":46,"value":966},"              # Record demo video + screenshots + GIF\n",{"type":40,"tag":49,"props":968,"children":969},{},[970,972,978,980,986,988,993],{"type":46,"value":971},"The ",{"type":40,"tag":83,"props":973,"children":975},{"className":974},[],[976],{"type":46,"value":977},"npm run demo",{"type":46,"value":979}," step captures the current state of all views (including the unified\nfleet command center) into ",{"type":40,"tag":83,"props":981,"children":983},{"className":982},[],[984],{"type":46,"value":985},"docs\u002Fmedia\u002F",{"type":46,"value":987}," — this is what README.md and docs\u002Fmcp-apps.md\ndisplay. ",{"type":40,"tag":66,"props":989,"children":990},{},[991],{"type":46,"value":992},"Always regenerate after modifying views",{"type":46,"value":994}," so documentation stays current.",{"type":40,"tag":49,"props":996,"children":997},{},[998,1000,1005],{"type":46,"value":999},"For CAO-specific views (",{"type":40,"tag":83,"props":1001,"children":1003},{"className":1002},[],[1004],{"type":46,"value":402},{"type":46,"value":1006},"), also verify:",{"type":40,"tag":257,"props":1008,"children":1009},{},[1010,1021,1032],{"type":40,"tag":261,"props":1011,"children":1012},{},[1013,1015],{"type":46,"value":1014},"Bundle size within budget: ",{"type":40,"tag":83,"props":1016,"children":1018},{"className":1017},[],[1019],{"type":46,"value":1020},"npm run check:size",{"type":40,"tag":261,"props":1022,"children":1023},{},[1024,1026],{"type":46,"value":1025},"No JIT constructs: ",{"type":40,"tag":83,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":46,"value":1031},"npm run scan:jit",{"type":40,"tag":261,"props":1033,"children":1034},{},[1035,1037],{"type":46,"value":1036},"TypeScript strict: ",{"type":40,"tag":83,"props":1038,"children":1040},{"className":1039},[],[1041],{"type":46,"value":1042},"npx tsc --noEmit",{"type":40,"tag":49,"props":1044,"children":1045},{},[1046,1048,1052,1054,1058],{"type":46,"value":1047},"For installation details per agent host, see ",{"type":40,"tag":55,"props":1049,"children":1050},{"href":386},[1051],{"type":46,"value":386},{"type":46,"value":1053},".\nFor CAO view guardrails, see ",{"type":40,"tag":55,"props":1055,"children":1056},{"href":644},[1057],{"type":46,"value":644},{"type":46,"value":390},{"type":40,"tag":1060,"props":1061,"children":1062},"style",{},[1063],{"type":46,"value":1064},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1066,"total":1167},[1067,1083,1098,1112,1128,1140,1154],{"slug":169,"name":169,"fn":1068,"description":1069,"org":1070,"tags":1071,"stars":23,"repoUrl":24,"updatedAt":1082},"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},[1072,1075,1076,1079],{"name":1073,"slug":1074,"type":16},"Frontend","frontend",{"name":18,"slug":19,"type":16},{"name":1077,"slug":1078,"type":16},"Plugin Development","plugin-development",{"name":1080,"slug":1081,"type":16},"UI Components","ui-components","2026-07-12T08:41:40.4008",{"slug":1084,"name":1084,"fn":1085,"description":1086,"org":1087,"tags":1088,"stars":23,"repoUrl":24,"updatedAt":1097},"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},[1089,1092,1095,1096],{"name":1090,"slug":1091,"type":16},"Agents","agents",{"name":1093,"slug":1094,"type":16},"Dashboards","dashboards",{"name":18,"slug":19,"type":16},{"name":1080,"slug":1081,"type":16},"2026-07-22T05:35:50.851108",{"slug":1099,"name":1099,"fn":1100,"description":1101,"org":1102,"tags":1103,"stars":23,"repoUrl":24,"updatedAt":1111},"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},[1104,1105,1108],{"name":1090,"slug":1091,"type":16},{"name":1106,"slug":1107,"type":16},"AWS","aws",{"name":1109,"slug":1110,"type":16},"Orchestration","orchestration","2026-07-25T05:56:34.255071",{"slug":1113,"name":1113,"fn":1114,"description":1115,"org":1116,"tags":1117,"stars":23,"repoUrl":24,"updatedAt":1127},"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},[1118,1121,1124],{"name":1119,"slug":1120,"type":16},"Best Practices","best-practices",{"name":1122,"slug":1123,"type":16},"Engineering","engineering",{"name":1125,"slug":1126,"type":16},"Operations","operations","2026-07-29T06:00:28.147989",{"slug":669,"name":669,"fn":1129,"description":1130,"org":1131,"tags":1132,"stars":23,"repoUrl":24,"updatedAt":1139},"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},[1133,1134,1137,1138],{"name":1090,"slug":1091,"type":16},{"name":1135,"slug":1136,"type":16},"CLI","cli",{"name":18,"slug":19,"type":16},{"name":1080,"slug":1081,"type":16},"2026-07-22T05:35:52.952289",{"slug":1141,"name":1141,"fn":1142,"description":1143,"org":1144,"tags":1145,"stars":23,"repoUrl":24,"updatedAt":1153},"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},[1146,1147,1150],{"name":1090,"slug":1091,"type":16},{"name":1148,"slug":1149,"type":16},"Memory","memory",{"name":1151,"slug":1152,"type":16},"Productivity","productivity","2026-07-12T08:37:03.180421",{"slug":1155,"name":1155,"fn":1156,"description":1157,"org":1158,"tags":1159,"stars":23,"repoUrl":24,"updatedAt":1166},"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},[1160,1161,1164,1165],{"name":1090,"slug":1091,"type":16},{"name":1162,"slug":1163,"type":16},"Automation","automation",{"name":1135,"slug":1136,"type":16},{"name":1077,"slug":1078,"type":16},"2026-07-12T08:36:49.784639",16,{"items":1169,"total":1345},[1170,1189,1210,1220,1233,1246,1256,1266,1287,1302,1317,1330],{"slug":1171,"name":1171,"fn":1172,"description":1173,"org":1174,"tags":1175,"stars":1186,"repoUrl":1187,"updatedAt":1188},"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},[1176,1177,1180,1183],{"name":1106,"slug":1107,"type":16},{"name":1178,"slug":1179,"type":16},"Debugging","debugging",{"name":1181,"slug":1182,"type":16},"Logs","logs",{"name":1184,"slug":1185,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":1190,"name":1191,"fn":1192,"description":1193,"org":1194,"tags":1195,"stars":1186,"repoUrl":1187,"updatedAt":1209},"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},[1196,1199,1200,1203,1206],{"name":1197,"slug":1198,"type":16},"Aurora","aurora",{"name":1106,"slug":1107,"type":16},{"name":1201,"slug":1202,"type":16},"Database","database",{"name":1204,"slug":1205,"type":16},"Serverless","serverless",{"name":1207,"slug":1208,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":1211,"name":1212,"fn":1192,"description":1193,"org":1213,"tags":1214,"stars":1186,"repoUrl":1187,"updatedAt":1219},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1215,1216,1217,1218],{"name":1106,"slug":1107,"type":16},{"name":1201,"slug":1202,"type":16},{"name":1204,"slug":1205,"type":16},{"name":1207,"slug":1208,"type":16},"2026-07-12T08:36:42.694299",{"slug":1221,"name":1222,"fn":1192,"description":1193,"org":1223,"tags":1224,"stars":1186,"repoUrl":1187,"updatedAt":1232},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1225,1226,1227,1230,1231],{"name":1106,"slug":1107,"type":16},{"name":1201,"slug":1202,"type":16},{"name":1228,"slug":1229,"type":16},"Migration","migration",{"name":1204,"slug":1205,"type":16},{"name":1207,"slug":1208,"type":16},"2026-07-12T08:36:38.584057",{"slug":1234,"name":1235,"fn":1192,"description":1193,"org":1236,"tags":1237,"stars":1186,"repoUrl":1187,"updatedAt":1245},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1238,1239,1240,1243,1244],{"name":1106,"slug":1107,"type":16},{"name":1201,"slug":1202,"type":16},{"name":1241,"slug":1242,"type":16},"PostgreSQL","postgresql",{"name":1204,"slug":1205,"type":16},{"name":1207,"slug":1208,"type":16},"2026-07-12T08:36:46.530743",{"slug":1247,"name":1248,"fn":1192,"description":1193,"org":1249,"tags":1250,"stars":1186,"repoUrl":1187,"updatedAt":1255},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1251,1252,1253,1254],{"name":1106,"slug":1107,"type":16},{"name":1201,"slug":1202,"type":16},{"name":1204,"slug":1205,"type":16},{"name":1207,"slug":1208,"type":16},"2026-07-12T08:36:48.104182",{"slug":1257,"name":1257,"fn":1192,"description":1193,"org":1258,"tags":1259,"stars":1186,"repoUrl":1187,"updatedAt":1265},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1260,1261,1262,1263,1264],{"name":1106,"slug":1107,"type":16},{"name":1201,"slug":1202,"type":16},{"name":1228,"slug":1229,"type":16},{"name":1204,"slug":1205,"type":16},{"name":1207,"slug":1208,"type":16},"2026-07-12T08:36:36.374512",{"slug":1267,"name":1267,"fn":1268,"description":1269,"org":1270,"tags":1271,"stars":1284,"repoUrl":1285,"updatedAt":1286},"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},[1272,1275,1278,1281],{"name":1273,"slug":1274,"type":16},"Accounting","accounting",{"name":1276,"slug":1277,"type":16},"Analytics","analytics",{"name":1279,"slug":1280,"type":16},"Cost Optimization","cost-optimization",{"name":1282,"slug":1283,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":1288,"name":1288,"fn":1289,"description":1290,"org":1291,"tags":1292,"stars":1284,"repoUrl":1285,"updatedAt":1301},"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},[1293,1294,1295,1298],{"name":1106,"slug":1107,"type":16},{"name":1282,"slug":1283,"type":16},{"name":1296,"slug":1297,"type":16},"Management","management",{"name":1299,"slug":1300,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":1303,"name":1303,"fn":1304,"description":1305,"org":1306,"tags":1307,"stars":1284,"repoUrl":1285,"updatedAt":1316},"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},[1308,1309,1310,1313],{"name":1276,"slug":1277,"type":16},{"name":1282,"slug":1283,"type":16},{"name":1311,"slug":1312,"type":16},"Financial Statements","financial-statements",{"name":1314,"slug":1315,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":1318,"name":1318,"fn":1319,"description":1320,"org":1321,"tags":1322,"stars":1284,"repoUrl":1285,"updatedAt":1329},"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},[1323,1324,1327],{"name":1162,"slug":1163,"type":16},{"name":1325,"slug":1326,"type":16},"Documents","documents",{"name":1328,"slug":1318,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":1331,"name":1331,"fn":1332,"description":1333,"org":1334,"tags":1335,"stars":1284,"repoUrl":1285,"updatedAt":1344},"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},[1336,1337,1340,1341],{"name":1273,"slug":1274,"type":16},{"name":1338,"slug":1339,"type":16},"Data Analysis","data-analysis",{"name":1282,"slug":1283,"type":16},{"name":1342,"slug":1343,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150]