Skip to content
AI & Agents
Skill

/csharp-async

Get best practices for C# async programming

From plugin
awesome-copilot
41k200 skills200 agents

Claude Code

$ npx -y skills add github/awesome-copilot --skill csharp-async --agent claude-code

SKILL.md

csharp-async.SKILL.md
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
  • 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.

Read more
@github
Ships withawesome-copilot

A community-created collection of custom agents, instructions, skills, hooks, workflows, and plugins to supercharge your GitHub Copilot experience.

41k200 skills200 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
40.7k
Star history of github/awesome-copilot on GitHub, a chart by star-history.com

Other skills on awesome-copilot.

acreadiness-assess

acreadiness-assess

Run the AgentRC readiness assessment on the current repository and produce a static HTML dashboard at reports/index.html. Wraps…

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

openclaw2w393k
@openclaw@openclawInstall Skill

Questions about csharp-async.

Which coding agents can use csharp-async?
csharp-async installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.