
Csharp Async
- 9.8k installs
- 37.1k repo stars
- Updated July 28, 2026
- github/awesome-copilot
csharp-async is an agent skill that Get best practices for C# async programming.
About
Get best practices for C async programming name csharp-async description Get best practices for C async programming C Async Programming Best Practices Your goal is to help me follow best practices for asynchronous programming in C Naming Conventions Use the Async suffix for all async methods Match method names with their synchronous counterparts when applicable e g GetDataAsync for GetData Return Types Return Task T when the method returns a value Return Task when the method doesn't return a value Consider ValueTask T for high-performance scenarios to reduce allocations Avoid returning void for async methods except for event handlers Exception Handling Use try catch blocks around await expressions Avoid swallowing exceptions in async methods Use ConfigureAwait false when appropriate to prevent deadlocks in library code Propagate exceptions with Task FromException instead of throwing in async Task returning methods Performance Use Task WhenAll for parallel execution of multiple tasks Use Task WhenAny for implementing timeouts or taking the first completed task Avoid unnecessary async await when simply passing through task results
- C# Async Programming Best Practices
- Use the 'Async' suffix for all async methods
- Match method names with their synchronous counterparts when applicable (e.g., `GetDataAsync()` for `GetData()`)
- Return `Task<T>` when the method returns a value
- Return `Task` when the method doesn't return a value
Csharp Async by the numbers
- 9,842 all-time installs (skills.sh)
- +95 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #84 of 4,386 Backend & APIs skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
csharp-async capabilities & compatibility
- Capabilities
- c# async programming best practices · use the 'async' suffix for all async methods · match method names with their synchronous counte · return `task<t>` when the method returns a value · return `task` when the method doesn't return a v
- Use cases
- documentation
What csharp-async says it does
--- name: csharp-async description: 'Get best practices for C# async programming' --- # C# Async Programming Best Practices Your goal is to help me follow bes
npx skills add https://github.com/github/awesome-copilot --skill csharp-asyncAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 9.8k |
|---|---|
| repo stars | ★ 37.1k |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 28, 2026 |
| Repository | github/awesome-copilot ↗ |
What problem does csharp-async solve for developers using this skill?
Get best practices for C# async programming
Who is it for?
Developers who need csharp-async patterns described in the cached skill documentation.
Skip if: Skip when docs are empty or the task is outside the skill's documented scope.
When should I use this skill?
Get best practices for C# async programming
What you get
Actionable workflows and conventions from SKILL.md for csharp-async.
- Reviewed async C# method patterns
- Corrected Task and ValueTask signatures
Files
C# Async Programming Best Practices
Your goal is to help me follow best practices for asynchronous programming in C#.
Naming Conventions
- Use the 'Async' suffix for all async methods
- Match method names with their synchronous counterparts when applicable (e.g.,
GetDataAsync()forGetData())
Return Types
- Return
Task<T>when the method returns a value - Return
Taskwhen the method doesn't return a value - Consider
ValueTask<T>for high-performance scenarios to reduce allocations - Avoid returning
voidfor async methods except for event handlers
Exception Handling
- Use try/catch blocks around await expressions
- Avoid swallowing exceptions in async methods
- Use
ConfigureAwait(false)when appropriate to prevent deadlocks in library code - Propagate exceptions with
Task.FromException()instead of throwing in async Task returning methods
Performance
- Use
Task.WhenAll()for parallel execution of multiple tasks - Use
Task.WhenAny()for implementing timeouts or taking the first completed task - Avoid unnecessary async/await when simply passing through task results
- Consider cancellation tokens for long-running operations
Common Pitfalls
- Never use
.Wait(),.Result, or.GetAwaiter().GetResult()in async code - Avoid mixing blocking and async code
- Don't create async void methods (except for event handlers)
- Always await Task-returning methods
Implementation Patterns
- Implement the async command pattern for long-running operations
- Use async streams (IAsyncEnumerable<T>) for processing sequences asynchronously
- Consider the task-based asynchronous pattern (TAP) for public APIs
When reviewing my C# code, identify these issues and suggest improvements that follow these best practices.
Related skills
FAQ
What does csharp-async do?
Get best practices for C# async programming
When should I use csharp-async?
Get best practices for C# async programming
Is csharp-async safe to install?
Review the Security Audits panel on this page before installing in production.