[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AEA876JD00RC4ZCXSKCMYZ":3,"skill-same:01M6AEA876JD00RC4ZCXSKCMYZ":79},{"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":28,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6AEA876JD00RC4ZCXSKCMYZ","ui-screenshots",null,"Capture screenshots of web apps during development using Playwright and PIL. Supports full-page captures, interactive states, and an iterate-on-crop workflow that avoids slow re-screenshots.","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\u002Fui-screenshots\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"screenshots","ui","ui screenshots","workflow","playwright","web","development","page","capture","interactive","full","apps","states","re","iterate","2026-11-10 10:12:30",false,"---\nname: ui-screenshots\ndescription: 'Capture screenshots of web apps during development using Playwright and PIL. Supports full-page captures, interactive states, and an iterate-on-crop workflow that avoids slow re-screenshots.'\n---\n\n# UI Screenshots\n\nCapture screenshots of web apps and graphical UIs during development to document visual changes.\n\n## When to Use This Skill\n\nUse this skill when you need to:\n\n- Capture the current state of a running web app\n- Document a UI before and after a code change\n- Screenshot interactive states (tooltips, hovers, selected elements)\n- Capture specific sections of a page without re-screenshotting\n\n## Prerequisites\n\n```bash\npip install playwright Pillow -q\nplaywright install chromium\n```\n\n## Core Workflow\n\n### 1. Take a raw full-page screenshot\n\n```python\nfrom playwright.async_api import async_playwright\n\nasync def capture(url=\"http:\u002F\u002Flocalhost:3000\", out=\"screenshot-raw.png\", width=1400, height=5000):\n    async with async_playwright() as p:\n        browser = await p.chromium.launch()\n        page = await browser.new_page(viewport={\"width\": width, \"height\": height})\n        await page.goto(url, wait_until=\"networkidle\")\n        await page.wait_for_timeout(4000)  # let charts\u002Fanimations render\n        await page.screenshot(path=out, full_page=True)\n        await browser.close()\n```\n\n- Use a **tall viewport** (height=5000) so the page renders everything without scrolling\n- `wait_until=\"networkidle\"` + `wait_for_timeout(4000)` ensures async charts load\n- `full_page=True` captures the entire scrollable content\n\n### 2. View the raw image, then crop with PIL\n\n**Do NOT try to get perfect crops via Playwright's `clip` parameter.** It's unreliable with full-page captures.\n\n```python\nfrom PIL import Image\n\nimg = Image.open(\"screenshot-raw.png\")\ncropped = img.crop((left, top, right, bottom))  # adjust based on what you see\ncropped.save(\"screenshot-final.png\")\n```\n\n1. Take the raw screenshot\n2. View it to see actual pixel positions\n3. Crop with PIL based on what you see\n4. View the result — if not right, re-crop (instant, no re-screenshot needed)\n\n### 3. Iterate on crop, not on capture\n\n- Re-screenshotting is slow (browser launch + page load + render wait)\n- Re-cropping is instant (just PIL)\n- Get one good raw capture, then slice it as many ways as needed\n\n### 4. Interactive states\n\n```python\nelement = page.locator(\"selector\").first\nawait element.hover()\nawait page.wait_for_timeout(1000)  # let tooltip appear\nawait page.screenshot(path=\"screenshot-hover.png\", full_page=True)\n```\n\nFor \"selected\" state without hover effect, move the mouse away after clicking:\n\n```python\nawait element.click()\nawait page.mouse.move(300, 300)  # move away so hover doesn't show\nawait page.wait_for_timeout(500)\nawait page.screenshot(path=\"screenshot-selected.png\", full_page=True)\n```\n\n### 5. Section-specific captures\n\nCrop different sections from a single full-page screenshot:\n\n```python\nimg.crop((0, 200, 920, 900)).save(\"screenshot-header.png\")\nimg.crop((0, 900, 920, 1600)).save(\"screenshot-main.png\")\n```\n\n## Guidelines\n\n1. **Always capture before state BEFORE making any changes** — if you forget, you have to revert code to get a before shot\n2. **Before\u002Fafter pairs must use the same viewport width and crop** — otherwise the comparison is useless\n3. **To get a \"before\" after you already changed code**: use `git checkout HEAD~1 -- \u003Cfiles>` to revert, screenshot, then `git checkout HEAD -- \u003Cfiles>` to restore\n4. **For interactive states**: capture before AND after for each state — don't assume the \"normal\" before covers all cases\n5. **Use `device_scale_factor=1`** in Playwright to force 1x pixels so screenshots match what users see at 100% zoom\n6. **Charts need extra wait time** — Plotly, D3, etc. render asynchronously; 4s minimum after networkidle\n7. **Narrow viewport reveals rendering bugs** — some border\u002Falignment issues only appear at specific widths\n\n## Non-Web App Screenshots\n\nFor desktop apps (VS, WPF, WinForms, console apps, terminals) where Playwright can't reach.\n\n### mss + ctypes (recommended for desktop windows)\n\nFind a window by title via Win32 API, capture its region with `mss`. Tested at ~33ms per capture.\n\n```python\nimport ctypes\nfrom ctypes import c_int, Structure, byref, windll\nimport mss\nfrom PIL import Image\n\nuser32 = windll.user32\n\ndef find_window(title_contains):\n    \"\"\"Find visible windows matching a title substring.\"\"\"\n    results = []\n    WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.c_void_p, ctypes.c_void_p)\n    def cb(hwnd, _):\n        if user32.IsWindowVisible(hwnd):\n            buf = ctypes.create_unicode_buffer(256)\n            user32.GetWindowTextW(hwnd, buf, 256)\n            if title_contains.lower() in buf.value.lower():\n                results.append((hwnd, buf.value))\n        return True\n    user32.EnumWindows(WNDENUMPROC(cb), 0)\n    return results\n\ndef capture_window(title_contains, output_path):\n    \"\"\"Capture a window by title substring.\"\"\"\n    windows = find_window(title_contains)\n    if not windows:\n        raise ValueError(f\"No window matching '{title_contains}'\")\n    hwnd = windows[0][0]\n\n    class RECT(Structure):\n        _fields_ = [('left', c_int), ('top', c_int), ('right', c_int), ('bottom', c_int)]\n    rect = RECT()\n    user32.GetWindowRect(hwnd, byref(rect))\n    w, h = rect.right - rect.left, rect.bottom - rect.top\n\n    with mss.mss() as sct:\n        shot = sct.grab({'left': rect.left, 'top': rect.top, 'width': w, 'height': h})\n        img = Image.frombytes('RGB', shot.size, shot.rgb)\n        img.save(output_path)\n        return img\n\n# Usage:\ncapture_window('Visual Studio Code', 'vscode-capture.png')\n```\n\n**Prerequisites:** `pip install mss pillow`\n**Limitation:** Window must be visible (not behind other windows or minimized).\n\n### Electron apps (VS Code, etc.)\n\n**Node.js Playwright only** — Python Playwright has no `electron` API. Captures via CDP (Chrome DevTools Protocol), not from the screen — works even while minimized.\n\n```javascript\nconst { _electron: electron } = require('playwright');\nconst app = await electron.launch({\n    executablePath: 'C:\\\\Program Files\\\\Microsoft VS Code\\\\Code.exe',\n    args: ['--new-window', '--disable-extensions', '--user-data-dir=' + tmpDir]\n});\nconst window = await app.firstWindow();\nawait window.waitForLoadState('domcontentloaded');\n\n\u002F\u002F Minimize immediately — captures still work via CDP\nawait app.evaluate(({ BrowserWindow }) => {\n    BrowserWindow.getAllWindows()[0].minimize();\n});\n\nawait window.screenshot({ path: 'capture.png' }); \u002F\u002F works while minimized!\nawait app.close();\n```\n\n**Critical**: `--user-data-dir=\u003Ctemp>` is required or VS Code hands off to the existing instance and the launched process exits immediately.\n\n### Decision tree\n\n| Scenario | Tool | Notes |\n|---|---|---|\n| Web app (localhost) | Playwright | Proven, full DOM access |\n| Electron app (VS Code) | Playwright Electron (Node.js) | Works minimized via CDP |\n| Desktop app, visible window | mss + ctypes (find by title) | ~33ms per capture |\n| Desktop app, behind windows | Windows Graphics Capture API | Complex setup, Win10 1903+ |\n| Quick full-screen | mss | ~68ms |\n\n## Limitations\n\n- Web capture requires a locally running app or accessible URL\n- Desktop capture (mss) requires the window to be visible and unobstructed\n- Electron capture requires Node.js Playwright (not Python)\n- Some SPAs with heavy client-side rendering may need custom wait logic beyond networkidle\n","# UI Screenshots\n\nCapture screenshots of web apps and graphical UIs during development to document visual changes.\n\n## When to Use This Skill\n\nUse this skill when you need to:\n\n- Capture the current state of a running web app\n- Document a UI before and after a code change\n- Screenshot interactive states (tooltips, hovers, selected elements)\n- Capture specific sections of a page without re-screenshotting\n\n## Prerequisites\n\n```bash\npip install playwright Pillow -q\nplaywright install chromium\n```\n\n## Core Workflow\n\n### 1. Take a raw full-page screenshot\n\n```python\nfrom playwright.async_api import async_playwright\n\nasync def capture(url=\"http:\u002F\u002Flocalhost:3000\", out=\"screenshot-raw.png\", width=1400, height=5000):\n    async with async_playwright() as p:\n        browser = await p.chromium.launch()\n        page = await browser.new_page(viewport={\"width\": width, \"height\": height})\n        await page.goto(url, wait_until=\"networkidle\")\n        await page.wait_for_timeout(4000)  # let charts\u002Fanimations render\n        await page.screenshot(path=out, full_page=True)\n        await browser.close()\n```\n\n- Use a **tall viewport** (height=5000) so the page renders everything without scrolling\n- `wait_until=\"networkidle\"` + `wait_for_timeout(4000)` ensures async charts load\n- `full_page=True` captures the entire scrollable content\n\n### 2. View the raw image, then crop with PIL\n\n**Do NOT try to get perfect crops via Playwright's `clip` parameter.** It's unreliable with full-page captures.\n\n```python\nfrom PIL import Image\n\nimg = Image.open(\"screenshot-raw.png\")\ncropped = img.crop((left, top, right, bottom))  # adjust based on what you see\ncropped.save(\"screenshot-final.png\")\n```\n\n1. Take the raw screenshot\n2. View it to see actual pixel positions\n3. Crop with PIL based on what you see\n4. View the result — if not right, re-crop (instant, no re-screenshot needed)\n\n### 3. Iterate on crop, not on capture\n\n- Re-screenshotting is slow (browser launch + page load + render wait)\n- Re-cropping is instant (just PIL)\n- Get one good raw capture, then slice it as many ways as needed\n\n### 4. Interactive states\n\n```python\nelement = page.locator(\"selector\").first\nawait element.hover()\nawait page.wait_for_timeout(1000)  # let tooltip appear\nawait page.screenshot(path=\"screenshot-hover.png\", full_page=True)\n```\n\nFor \"selected\" state without hover effect, move the mouse away after clicking:\n\n```python\nawait element.click()\nawait page.mouse.move(300, 300)  # move away so hover doesn't show\nawait page.wait_for_timeout(500)\nawait page.screenshot(path=\"screenshot-selected.png\", full_page=True)\n```\n\n### 5. Section-specific captures\n\nCrop different sections from a single full-page screenshot:\n\n```python\nimg.crop((0, 200, 920, 900)).save(\"screenshot-header.png\")\nimg.crop((0, 900, 920, 1600)).save(\"screenshot-main.png\")\n```\n\n## Guidelines\n\n1. **Always capture before state BEFORE making any changes** — if you forget, you have to revert code to get a before shot\n2. **Before\u002Fafter pairs must use the same viewport width and crop** — otherwise the comparison is useless\n3. **To get a \"before\" after you already changed code**: use `git checkout HEAD~1 -- \u003Cfiles>` to revert, screenshot, then `git checkout HEAD -- \u003Cfiles>` to restore\n4. **For interactive states**: capture before AND after for each state — don't assume the \"normal\" before covers all cases\n5. **Use `device_scale_factor=1`** in Playwright to force 1x pixels so screenshots match what users see at 100% zoom\n6. **Charts need extra wait time** — Plotly, D3, etc. render asynchronously; 4s minimum after networkidle\n7. **Narrow viewport reveals rendering bugs** — some border\u002Falignment issues only appear at specific widths\n\n## Non-Web App Screenshots\n\nFor desktop apps (VS, WPF, WinForms, console apps, terminals) where Playwright can't reach.\n\n### mss + ctypes (recommended for desktop windows)\n\nFind a window by title via Win32 API, capture its region with `mss`. Tested at ~33ms per capture.\n\n```python\nimport ctypes\nfrom ctypes import c_int, Structure, byref, windll\nimport mss\nfrom PIL import Image\n\nuser32 = windll.user32\n\ndef find_window(title_contains):\n    \"\"\"Find visible windows matching a title substring.\"\"\"\n    results = []\n    WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.c_void_p, ctypes.c_void_p)\n    def cb(hwnd, _):\n        if user32.IsWindowVisible(hwnd):\n            buf = ctypes.create_unicode_buffer(256)\n            user32.GetWindowTextW(hwnd, buf, 256)\n            if title_contains.lower() in buf.value.lower():\n                results.append((hwnd, buf.value))\n        return True\n    user32.EnumWindows(WNDENUMPROC(cb), 0)\n    return results\n\ndef capture_window(title_contains, output_path):\n    \"\"\"Capture a window by title substring.\"\"\"\n    windows = find_window(title_contains)\n    if not windows:\n        raise ValueError(f\"No window matching '{title_contains}'\")\n    hwnd = windows[0][0]\n\n    class RECT(Structure):\n        _fields_ = [('left', c_int), ('top', c_int), ('right', c_int), ('bottom', c_int)]\n    rect = RECT()\n    user32.GetWindowRect(hwnd, byref(rect))\n    w, h = rect.right - rect.left, rect.bottom - rect.top\n\n    with mss.mss() as sct:\n        shot = sct.grab({'left': rect.left, 'top': rect.top, 'width': w, 'height': h})\n        img = Image.frombytes('RGB', shot.size, shot.rgb)\n        img.save(output_path)\n        return img\n\n# Usage:\ncapture_window('Visual Studio Code', 'vscode-capture.png')\n```\n\n**Prerequisites:** `pip install mss pillow`\n**Limitation:** Window must be visible (not behind other windows or minimized).\n\n### Electron apps (VS Code, etc.)\n\n**Node.js Playwright only** — Python Playwright has no `electron` API. Captures via CDP (Chrome DevTools Protocol), not from the screen — works even while minimized.\n\n```javascript\nconst { _electron: electron } = require('playwright');\nconst app = await electron.launch({\n    executablePath: 'C:\\\\Program Files\\\\Microsoft VS Code\\\\Code.exe',\n    args: ['--new-window', '--disable-extensions', '--user-data-dir=' + tmpDir]\n});\nconst window = await app.firstWindow();\nawait window.waitForLoadState('domcontentloaded');\n\n\u002F\u002F Minimize immediately — captures still work via CDP\nawait app.evaluate(({ BrowserWindow }) => {\n    BrowserWindow.getAllWindows()[0].minimize();\n});\n\nawait window.screenshot({ path: 'capture.png' }); \u002F\u002F works while minimized!\nawait app.close();\n```\n\n**Critical**: `--user-data-dir=\u003Ctemp>` is required or VS Code hands off to the existing instance and the launched process exits immediately.\n\n### Decision tree\n\n| Scenario | Tool | Notes |\n|---|---|---|\n| Web app (localhost) | Playwright | Proven, full DOM access |\n| Electron app (VS Code) | Playwright Electron (Node.js) | Works minimized via CDP |\n| Desktop app, visible window | mss + ctypes (find by title) | ~33ms per capture |\n| Desktop app, behind windows | Windows Graphics Capture API | Complex setup, Win10 1903+ |\n| Quick full-screen | mss | ~68ms |\n\n## Limitations\n\n- Web capture requires a locally running app or accessible URL\n- Desktop capture (mss) requires the window to be visible and unobstructed\n- Electron capture requires Node.js Playwright (not Python)\n- Some SPAs with heavy client-side rendering may need custom wait logic beyond networkidle\n",{"name":5,"description":7},"main","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd","skills\u002Fui-screenshots",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":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add github\u002Fawesome-copilot --skill ui-screenshots",{"tool":65,"command":66},"bunx","bunx skills add github\u002Fawesome-copilot --skill ui-screenshots",{"tool":68,"command":69},"pnpm","pnpm dlx skills add github\u002Fawesome-copilot --skill ui-screenshots","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fui-screenshots\u002FSKILL.md",true,[73],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"agents\u002Fopenai.yaml","REFERENCE","参考文档",100,"https:\u002F\u002Fgithub.com\u002Faulaleslie\u002Ftiga-saudara-ERP\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcode-review\u002Fagents\u002Fopenai.yaml",[80,111,139,166,198,215],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":90,"publishedAt":44},"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",[86,89],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],"supabase","rls","supabase rls","supabase rls policies","project","when","review","change","read","write","security","isolation","tables","as","tests","prove","use","users","functions","with",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":118,"publishedAt":44},"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",[117],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138],"distribution","skill distribution audit","audit","SET","deterministic","installer","for","discovery","comparison","helper","manifest","version","collection","drift","output","investigate","duplicate","template","release","reconcile",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":143,"sourceHtmlUrl":144,"categories":145,"keywords":149,"publishedAt":44},"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",[146],{"categoryNo":147,"categoryName":148,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师",[150,151,152,153,154,155,125,95,156,157,158,159,160,161,162,107,40,163,164,165],"custom","code","logicapps custom code net10 migration","migration","projects","standalone","deployment","applications","local","azure","worker","upgrades","package","Legacy","debugging","workflows",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":170,"sourceHtmlUrl":171,"categories":172,"keywords":177,"publishedAt":44},"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",[173,176],{"categoryNo":174,"categoryName":175,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":147,"categoryName":148,"taxonomyType":26,"taxonomyTypeDesc":27},[178,179,180,181,182,183,184,30,185,186,187,188,189,190,191,96,192,39,193,194,195,125,196,197],"winmd api search","search","api","windows","desktop","file access","enumeration","ml","file","networking","capabilities","notifications","explore","access","features","camera","events","platform","methods","controls",{"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":202,"licenseFileUrl":203,"sourceHtmlUrl":204,"categories":205,"keywords":211,"publishedAt":44},"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",[206,207,210],{"categoryNo":174,"categoryName":175,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":208,"categoryName":209,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[212,122,186,213,214],"resemble detect","https","identity",{"skillNo":216,"name":217,"nameZh":6,"description":218,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":202,"licenseFileUrl":219,"sourceHtmlUrl":220,"categories":221,"keywords":226,"publishedAt":44},"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",[222,225],{"categoryNo":223,"categoryName":224,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[227,228,229,230,151,97,9,121,231,232,213,233,234,235,236,237,238,239,240,241,242,243,105,244,245,246,247],"playbook","quality playbook","quality","code review","tdd","run","report","spec","bug report","council","engineering","functional","spec audit","bug","verified","multi-model","three","coverage","model","regression","structural"]