GitHub Copilot frissítés testreszabása

GitHub Copilot frissítés bővíthető. Az ügynök több testreszabási pontot biztosít a csapat frissítési mintáinak kódolásához, a kódolási szabványok frissítés közbeni érvényesítéséhez és új frissítési munkafolyamatok definiálásához.

Testreszabási pontok áttekintése

Testreszabási pont Scope Kitartás Effort
Csevegési utasítások Munkamenetenként vagy frissítésenként Munkamenet vagy mentett ide: scenario-instructions.md Minimális
Forgatókönyv-összetevők Frissítésenként A frissítés időtartama Alacsony
Egyéni készségek Csapat vagy egyéni Állandó (adattárba vagy felhasználói profilba bejelentkezve) Medium
Egyéni forgatókönyvek Csapat vagy egyéni Permanent Magas

Tip

Kezdje a csevegési utasítások és a forgatókönyv-összetevők szerkesztésével. Válts az egyéni képességekre, ha azt tapasztalod, hogy ugyanazokat az utasításokat ismételed a frissítések között.

Testreszabás csevegésen keresztül

Az ügynök viselkedésének testreszabása valós időben természetes beszélgetéssel. Az ügynök vagy azonnal alkalmazza az utasítást, vagy megőrzi azt scenario-instructions.md későbbi referenciaként.

Azt mondod, Mi történik?
"Mostantól mindig véglegesítse az egyes tevékenységek után" Mentve scenario-instructions.md végrehajtási beállításként
"Tesztérvényesítés kihagyása ehhez a feladathoz" Csak az aktuális tevékenységre azonnal alkalmazva
"A frissítés alulról felfelé irányuló stratégiájának használata" Hatással van a tervezési fázis stratégiájára
"Ne érintse meg a naplózási projektet" Hozzáadva a beállításokhoz; az ügynök kizárja a projektet
"Mindig használjon fájlhatókörű névtereket" Elmentve kódolási szabványbeállításként
"Szünet minden feladat után a felülvizsgálathoz" Mentve mint végrehajtási stílusbeállítás

Tip

Ha azt szeretné, hogy egy utasítás a teljes frissítés során megmaradjon, adja meg állandó beállításként a következőt: "Mostantól mindig..." vagy "A frissítésben szereplő összes tevékenységhez...". Az ügynök az utasítást scenario-instructions.md-re írja.

Forgatókönyv-összetevők szerkesztése

Amikor az ügynök frissítést futtat, létrehoz egy munkaterületet a .github/upgrades/{scenarioId}/-ben. A frissítési mappa szerkeszthető összetevőket tartalmaz, amelyek közvetlenül szabályozzák az ügynök viselkedését.

scenario-instructions.md

A scenario-instructions.md fájl az ügynök állandó memóriája a frissítéshez. Az ügynök mindig betölti ezt a fájlt a környezetbe, így minden itt írt dolog közvetlenül befolyásolja az ügynök által hozott döntéseket.

Az ügynök irányításához adjon hozzá az alábbihoz hasonló szakaszokat:

## 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

A plan.md fájl meghatározza a feladatokat és azok hatókörét. Szerkeszd plan.md erre:

  • Feladatok átrendezése a végrehajtási sorrend módosításához.
  • Olyan tevékenységek hozzáadása, amelyeket az ügynök nem tervezett.
  • Távolítsa el azokat a feladatokat, amelyek nem alkalmazhatók.
  • Jegyzetek hozzáadása adott tevékenységek kontextusának megadásához.

Egyéni feladatfájlok

A tasks/{taskId}/task.md minden egyes tevékenység tartalmazza a tevékenység specifikációját és a munkajegyzeteket. Szerkessze a következő fájlokat:

  • A tevékenység hatókörének pontosítása.
  • Adja hozzá az ügynök által kihagyott tartományspecifikus környezetet.
  • Adjon meg példakódokat a kívánt eredményhez.

Important

Az ügynök eszközei írásvédett irányítópultként kezelik a(z) tasks.md-t. Ne szerkessze tasks.md közvetlenül. Az ügynök felülírja a manuális módosításokat. Szerkessze inkább a scenario-instructions.md vagy az egyéni task.md fájlokat.

Egyéni képességek létrehozása

A készségek az ügynök elsődleges bővítménypontjai. A képesség egy Metaadat-fejlécet tartalmazó Markdown-fájl, amely megtanítja az ügynöknek egy adott frissítés, minta vagy feladat kezelésére.

Az egyéni készségek helyének helye

Elhelyezkedés Scope Használja amikor
.github/skills/my-skill.md Adattár (megosztva a csapattal) Csapatszintű frissítési minták
.github/upgrades/skills/my-skill.md Adattár (frissítésspecifikus) A frissítési forgatókönyvekhez kapcsolódó készségek
%UserProfile%/.copilot/skills/my-skill.md Felhasználói profil (személyes, összes adattár) Személyes beállítások és minták

Tip

Az adattárszintű készségek (.github/skills/) a leggyakoribbak. A kóddal utaznak, és az egész csapat használhatja őket.

Készségfájl-struktúra

Minden képességfájl két részből áll: egy metaadat-fejlécből (amelyet az ügynök a képesség alkalmazásának megértéséhez használ) és egy Markdown-törzset (az ügynök utasításait követve).

---
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

Metaadatmezők

