review-async

Detect async/await anti-patterns in C# files and report suggested fixes.

Updated Apr 27, 2026
One-click install
npx skills add https://github.com/IntelliTect/IntelliPlugins --skill review-async
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: review-async
Source: https://github.com/IntelliTect/IntelliPlugins/tree/main/plugins/csharp-best-practices/skills/review-async
Command: npx skills add https://github.com/IntelliTect/IntelliPlugins --skill review-async

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Async/await misuse in C# code can cause deadlocks, fire-and-forget risks, and hard-to-maintain libraries; this skill helps identify and fix these issues during reviews.

Core Features & Use Cases

  • Detect blocking on async (deadlock risk) and suggest correct awaits
  • Flag async void usage and provide safe alternatives
  • Enforce ConfigureAwait usage in library code
  • Propagate CancellationToken through asynchronous calls
  • Identify unnecessary async wrappers and fire-and-forget tasks
  • Provide migration guidance for converting sync paths to async
  • Real-world example: review a file with multiple async calls to improve reliability

Quick Start

Review the selected C# file for common async/await anti-patterns and generate concrete fixes.

Frequently Asked Questions about review-async

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find async deadlock risks in C# code reviews?

To find async deadlock risks in C# code, review the file for blocking calls on async operations. This skill detects blocking patterns like Task.Wait or .Result and suggests replacing them with proper awaits to prevent deadlocks and improve safety.

Why is async void bad in C# and how do I fix it?

Async void is bad in C# because it prevents the caller from awaiting the operation and can crash the process on unhandled exceptions. This skill flags async void usage during code review and provides safe alternatives like async Task.

Do I need ConfigureAwait(false) in my C# library code?

Yes, you need ConfigureAwait(false) in C# library code to avoid capturing the synchronization context and prevent deadlocks in UI applications. This skill enforces ConfigureAwait usage during library code reviews to ensure proper async patterns.

How do I propagate CancellationToken through async methods?

To propagate CancellationToken through async methods, pass the token to all downstream asynchronous calls. This skill reviews C# files to ensure cancellation tokens are properly threaded through async operations to enable safe task cancellation.

What is the best way to migrate synchronous C# methods to async?

The best way to migrate synchronous C# methods to async is to review for blocking calls, apply async-await, and ensure proper ConfigureAwait handling. This skill provides migration guidance by identifying unnecessary async wrappers and fire-and-forget tasks.