Cursor Agent, cursor-agent komutuyla .NET proje klasöründe başlatılır ve çözüm dosyalarını, proje bağımlılıklarını ve test yapısını doğrudan okuyarak kod yazar. Bu rehberde ajanı ASP.NET Core, EF Core ve dotnet CLI ile verimli kullanmanın pratik yollarını anlatıyorum. Amacım reklam değil; ajanın güçlü olduğu noktaları ve dikkat edilmesi gereken .NET tuzaklarını netleştirmek.
Cursor Agent .NET’te neden iyi çalışır
.NET’in katı proje yapısı, ajan için aslında avantajdır. .sln ve .csproj dosyaları bağımlılıkları, hedef framework’ü ve paketleri açıkça gösterir; namespace düzeni ve DI konteyner kayıtları da genellikle tahmin edilebilirdir. Cursor Agent bu bağlamı okuyup yeni bir controller, service veya migration eklerken doğru katmanı seçebilir. Ayrıca dotnet build, dotnet test ve dotnet format gibi komutları kendi çalıştırıp hata çıktılarını yorumlayabilir; bu da düzeltme döngüsünü hızlandırır. EF Core migration, LINQ sorgusu ve xUnit test iskeleti gibi tekrarlayan işlerde de iyi sonuç verir. Yine de bu güven, sizin vereceğiniz proje kurallarıyla birleştiğinde anlamlı hale gelir.
Projeyi ajana hazırlamak: AGENTS.md ve .cursor/rules
Cursor Agent her oturumda proje kökündeki AGENTS.md dosyasını ve .cursor/rules altındaki kural dosyalarını okur. .NET projesinde bu dosyaya build, test, lint ve migration komutlarını yazmak; klasör sorumluluklarını belirtmek; DI kayıtlarında uyulması gereken ömür kurallarını eklemek gerekir. Ajanın belirsiz kaldığı noktalarda varsayım yapmasını istemiyorsanız, aşağıdaki gibi kısa ama net bir dosya yeterlidir.
# .NET projesi kuralları
## Komutlar
- Build: dotnet build src/MyApp.sln
- Test: dotnet test tests/MyApp.Tests/MyApp.Tests.csproj --no-restore
- Lint: dotnet format src/MyApp.sln --verify-no-changes
- Migration: dotnet ef migrations add <Name> --project src/MyApp.Infrastructure --startup-project src/MyApp.Api
## Klasör kuralları
- src/MyApp.Domain: entity ve value object'ler; burada EF Core veya veri erişim bağımlılığı olmasın.
- src/MyApp.Application: use case'ler; yalnızca domain'e bağımlı olsun.
- src/MyApp.Infrastructure: EF Core DbContext, repository implementasyonları, DI kayıtları.
- src/MyApp.Api: controllers, minimal API endpoint'leri; iş mantığı buraya yazılmasın.
## .NET'e özel kurallar
- Yeni bir servis eklerken her zaman DI kaydını interface ile birlikte ekle.
- EF Core'da `Include` kullanmadan lazy loading varsayma; gerekirse explicit loading yap.
- Migration eklerken yalnızca model değişikliğini yansıtan bir isim kullan; migration içeriğini incele.
- Test projesinde xUnit kullan; her use case için en az bir test yaz.
- `var` yerine tipi açık yazmak istemiyorsan proje ayarına `ImplicitUsings` ve `Nullable` değerlerini kontrol et.
Bu dosyayı AGENTS.md olarak kaydedin. Daha büyük ekiplerde .cursor/rules içinde katman başına ayrı .mdc dosyaları tutmak da işe yarar; örneğin domain-rules.mdc, api-rules.mdc. Önemli olan, .NET’e özel komutların ve klasör sınırlarının tek bakışta görünmesidir. Ajan bu kuralları her değişiklikte dikkate alır. Kurulumun terminal tarafıyla ilgili daha fazla pratik için Cursor CLI nasıl kullanılır? içeriğine göz atabilirsiniz.
Çalışma döngüsü: planla, küçük adımlar, testleri çalıştır, diff’i incele
Ajanla çalışırken en verimli döngü şudur: görevi küçük parçalara bölün, ajanın planı önce yazmasını isteyin, ardından tek bir değişiklik yaptırın, dotnet test çalıştırın ve git diff ile çıktıyı inceleyin. Bu, özellikle EF Core model değişikliklerinde ve DI kayıtlarında istenmeyen yan etkileri erken yakalar. Ajanın aklında tüm çözümü tutmasını beklemek yerine, her adımı testlerle doğrulayın.
Aşağıdaki promptlar .NET’e özgü olduğu için genel kod üretiminden daha iyi sonuç verir:
- Yeni bir
GET /api/productsendpoint’i ekle;Productentity’sini EF Core’dan oku, sonucu DTO’ya map et, DI kaydını unutma. OrderService.PlaceOrdermetodunu transaction kullanacak şekilde refactor et; mevcut xUnit testlerini güncelle.ProducttablosunaPricekolonu (decimal(18,2)) ekleyecek bir EF Core migration oluştur; migration dosyasını incele.dotnet buildçalıştır, hataları düzelt ve yaptığın değişiklikleri kısa bir özet halinde sırala.OrderServiceiçin NUnit test projesinde 5 yeni test ekle; bağımlılıkları mockla ve async testleri doğru yaz.
Cursor Agent’ın .NET’te iyi olduğu işler ve dikkat edilmesi gerekenler
Cursor Agent, CRUD endpoint’leri, AutoMapper/Mapster profilini, DI kayıtlarını, appsettings.json bağlamalarını ve EF Core migration’larını hızlı üretir. Ayrıca xUnit veya NUnit test iskeleti oluşturmada da başarılıdır. Ancak .NET’e özgü bazı konularda yakından izlenmesi gerekir:
- EF Core’da
Includeçağrılarını gereksiz yere ekleyebilir veya lazy loading proxy varsayımıyla N+1 sorguya yol açabilir. Her sorguyuToQueryString()ile kontrol edin. - DI yaşam döngüsü hataları:
Scopedbir servisiSingletoniçine enjekte etmek gibi hatalar runtime’da patlar. Ajan bunu bazen atlar; servis kayıtlarını tek tek gözden geçirin. - Migration içeriği: EF Core migration otomatik oluşturulur ancak veri kaybı, default değer veya index değişiklikleri gözden kaçabilir. Migration dosyasını commit etmeden önce mutlaka okuyun.
async voidveya.Resultkullanımı gibi anti-pattern’ler; ajan bazen async akışı bozar.- Katman ihlalleri: ajan controller’dan doğrudan
DbContextkullanabilir veya domain katmanına EF Core bağımlılığı ekleyebilir. Mimari kurallarınızı AGENTS.md’de net belirtmezseniz ihlal riski artar.
| Görev | Güvenilir prompt | Yakından izleyin |
|---|---|---|
| CRUD endpoint | ProductController’a list/create endpoint ekle, EF Core kullan | DI kaydı, DTO map, validation |
| EF Core migration | Price kolonu ekle ve migration oluştur | Migration içindeki default değerler, data kaybı |
| Unit test | OrderService testlerini yaz, bağımlılıkları mockla | Mock kurulumu, async/await, test izolasyonu |
| Config binding | appsettings.json’daki ayarları IOptions<T> ile bağla | Option sınıfı property isimleri, validation |
Test ve doğrulama: ajan ile .NET’te güvenli ilerleme
Ajan her değişiklikten sonra dotnet test çalıştırabilir; ancak siz de test sonuçlarını incelemeli ve özellikle ajanın eklediği testlerin gerçekten niyeti karşıladığını doğrulamalısınız. EF Core bağımlı testlerde InMemory provider kullanılırsa, ilişkisel bütünlük ve SQL çevirisi test edilmez. Bu yüzden entegrasyon testlerinde SQLite in-memory veya gerçek bir test veritabanı kullanmasını isteyin. dotnet ef migrations script ile üretilecek SQL’i önizleyin.
Ayrıca dotnet format veya dotnet build çıktısını ajanın yorumunu beğenmediyseniz kendiniz çalıştırın. Ajanın diff’ini git diff -- src/ ile gözden geçirin; özellikle csproj dosyasına gereksiz paket ekleyip eklemediğini kontrol edin. Paket eklerken sürüm uyumluluğunu ve NuGet kaynaklarını doğrulayın.
Birden fazla ajanı tek .NET projesinde çalıştırmak: AgentVera
AgentVera masaüstü uygulaması; Cursor Agent gibi CLI ajanlarını yan yana gerçek terminallerde çalıştırır. .NET projelerinde en çok işe yarayan özellikleri şunlar: her ajan kendi git worktree’sinde paralel çalışabilir, böylece aynı csproj veya migration dosyasını ezmezler. Bir ajanın turu bitince ikinci bir model kodunu otomatik inceler; bulgular file:line olarak bağlanır, özellikle EF Core Include hatalarını yakalar. Her turun checkpoint’i alınır; hatalı bir migration eklediyse tek tıkla geri alınır ve oturum adım adım yeniden oynatılır. Token bütçeleri ise ajan başına gün ve tur bazında sınır koyup maliyeti kontrol eder. Çoklu ajan yaklaşımını derinlemesine değerlendirmek için paralel kodlama ajanları içeriğine de bakılabilir.
Sonuç
Cursor Agent, doğru proje kuralları ve disiplinli bir doğrulama döngüsüyle .NET projelerinde ciddi zaman kazandırır. Ancak onu bir sihirli çözüm olarak değil, EF Core, DI ve test konularında sizin denetiminizi gerektiren bir hızlandırıcı olarak görün. Küçük adımlar atın, her değişikliği test edin ve AGENTS.md dosyanızı proje gerçeğine göre güncelleyin.