GitHub Copilot: Від “чат-бота” до Platform Engineering. Розбираємо Github Agent Skills для .NET
Використовувати Copilot просто як «розумний IntelliSense» — це забивати цвяхи мікроскопом. Для мене, як для техлідера, головний біль — це онбордінг, підтримка стандартів коду і зменшення Cycle Time. Оновлення з Agent Skills нарешті дає інструмент, щоб автоматизувати ці процеси, а не просто генерувати код.
Суть проста: ми переходимо від пасивного чату до агентів, які мають доступ до нашого контексту, інструментів і специфіки проєкту.
Навіщо це нам?
Замість того, щоб щоразу писати в промпті «використовуй Clean Architecture, не забудь про xUnit і перевір неймінг», ми пакуємо ці вимоги в Skill. Це працює як «контейнеризація» знань.
Для .NET екосистеми тут є два вектори:
1. Client-side Skills: «милиця» для джунів
Це навички, що живуть локально в .github/skills. Вони мають доступ до IDE.
Кейс: У нас є легасі (наприклад, старі контролери), і ми пишемо нові на .NET 8 + Next.js. Ви створюєте скіл generate-feature, який:
- Парсить структуру папок.
- Створює файл за нашим шаблоном.
- Одразу генерує unit-тест на xUnit.
Для менеджера це означає менше часу на Code Review, бо структура вже правильна.
Приклад 1: Client-side Skill (Локальний «Архітектор»)
Задача: Заборонити джунам писати бізнес-логіку в контролерах. Ми використовуємо Vertical Slice Architecture та MediatR. Рішення: Створюємо skill, який генерує бойлерплейт суворо за нашими стандартами.
File: .github/skills/scaffold-feature/SKILL.md
---
name: scaffold-vertical-slice
description: Generates a complete vertical slice feature for .NET 8 API using MediatR and FluentValidation.
version: 1.0.0
---
# Role
You are a Senior .NET Architect specialized in Vertical Slice Architecture.
# Task
When I ask to "scaffold feature [FeatureName]", you must generate the following files in a single folder named `[FeatureName]`:
1. **Command/Query Record**: Use C# primary constructors.
2. **Handler**: Must implement `IRequestHandler<TRequest, TResponse>`. Inject `AppDbContext` via constructor.
3. **Validator**: Must inherit from `AbstractValidator<TRequest>`.
4. **Endpoint**: Use `MapPost` or `MapGet` (Minimal API style) inside a class implementing `ICarterModule`.
# Constraints
- Do NOT add business logic, just TODO comments.
- Always use `CancellationToken`.
- Use `sealed class` by default.
- Follow the namespace convention: `MyApp.Features.[FeatureName]`.
# Example Output Style
```csharp
public sealed record CreateOrderCommand(Guid ProductId, int Quantity) : IRequest<Guid>;
internal sealed class CreateOrderHandler(AppDbContext db) : IRequestHandler<CreateOrderCommand, Guid>
{
public async Task<Guid> Handle(CreateOrderCommand request, CancellationToken ct)
{
// TODO: Implement logic
return Guid.NewGuid();
}
} 2. Server-side Skills (MCP): Справжній Platform Engineering
Використовуючи Model Context Protocol (MCP), ми можемо підняти свій сервіс (наприклад, на Azure Container Apps), до якого Copilot звертатиметься як до інструменту.
Архітектура для .NET:
- Backend: ASP.NET Core Web API, що імплементує MCP.
- Hosting: Azure Container Apps (дешево, серваки не простоюють).
- Security: Managed Identity. Ніяких хардкод паролів.
Реальний сценарій «Ops Agent»: Я не хочу лізти в портал Azure або Datadog, щоб дізнатися, чому впав прод. Я хочу спитати в чаті IDE: «Що з метриками останнього деплою?».
Агент іде в наш MCP-сервіс, той смикає API Datadog або Azure Resource Graph і віддає суху вижимку.
Реалізація (The «How-To»)
Створити MCP-сервер на C# простіше, ніж здається. Це звичайний Web API, який ми «згодовуємо» Копайлоту.
// Приклад «тулзи» для агента на .NET
[McpTool("check-pod-status«, Description = «Перевіряє статус подів у AKS або Container Apps»)]public async Task<string> GetPodStatus(string serviceName)
{// Тут ми використовуємо Azure SDK, авторизований через Managed Identity
var client = new ContainerAppsClient(new DefaultAzureCredential());
// ... логіка вибірки ...
return «Service ’Billing’ is degrading. 2/3 replicas ready.»;
}
Висновок
Agent Skills — це крок до того, щоб перетворити IDE на Internal Developer Platform (IDP).
- Почніть з локальних скілів, щоб стандартизувати код (особливо якщо у вас джуни).
- Дивіться в бік MCP на Azure для автоматизації Ops-задач.
Не треба чекати, поки це стане мейнстрімом. Це інструмент для підвищення продуктивності команди вже зараз.

2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів