Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 afoobar-upgradevagy afoobar-v3. -
Felderítés használata
lazy: A legtöbb egyéni képességhez használjalazya 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.