[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ADKDYA3XC41EJCM61KMJTZ":3,"skill-same:01M6ADKDYA3XC41EJCM61KMJTZ":111},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":56,"linkOnly":57,"markdownContent":58,"markdownBody":59,"frontMatter":60,"refName":61,"commitSha":62,"skillDirectory":63,"forksCount":64,"repositoryHtmlUrl":65,"repositoryHomepageUrl":66,"ownerHtmlUrl":67,"ownerBlogUrl":68,"ownerDescription":69,"updatedAt":70,"install":71,"resources":84},"01M6ADKDYA3XC41EJCM61KMJTZ","foundry-hosted-agent-copilotkit",null,"Build and evolve agentic web apps that pair a CopilotKit React frontend with a Microsoft Agent Framework agent running as a Microsoft Foundry hosted agent, connected over the AG-UI protocol. Covers choosing the wiring, using Foundry-native primitives instead of hand-rolled plumbing, agent tools, human-in-the-loop approvals, generative UI and shared state, local run and azd deploy, debugging the event stream, and safe upgrades.","github\u002Fawesome-copilot","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6AD3PBDYPK7NVFJNJ66Y8RS",41081,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Ffoundry-hosted-agent-copilotkit\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],"foundry","copilotkit","foundry hosted agent copilotkit","microsoft agent framework","generative","wiring","hand","generative ui","native","apps","shared","local","human","loop","ui","framework","frontend","protocol","state","run","debugging","deploy","react","agent framework","microsoft foundry","microsoft","web","agentic","safe","2026-11-10 10:12:30",false,"---\nname: foundry-hosted-agent-copilotkit\ndescription: 'Build and evolve agentic web apps that pair a CopilotKit React frontend with a Microsoft Agent Framework agent running as a Microsoft Foundry hosted agent, connected over the AG-UI protocol. Covers choosing the wiring, using Foundry-native primitives instead of hand-rolled plumbing, agent tools, human-in-the-loop approvals, generative UI and shared state, local run and azd deploy, debugging the event stream, and safe upgrades.'\n---\n\n# CopilotKit + AG-UI + Microsoft Foundry hosted agents\n\nUse this skill when a React\u002FNext.js app uses CopilotKit and talks over AG-UI to a Microsoft Agent Framework (MAF) agent hosted in Microsoft Foundry. This covers new builds and changes to existing apps. Foundry hosted agents are a paid Azure service.\n\nScaffold the agent with `azd ai agent init` and the frontend with your usual React\u002FNext.js tooling. Then follow this skill for everything that connects them.\n\n## Mental model\n\n```text\nReact (CopilotKit v2)        CopilotKitProvider \u002F CopilotChat threadId=\u003Cconv_ id> \u002F useInterrupt\n      │ HTTP\nCopilotKit runtime           CopilotRuntime({ agents: { default: new HttpAgent({ url }) } })\n      │ AG-UI (SSE)\nAG-UI gateway (FastAPI)      add_agent_framework_fastapi_endpoint(app, AgentFrameworkAgent(FoundryAgent(...),\n                               use_service_session=True, service_session_id_from_thread_id=True))   ← keeps no thread state\n      │ OpenAI Responses + Entra token (https:\u002F\u002Fai.azure.com\u002F.default)\nFoundry hosted agent         ResponsesHostServer(Agent(tools=[...]))  ← deployed with azd\n```\n\n**A deployed hosted agent does not speak AG-UI.** It exposes `...\u002Fagents\u002F\u003Cname>\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses` (Responses protocol) or `...\u002Fprotocols\u002Finvocations`. Translate with MAF's own adapter (`FoundryAgent` + `agent-framework-ag-ui`) instead of writing an SSE translator by hand. Browsers cannot hold the Entra token, so the gateway is always server-side.\n\n## Use the platform first\n\nBefore you write any plumbing, check this table. Each row is something older codebases built by hand.\n\n| Need | Native primitive (don't hand-roll) |\n| --- | --- |\n| Conversation history across turns and restarts | Foundry **conversations**: create one per chat, use its `conv_…` ID as the AG-UI thread ID, and the gateway passes it through (no snapshot store) |\n| Durable tool approvals | `ResponsesHostServer` persists approval requests by default (`FoundryFunctionApprovalStore`). The AG-UI adapter turns them into AG-UI interrupts and forwards decisions back to the hosted agent |\n| Runs that survive browser disconnects | Responses `background: true` + `store: true`, then poll or reconnect (see [wiring](references\u002Fwiring.md#background-runs-gateway)) |\n| Durable multi-step workflows with gates | Invocations hosted agent + `@multi_turn_task` + `FoundryStateStore` |\n| Per-user files for the agent | Session Files API; the agent reads `$HOME` with its own tools. Never inline large documents into the prompt |\n| Long-term user memory | Foundry Memory Store (user scope) or `FoundryMemoryProvider` |\n| Tool catalogs, web search, code interpreter | Foundry **Toolbox** (`FoundryToolbox`) with Tool Search, instead of listing every tool up front |\n| Live docs while coding | The Microsoft Learn and Foundry MCP servers (bundled with this skill's plugin) |\n\n## Choose the wiring\n\n| If the app needs… | Use | Gateway size |\n| --- | --- | --- |\n| Hosted agent + chat + tools + approvals (**default**) | **A. AG-UI gateway over a Responses hosted agent** | ~50 lines of Python |\n| Every state pattern, local prototype, no Foundry compute | **B. In-process AG-UI** (agent runs inside the FastAPI app) | ~15 lines |\n| Background runs that keep going after disconnect, reconnect, per-user conversation lists | **C. Background-runs gateway** (custom AG-UI agent over Foundry conversations) | ~150 lines of TypeScript |\n| Multi-step plan → approve → execute, irreversible steps that must not run twice | **D. Invocations hosted agent** alongside A or C | REST proxy |\n\nCode for each is in [references\u002Fwiring.md](references\u002Fwiring.md). In an existing codebase, identify the wiring before you change anything:\n- `FoundryAgent(...)` wrapped by `add_agent_framework_fastapi_endpoint` means A.\n- `Agent(client=...)` wrapped directly means B.\n- A custom `AbstractAgent` calling `\u002Fresponses` with `background` means C.\n- `protocol: invocations` in `azure.yaml` means D.\n\n## Workflow\n\n1. **Pick or identify the wiring** (table above).\n2. **Use the latest release of every package** (`@copilotkit\u002F*`, `@ag-ui\u002F*`, `agent-framework-*`, `azd` and its `azure.ai.agents` extension). Then ground on live sources:\n   - the Microsoft Learn MCP server for MAF and Foundry\n   - the Foundry MCP server for project state\n   - docs.copilotkit.ai and the `.d.ts` files bundled in the installed `@copilotkit\u002F*` packages\n   - docs.ag-ui.com\n\n   APIs move between minor versions, so don't trust memorized names.\n3. **Build or change it** with a playbook below.\n4. **Verify adversarially** against the completion criteria. A compiling build, a started server, or one good chat reply is not proof.\n\n## Playbooks\n\n### Build a new app end to end (wiring A)\n\n1. In a **fresh directory**, run `azd ai agent init --no-prompt ...` against the project. Confirm `azd env get-values` shows `FOUNDRY_PROJECT_ENDPOINT`, then write tools in `main.py` ([wiring §1](references\u002Fwiring.md#1-hosted-agent)).\n2. Run it locally with `azd ai agent run` (port 8088) and smoke-test it with `azd ai agent invoke --local \"hi\"`.\n3. `azd deploy` (each deploy creates a new agent version), then `azd ai agent invoke \"hi\"`.\n4. Add the AG-UI gateway exactly as in [wiring §2](references\u002Fwiring.md#2-ag-ui-gateway-wiring-a), including the thread-ID-is-conversation-ID flags and the interop shim. Create a conversation, then test chat **and** an approve resume with `curl -N` using its `conv_…` ID as `threadId` before touching the UI.\n5. Add the conversation route, the CopilotKit runtime route and the React provider ([wiring §3](references\u002Fwiring.md#3-copilotkit-runtime-and-react)).\n6. Add `useInterrupt` approval UI and a tool renderer ([hitl.md](references\u002Fhitl.md#frontend-copilotkit-v2)).\n7. Verify every completion criterion, first locally and then against the deployed agent.\n\n### Add or change an agent tool\n\n1. Define it with `@tool` (Python) or `AIFunctionFactory.Create` (.NET), using typed and described parameters.\n2. Keep parameter descriptions free of concrete example values for data the model must derive. Models copy literal examples.\n3. Return compact values. Rich formatting belongs in the UI renderer.\n4. Side-effecting tools get `approval_mode=\"always_require\"` ([hitl.md](references\u002Fhitl.md)).\n5. Redeploy the hosted agent. Tools live in the hosted agent, not the gateway.\n6. Verify through the UI that `TOOL_CALL_*` events stream, and that any component parsing the arguments still works.\n\n### Generative UI and shared state (CopilotKit v2 hooks)\n\n| Pattern | Agent side | Frontend hook |\n| --- | --- | --- |\n| Frontend tool (agent calls the UI) | none; arrives in `RunAgentInput.tools` | `useFrontendTool` |\n| Render a backend tool call | normal `@tool` | `useRenderTool` \u002F `useRenderToolCall` \u002F `useDefaultRenderTool` |\n| Human approval of a tool call | `approval_mode=\"always_require\"` | `useInterrupt` → `resolve({approved})` |\n| Agent asks the user for input (frontend-resolved tool) | none | `useHumanInTheLoop` → `respond(...)` |\n| Shared or predictive state | `state_schema` \u002F `predict_state_config` on `AgentFrameworkAgent` | `useAgent` (read `agent.state`) |\n\nState patterns emit `STATE_SNAPSHOT`\u002F`STATE_DELTA` only when the adapter can see the agent's state:\n- **Wiring B** gets them natively.\n- **Wiring A** needs them declared on the gateway's `AgentFrameworkAgent`. Test this before you promise the feature.\n- **Wiring C** has no state events unless you synthesize them.\n\n### Debug a broken flow\n\nWork from the lowest layer upward:\n1. Call the hosted agent with `azd ai agent invoke` or `curl` against `\u002Fresponses`.\n2. Call the gateway with a real conversation ID. A made-up thread ID returns HTTP 500 with this wiring:\n\n   ```bash\n   CONV=$(curl -s -X POST \"$FOUNDRY_PROJECT_ENDPOINT\u002Fagents\u002F$FOUNDRY_AGENT_NAME\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fconversations?api-version=v1\" \\\n     -H \"Authorization: Bearer $(az account get-access-token --resource https:\u002F\u002Fai.azure.com --query accessToken -o tsv)\" \\\n     -H 'content-type: application\u002Fjson' -d '{}' | jq -r .id)\n   curl -N -X POST \u003Cgateway>\u002F -H 'content-type: application\u002Fjson' -d '{\"threadId\":\"'$CONV'\",\"runId\":\"r1\",\"messages\":[{\"id\":\"m1\",\"role\":\"user\",\"content\":\"hi\"}],\"tools\":[],\"context\":[],\"state\":{},\"forwardedProps\":{}}'\n   ```\n3. Test the CopilotKit route.\n4. Test the browser.\n\nThe first layer that fails owns the bug. Then match the symptom in [troubleshooting.md](references\u002Ftroubleshooting.md). Use `azd ai agent monitor` for hosted-agent logs.\n\n### Upgrade dependencies\n\nFollow the version rules in [troubleshooting.md](references\u002Ftroubleshooting.md#upgrades). Upgrade all packages together, then re-run the completion criteria live.\n\n## Completion criteria\n\nA change is done only when all of these hold:\n1. The chat path works through the real UI, not only through curl.\n2. Every approval-gated tool was tested both ways:\n   - Approve: the tool runs once on the server and the side effect is observable.\n   - Reject: the tool does not run, and the agent acknowledges it.\n3. After an approval, a follow-up turn in the same thread does **not** re-run the gated tool.\n4. Tool and approval cards still render after `RUN_FINISHED`, not only while streaming.\n5. For deployed changes, checks 1–4 passed against the deployed agent and gateway. A successful deployment proves nothing about behavior.\n","# CopilotKit + AG-UI + Microsoft Foundry hosted agents\n\nUse this skill when a React\u002FNext.js app uses CopilotKit and talks over AG-UI to a Microsoft Agent Framework (MAF) agent hosted in Microsoft Foundry. This covers new builds and changes to existing apps. Foundry hosted agents are a paid Azure service.\n\nScaffold the agent with `azd ai agent init` and the frontend with your usual React\u002FNext.js tooling. Then follow this skill for everything that connects them.\n\n## Mental model\n\n```text\nReact (CopilotKit v2)        CopilotKitProvider \u002F CopilotChat threadId=\u003Cconv_ id> \u002F useInterrupt\n      │ HTTP\nCopilotKit runtime           CopilotRuntime({ agents: { default: new HttpAgent({ url }) } })\n      │ AG-UI (SSE)\nAG-UI gateway (FastAPI)      add_agent_framework_fastapi_endpoint(app, AgentFrameworkAgent(FoundryAgent(...),\n                               use_service_session=True, service_session_id_from_thread_id=True))   ← keeps no thread state\n      │ OpenAI Responses + Entra token (https:\u002F\u002Fai.azure.com\u002F.default)\nFoundry hosted agent         ResponsesHostServer(Agent(tools=[...]))  ← deployed with azd\n```\n\n**A deployed hosted agent does not speak AG-UI.** It exposes `...\u002Fagents\u002F\u003Cname>\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses` (Responses protocol) or `...\u002Fprotocols\u002Finvocations`. Translate with MAF's own adapter (`FoundryAgent` + `agent-framework-ag-ui`) instead of writing an SSE translator by hand. Browsers cannot hold the Entra token, so the gateway is always server-side.\n\n## Use the platform first\n\nBefore you write any plumbing, check this table. Each row is something older codebases built by hand.\n\n| Need | Native primitive (don't hand-roll) |\n| --- | --- |\n| Conversation history across turns and restarts | Foundry **conversations**: create one per chat, use its `conv_…` ID as the AG-UI thread ID, and the gateway passes it through (no snapshot store) |\n| Durable tool approvals | `ResponsesHostServer` persists approval requests by default (`FoundryFunctionApprovalStore`). The AG-UI adapter turns them into AG-UI interrupts and forwards decisions back to the hosted agent |\n| Runs that survive browser disconnects | Responses `background: true` + `store: true`, then poll or reconnect (see [wiring](references\u002Fwiring.md#background-runs-gateway)) |\n| Durable multi-step workflows with gates | Invocations hosted agent + `@multi_turn_task` + `FoundryStateStore` |\n| Per-user files for the agent | Session Files API; the agent reads `$HOME` with its own tools. Never inline large documents into the prompt |\n| Long-term user memory | Foundry Memory Store (user scope) or `FoundryMemoryProvider` |\n| Tool catalogs, web search, code interpreter | Foundry **Toolbox** (`FoundryToolbox`) with Tool Search, instead of listing every tool up front |\n| Live docs while coding | The Microsoft Learn and Foundry MCP servers (bundled with this skill's plugin) |\n\n## Choose the wiring\n\n| If the app needs… | Use | Gateway size |\n| --- | --- | --- |\n| Hosted agent + chat + tools + approvals (**default**) | **A. AG-UI gateway over a Responses hosted agent** | ~50 lines of Python |\n| Every state pattern, local prototype, no Foundry compute | **B. In-process AG-UI** (agent runs inside the FastAPI app) | ~15 lines |\n| Background runs that keep going after disconnect, reconnect, per-user conversation lists | **C. Background-runs gateway** (custom AG-UI agent over Foundry conversations) | ~150 lines of TypeScript |\n| Multi-step plan → approve → execute, irreversible steps that must not run twice | **D. Invocations hosted agent** alongside A or C | REST proxy |\n\nCode for each is in [references\u002Fwiring.md](references\u002Fwiring.md). In an existing codebase, identify the wiring before you change anything:\n- `FoundryAgent(...)` wrapped by `add_agent_framework_fastapi_endpoint` means A.\n- `Agent(client=...)` wrapped directly means B.\n- A custom `AbstractAgent` calling `\u002Fresponses` with `background` means C.\n- `protocol: invocations` in `azure.yaml` means D.\n\n## Workflow\n\n1. **Pick or identify the wiring** (table above).\n2. **Use the latest release of every package** (`@copilotkit\u002F*`, `@ag-ui\u002F*`, `agent-framework-*`, `azd` and its `azure.ai.agents` extension). Then ground on live sources:\n   - the Microsoft Learn MCP server for MAF and Foundry\n   - the Foundry MCP server for project state\n   - docs.copilotkit.ai and the `.d.ts` files bundled in the installed `@copilotkit\u002F*` packages\n   - docs.ag-ui.com\n\n   APIs move between minor versions, so don't trust memorized names.\n3. **Build or change it** with a playbook below.\n4. **Verify adversarially** against the completion criteria. A compiling build, a started server, or one good chat reply is not proof.\n\n## Playbooks\n\n### Build a new app end to end (wiring A)\n\n1. In a **fresh directory**, run `azd ai agent init --no-prompt ...` against the project. Confirm `azd env get-values` shows `FOUNDRY_PROJECT_ENDPOINT`, then write tools in `main.py` ([wiring §1](references\u002Fwiring.md#1-hosted-agent)).\n2. Run it locally with `azd ai agent run` (port 8088) and smoke-test it with `azd ai agent invoke --local \"hi\"`.\n3. `azd deploy` (each deploy creates a new agent version), then `azd ai agent invoke \"hi\"`.\n4. Add the AG-UI gateway exactly as in [wiring §2](references\u002Fwiring.md#2-ag-ui-gateway-wiring-a), including the thread-ID-is-conversation-ID flags and the interop shim. Create a conversation, then test chat **and** an approve resume with `curl -N` using its `conv_…` ID as `threadId` before touching the UI.\n5. Add the conversation route, the CopilotKit runtime route and the React provider ([wiring §3](references\u002Fwiring.md#3-copilotkit-runtime-and-react)).\n6. Add `useInterrupt` approval UI and a tool renderer ([hitl.md](references\u002Fhitl.md#frontend-copilotkit-v2)).\n7. Verify every completion criterion, first locally and then against the deployed agent.\n\n### Add or change an agent tool\n\n1. Define it with `@tool` (Python) or `AIFunctionFactory.Create` (.NET), using typed and described parameters.\n2. Keep parameter descriptions free of concrete example values for data the model must derive. Models copy literal examples.\n3. Return compact values. Rich formatting belongs in the UI renderer.\n4. Side-effecting tools get `approval_mode=\"always_require\"` ([hitl.md](references\u002Fhitl.md)).\n5. Redeploy the hosted agent. Tools live in the hosted agent, not the gateway.\n6. Verify through the UI that `TOOL_CALL_*` events stream, and that any component parsing the arguments still works.\n\n### Generative UI and shared state (CopilotKit v2 hooks)\n\n| Pattern | Agent side | Frontend hook |\n| --- | --- | --- |\n| Frontend tool (agent calls the UI) | none; arrives in `RunAgentInput.tools` | `useFrontendTool` |\n| Render a backend tool call | normal `@tool` | `useRenderTool` \u002F `useRenderToolCall` \u002F `useDefaultRenderTool` |\n| Human approval of a tool call | `approval_mode=\"always_require\"` | `useInterrupt` → `resolve({approved})` |\n| Agent asks the user for input (frontend-resolved tool) | none | `useHumanInTheLoop` → `respond(...)` |\n| Shared or predictive state | `state_schema` \u002F `predict_state_config` on `AgentFrameworkAgent` | `useAgent` (read `agent.state`) |\n\nState patterns emit `STATE_SNAPSHOT`\u002F`STATE_DELTA` only when the adapter can see the agent's state:\n- **Wiring B** gets them natively.\n- **Wiring A** needs them declared on the gateway's `AgentFrameworkAgent`. Test this before you promise the feature.\n- **Wiring C** has no state events unless you synthesize them.\n\n### Debug a broken flow\n\nWork from the lowest layer upward:\n1. Call the hosted agent with `azd ai agent invoke` or `curl` against `\u002Fresponses`.\n2. Call the gateway with a real conversation ID. A made-up thread ID returns HTTP 500 with this wiring:\n\n   ```bash\n   CONV=$(curl -s -X POST \"$FOUNDRY_PROJECT_ENDPOINT\u002Fagents\u002F$FOUNDRY_AGENT_NAME\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fconversations?api-version=v1\" \\\n     -H \"Authorization: Bearer $(az account get-access-token --resource https:\u002F\u002Fai.azure.com --query accessToken -o tsv)\" \\\n     -H 'content-type: application\u002Fjson' -d '{}' | jq -r .id)\n   curl -N -X POST \u003Cgateway>\u002F -H 'content-type: application\u002Fjson' -d '{\"threadId\":\"'$CONV'\",\"runId\":\"r1\",\"messages\":[{\"id\":\"m1\",\"role\":\"user\",\"content\":\"hi\"}],\"tools\":[],\"context\":[],\"state\":{},\"forwardedProps\":{}}'\n   ```\n3. Test the CopilotKit route.\n4. Test the browser.\n\nThe first layer that fails owns the bug. Then match the symptom in [troubleshooting.md](references\u002Ftroubleshooting.md). Use `azd ai agent monitor` for hosted-agent logs.\n\n### Upgrade dependencies\n\nFollow the version rules in [troubleshooting.md](references\u002Ftroubleshooting.md#upgrades). Upgrade all packages together, then re-run the completion criteria live.\n\n## Completion criteria\n\nA change is done only when all of these hold:\n1. The chat path works through the real UI, not only through curl.\n2. Every approval-gated tool was tested both ways:\n   - Approve: the tool runs once on the server and the side effect is observable.\n   - Reject: the tool does not run, and the agent acknowledges it.\n3. After an approval, a follow-up turn in the same thread does **not** re-run the gated tool.\n4. Tool and approval cards still render after `RUN_FINISHED`, not only while streaming.\n5. For deployed changes, checks 1–4 passed against the deployed agent and gateway. A successful deployment proves nothing about behavior.\n",{"name":5,"description":7},"main","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd","skills\u002Ffoundry-hosted-agent-copilotkit",5344,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot","https:\u002F\u002Fawesome-copilot.github.com\u002F","https:\u002F\u002Fgithub.com\u002Fgithub","https:\u002F\u002Fgithub.com\u002Fabout","How people build software.","2026-11-13 02:05:36",{"source":8,"skillName":5,"commands":72,"prompt":82,"zipAvailable":83},[73,76,79],{"tool":74,"command":75},"npx","npx skills add github\u002Fawesome-copilot --skill foundry-hosted-agent-copilotkit",{"tool":77,"command":78},"bunx","bunx skills add github\u002Fawesome-copilot --skill foundry-hosted-agent-copilotkit",{"tool":80,"command":81},"pnpm","pnpm dlx skills add github\u002Fawesome-copilot --skill foundry-hosted-agent-copilotkit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Ffoundry-hosted-agent-copilotkit\u002FSKILL.md",true,[85,91,95,99,103,107],{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"agents\u002Fopenai.yaml","REFERENCE","参考文档",102,"https:\u002F\u002Fgithub.com\u002FHasarAli\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot-agents\u002Fskills\u002Fcodebase-design\u002Fagents\u002Fopenai.yaml",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"DEEPENING.md",2553,"https:\u002F\u002Fgithub.com\u002FHasarAli\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot-agents\u002Fskills\u002Fcodebase-design\u002FDEEPENING.md",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"DESIGN-IT-TWICE.md",2665,"https:\u002F\u002Fgithub.com\u002FHasarAli\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot-agents\u002Fskills\u002Fcodebase-design\u002FDESIGN-IT-TWICE.md",{"path":100,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fhitl.md",8645,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Ffoundry-hosted-agent-copilotkit\u002Freferences\u002Fhitl.md",{"path":104,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Ftroubleshooting.md",7855,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Ffoundry-hosted-agent-copilotkit\u002Freferences\u002Ftroubleshooting.md",{"path":108,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fwiring.md",18664,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Ffoundry-hosted-agent-copilotkit\u002Freferences\u002Fwiring.md",[112,143,171,198,231,248],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":122,"publishedAt":56},"01M70KXZNX9ES38N2A8M58ZZMZ","supabase-rls-policies","Write, review, and test Supabase Row Level Security (RLS) policies so that one user cannot read or change another user's rows. Use when creating or changing tables, policies, views, or security definer functions in a Supabase project, when reviewing a migration that touches RLS, or when asked to prove user isolation with pgTAP tests that sign in as two users.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fsupabase-rls-policies\u002FSKILL.md",[118,121],{"categoryNo":119,"categoryName":120,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142],"supabase","rls","supabase rls","supabase rls policies","project","when","review","change","read","write","security","isolation","tables","as","tests","prove","use","users","functions","with",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":150,"publishedAt":56},"01M70KWA5YWXDV6V8DZ19E3T2Y","skill-distribution-audit","Audit a skill collection before release or investigate installer omissions, archived\u002Ftemplate leakage, duplicate identities, and manifest drift. Reconcile the intended public source set, distribution manifest, and actual discovery output for a specified consumer version. Includes a deterministic set-comparison helper.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fskill-distribution-audit\u002FSKILL.md",[149],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170],"distribution","skill distribution audit","audit","SET","deterministic","installer","for","discovery","comparison","helper","manifest","version","collection","drift","output","investigate","duplicate","template","release","reconcile",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":175,"sourceHtmlUrl":176,"categories":177,"keywords":183,"publishedAt":56},"01M70KCJPFVW7PPQ49CC5R8JGK","logicapps-custom-code-net10-migration","Migrate Azure Logic Apps Standard local-function custom-code projects from .NET 8 to .NET 10. Use for legacy Logic Apps custom-code workspace upgrades, project\u002Fpackage configuration, custom-worker settings, publication, and integrated VS Code debugging. Not for ordinary .NET applications, standalone Azure Functions, Consumption workflows, or cloud deployment.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FSKILL.md",[178],{"categoryNo":179,"categoryName":180,"taxonomyType":181,"taxonomyTypeDesc":182},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[184,185,186,187,188,189,157,127,190,191,38,192,193,194,195,139,36,196,47,197],"custom","code","logicapps custom code net10 migration","migration","projects","standalone","deployment","applications","azure","worker","upgrades","package","Legacy","workflows",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":202,"sourceHtmlUrl":203,"categories":204,"keywords":209,"publishedAt":56},"01M6AEBN37RQMXJ3298PEY7PG1","winmd-api-search","Find and explore Windows desktop APIs. Use when building features that need platform capabilities — camera, file access, notifications, UI controls, AI\u002FML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values).","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FSKILL.md",[205,208],{"categoryNo":206,"categoryName":207,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":179,"categoryName":180,"taxonomyType":181,"taxonomyTypeDesc":182},[210,211,212,213,214,215,216,41,217,218,219,220,221,222,223,128,224,225,226,227,228,157,229,230],"winmd api search","search","api","windows","desktop","file access","enumeration","ml","file","networking","capabilities","notifications","explore","access","features","full","camera","events","platform","methods","controls",{"skillNo":232,"name":233,"nameZh":6,"description":234,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":235,"licenseFileUrl":236,"sourceHtmlUrl":237,"categories":238,"keywords":244,"publishedAt":56},"01M6AE571R3SC1ZGE202B3NB5S","resemble-detect","Deepfake detection and media safety — detect AI-generated audio, images, video, and text, trace synthesis sources, apply watermarks, verify speaker identity, and analyze media intelligence using Resemble AI","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FSKILL.md",[239,240,243],{"categoryNo":206,"categoryName":207,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":241,"categoryName":242,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[245,154,218,246,247],"resemble detect","https","identity",{"skillNo":249,"name":250,"nameZh":6,"description":251,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":235,"licenseFileUrl":252,"sourceHtmlUrl":253,"categories":254,"keywords":259,"publishedAt":56},"01M6AE30BSK2HCY4TQQ22Z8JRD","quality-playbook","Run a complete quality engineering audit on any codebase. Derives behavioral requirements from the code, generates spec-traced functional tests, runs a three-pass code review with regression tests, executes a multi-model spec audit (Council of Three), and produces a consolidated bug report with TDD-verified patches. Finds the 35% of real defects that structural code review alone cannot catch. Works with any language. Trigger on 'quality playbook', 'spec audit', 'Council of Three', 'fitness-to-purpose', or 'coverage theater'.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FSKILL.md",[255,258],{"categoryNo":256,"categoryName":257,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[260,261,262,263,185,129,9,153,264,46,246,265,266,267,268,269,270,271,272,273,274,275,137,276,277,278,279],"playbook","quality playbook","quality","code review","tdd","report","spec","bug report","council","engineering","functional","spec audit","bug","verified","multi-model","three","coverage","model","regression","structural"]