[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ADE5H4WCA5Z84PEWPRG35W":3,"skill-same:01M6ADE5H4WCA5Z84PEWPRG35W":62},{"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":23,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":46,"updatedAt":47,"install":48,"resources":61},"01M6ADE5H4WCA5Z84PEWPRG35W","csharp-async",null,"Get best practices for C# async programming","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\u002Fcsharp-async\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32],"csharp","csharp async","async","best practices","programming","get","async programming","C#","for","2026-11-10 10:12:30",false,"---\nname: csharp-async\ndescription: 'Get best practices for C# async programming'\n---\n\n# C# Async Programming Best Practices\n\nYour goal is to help me follow best practices for asynchronous programming in C#.\n\n## Naming Conventions\n\n- Use the 'Async' suffix for all async methods\n- Match method names with their synchronous counterparts when applicable (e.g., `GetDataAsync()` for `GetData()`)\n\n## Return Types\n\n- Return `Task\u003CT>` when the method returns a value\n- Return `Task` when the method doesn't return a value\n- Consider `ValueTask\u003CT>` for high-performance scenarios to reduce allocations\n- Avoid returning `void` for async methods except for event handlers\n\n## Exception Handling\n\n- Use try\u002Fcatch blocks around await expressions\n- Avoid swallowing exceptions in async methods\n- Use `ConfigureAwait(false)` when appropriate to prevent deadlocks in library code\n- Propagate exceptions with `Task.FromException()` instead of throwing in async Task returning methods\n\n## Performance\n\n- Use `Task.WhenAll()` for parallel execution of multiple tasks\n- Use `Task.WhenAny()` for implementing timeouts or taking the first completed task\n- Avoid unnecessary async\u002Fawait when simply passing through task results\n- Consider cancellation tokens for long-running operations\n\n## Common Pitfalls\n\n- Never use `.Wait()`, `.Result`, or `.GetAwaiter().GetResult()` in async code\n- Avoid mixing blocking and async code\n- Don't create async void methods (except for event handlers)\n- Always await Task-returning methods\n\n## Implementation Patterns\n\n- Implement the async command pattern for long-running operations\n- Use async streams (IAsyncEnumerable\u003CT>) for processing sequences asynchronously\n- Consider the task-based asynchronous pattern (TAP) for public APIs\n\nWhen reviewing my C# code, identify these issues and suggest improvements that follow these best practices.\n","# C# Async Programming Best Practices\n\nYour goal is to help me follow best practices for asynchronous programming in C#.\n\n## Naming Conventions\n\n- Use the 'Async' suffix for all async methods\n- Match method names with their synchronous counterparts when applicable (e.g., `GetDataAsync()` for `GetData()`)\n\n## Return Types\n\n- Return `Task\u003CT>` when the method returns a value\n- Return `Task` when the method doesn't return a value\n- Consider `ValueTask\u003CT>` for high-performance scenarios to reduce allocations\n- Avoid returning `void` for async methods except for event handlers\n\n## Exception Handling\n\n- Use try\u002Fcatch blocks around await expressions\n- Avoid swallowing exceptions in async methods\n- Use `ConfigureAwait(false)` when appropriate to prevent deadlocks in library code\n- Propagate exceptions with `Task.FromException()` instead of throwing in async Task returning methods\n\n## Performance\n\n- Use `Task.WhenAll()` for parallel execution of multiple tasks\n- Use `Task.WhenAny()` for implementing timeouts or taking the first completed task\n- Avoid unnecessary async\u002Fawait when simply passing through task results\n- Consider cancellation tokens for long-running operations\n\n## Common Pitfalls\n\n- Never use `.Wait()`, `.Result`, or `.GetAwaiter().GetResult()` in async code\n- Avoid mixing blocking and async code\n- Don't create async void methods (except for event handlers)\n- Always await Task-returning methods\n\n## Implementation Patterns\n\n- Implement the async command pattern for long-running operations\n- Use async streams (IAsyncEnumerable\u003CT>) for processing sequences asynchronously\n- Consider the task-based asynchronous pattern (TAP) for public APIs\n\nWhen reviewing my C# code, identify these issues and suggest improvements that follow these best practices.\n",{"name":5,"description":7},"main","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd","skills\u002Fcsharp-async",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":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add github\u002Fawesome-copilot --skill csharp-async",{"tool":54,"command":55},"bunx","bunx skills add github\u002Fawesome-copilot --skill csharp-async",{"tool":57,"command":58},"pnpm","pnpm dlx skills add github\u002Fawesome-copilot --skill csharp-async","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fcsharp-async\u002FSKILL.md",true,[],[63,98,125,151,185,202],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":77,"publishedAt":33},"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",[69,74],{"categoryNo":70,"categoryName":71,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":75,"categoryName":76,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000023","Skill与智能体开发",[78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],"supabase","rls","supabase rls","supabase rls policies","project","when","review","change","read","write","security","isolation","tables","as","tests","prove","use","users","functions","with",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":105,"publishedAt":33},"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",[104],{"categoryNo":75,"categoryName":76,"taxonomyType":72,"taxonomyTypeDesc":73},[106,107,108,109,110,111,32,112,113,114,115,116,117,118,119,120,121,122,123,124],"distribution","skill distribution audit","audit","SET","deterministic","installer","discovery","comparison","helper","manifest","version","collection","drift","output","investigate","duplicate","template","release","reconcile",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":129,"sourceHtmlUrl":130,"categories":131,"keywords":133,"publishedAt":33},"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",[132],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[134,135,136,137,138,139,32,82,140,141,142,143,144,145,146,94,147,148,149,150],"custom","code","logicapps custom code net10 migration","migration","projects","standalone","deployment","applications","local","azure","worker","upgrades","package","apps","Legacy","debugging","workflows",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":155,"sourceHtmlUrl":156,"categories":157,"keywords":162,"publishedAt":33},"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",[158,161],{"categoryNo":159,"categoryName":160,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,83,178,179,180,181,182,32,183,184],"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":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":189,"licenseFileUrl":190,"sourceHtmlUrl":191,"categories":192,"keywords":198,"publishedAt":33},"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",[193,194,197],{"categoryNo":159,"categoryName":160,"taxonomyType":72,"taxonomyTypeDesc":73},{"categoryNo":195,"categoryName":196,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":75,"categoryName":76,"taxonomyType":72,"taxonomyTypeDesc":73},[199,109,172,200,201],"resemble detect","https","identity",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":189,"licenseFileUrl":206,"sourceHtmlUrl":207,"categories":208,"keywords":213,"publishedAt":33},"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",[209,212],{"categoryNo":210,"categoryName":211,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":75,"categoryName":76,"taxonomyType":72,"taxonomyTypeDesc":73},[214,215,216,217,135,84,9,108,218,219,200,220,221,222,223,224,225,226,227,228,229,230,92,231,232,233,234],"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"]