[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AE6RW9327SWDTYCH9C8S7C":3,"skill-same:01M6AE6RW9327SWDTYCH9C8S7C":74},{"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":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6AE6RW9327SWDTYCH9C8S7C","screen-recording",null,"Create annotated animated GIF demos and screen recordings for pull requests and documentation. Covers frame capture, timing, imageio-based GIF creation, and per-frame annotation workflows.","github\u002Fawesome-copilot","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6AD3PBDYPK7NVFJNJ66Y8RS",41028,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fscreen-recording\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","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],"screen recording","recording","screen","frame","workflows","for","requests","gif","timing","demos","annotation","creation","recordings","capture","pull","create","documentation","pull requests","2026-11-10 10:12:30",false,"---\nname: screen-recording\ndescription: 'Create annotated animated GIF demos and screen recordings for pull requests and documentation. Covers frame capture, timing, imageio-based GIF creation, and per-frame annotation workflows.'\n---\n\n# Screen Recording\n\nCreate animated GIF demos that show a feature or workflow in action — with annotations, variable timing, and proper pacing. Useful for PR descriptions, documentation, and release notes.\n\n## When to Use This Skill\n\nUse this skill when you need to:\n\n- Record a multi-step UI interaction as an animated GIF\n- Create a demo showing before\u002Fafter behavior\n- Build annotated walkthroughs for documentation or release notes\n- Show a bug reproduction or fix in action\n\n## Prerequisites\n\n```bash\npip install playwright Pillow imageio numpy scipy mss -q\nplaywright install chromium\n```\n\n## Core Workflow\n\n### 1. Capture frames\n\nUse Playwright to step through the interaction and capture each frame:\n\n```python\nfrom playwright.async_api import async_playwright\n\nasync def record_frames(url, steps, width=1400, height=900):\n    \"\"\"\n    steps: list of dicts with 'action' (async callable taking page)\n           and 'name' (frame filename)\n    \"\"\"\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\n        for step in steps:\n            if step.get(\"action\"):\n                await step[\"action\"](page)\n                await page.wait_for_timeout(step.get(\"wait\", 500))\n            await page.screenshot(path=step[\"name\"])\n\n        await browser.close()\n```\n\n### 2. Assemble GIF with imageio\n\n**Use imageio, not PIL, for GIF writing** — PIL's GIF encoder merges visually similar frames, which kills animations.\n\n```python\nimport imageio.v3 as iio\nfrom PIL import Image\nimport numpy as np\n\nframes = []\ndurations = []\n\nfor frame_path, duration_ms in frame_list:\n    img = Image.open(frame_path)\n    frames.append(np.array(img))\n    durations.append(duration_ms)\n\niio.imwrite(\"demo.gif\", frames, duration=durations, loop=0)\n```\n\n### 3. Variable frame timing\n\nUniform timing makes everything feel either too fast or too slow. Use variable durations:\n\n| Phase | Duration | Why |\n|-------|----------|-----|\n| Fast action (typing, clicking) | 100ms | Feels natural, keeps energy |\n| Pause after action | 600-800ms | Let the viewer process what happened |\n| Hero\u002Ffinal message | 500ms+ | Main takeaway needs time to land |\n\n### 4. Annotate frames\n\nApply annotations to specific frames using the `image-annotations` skill:\n\n```python\nfrom PIL import Image, ImageDraw, ImageFont\n\ndef annotate_frame(frame_path, annotations, out_path):\n    img = Image.open(frame_path)\n    draw = ImageDraw.Draw(img)\n\n    for ann in annotations:\n        # Apply annotation (rect, arrow, label, etc.)\n        pass\n\n    img.save(out_path)\n```\n\n### 5. Fade-in annotations\n\nFor smooth annotation appearance:\n\n```python\ndef apply_fade(base_frame, annotation_layer, alpha):\n    \"\"\"Blend annotation onto frame at given alpha (0.0 to 1.0)\"\"\"\n    blended = Image.blend(\n        base_frame.convert(\"RGBA\"),\n        annotation_layer.convert(\"RGBA\"),\n        alpha\n    )\n    return blended.convert(\"RGB\")\n\n# 2-frame pop-in at 10fps: 50% then 100%\nfaded_frames = [\n    apply_fade(base, annotations, 0.5),  # frame 1: half opacity\n    apply_fade(base, annotations, 1.0),  # frame 2: full opacity\n]\n```\n\nAt 10fps, use 2 fade frames (0.2s total). At 30fps, use 3-4 frames. Easing curves look bad at low FPS — simple pop-in is snappier and more readable.\n\n## Build as a Script\n\nThe annotation logic gets complex for anything beyond trivial demos. Write a dedicated script (e.g., `annotate_gif.py`) with functions instead of inline code. You'll iterate on timing and placement.\n\n## Testing Animations\n\n**Always test in isolation first** — don't rebuild the full demo to test a fade tweak:\n\n```python\n# Small test GIF: 10 bare frames → fade frames → 15 hold frames\n# Add a frame counter overlay for debugging:\ndraw.text((10, height - 30), f\"F{i}\u002F{total} a={alpha:.0%} FADE\",\n          fill=\"white\", font=small_font)\n```\n\n## Desktop Screen Recording (mss)\n\nFor recording desktop apps, terminals, or anything outside a browser. Uses `mss` for fast screen capture.\n\n```python\nimport mss\nfrom PIL import Image\nimport time\n\ndef record_gif(output_path, region=None, duration=5, fps=8):\n    \"\"\"Record screen region to GIF. region = {left, top, width, height} or None for full screen.\"\"\"\n    with mss.mss() as sct:\n        if region is None:\n            region = sct.monitors[1]  # primary monitor\n\n        frames = []\n        t_end = time.time() + duration\n        while time.time() \u003C t_end:\n            t0 = time.time()\n            shot = sct.grab(region)\n            frames.append(Image.frombytes('RGB', shot.size, shot.rgb))\n            time.sleep(max(0, 1 \u002F fps - (time.time() - t0)))\n\n    frames[0].save(output_path, save_all=True, append_images=frames[1:],\n                   duration=int(1000 \u002F fps), loop=0, optimize=True)\n    return len(frames)\n\nrecord_gif('demo.gif', region={'left': 0, 'top': 0, 'width': 800, 'height': 500}, duration=3)\n```\n\nTested: 3s at 8fps → 24 frames, ~31KB. Keep fps ≤ 10 for reasonable file sizes.\n\n**Note:** `PIL.save(save_all=True)` works for simple recordings but merges visually similar frames. For annotated GIFs with fade effects, use `imageio.v3.imwrite` instead.\n\n### Combining with window capture\n\n```python\n# Find window rect, then record it as a GIF\n# Reuse find_window() from the ui-screenshots skill\nimport ctypes\nfrom ctypes import c_int, Structure, byref, windll\n\nclass RECT(Structure):\n    _fields_ = [('left', c_int), ('top', c_int), ('right', c_int), ('bottom', c_int)]\n\nhwnd = find_window('My App')[0][0]\nrect = RECT()\nwindll.user32.GetWindowRect(hwnd, byref(rect))\nregion = {'left': rect.left, 'top': rect.top,\n          'width': rect.right - rect.left, 'height': rect.bottom - rect.top}\nrecord_gif('app-demo.gif', region=region, duration=5, fps=8)\n```\n\n## Diff-Based Cluster Detection\n\nProgrammatically find changed regions between frames to decide what to annotate:\n\n```python\nimport numpy as np\nfrom scipy import ndimage\n\ndef find_changed_clusters(frame_a, frame_b, threshold=30, min_pixels=300, dilate=5):\n    \"\"\"Find bounding boxes of changed regions between two frames.\"\"\"\n    diff = np.abs(frame_b.astype(float) - frame_a.astype(float)).max(axis=2)\n    mask = diff > threshold\n    dilated = ndimage.binary_dilation(mask, iterations=dilate)\n    labeled, n = ndimage.label(dilated)\n    clusters = []\n    for i in range(1, n + 1):\n        ys, xs = np.where(labeled == i)\n        if len(ys) \u003C min_pixels:\n            continue\n        clusters.append((xs.min(), ys.min(), xs.max(), ys.max(), len(ys)))\n    return sorted(clusters, key=lambda c: -c[4])  # largest first\n```\n\n## Format Compatibility\n\n| Format | VS Code Preview | GitHub | Browser |\n|--------|----------------|--------|---------|\n| GIF | ✅ Animates | ✅ | ✅ |\n| WebP | ⚠️ Static only | ✅ | ✅ |\n| MP4 | ❌ Broken | ⚠️ | ✅ |\n\n**GIF is the only universally supported animated format** across VS Code preview, GitHub markdown, and browsers.\n\n## Guidelines\n\n1. **Type → pause → annotate** — during fast action, show NO annotation. Pause first, then annotate\n2. **Hero message gets the biggest font** — 64pt+ for the main takeaway, 38pt for details\n3. **GIF palette does NOT kill gradients** — 20 distinct alpha steps survive 256-color palette\n4. **10fps minimum** for typing\u002Finteraction — lower looks stuttery\n5. **Build iteratively** — get the frame sequence right first, add annotations second, tune timing last\n\n## Limitations\n\n- GIF is limited to 256 colors per frame — fine for UI screenshots, may show banding on photographic content\n- Large GIFs (50+ frames at high resolution) can be several MB — consider cropping to the relevant area\n- No audio support in GIF — use MP4 for narrated demos (but lose VS Code preview support)\n","# Screen Recording\n\nCreate animated GIF demos that show a feature or workflow in action — with annotations, variable timing, and proper pacing. Useful for PR descriptions, documentation, and release notes.\n\n## When to Use This Skill\n\nUse this skill when you need to:\n\n- Record a multi-step UI interaction as an animated GIF\n- Create a demo showing before\u002Fafter behavior\n- Build annotated walkthroughs for documentation or release notes\n- Show a bug reproduction or fix in action\n\n## Prerequisites\n\n```bash\npip install playwright Pillow imageio numpy scipy mss -q\nplaywright install chromium\n```\n\n## Core Workflow\n\n### 1. Capture frames\n\nUse Playwright to step through the interaction and capture each frame:\n\n```python\nfrom playwright.async_api import async_playwright\n\nasync def record_frames(url, steps, width=1400, height=900):\n    \"\"\"\n    steps: list of dicts with 'action' (async callable taking page)\n           and 'name' (frame filename)\n    \"\"\"\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\n        for step in steps:\n            if step.get(\"action\"):\n                await step[\"action\"](page)\n                await page.wait_for_timeout(step.get(\"wait\", 500))\n            await page.screenshot(path=step[\"name\"])\n\n        await browser.close()\n```\n\n### 2. Assemble GIF with imageio\n\n**Use imageio, not PIL, for GIF writing** — PIL's GIF encoder merges visually similar frames, which kills animations.\n\n```python\nimport imageio.v3 as iio\nfrom PIL import Image\nimport numpy as np\n\nframes = []\ndurations = []\n\nfor frame_path, duration_ms in frame_list:\n    img = Image.open(frame_path)\n    frames.append(np.array(img))\n    durations.append(duration_ms)\n\niio.imwrite(\"demo.gif\", frames, duration=durations, loop=0)\n```\n\n### 3. Variable frame timing\n\nUniform timing makes everything feel either too fast or too slow. Use variable durations:\n\n| Phase | Duration | Why |\n|-------|----------|-----|\n| Fast action (typing, clicking) | 100ms | Feels natural, keeps energy |\n| Pause after action | 600-800ms | Let the viewer process what happened |\n| Hero\u002Ffinal message | 500ms+ | Main takeaway needs time to land |\n\n### 4. Annotate frames\n\nApply annotations to specific frames using the `image-annotations` skill:\n\n```python\nfrom PIL import Image, ImageDraw, ImageFont\n\ndef annotate_frame(frame_path, annotations, out_path):\n    img = Image.open(frame_path)\n    draw = ImageDraw.Draw(img)\n\n    for ann in annotations:\n        # Apply annotation (rect, arrow, label, etc.)\n        pass\n\n    img.save(out_path)\n```\n\n### 5. Fade-in annotations\n\nFor smooth annotation appearance:\n\n```python\ndef apply_fade(base_frame, annotation_layer, alpha):\n    \"\"\"Blend annotation onto frame at given alpha (0.0 to 1.0)\"\"\"\n    blended = Image.blend(\n        base_frame.convert(\"RGBA\"),\n        annotation_layer.convert(\"RGBA\"),\n        alpha\n    )\n    return blended.convert(\"RGB\")\n\n# 2-frame pop-in at 10fps: 50% then 100%\nfaded_frames = [\n    apply_fade(base, annotations, 0.5),  # frame 1: half opacity\n    apply_fade(base, annotations, 1.0),  # frame 2: full opacity\n]\n```\n\nAt 10fps, use 2 fade frames (0.2s total). At 30fps, use 3-4 frames. Easing curves look bad at low FPS — simple pop-in is snappier and more readable.\n\n## Build as a Script\n\nThe annotation logic gets complex for anything beyond trivial demos. Write a dedicated script (e.g., `annotate_gif.py`) with functions instead of inline code. You'll iterate on timing and placement.\n\n## Testing Animations\n\n**Always test in isolation first** — don't rebuild the full demo to test a fade tweak:\n\n```python\n# Small test GIF: 10 bare frames → fade frames → 15 hold frames\n# Add a frame counter overlay for debugging:\ndraw.text((10, height - 30), f\"F{i}\u002F{total} a={alpha:.0%} FADE\",\n          fill=\"white\", font=small_font)\n```\n\n## Desktop Screen Recording (mss)\n\nFor recording desktop apps, terminals, or anything outside a browser. Uses `mss` for fast screen capture.\n\n```python\nimport mss\nfrom PIL import Image\nimport time\n\ndef record_gif(output_path, region=None, duration=5, fps=8):\n    \"\"\"Record screen region to GIF. region = {left, top, width, height} or None for full screen.\"\"\"\n    with mss.mss() as sct:\n        if region is None:\n            region = sct.monitors[1]  # primary monitor\n\n        frames = []\n        t_end = time.time() + duration\n        while time.time() \u003C t_end:\n            t0 = time.time()\n            shot = sct.grab(region)\n            frames.append(Image.frombytes('RGB', shot.size, shot.rgb))\n            time.sleep(max(0, 1 \u002F fps - (time.time() - t0)))\n\n    frames[0].save(output_path, save_all=True, append_images=frames[1:],\n                   duration=int(1000 \u002F fps), loop=0, optimize=True)\n    return len(frames)\n\nrecord_gif('demo.gif', region={'left': 0, 'top': 0, 'width': 800, 'height': 500}, duration=3)\n```\n\nTested: 3s at 8fps → 24 frames, ~31KB. Keep fps ≤ 10 for reasonable file sizes.\n\n**Note:** `PIL.save(save_all=True)` works for simple recordings but merges visually similar frames. For annotated GIFs with fade effects, use `imageio.v3.imwrite` instead.\n\n### Combining with window capture\n\n```python\n# Find window rect, then record it as a GIF\n# Reuse find_window() from the ui-screenshots skill\nimport ctypes\nfrom ctypes import c_int, Structure, byref, windll\n\nclass RECT(Structure):\n    _fields_ = [('left', c_int), ('top', c_int), ('right', c_int), ('bottom', c_int)]\n\nhwnd = find_window('My App')[0][0]\nrect = RECT()\nwindll.user32.GetWindowRect(hwnd, byref(rect))\nregion = {'left': rect.left, 'top': rect.top,\n          'width': rect.right - rect.left, 'height': rect.bottom - rect.top}\nrecord_gif('app-demo.gif', region=region, duration=5, fps=8)\n```\n\n## Diff-Based Cluster Detection\n\nProgrammatically find changed regions between frames to decide what to annotate:\n\n```python\nimport numpy as np\nfrom scipy import ndimage\n\ndef find_changed_clusters(frame_a, frame_b, threshold=30, min_pixels=300, dilate=5):\n    \"\"\"Find bounding boxes of changed regions between two frames.\"\"\"\n    diff = np.abs(frame_b.astype(float) - frame_a.astype(float)).max(axis=2)\n    mask = diff > threshold\n    dilated = ndimage.binary_dilation(mask, iterations=dilate)\n    labeled, n = ndimage.label(dilated)\n    clusters = []\n    for i in range(1, n + 1):\n        ys, xs = np.where(labeled == i)\n        if len(ys) \u003C min_pixels:\n            continue\n        clusters.append((xs.min(), ys.min(), xs.max(), ys.max(), len(ys)))\n    return sorted(clusters, key=lambda c: -c[4])  # largest first\n```\n\n## Format Compatibility\n\n| Format | VS Code Preview | GitHub | Browser |\n|--------|----------------|--------|---------|\n| GIF | ✅ Animates | ✅ | ✅ |\n| WebP | ⚠️ Static only | ✅ | ✅ |\n| MP4 | ❌ Broken | ⚠️ | ✅ |\n\n**GIF is the only universally supported animated format** across VS Code preview, GitHub markdown, and browsers.\n\n## Guidelines\n\n1. **Type → pause → annotate** — during fast action, show NO annotation. Pause first, then annotate\n2. **Hero message gets the biggest font** — 64pt+ for the main takeaway, 38pt for details\n3. **GIF palette does NOT kill gradients** — 20 distinct alpha steps survive 256-color palette\n4. **10fps minimum** for typing\u002Finteraction — lower looks stuttery\n5. **Build iteratively** — get the frame sequence right first, add annotations second, tune timing last\n\n## Limitations\n\n- GIF is limited to 256 colors per frame — fine for UI screenshots, may show banding on photographic content\n- Large GIFs (50+ frames at high resolution) can be several MB — consider cropping to the relevant area\n- No audio support in GIF — use MP4 for narrated demos (but lose VS Code preview support)\n",{"name":5,"description":7},"main","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd","skills\u002Fscreen-recording",5335,"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 11:59:04",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add github\u002Fawesome-copilot --skill screen-recording",{"tool":66,"command":67},"bunx","bunx skills add github\u002Fawesome-copilot --skill screen-recording",{"tool":69,"command":70},"pnpm","pnpm dlx skills add github\u002Fawesome-copilot --skill screen-recording","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fscreen-recording\u002FSKILL.md",true,[],[75,106,133,162,196,211],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":85,"publishedAt":45},"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",[81,84],{"categoryNo":82,"categoryName":83,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105],"supabase","rls","supabase rls","supabase rls policies","project","when","review","change","read","write","security","isolation","tables","as","tests","prove","use","users","functions","with",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":113,"publishedAt":45},"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",[112],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[114,115,116,117,118,119,32,120,121,122,123,124,125,126,127,128,129,130,131,132],"distribution","skill distribution audit","audit","SET","deterministic","installer","discovery","comparison","helper","manifest","version","collection","drift","output","investigate","duplicate","template","release","reconcile",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":137,"sourceHtmlUrl":138,"categories":139,"keywords":145,"publishedAt":45},"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",[140],{"categoryNo":141,"categoryName":142,"taxonomyType":143,"taxonomyTypeDesc":144},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[146,147,148,149,150,151,32,90,152,153,154,155,156,157,158,102,159,160,161,31],"custom","code","logicapps custom code net10 migration","migration","projects","standalone","deployment","applications","local","azure","worker","upgrades","package","apps","Legacy","debugging",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":166,"sourceHtmlUrl":167,"categories":168,"keywords":173,"publishedAt":45},"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",[169,172],{"categoryNo":170,"categoryName":171,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":141,"categoryName":142,"taxonomyType":143,"taxonomyTypeDesc":144},[174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,91,189,190,191,192,193,32,194,195],"winmd api search","search","api","windows","desktop","file access","enumeration","ui","ml","file","networking","capabilities","notifications","explore","access","features","full","camera","events","platform","methods","controls",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":200,"licenseFileUrl":201,"sourceHtmlUrl":202,"categories":203,"keywords":207,"publishedAt":45},"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",[204,205,206],{"categoryNo":170,"categoryName":171,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[208,117,183,209,210],"resemble detect","https","identity",{"skillNo":212,"name":213,"nameZh":6,"description":214,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":200,"licenseFileUrl":215,"sourceHtmlUrl":216,"categories":217,"keywords":222,"publishedAt":45},"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",[218,221],{"categoryNo":219,"categoryName":220,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[223,224,225,226,147,92,9,116,227,228,209,229,230,231,232,233,234,235,236,237,238,239,100,240,241,242,243],"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"]