Modernisering van GitHub Copilot aanpassen

GitHub Copilot modernisatie is uitbreidbaar. De agent biedt meerdere aanpassingspunten om de upgradepatronen van uw team te coderen, coderingsstandaarden af te dwingen tijdens upgrades en nieuwe upgradewerkstromen te definiëren.

Overzicht van aanpassingspunten

Aanpassingspunt Scope Persistentie effort
Chat-instructies Per sessie of per upgrade Sessie of opslaan naar scenario-instructions.md Minimaal
Scenarioartefacten Per upgradetaak Duur van de upgrade Low
Aangepaste vaardigheden Team of persoonlijk Permanent (ingecheckt in opslagplaats of gebruikersprofiel) Gemiddeld
Aangepaste scenario's Team of persoonlijk Permanent Hoog

Aanbeveling

Begin met chatinstructies en bewerkingen van scenario-artifacten. Schakel over naar aangepaste vaardigheden wanneer u merkt dat u dezelfde instructies bij upgrades herhaalt.

Aanpassen via chat

Pas het gedrag van de agent in realtime aan via een natuurlijk gesprek. De agent past uw instructie onmiddellijk toe of slaat deze op in scenario-instructions.md voor toekomstig naslagwerk.

U zegt: Wat gebeurt er?
"Vanaf nu altijd committen direct na elke taak" Opgeslagen in scenario-instructions.md als uitvoeringsvoorkeur
"Testvalidatie voor deze taak overslaan" Alleen direct toegepast op de huidige taak
"Gebruik de van-onder-naar-boven-strategie voor deze upgrade" Beïnvloedt de planningsfasestrategie
"Raak het Logging-project niet aan" Toegevoegd aan voorkeuren; agent sluit dat project uit
"Altijd naamruimten op bestandsniveau gebruiken" Opgeslagen als standaardvoorkeur voor codering
"Onderbreken na elke taak voor mijn beoordeling" Opgeslagen als een voorkeur voor de uitvoeringsstijl

Aanbeveling

Als u een instructie gedurende de hele upgrade wilt behouden, stelt u deze op als een permanente voorkeur: 'Vanaf nu, altijd...' of 'Voor alle taken in deze upgrade...'. De agent schrijft de instructie naar scenario-instructions.md.

Scenarioartefacten bewerken

Wanneer de agent een upgrade uitvoert, wordt er een werkruimte gemaakt in .github/upgrades/{scenarioId}/. De upgrademap bevat bewerkbare artefacten die het gedrag van de agent rechtstreeks beheren.

scenario-instructions.md

Het scenario-instructions.md bestand is het permanente geheugen van de agent voor de upgrade. De agent laadt dit bestand altijd in context, dus alles wat u hier schrijft, heeft rechtstreeks invloed op elke beslissing die de agent neemt.

Voeg secties zoals deze toe om de agent te begeleiden:

## User Preferences

