Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
GitHub Copilot modernizasyonu genişletilebilir. Aracı, ekibinizin yükseltme desenlerini kodlamak, yükseltmeler sırasında kodlama standartlarını zorlamak ve yeni yükseltme iş akışlarını tanımlamak için birden çok özelleştirme noktası sağlar.
Özelleştirme noktalarına genel bakış
| Özelleştirme noktası | Scope | Devamlılık | Çaba |
|---|---|---|---|
| Sohbet yönergeleri | Oturum veya yükseltme başına | Oturum veya scenario-instructions.md'ye kaydet |
Minimal |
| Senaryo yapıtları | Yükseltme başına | Yükseltme süresi | Low |
| Özel beceriler | Ekip veya kişisel | Kalıcı (depoya veya kullanıcı profiline kontrol edildi) | Orta |
| Özel senaryolar | Ekip veya kişisel | Permanent | Yüksek |
Tavsiye
Sohbet yönergeleri ve senaryo yapıt düzenlemeleri ile başlayın. Yükseltmelerde aynı yönergeleri yinelediğiniz zaman özel becerilere geçin.
Sohbet aracılığıyla özelleştirme
Temsilcinin davranışını doğal konuşma ile gerçek zamanlı olarak özelleştirin. Aracı, yönergenizi hemen uygular veya gelecekte başvurmak üzere scenario-instructions.md'e kaydeder.
| Sen diyorsun ki. | Ne olur? |
|---|---|
| "Bundan sonra, her görevden sonra her zaman commit edin" | Yürütme tercihi olarak scenario-instructions.md'a kaydedildi |
| "Bu görev için test doğrulamasını atla" | Yalnızca geçerli göreve hemen uygulanır |
| "Bu yükseltme için alt stratejiyi kullan" | Planlama aşaması stratejisini etkiler |
| "Logging projesine dokunmayın" | Tercihlere eklendi; aracı bu projeyi dışlar |
| "Her zaman dosya kapsamlı ad alanlarını kullan" | Standart kodlama tercihi olarak kaydedilir |
| "Her görevi tamamladıktan sonra gözden geçirmem için duraklat" | Yürütme stili tercihi olarak kaydedilir |
Tavsiye
Bir yönergenin tüm yükseltmede kalıcı olmasını sağlamak için, bunu kalıcı bir tercih olarak ifade edin: "Şu andan itibaren, her zaman..." veya "Bu yükseltmedeki tüm görevler için...". Aracı, yönergeyi scenario-instructions.md öğesine yazar.
Senaryo yapıtlarını düzenleme
Aracı bir yükseltme çalıştırdığında, .github/upgrades/{scenarioId}/ içinde bir çalışma alanı oluşturur. Yükseltme klasörü, aracının davranışını doğrudan denetleyebilen düzenlenebilir yapıtlar içerir.
scenario-instructions.md
scenario-instructions.md dosyası, aracının yükseltme için kalıcı belleğidir. Ajan bu dosyayı her zaman bağlama alır, bu nedenle buraya yazdığınız her şey, ajanın aldığı her kararı doğrudan etkiler.
Ajana kılavuzluk etmek için şu şekilde bölümler ekleyin:
## 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
Dosya, plan.md görevleri ve bunların kapsamını tanımlar. Düzenle plan.md:
- Yürütme sırasını değiştirmek için görevleri yeniden sırala.
- Aracının planlamamış olduğu görevleri ekleyin.
- Geçerli olmayan görevleri kaldırın.
- Belirli görevler için bağlam sağlamak üzere notlar ekleyin.
Tek tek görev dosyaları
içindeki tasks/{taskId}/task.md her görev, görev belirtimini ve çalışma notlarını içerir. Bu dosyaları şu şekilde düzenleyin:
- Görevin kapsamını daraltma.
- Eksik olan alan veya konuya özgü bağlamı ekleyin.
- İstenen sonuç için kod örnekleri sağlayın.
Önemli
Aracın araçları tasks.md salt okunur bir pano olarak yönetir. Doğrudan tasks.md düzenleme yapmayın. Aracı, el ile yapılan değişiklikleri yeniden yazar.
scenario-instructions.md veya task.md dosyalarını tek tek düzenleyin.
Özel beceriler oluşturma
Beceriler, aracı için birincil uzantı noktasıdır. Beceri, aracıya belirli bir yükseltme, desen veya görevin nasıl işleneceğini öğreten meta veri üst bilgisine sahip bir Markdown dosyasıdır.
Özel beceriler nerede yerleştirilmeli
| Location | Scope | Şu durumlarda kullanın: |
|---|---|---|
.github/skills/my-skill.md |
Depo (ekiple paylaşılan) | Ekip genelinde yükseltme desenleri |
.github/upgrades/skills/my-skill.md |
Depo (yükseltmeye özgü) | Yükseltme senaryolarına özgü beceriler |
%UserProfile%/.copilot/skills/my-skill.md |
Kullanıcı profili (kişisel, tüm depolar) | Kişisel tercihler ve desenler |
Tavsiye
Repository düzeyinde beceriler (.github/skills/) en yaygın tercihtir. Kodla birlikte seyahat ederler ve tüm ekip bunları kullanabilir.
Beceri dosyası yapısı
Her beceri dosyasının iki bölümü vardır: bir meta veri üst bilgisi (aracının becerinin ne zaman geçerli olduğunu anlamak için kullandığı) ve bir Markdown gövdesi (aracının izlediği yönergeler).
---
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
Meta veri alanları
| Alan | Zorunlu | Açıklama |
|---|---|---|
name |
Evet | Kebab-case içindeki benzersiz tanımlayıcı. Gerund fiiliyle başlayın (örneğin, upgrading-, converting-). En fazla 64 karakter. |
description |
Evet | Aracının beceriyi ne zaman yükleyeceğini belirler. Beceriyi etkinleştirmesi gereken sözcükler ve desenler gibi tetikleyici tümcecikleri ekleyin. |
metadata.discovery |
Hayır | Becerinin ne zaman yüklendiğini denetler: preload (her zaman kullanılabilir), lazy (açıklama eşleştiğinde isteğe bağlı, varsayılan ve önerilen) veya scenario (bir iş akışı düzenleyici tanımlar). |
metadata.traits |
Hayır | Projenizdeki .NET, CSharp, VisualBasic veya DotNetCore gibi teknolojileri açıklayan anahtar sözcükler. |
Beceri yazma en iyi yöntemleri
- Açıklamada spesifik olun: Kullanıcıların yazabileceği tam paket adlarını, kütüphane adlarını ve doğal dildeki tetikleyici ifadeleri ekleyin.
- Net, adım adım iş akışları ekleyin: Adımları numaralar. Hangi dosyaların değiştirileceği ve hangi komutların çalıştırılacağı konusunda açık olun.
- Başarı ölçütlerini ekle: Başarı ölçütleri olmadan aracı ne zaman durdurulacağını bilmez. Onay kutularını veya doğrulanabilir koşulların net bir listesini kullanın.
- Hata işlemeyi dahil et: Eksik paketler, derleme hataları veya bozuk testler gibi yaygın hata modlarını tahmin edin.
- Becerilerin odaklanmış kalmasını sağlayın: Yükseltme veya görev türü başına bir beceri. "FooBar v2'yi v3'e yükseltme" becerisi", "tüm iç kitaplıkları yükseltme"den daha iyidir.
-
İsim-fiil içeren ad:
upgrading-foobar-v2-to-v3kullanın,foobar-upgradeveyafoobar-v3kullanmayın. -
Keşif özelliğini kullanma
lazy: Ajanın bağlam penceresinin aşırı yüklenmemesi için çoğu özel beceride keşif özelliğini kullanınlazy.
Özel senaryolar oluşturma
Tamamen yeni yükseltme iş akışları tanımlamak isteyen ileri düzey kullanıcılar için özel senaryolar, tam bir çok aşamalı yükseltme işlem hattını düzenlemenize olanak tanır. Senaryo, metadata.discovery: scenario ajanın izlediği aşamaları tanımlayan bir beceridir.
---
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
Senaryo dosyalarını .github/skills/ veya .github/upgrades/skills/ konumlarına, aracın onları bulması için yerleştirin.
Tavsiye
alanı, scenarioTraitsSet aracının senaryonuzu çözümün özellikleriyle eşleştirmek için kullandığı özellikleri tanımlar. Bu özellikler, uygun olduğunda aracının senaryonuzu önermesine yardımcı olur.
Kaynak denetimi ve dallanma
Agent, bir Git dalı üzerinde çalışmayı teklif edebilir, ama strateji üzerinde tam kontrole sahipsiniz.
- Dal adlandırma: Aracıya hangi dal adının kullanılacağını söyleyin veya aracının bir dal önermesine izin verin.
- Görev başına dallar: Ayrıntılı gözden geçirme için görev başına ayrı bir dal isteyin.
- İşleme zamanlaması: Ajanın ne zaman işleyeceğini seçin: tamamlana her görevden sonra (varsayılan), yalnızca tam yükseltmenin sonunda veya talep üzerine.
- Kaynak denetimi yok: Aracı, Git olmayan klasörlerle de çalışır ancak önce projenizin yedeklenmesi önerilir.
Örnek sohbet yönergeleri:
- "Bu yükseltme için 'upgrade/dotnet10' dal adını kullanın"
- "Her birini ayrı ayrı gözden geçirebilmem için görev başına bir dal oluşturun"
- "Sizden açıkça isteyene kadar taahhütte bulunma"
- "Açıklayıcı bir mesajla her görevden sonra commit edin"
Tavsiye
Büyük çok projeli yükseltmeler için, görev başına dallar her değişikliği bağımsız olarak gözden geçirme ve birleştirme ya da geri kalanları etkilemeden tek bir görevi geri alma esnekliği sağlar.
Beceri yükleme önceliği
Aracı birden çok beceri keşfettiğinde, bunları bir öncelik sistemi kullanarak çözümler. Yüksek öncelikli kaynaklar, düşük öncelikli kaynakları geçersiz kılar veya ekler:
| Priority | Kaynak | Location |
|---|---|---|
| 5 (en yüksek) | Özel beceriler (API aracılığıyla kullanıcı tarafından sağlanır) | — |
| 4 | Kullanıcı profili becerileri | %UserProfile%/.copilot/skills/ |
| 3 | Depo yükseltme becerileri | .github/upgrades/skills/ |
| 2 | Depo becerileri | .github/skills/ |
| 1 (en düşük) | Ekli beceriler (aracıya yerleşik) | — |
Aracı tüm kaynaklardan beceri toplar. Becerilerin kapsamı çakıştığında, daha yüksek öncelikli kaynaklar önceliklidir. Alan, discovery becerinin ne zaman yükleneceğini denetler.
lazy uygun olduğunda isteğe bağlı ve preload her zaman kullanılabilir anlamına gelir.
Tavsiye
Davranışı değiştirmek için yerleşik bir beceriyi değiştirmeniz gerekmez. Önceliği daha yüksek olan bir depo becerisi, yerleşik beceriyi destekleyerek ekibinizin temel davranışa yönelik özel kurallarını ekler.