[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AE11E25VG62FSTA0GG94TC":3,"skill-same:01M6AE11E25VG62FSTA0GG94TC":96},{"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":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":63,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M6AE11E25VG62FSTA0GG94TC","python-mcp-server-generator",null,"Use this skill when the user wants to create a new Model Context Protocol (MCP) server in Python. Also use it to expose Python functions, an API, or a database to AI clients as MCP tools. The skill makes a uv project with the MCP Python SDK v2 (MCPServer), typed tools, in-memory tests, and client configuration. Do not use it for an MCP client or for a server in another language.","github\u002Fawesome-copilot","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6AD3PBDYPK7NVFJNJ66Y8RS",41046,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fpython-mcp-server-generator\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","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],"python","generator","python mcp server generator","server","MCP","mcp server","sdk","new","when","project","later","uv","python sdk","model","access","api","network","memory","database","mcp tools","mcp client","protocol","create","packages","model context protocol","2026-11-10 10:12:30",false,"---\nname: python-mcp-server-generator\ndescription: 'Use this skill when the user wants to create a new Model Context Protocol (MCP) server in Python. Also use it to expose Python functions, an API, or a database to AI clients as MCP tools. The skill makes a uv project with the MCP Python SDK v2 (MCPServer), typed tools, in-memory tests, and client configuration. Do not use it for an MCP client or for a server in another language.'\ncompatibility: 'Requires uv, Python 3.10 or later, and network access to install packages. The MCP Inspector also requires Node.js.'\n---\n\n# Python MCP Server Generator\n\nCreate a Model Context Protocol (MCP) server in Python with the official [MCP Python SDK](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fpython-sdk) v2. SDK v2 supports the MCP specification revision [2026-07-28](https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2026-07-28). The same server also serves clients that use earlier revisions.\n\n## Workflow\n\nCopy this checklist and track your progress:\n\n- [ ] Step 1: Create the project.\n- [ ] Step 2: Write the server.\n- [ ] Step 3: Write the tests.\n- [ ] Step 4: Run the tests until they pass.\n- [ ] Step 5: Configure the client.\n\n### Step 1: Create the project\n\nRun these commands:\n\n```bash\nuv init --app --no-package project-name\ncd project-name\nuv add \"mcp[cli]>=2,\u003C3\"\nuv add --dev pytest\n```\n\nThen delete `main.py`. The server goes in `server.py`.\n\n- Without `--no-package`, uv makes a `src\u002F` package layout, and the tests cannot import `server.py`.\n- `uv init` makes the `.gitignore` file. Do not write a different one.\n\n### Step 2: Write the server\n\nStart from this template:\n\n```python\nfrom mcp.server import MCPServer\nfrom mcp.server.mcpserver.exceptions import ToolError\n\nmcp = MCPServer(\"Demo\", version=\"0.1.0\")\n\n\n@mcp.tool()\ndef divide(a: float, b: float) -> float:\n    \"\"\"Divide a by b.\"\"\"\n    if b == 0:\n        raise ToolError(\"b must not be zero.\")\n    return a \u002F b\n\n\nif __name__ == \"__main__\":\n    mcp.run()  # stdio is the default transport\n```\n\nThen change the template for the request of the user:\n\n1. Replace `divide` with the tools that the user needs.\n2. Give each tool full type hints and a docstring. The SDK makes the input schema from the type hints. The docstring becomes the tool description.\n3. Return a Pydantic model or a `TypedDict` when the client needs machine-readable data. The SDK makes the output schema from the return type.\n4. Use `async def` for I\u002FO. The SDK runs a sync tool on a worker thread.\n5. Mark a read-only tool with `@mcp.tool(annotations=ToolAnnotations(read_only_hint=True))` (from `mcp.types`). Use `destructive_hint=True` for a destructive tool.\n6. Add resources (`@mcp.resource(\"users:\u002F\u002F{user_id}\")`) and prompts (`@mcp.prompt()`) only when the user asks for them.\n\nUse stdio by default. Read [references\u002Fstreamable-http.md](references\u002Fstreamable-http.md) only when the user asks for a remote server or an HTTP server.\n\n### Step 3: Write the tests\n\nPut `test_server.py` next to `server.py`. Write a test for each tool and for each `ToolError`:\n\n```python\nimport pytest\n\nfrom mcp import Client\n\nfrom server import mcp\n\n\n@pytest.mark.anyio\nasync def test_divide():\n    async with Client(mcp) as client:\n        result = await client.call_tool(\"divide\", {\"a\": 6, \"b\": 3})\n        assert result.structured_content == {\"result\": 2.0}\n\n\n@pytest.mark.anyio\nasync def test_divide_by_zero():\n    async with Client(mcp) as client:\n        result = await client.call_tool(\"divide\", {\"a\": 1, \"b\": 0})\n        assert result.is_error\n        assert \"must not be zero\" in result.content[0].text\n```\n\n- The in-memory `Client` needs no subprocess and no port. It connects with the 2026-07-28 revision.\n- The `mcp` package installs `anyio`, which supplies the `anyio` marker. Do not add `pytest-asyncio`.\n\n### Step 4: Run the tests until they pass\n\n1. Run `uv run pytest`.\n2. If a test fails, read the error. Fix the server or the test.\n3. Run `uv run pytest` again.\n4. Continue only when all tests pass.\n\n### Step 5: Configure the client\n\nFor VS Code, write `.vscode\u002Fmcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"demo\": {\n      \"type\": \"stdio\",\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"\u002Fabsolute\u002Fpath\u002Fto\u002Fproject\", \"run\", \"server.py\"]\n    }\n  }\n}\n```\n\nFor Claude Desktop, run `uv run mcp install server.py`.\n\nTell the user these commands:\n\n- `uv run server.py` starts the stdio server. The server waits for a host on stdin and prints nothing.\n- `uv run mcp dev server.py` opens the MCP Inspector. The Inspector needs Node.js.\n\n## Gotchas\n\nSDK v2 and the 2026-07-28 revision changed many SDK v1 patterns. Do not copy SDK v1 examples.\n\n- SDK v2 removed `FastMCP` and `mcp.server.fastmcp`. Import the server class with `from mcp.server import MCPServer`.\n- Import `Context`, `Image`, `Audio`, `Resolve`, `Elicit`, `ElicitationResult`, `AcceptedElicitation`, `Message`, `UserMessage`, and `AssistantMessage` from `mcp.server.mcpserver`.\n- Give the server name as the first `MCPServer` argument. Give all other constructor arguments as keyword arguments. Their positional order changed in SDK v2.\n- Set `version`. If you do not set it, the server reports an empty version.\n- Give the transport options (`transport`, `host`, `port`, `json_response`, `stateless_http`, `transport_security`) to `run()`, not to `MCPServer(...)`.\n- The SDK v2 types use snake_case fields, for example `read_only_hint`, `structured_content`, and `is_error`.\n- Raise `ToolError` for an error that the model must read. For other exceptions, the model gets only a generic error message.\n- Do not raise `MCPError` for a tool failure. The client gets a protocol error, not a tool result with `is_error`. Many hosts do not show this error to the model.\n- In a stdio server, stdout is the protocol channel. Do not call `print()`. Log to stderr with the `logging` module.\n- Do not use `ctx.elicit()`. It fails on a 2026-07-28 connection. For user input during a tool call, annotate a parameter with `Resolve(fn)`. Return `Elicit(message, Model)` from `fn`.\n- Send list change notifications with `await ctx.notify_tools_changed()`. A 2026-07-28 connection drops `ctx.session.send_tool_list_changed()`.\n- For stdio and HTTP, the lifespan runs one time, when the server starts. Each in-memory `Client(mcp)` in a test runs the lifespan again. Read its object with `ctx.request_context.lifespan_context`.\n- The 2026-07-28 revision deprecates these features ([SEP-2577](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fmodelcontextprotocol\u002Fpull\u002F2577)). Do not add them to a new server:\n  - **Sampling** (`ctx.session.create_message()`): Call the LLM provider API directly.\n  - **Protocol logging** (`ctx.log()`, `ctx.info()`, and similar methods): Use the standard `logging` module.\n  - **Roots** (`ctx.session.list_roots()`): Get paths from tool parameters, resource URIs, or the server configuration.\n- The 2026-07-28 revision has no SSE transport. Use Streamable HTTP.\n","# Python MCP Server Generator\n\nCreate a Model Context Protocol (MCP) server in Python with the official [MCP Python SDK](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fpython-sdk) v2. SDK v2 supports the MCP specification revision [2026-07-28](https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2026-07-28). The same server also serves clients that use earlier revisions.\n\n## Workflow\n\nCopy this checklist and track your progress:\n\n- [ ] Step 1: Create the project.\n- [ ] Step 2: Write the server.\n- [ ] Step 3: Write the tests.\n- [ ] Step 4: Run the tests until they pass.\n- [ ] Step 5: Configure the client.\n\n### Step 1: Create the project\n\nRun these commands:\n\n```bash\nuv init --app --no-package project-name\ncd project-name\nuv add \"mcp[cli]>=2,\u003C3\"\nuv add --dev pytest\n```\n\nThen delete `main.py`. The server goes in `server.py`.\n\n- Without `--no-package`, uv makes a `src\u002F` package layout, and the tests cannot import `server.py`.\n- `uv init` makes the `.gitignore` file. Do not write a different one.\n\n### Step 2: Write the server\n\nStart from this template:\n\n```python\nfrom mcp.server import MCPServer\nfrom mcp.server.mcpserver.exceptions import ToolError\n\nmcp = MCPServer(\"Demo\", version=\"0.1.0\")\n\n\n@mcp.tool()\ndef divide(a: float, b: float) -> float:\n    \"\"\"Divide a by b.\"\"\"\n    if b == 0:\n        raise ToolError(\"b must not be zero.\")\n    return a \u002F b\n\n\nif __name__ == \"__main__\":\n    mcp.run()  # stdio is the default transport\n```\n\nThen change the template for the request of the user:\n\n1. Replace `divide` with the tools that the user needs.\n2. Give each tool full type hints and a docstring. The SDK makes the input schema from the type hints. The docstring becomes the tool description.\n3. Return a Pydantic model or a `TypedDict` when the client needs machine-readable data. The SDK makes the output schema from the return type.\n4. Use `async def` for I\u002FO. The SDK runs a sync tool on a worker thread.\n5. Mark a read-only tool with `@mcp.tool(annotations=ToolAnnotations(read_only_hint=True))` (from `mcp.types`). Use `destructive_hint=True` for a destructive tool.\n6. Add resources (`@mcp.resource(\"users:\u002F\u002F{user_id}\")`) and prompts (`@mcp.prompt()`) only when the user asks for them.\n\nUse stdio by default. Read [references\u002Fstreamable-http.md](references\u002Fstreamable-http.md) only when the user asks for a remote server or an HTTP server.\n\n### Step 3: Write the tests\n\nPut `test_server.py` next to `server.py`. Write a test for each tool and for each `ToolError`:\n\n```python\nimport pytest\n\nfrom mcp import Client\n\nfrom server import mcp\n\n\n@pytest.mark.anyio\nasync def test_divide():\n    async with Client(mcp) as client:\n        result = await client.call_tool(\"divide\", {\"a\": 6, \"b\": 3})\n        assert result.structured_content == {\"result\": 2.0}\n\n\n@pytest.mark.anyio\nasync def test_divide_by_zero():\n    async with Client(mcp) as client:\n        result = await client.call_tool(\"divide\", {\"a\": 1, \"b\": 0})\n        assert result.is_error\n        assert \"must not be zero\" in result.content[0].text\n```\n\n- The in-memory `Client` needs no subprocess and no port. It connects with the 2026-07-28 revision.\n- The `mcp` package installs `anyio`, which supplies the `anyio` marker. Do not add `pytest-asyncio`.\n\n### Step 4: Run the tests until they pass\n\n1. Run `uv run pytest`.\n2. If a test fails, read the error. Fix the server or the test.\n3. Run `uv run pytest` again.\n4. Continue only when all tests pass.\n\n### Step 5: Configure the client\n\nFor VS Code, write `.vscode\u002Fmcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"demo\": {\n      \"type\": \"stdio\",\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"\u002Fabsolute\u002Fpath\u002Fto\u002Fproject\", \"run\", \"server.py\"]\n    }\n  }\n}\n```\n\nFor Claude Desktop, run `uv run mcp install server.py`.\n\nTell the user these commands:\n\n- `uv run server.py` starts the stdio server. The server waits for a host on stdin and prints nothing.\n- `uv run mcp dev server.py` opens the MCP Inspector. The Inspector needs Node.js.\n\n## Gotchas\n\nSDK v2 and the 2026-07-28 revision changed many SDK v1 patterns. Do not copy SDK v1 examples.\n\n- SDK v2 removed `FastMCP` and `mcp.server.fastmcp`. Import the server class with `from mcp.server import MCPServer`.\n- Import `Context`, `Image`, `Audio`, `Resolve`, `Elicit`, `ElicitationResult`, `AcceptedElicitation`, `Message`, `UserMessage`, and `AssistantMessage` from `mcp.server.mcpserver`.\n- Give the server name as the first `MCPServer` argument. Give all other constructor arguments as keyword arguments. Their positional order changed in SDK v2.\n- Set `version`. If you do not set it, the server reports an empty version.\n- Give the transport options (`transport`, `host`, `port`, `json_response`, `stateless_http`, `transport_security`) to `run()`, not to `MCPServer(...)`.\n- The SDK v2 types use snake_case fields, for example `read_only_hint`, `structured_content`, and `is_error`.\n- Raise `ToolError` for an error that the model must read. For other exceptions, the model gets only a generic error message.\n- Do not raise `MCPError` for a tool failure. The client gets a protocol error, not a tool result with `is_error`. Many hosts do not show this error to the model.\n- In a stdio server, stdout is the protocol channel. Do not call `print()`. Log to stderr with the `logging` module.\n- Do not use `ctx.elicit()`. It fails on a 2026-07-28 connection. For user input during a tool call, annotate a parameter with `Resolve(fn)`. Return `Elicit(message, Model)` from `fn`.\n- Send list change notifications with `await ctx.notify_tools_changed()`. A 2026-07-28 connection drops `ctx.session.send_tool_list_changed()`.\n- For stdio and HTTP, the lifespan runs one time, when the server starts. Each in-memory `Client(mcp)` in a test runs the lifespan again. Read its object with `ctx.request_context.lifespan_context`.\n- The 2026-07-28 revision deprecates these features ([SEP-2577](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fmodelcontextprotocol\u002Fpull\u002F2577)). Do not add them to a new server:\n  - **Sampling** (`ctx.session.create_message()`): Call the LLM provider API directly.\n  - **Protocol logging** (`ctx.log()`, `ctx.info()`, and similar methods): Use the standard `logging` module.\n  - **Roots** (`ctx.session.list_roots()`): Get paths from tool parameters, resource URIs, or the server configuration.\n- The 2026-07-28 revision has no SSE transport. Use Streamable HTTP.\n",{"name":5,"description":7,"compatibility":57},"Requires uv, Python 3.10 or later, and network access to install packages. The MCP Inspector also requires Node.js.","main","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd","skills\u002Fpython-mcp-server-generator",5340,"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-11 13:41:32",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add github\u002Fawesome-copilot --skill python-mcp-server-generator",{"tool":74,"command":75},"bunx","bunx skills add github\u002Fawesome-copilot --skill python-mcp-server-generator",{"tool":77,"command":78},"pnpm","pnpm dlx skills add github\u002Fawesome-copilot --skill python-mcp-server-generator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fpython-mcp-server-generator\u002FSKILL.md",true,[82,88,92],{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"agents\u002Fopenai.yaml","REFERENCE","参考文档",93,"https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpr\u002Fagents\u002Fopenai.yaml",{"path":89,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":90,"sourceHtmlUrl":91},"CREDITS.md",604,"https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpr\u002FCREDITS.md",{"path":93,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fstreamable-http.md",1939,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fpython-mcp-server-generator\u002Freferences\u002Fstreamable-http.md",[97,126,154,184,214,231],{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":107,"publishedAt":52},"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",[103,106],{"categoryNo":104,"categoryName":105,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[108,109,110,111,36,35,112,113,114,115,116,117,118,119,120,121,122,123,124,125],"supabase","rls","supabase rls","supabase rls policies","review","change","read","write","security","isolation","tables","as","tests","prove","use","users","functions","with",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":133,"publishedAt":52},"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",[132],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],"distribution","skill distribution audit","audit","SET","deterministic","installer","for","discovery","comparison","helper","manifest","version","collection","drift","output","investigate","duplicate","template","release","reconcile",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":158,"sourceHtmlUrl":159,"categories":160,"keywords":166,"publishedAt":52},"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",[161],{"categoryNo":162,"categoryName":163,"taxonomyType":164,"taxonomyTypeDesc":165},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[167,168,169,170,171,172,140,36,173,174,175,176,177,178,179,122,180,181,182,183],"custom","code","logicapps custom code net10 migration","migration","projects","standalone","deployment","applications","local","azure","worker","upgrades","package","apps","Legacy","debugging","workflows",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":188,"sourceHtmlUrl":189,"categories":190,"keywords":193,"publishedAt":52},"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",[191,192],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":162,"categoryName":163,"taxonomyType":164,"taxonomyTypeDesc":165},[194,195,42,196,197,198,199,200,201,202,203,204,205,206,41,35,207,208,209,210,211,140,212,213],"winmd api search","search","windows","desktop","file access","enumeration","ui","ml","file","networking","capabilities","notifications","explore","features","full","camera","events","platform","methods","controls",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":218,"licenseFileUrl":219,"sourceHtmlUrl":220,"categories":221,"keywords":227,"publishedAt":52},"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",[222,223,226],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":224,"categoryName":225,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[228,137,202,229,230],"resemble detect","https","identity",{"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":218,"licenseFileUrl":235,"sourceHtmlUrl":236,"categories":237,"keywords":242,"publishedAt":52},"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",[238,241],{"categoryNo":239,"categoryName":240,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[243,244,245,246,168,112,9,136,247,248,229,249,250,251,252,253,254,255,256,257,258,259,120,260,40,261,262],"playbook","quality playbook","quality","code review","tdd","run","report","spec","bug report","council","engineering","functional","spec audit","bug","verified","multi-model","three","coverage","regression","structural"]