### Technical Preferences
- Always prefer explicit type declarations over `var`
- Use `ILogger<T>` instead of `ILoggerFactory` for dependency injection
- Target .NET 10 for all projects
- Keep Newtonsoft.Json in the shared library (don't migrate to System.Text.Json)

### Execution Style
- **Pace**: Methodical
- **Pause Points**: After assessment, after each task group

### Custom Instructions

#### 02-common-lib
- Skip the database migration for now — it has external dependencies
- Use the connection string from `appsettings.Production.json` for testing

#### 03-data-layer
- Keep existing repository interfaces during migration
- Preserve all Entity Framework conventions

## Key Decisions Log
- 2025-01-15: Keep Newtonsoft.Json in SharedLib — third-party SDK requires it
- 2025-01-16: Skip database project — DBA team will handle separately

plan.md

Het plan.md bestand definieert de taken en het bijbehorende bereik. Bewerken plan.md naar:

  • Taken opnieuw ordenen om de uitvoeringsvolgorde te wijzigen.
  • Voeg taken toe waarvoor de agent niet van plan was.
  • Verwijder taken die niet van toepassing zijn.
  • Voeg notities toe om context te bieden voor specifieke taken.

Afzonderlijke taakbestanden

Elke taak in tasks/{taskId}/task.md bevat de taakspecificatie en werknotities. Bewerk deze bestanden:

  • Verfijn het bereik van een taak.
  • Voeg domeinspecifieke context toe die de agent heeft gemist.
  • Geef codevoorbeelden op voor het gewenste resultaat.

Belangrijk

De hulpprogramma's van de agent beheren tasks.md als een alleen-lezen-dashboard. Bewerk tasks.md niet rechtstreeks. De agent overschrijft eventuele handmatige wijzigingen. Bewerk scenario-instructions.md of afzonderlijke task.md bestanden in plaats daarvan.

Aangepaste vaardigheden maken

Vaardigheden zijn het primaire uitbreidingspunt voor de agent. Een vaardigheid is een Markdown-bestand met een metagegevensheader waarmee de agent leert hoe een specifieke upgrade, patroon of taak moet worden verwerkt.

Waar u aangepaste vaardigheden kunt plaatsen

Plaats Scope Gebruik wanneer
.github/skills/my-skill.md Opslagplaats (gedeeld met team) Upgradepatronen voor het hele team
.github/upgrades/skills/my-skill.md Opslagplaats (upgradespecifiek) Vaardigheden die specifiek zijn voor het upgraden van scenario's
%UserProfile%/.copilot/skills/my-skill.md Gebruikersprofiel (persoonlijk, alle opslagplaatsen) Persoonlijke voorkeuren en patronen

Aanbeveling

Vaardigheden op opslagplaatsniveau (.github/skills/) zijn de meest gangbare keuze. Ze reizen met de code en het hele team kan ze gebruiken.

Vaardigheidsbestandsstructuur

Elk vaardigheidsbestand heeft twee delen: een metagegevensheader (die de agent gebruikt om te begrijpen wanneer de vaardigheid van toepassing is) en een Markdown-hoofdtekst (instructies die de agent volgt).

---
name: migrating-foobar-v2-to-v3
description: >
  Migrate our internal FooBar library from v2 to v3. Activates when
  FooBar.v2 NuGet package is detected, or when asked to "upgrade FooBar",
  "migrate FooBar", or "update FooBar library".
metadata:
  discovery: lazy
  traits: .NET | CSharp
---

# Migrating FooBar Library v2 to v3

## Overview

FooBar v3 introduces a new async-first API surface. This skill guides the
agent through replacing synchronous FooBar.v2 calls with their v3 async
equivalents, updating configuration, and verifying behavior.

## Workflow

1. **Identify FooBar.v2 references**
   - Search for `PackageReference` elements referencing `FooBar.v2`
   - Locate all `using FooBar.V2;` directives

2. **Update package references**
   - Replace `FooBar.v2` with `FooBar.v3` in all `.csproj` files
   - Run `dotnet restore` to verify resolution

3. **Migrate API calls**
   - Replace `FooBarClient.Send(...)` with `await FooBarClient.SendAsync(...)`
   - Replace `FooBarConfig.LoadFromFile(...)` with `FooBarConfig.LoadFromJsonAsync(...)`
   - Update method signatures to `async Task` where needed

4. **Update configuration**
   - Rename `foobar.config` to `foobar.json`
   - Migrate XML config entries to JSON format

5. **Verify**
   - Build the project: `dotnet build`
   - Run existing tests: `dotnet test`
   - Verify no remaining references to `FooBar.V2` namespace

## Success Criteria

- [ ] No references to `FooBar.v2` NuGet package remain
- [ ] All `FooBar.V2` namespace usages replaced with `FooBar.V3`
- [ ] Project builds without errors
- [ ] All existing tests pass

## Error Handling

- If `FooBar.v3` is not available in the configured NuGet feeds, instruct
  the user to add the internal feed
- If async migration causes deadlocks in legacy synchronous code paths,
  wrap calls with `.GetAwaiter().GetResult()` and add a TODO comment

Metagegevensvelden

Veld Verplicht Beschrijving
name Ja Unieke identificatie in kebab-case. Begin met een aanloopwoord (bijvoorbeeld upgrading-, converting-). Maximaal 64 tekens.
description Ja Bepaalt wanneer de agent de vaardigheid laadt. Voeg triggertermen toe, zoals woorden en patronen die de vaardigheid moeten activeren.
metadata.discovery No Hiermee bepaalt u wanneer de vaardigheid wordt geladen: preload (altijd beschikbaar), lazy (op aanvraag wanneer een beschrijving overeenkomt met, standaard en aanbevolen) of scenario (definieert een werkstroomorchestrator).
metadata.traits No Trefwoorden die de technologieën in uw project beschrijven, zoals .NET, CSharp, VisualBasic of DotNetCore.

Best practices voor het ontwerpen van vaardigheden

  • Wees specifiek in de beschrijving: Neem exacte pakketnamen, bibliotheeknamen en triggertermen in natuurlijke taal op die gebruikers kunnen typen.
  • Neem duidelijke, stapsgewijze werkstromen op: De stappen nummeren. Wees expliciet over welke bestanden moeten worden gewijzigd en welke opdrachten moeten worden uitgevoerd.
  • Voeg succescriteria toe: Zonder succescriteria weet de agent niet wanneer de agent moet stoppen. Gebruik selectievakjes of een duidelijke lijst met controleerbare voorwaarden.
  • Foutafhandeling opnemen: Verwacht veelvoorkomende foutmodi, zoals ontbrekende pakketten, buildfouten of verbroken tests.
  • Houd vaardigheden gefocust: Eén vaardigheid per upgrade of taaktype. Een vaardigheid voor het upgraden van FooBar v2 naar v3 is beter dan 'alle interne bibliotheken bijwerken'.
  • Naam met een aanhalingswoord: Gebruiken upgrading-foobar-v2-to-v3, niet foobar-upgrade of foobar-v3.
  • Gebruik lazy detectie: gebruik lazy detectie voor de meeste aangepaste vaardigheden om uitbreiding van het contextvenster van de agent te voorkomen.

Aangepaste scenario's maken

Voor geavanceerde gebruikers die volledig nieuwe upgradewerkstromen willen definiëren, kunt u met aangepaste scenario's een volledige upgradepijplijn met meerdere fasen organiseren. Een scenario is een vaardigheid waarmee de fases worden gedefinieerd die de agent doorloopt met metadata.discovery: scenario.

---
name: migrating-soap-to-rest-api
description: >
  Migrate legacy WCF/SOAP services to ASP.NET Core REST APIs. Activates
  when WCF service references, .svc files, or SOAP clients are detected,
  or when asked to "migrate SOAP to REST", "replace WCF", or "convert
  web services to REST".
metadata:
  discovery: scenario
  traits: .NET | CSharp
  scenarioTraitsSet: [wcf, soap, web-services]
---

# SOAP to REST API Migration

## Pre-initialization

Gather from the user:
- Which SOAP services to migrate (all or specific ones)
- Whether to maintain backward compatibility with a SOAP facade
- Authentication mechanism for the new REST APIs
- API versioning strategy (URL path, header, query string)

## Assessment

Analyze the solution for:
- `.svc` files and WCF service contracts
- WSDL files and service references
- `System.ServiceModel` usage and binding configurations
- Data contracts and their serialization requirements
- Client proxies consuming SOAP services

## Planning

Create tasks in this order:
1. Create shared DTOs — Convert `[DataContract]` types to POCOs
2. Create REST controllers — One controller per `[ServiceContract]`
3. Map operations to HTTP methods
4. Migrate service implementations
5. Update clients — Replace `ChannelFactory`/generated proxies with `HttpClient`
6. Remove WCF infrastructure
7. Add API documentation — Swagger/OpenAPI via Swashbuckle

## Execution

For each service contract:
1. Create a corresponding controller
2. Create a service interface and implementation
3. Register the service in DI
4. Map WCF operations to REST endpoints
5. Update any in-solution clients to use the new REST endpoints
6. Build and run existing tests

Plaats scenariobestanden in .github/skills/ of .github/upgrades/skills/ voor de agent om ze te detecteren.

Aanbeveling

Het scenarioTraitsSet veld definieert eigenschappen die de agent gebruikt om uw scenario te vergelijken met de kenmerken van de oplossing. Deze eigenschappen helpen de agent om uw scenario voor te stellen, indien van toepassing.

Broncodebeheer en vertakking

De agent biedt aan om te werken aan een Git-vertakking, maar u hebt volledige controle over de strategie:

  • Naamgeving van branch: Laat de agent weten welke branchnaam moet worden gebruikt of laat de agent er een voorstellen.
  • Vertakkingen per taak: Vraag een afzonderlijke vertakking per taak aan voor gedetailleerde controle.
  • Commit-timing: Kies wanneer de agent doorvoert: na elke voltooide taak (standaard), alleen aan het einde van de volledige upgrade, of op aanvraag.
  • Geen broncodebeheer: De agent werkt ook met niet-Git-mappen, maar raadt u aan om eerst een back-up van uw project te maken.

Voorbeeld van chatinstructies:

  • "Vertakkingsnaam 'upgrade/dotnet10' gebruiken voor deze upgrade"
  • "Een vertakking per taak maken, zodat ik elke vertakking afzonderlijk kan controleren"
  • "Niet doorvoeren totdat ik je er expliciet om vraag"
  • "Commit na elke taak met een beschrijvend bericht"

Aanbeveling

Voor grote upgrades voor meerdere projecten biedt vertakkingen per taak u de flexibiliteit om elke wijziging onafhankelijk te controleren en samen te voegen, of één taak terug te draaien zonder dat dit van invloed is op de rest.

Prioriteit voor laden van vaardigheden

Wanneer de agent meerdere vaardigheden detecteert, worden deze opgelost met behulp van een prioriteitssysteem. Bronnen met een hogere prioriteit overschrijven of vullen bronnen met een lagere prioriteit aan.

Priority bron Plaats
5 (hoogste) Aangepaste vaardigheden (door de gebruiker verstrekt via API)
4 Gebruikersprofielvaardigheden %UserProfile%/.copilot/skills/
3 Vaardigheden voor het upgraden van repositories .github/upgrades/skills/
2 Repositoryvaardigheden .github/skills/
1 (laagste) Ingesloten vaardigheden (ingebouwd in de agent)

De agent verzamelt vaardigheden van alle bronnen. Wanneer vaardigheden overlappend bereik hebben, hebben bronnen met een hogere prioriteit voorrang. Het discovery veld bepaalt wanneer de vaardigheid wordt geladen. lazy betekent op aanvraag indien relevant en preload betekent altijd beschikbaar.

Aanbeveling

U hoeft geen ingebouwde vaardigheid te vervangen om het gedrag te wijzigen. Een vaardigheid met een hogere prioriteit vormt een aanvulling op de ingebouwde vaardigheid, waarbij u de specifieke conventies van uw team toevoegt bovenop het basisgedrag.