Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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, nietfoobar-upgradeoffoobar-v3. -
Gebruik
lazydetectie: gebruiklazydetectie 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.