Field Required Description
name Yes Egyedi azonosító kebab-eset esetén. Kezdje egy gerund igével (például upgrading-, converting-). Legfeljebb 64 karakter.
description Yes Meghatározza, hogy az ügynök mikor tölti be a képességet. Adjon meg triggerkifejezéseket, például szavakat és mintákat, amelyek aktiválják a készséget.
metadata.discovery No Szabályozza, hogy mikor töltődik be a képesség: preload (mindig elérhető), lazy (igény szerint, ha a leírás egyezik, alapértelmezett és ajánlott), vagy scenario (munkafolyamat-vezénylőt határoz meg).
metadata.traits No A projekt technológiáit leíró kulcsszavak, például .NET, CSharp, VisualBasic vagy DotNetCore.

Készségfejlesztési legjobb gyakorlatok

  • Legyen konkrét a leírásban: Adjon meg pontos csomagneveket, kódtárneveket és természetes nyelvű triggerkifejezéseket, amelyekbe a felhasználók beírhatnak.
  • Adjon meg egyértelmű, részletes munkafolyamatokat: Számozza meg a lépéseket. Legyen explicit a módosítani kívánt fájlokról és a futtatandó parancsokról.
  • Sikerességi feltételek belefoglalása: Sikerességi feltételek nélkül az ügynök nem tudja, mikor kell leállítani. Használjon jelölőnégyzeteket vagy egyértelmű listát az ellenőrizhető feltételekkel.
  • Hibakezelés belefoglalása: Előre jelezheti a gyakori meghibásodási módokat, például a hiányzó csomagokat, a buildelési hibákat vagy a hibás teszteket.
  • A készségek összpontosítása: Frissítésenként vagy feladattípusonként egy képesség. A "FooBar v2-ről v3-ra történő frissítés képessége" jobb, mint "az összes belső könyvtár frissítése."
  • Név gerund igével: A upgrading-foobar-v2-to-v3-t használja, ne pedig a foobar-upgrade vagy a foobar-v3.
  • Felderítés használata lazy : A legtöbb egyéni képességhez használja lazy a felderítést, hogy elkerülje az ügynök környezetablakának blobolását.

Egyéni forgatókönyvek létrehozása

Azoknak a haladó felhasználóknak, akik teljesen új frissítési munkafolyamatokat szeretnének definiálni, az egyéni forgatókönyvek lehetővé teszik a teljes többfázisú frissítési folyamat vezénylésére. A forgatókönyv egy olyan funkció metadata.discovery: scenario, amely meghatározza az ügynök által követett fázisokat.

---
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

Helyezze el a forgatókönyvfájlokat .github/skills/ vagy .github/upgrades/skills/ . Az ügynök ezeken a helyeken fogja felfedezni őket.

Tip

A scenarioTraitsSet mező meghatározza azokat a tulajdonságokat, amelyeket az ügynök a forgatókönyvnek a megoldás jellemzőivel való egyeztetéséhez használ. Ezek a tulajdonságok segítenek az ügynöknek javasolni a forgatókönyvet, ha szükséges.

Forrásvezérlés és elágaztatás

Az ügynök lehetőséget kínál arra, hogy egy Git-ágon dolgozzon, de Ön teljes mértékben szabályozhatja a stratégiát:

  • Ág elnevezése: Adja meg az ügynöknek, hogy milyen ágnevet használjon, vagy hagyja, hogy az ügynök javasoljon egyet.
  • Tevékenységenkénti ágak: Feladatonként külön ág kérése részletes felülvizsgálathoz.
  • Véglegesítés időzítése: Válassza ki, hogy az ügynök mikor véglegesít: minden befejezett tevékenység után (alapértelmezett), csak a teljes frissítés végén, vagy igény szerint.
  • Nincs forrásvezérlő: Az ügynök nem Git-mappákkal is működik, de azt javasolja, hogy először biztonsági másolatot készítsen a projektről.

Példa csevegési utasításokra:

  • "A frissítéshez használja a "upgrade/dotnet10" ágnevet"
  • "Hozzon létre egy ágat tevékenységenként, hogy mindegyiket külön tekinthessem át"
  • "Ne véglegesítsen, amíg kifejezetten nem kérem arra"
  • "Véglegesítés minden feladat után leíró üzenettel"

Tip

A nagy méretű többprojektes frissítések esetében a tevékenységágak rugalmasan áttekinthetik és egyesíthetik az egyes módosításokat egymástól függetlenül, vagy egyetlen feladatot is visszaállíthatnak anélkül, hogy a többire hatással vannak.

Képességbetöltési prioritás

Amikor az ügynök több képességet is felfedez, egy prioritási rendszer használatával oldja fel őket. A magasabb prioritású források felülbírálják vagy kiegészítik az alacsonyabb prioritású forrásokat:

Priority Source Elhelyezkedés
5 (legmagasabb) Egyéni készségek (felhasználó által az API-n keresztül biztosított)
4 Felhasználói profilok ismeretei %UserProfile%/.copilot/skills/
3 Az adattár frissítési készségei .github/upgrades/skills/
2 Adattárral kapcsolatos ismeretek .github/skills/
1 (legalacsonyabb) Beágyazott készségek (az ügynökbe beépítve)

Az ügynök minden forrásból gyűjti a készségeket. Ha a készségek hatóköre átfedésben van, a magasabb prioritású források elsőbbséget élveznek. A discovery mező szabályozza, hogy mikor töltődik be a képesség. lazy igény szerinti igénylést jelent, és preload azt jelenti, hogy mindig elérhető.

Tip

Nem kell lecserélnie egy beépített képességet a viselkedés módosításához. Egy magasabb prioritású adattár-képesség kiegészíti a beépített képességet, és hozzáadja a csapat konkrét konvencióit az alapkonfiguráció viselkedéséhez.