From Napkin
Reviews C# async code for best practices in naming, return types, exception handling, performance, and common pitfalls. Helps avoid sync-over-async issues and deadlocks.
How this skill is triggered — by the user, by Claude, or both
Slash command
/napkin:csharp-asyncThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Your goal is to help me follow best practices for asynchronous programming in C#.
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.
npx claudepluginhub ani1797/forge --plugin copilot-sdk2plugins reuse this skill
First indexed Jun 6, 2026
Writing async/await code. Task patterns, ConfigureAwait, cancellation, and common agent pitfalls.
Guides C# async/await patterns including Task, ValueTask, async streams, and cancellation for responsive applications. Use when writing asynchronous C# code.
Provides .NET async patterns using Task, ValueTask, ConfigureAwait, IAsyncEnumerable for non-blocking I/O, streams, cancellation, concurrency control, and anti-patterns.