What problem does it solve? Writing correct asynchronous C# code is error-prone: async void methods, sync-over-async deadlocks, missing cancellation tokens, and wrong return types cause subtle bugs that are hard to catch in review. This Skill encodes established async/await best practices so code can be written and reviewed consistently. ## Core Features & Use Cases - Naming and Return Type Guidance: Enforces the Async suffix convention and correct choices among Task, Task<T>, ValueTask<T>, and void. - Deadlock and Pitfall Detection: Flags blocking calls like .Result, .Wait(), and .GetAwaiter().GetResult(), plus async void usage outside event handlers. - Performance Patterns: Recommends Task.WhenAll, Task.WhenAny, cancellation tokens, ConfigureAwait(false), and IAsyncEnumerable<T> async streams. - Use Case: When reviewing a pull request containing a data access layer, use this Skill to identify sync-over-async calls and missing cancellation token parameters, then suggest refactored implementations. ## Quick Start Review my C# service class for async/await issues and suggest improvements following best practices.