К основному содержанию
скилл GitHub Copilot официальный · GitHub

csharp-async — скилл для GitHub Copilot

Скилл подсказывает правила асинхронного C# и помогает находить ошибки в коде. Пригодится для ревью методов, задач и API.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add github/awesome-copilot --skill csharp-async -a claude-code
Открыть на GitHub

Что делает csharp-async

Скилл проверяет асинхронный C# по конкретным правилам: суффикс Async, корректные Task и Task, осторожное применение ValueTask, запрет async void вне обработчиков событий. Он также обращает внимание на обработку исключений и ConfigureAwait(false) в библиотечном коде.

В рекомендациях есть Task.WhenAll() для параллельных задач, Task.WhenAny() для таймаутов и ожидания первой завершившейся задачи, токены отмены для долгих операций и отказ от лишнего async/await. Скилл ищет .Wait(), .Result, .GetAwaiter().GetResult(), смешивание блокирующего и асинхронного кода, а также незапрошенные Task.

Он подходит для ревью C# кода и проектирования публичных API по TAP, асинхронных потоков IAsyncEnumerable и долгих операций. Ставьте его, если Copilot должен проверять async-код по единым правилам; для проектов не на C# он не нужен.

Какие задачи решает

  • проверить суффиксы Async у методов
  • найти блокирующие вызовы .Wait() и .Result
  • подобрать Task.WhenAll() для нескольких задач
  • обнаружить потерянные исключения в async-коде
  • разобрать применение IAsyncEnumerable

Примеры запросов агенту

  • Проверь этот C# код на нарушения правил csharp-async и предложи исправления.
  • Найди в проекте вызовы `.Wait()`, `.Result` и `async void`, которые нужно заменить.
  • Покажи, где здесь уместны `Task.WhenAll()` и токен отмены.

Как установить csharp-async

1Через Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill csharp-async -a claude-code

2Вручную: положить файлы

~/.claude/skills/csharp-async/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/csharp-async/

Похожие

migrate-to-shoehorn Matt Pocock Переводит type assertions с as в тестах на функции из @total-typescript/shoehorn. Нужен для частичных объектов и намеренно неверных данных в проверках. Claude Code 475 388установок typescript-advanced-types Seth Hobson Помогает агенту писать сложную типизацию TypeScript: generics, conditional types и преобразования типов. Нужен для библиотек, API-клиентов и строгих конфигураций. Claude Code CX Codex Cursor 92 169установок dotnet-best-practices официальный github Проверяет выделенный .NET/C# код по правилам проекта: от структуры и DI до тестов, логирования и безопасности. Нужен при ревью или доработке решения. GitHub Copilot 15 752установок nuget-manager официальный github Управляет NuGet-пакетами в .NET-проектах через dotnet CLI. Нужен при добавлении, удалении и обновлении зависимостей. GitHub Copilot 14 360установок typescript-mcp-server-generator официальный github Генерирует TypeScript-проект MCP-сервера с инструментами, ресурсами и конфигурацией. Пригодится, когда нужно быстро заложить сервер на MCP TypeScript SDK v2. GitHub Copilot 12 050установок java-junit официальный github Пишет, проверяет и исправляет Java-тесты на JUnit, AssertJ и Mockito. Нужен при добавлении, рефакторинге или разборе падений тестов в Maven и Gradle. GitHub Copilot 11 632установок

Вопросы о csharp-async

Как установить csharp-async в GitHub Copilot?

Выполните npx skills add github/awesome-copilot --skill csharp-async, gh skill install github/awesome-copilot csharp-async или разместите скилл в .github/skills/csharp-async/SKILL.md.

Что делает csharp-async?

Скилл помогает Copilot ревьюить асинхронный C# код: проверяет типы возврата, обработку исключений, ожидание задач и распространённые блокирующие вызовы.

Какие правила производительности проверяет csharp-async?

Он обращает внимание на Task.WhenAll(), Task.WhenAny(), лишний async/await, ValueTask и токены отмены для долгих операций.

Исходный текст

SKILL.md · MIT
---
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.

© github · MIT · github/awesome-copilot

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой