
A solid code reviewer for async C# that catches the stuff that actually matters. It'll flag when you're mixing .Wait() with async code, remind you about ConfigureAwait(false) in library scenarios, and push you toward Task.WhenAll() instead of sequential awaits. The skill knows the difference between when to use ValueTask versus Task, and it won't let you get away with async void methods outside event handlers. Good for both fixing existing async code that's causing deadlocks and writing new async methods that follow TAP patterns correctly.
$ npx -y skills add github/awesome-copilot --skill csharp-async --agent claude-codeInstalls into .claude/skills of the current project.
Your goal is to help me follow best practices for asynchronous programming in C#.
GetDataAsync() for GetData())Task<T> when the method returns a valueTask when the method doesn't return a valueValueTask<T> for high-performance scenarios to reduce allocationsvoid for async methods except for event handlersConfigureAwait(false) when appropriate to prevent deadlocks in library codeTask.FromException() instead of throwing in async Task returning methodsTask.WhenAll() for parallel execution of multiple tasksTask.WhenAny() for implementing timeouts or taking the first completed task.Wait(), .Result, or .GetAwaiter().GetResult() in async codeWhen reviewing my C# code, identify these issues and suggest improvements that follow these best practices.
Sponsors