GitHub Copilot modernizasyonunu özelleştirme

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-v3 kullanın, foobar-upgrade veya foobar-v3 kullanmayı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ın lazy.

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