GitHub Copilot: Від “чат-бота” до Platform Engineering. Розбираємо Github Agent Skills для .NET

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Використовувати Copilot просто як «розумний IntelliSense» — це забивати цвяхи мікроскопом. Для мене, як для техлідера, головний біль — це онбордінг, підтримка стандартів коду і зменшення Cycle Time. Оновлення з Agent Skills нарешті дає інструмент, щоб автоматизувати ці процеси, а не просто генерувати код.

Суть проста: ми переходимо від пасивного чату до агентів, які мають доступ до нашого контексту, інструментів і специфіки проєкту.

Навіщо це нам?

Замість того, щоб щоразу писати в промпті «використовуй Clean Architecture, не забудь про xUnit і перевір неймінг», ми пакуємо ці вимоги в Skill. Це працює як «контейнеризація» знань.

Для .NET екосистеми тут є два вектори:

1. Client-side Skills: «милиця» для джунів

Це навички, що живуть локально в .github/skills. Вони мають доступ до IDE.

Кейс: У нас є легасі (наприклад, старі контролери), і ми пишемо нові на .NET 8 + Next.js. Ви створюєте скіл generate-feature, який:

  1. Парсить структуру папок.
  2. Створює файл за нашим шаблоном.
  3. Одразу генерує 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:

  1. Backend: ASP.NET Core Web API, що імплементує MCP.
  2. Hosting: Azure Container Apps (дешево, серваки не простоюють).
  3. 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).

  1. Почніть з локальних скілів, щоб стандартизувати код (особливо якщо у вас джуни).
  2. Дивіться в бік MCP на Azure для автоматизації Ops-задач.

Не треба чекати, поки це стане мейнстрімом. Це інструмент для підвищення продуктивності команди вже зараз.

👍ПодобаєтьсяСподобалось4
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі