Cursor Agent, cursor-agent komutuyla proje klasöründe başlattığınız terminal tabanlı bir kodlama ajanıdır. Swift ve iOS projelerinde xcodebuild, swift build ve xcodebuild test gibi komutları gerçekten çalıştırır; Swift kaynaklarını okur, düzenler ve test sonuçlarını yorumlar. Bu yazıda ajanı SwiftUI ve UIKit projelerinizde güvenli bir döngüyle kullanmanın pratik yollarını anlatıyorum; daha genel kurulum için Cursor Agent sayfasına bakabilirsiniz.
Neden Cursor Agent Swift ve iOS işlerine uyuyor
Cursor Agent’ın Swift/iOS tarafında asıl değeri, Xcode GUI dışında da tam bir build-test döngüsü kurabilmesidir. swift build ile SPM paketlerini derler, xcodebuild -list ile projenin scheme ve hedeflerini görür, simülatörde xcodebuild test -destination komutunu çalıştırır. Bu sayede yalnızca kod önerisi değil, derleyici hatalarını ve test başarısızlıklarını da okuyup düzeltebilir. Swift’in güçlü tip sistemi ve async/await gibi modern özellikleri, ajanın çıktısını hızlı doğrulamayı kolaylaştırır: hatalı bir async çağrı veya actor izolasyonu genellikle derleme aşamasında yakalanır. Ayrıca ajan dosya bazlı diff ürettiği için SwiftUI view’larındaki küçük değişiklikleri, UIKit controller’larındaki refactor’ları ve test hedeflerini aynı oturumda yönetebilirsiniz. Xcode’un aksine ajan, proje klasöründeki her Swift dosyasını okuyabilir; aynı anda birden fazla hedefi analiz edip çapraz referansları görebilir. Bu, özellikle çok modüllü veya Swift Package Manager ile bölünmüş projelerde işe yarar.
Projeyi ajana hazırlamak: AGENTS.md ve .cursor/rules
Cursor Agent proje kökündeki AGENTS.md dosyasını öncelikli olarak okur; .cursor/rules altındaki kural dosyalarını da proje bağlamı olarak kullanır. Swift ve iOS projelerinde bu dosyaya mutlaka build, test ve lint komutlarını, klasör yapısını ve değiştirilmemesi gereken dosyaları yazın. Böylece ajan her adımda Xcode projesinin nasıl derleneceğini ve testlerin hangi simülatörde koşacağını bilir. Gerçekçi bir örnek:
# AGENTS.md
## Komutlar
- Build: `swift build` veya `xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' build`
- Test: `xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15'`
- Lint: `swiftlint --strict`
## Klasör düzeni
- `MyApp/` uygulama kaynakları (SwiftUI view'ları ve UIKit controller'ları)
- `MyAppTests/` XCTest birim testleri
- `MyAppUITests/` XCUITest UI testleri
- `Shared/` ortak modeller ve servisler
## Kurallar
- Swift 5.9+ ile async/await kullan; DispatchQueue yalnızca zorunluysa.
- SwiftUI state yönetimi için iOS 17+ ise `@Observable`, değilse `ObservableObject` kullan.
- `project.pbxproj` dosyasını elle düzenleme; hedef eklemek için xcodegen veya Xcode kullan.
- Kod imzalama, takım ve entitlement değerlerini değiştirme; bunlar `MyApp.entitlements` ve Build Settings'te elle yönetilir.
- Her ağ veya model değişikliğinden sonra birim testleri çalıştır.
Ayrıca Cursor CLI nasıl kullanılır? Adım adım rehber sayfası, terminal ajanının genel akışını anlamak için iyi bir tamamlayıcıdır.
Çalışma döngüsü: planla, küçük adımlar at, test et, diff’i incele
Ajana büyük bir görev vermek yerine, her seferinde tek bir davranışı değiştiren bir diff isteyin. Önce görevi iki-üç cümleyle tanımlayın, ajanın önce plan sunmasını isteyin; planı onayladıktan sonra uygulatın. Her adımdan sonra git diff ile değişiklikleri inceleyin, xcodebuild test veya swift test çalıştırın ve yalnızca yeşil testlerden sonra devam edin. Ajan bir test hatası döndürürse hatayı yeni girdi olarak verin; böylece derleyici ve test çıktısı döngünün parçası olur.
Örnek görev komutları:
- Mevcut
Usermodelini async/await ile API’den çeken birUserServiceekle; hata durumlarınıUserServiceErrorenum’u ile yönet,URLProtocolmock’u kullanarak XCTest testi yaz. - SwiftUI listesinde
@Observablekullanarak ekleme ekranını MVVM’e ayır,@MainActorizolasyonunu koru ve mevcut testleri güncelle. - UIKit’teki
UICollectionViewakışını diffable data source’a geçir; eskiUICollectionViewDataSourceyöntemlerini sil, hücre kayıtlarını modern hale getir. xcodebuild testçıktısına göre başarısız olan ağ testini düzelt; zaman aşımı süresini ve hata mesajı eşlemesini güncelle.- Uygulama hedefini Swift Package Manager’a taşı:
Package.swiftoluştur, mevcut kaynaklarıSources/altına al ve test hedefini bağla.
Bu döngüde ajanın her adımda xcodebuild çıktısını okumasını isteyin; böylece sorunlar erken yakalanır. Özellikle SwiftUI preview’ları CLI ortamında çalışmadığından, görsel doğrulamayı Xcode’da siz yapın; ajan derleme ve test ile sınırlı kalsın.
Cursor Agent’ın iyi yaptığı Swift/iOS işleri ve dikkat edilecek noktalar
Ajan özellikle kod tabanlı SwiftUI ekranları, UIKit refactor’ları, ağ katmanı, modeller ve XCTest birim testleri yazarken verimlidir. Tablo, tipik görevlerle birlikte Swift/iOS’e özgü tuzakları özetliyor:
| Görev | Dikkat edilecek nokta |
|---|---|
| SwiftUI view ekleme veya state refactor’u | @Observable/ObservableObject seçimi, @MainActor izolasyonu ve preview çalıştırmadan derleme doğrulaması |
| UIKit controller refactor’u | UICollectionView/UITableView diffable data source geçişinde hücre kayıt ve snapshot hataları |
| Ağ katmanı ve async/await servisleri | URLSession mock’u, hata tipleri ve zaman aşımı; test hedeflerinde canlı ağa çıkmamak |
| Core Data veya SwiftData model değişiklikleri | Migration gereksinimleri, @Model makro kullanımı ve mainContext thread güvenliği |
| Test hedefi güncelleme | Test dosyalarının target membership’ini korumak, @testable import hatası |
Ajanın en sık zorlandığı noktalar şunlardır: Xcode proje dosyası project.pbxproj içindeki manuel değişiklikler, kodsal imzalama ve provisioning profile, Info.plist değerlerinin yanlış düzenlenmesi, storyboard/xib dosyalarındaki XML yapısının bozulması. Bu tür dosyaları ajana değiştirtmeyin; kuralları AGENTS.md içinde net olarak belirtin.
Swift ve iOS için test ve doğrulama
Ajanla çalışırken test komutlarını her zaman proje kökünden çalıştırın. SPM tabanlı bir modülde swift test yeterlidir; Xcode projesi için xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' kullanın. Ajana test çıktısını ayrıntılı okumasını söyleyin: hatalı assertion, beklenmedik nil, async task iptali gibi bilgileri yakalar. UI testleri için xcodebuild test -only-testing:MyAppUITests komutunu ekleyerek yalnızca ilgili testleri koşturun. Testlerden sonra git diff --check ile boşluk hatalarını ve swiftlint --strict ile stil sorunlarını denetletin. Ajanın önerdiği değişiklikleri uygulamadan önce git diff üzerinde satır satır inceleyin; özellikle concurrency ile ilgili @Sendable closure’lar ve Task yapıları hata üretebilir. Bir test başarısız olduğunda ajanın hatayı düzeltmesi için test çıktısının tamamını girdi olarak verin; bu, döngünün en kritik adımıdır.
Birden fazla ajanı tek Swift/iOS projesinde çalıştırmak: AgentVera
Swift ve iOS projelerinde paralel ajan çalıştırmak genellikle dosya çakışmalarına yol açar. AgentVera, her ajanı kendi git worktree’sinde çalıştırarak bu sorunu çözer; böylece bir ajan UserService üzerinde çalışırken diğeri HomeView’u güvenle değiştirebilir. Ajan turu bittiğinde otomatik kod incelemesi, Swift’e özgü hataları file:line ile gösterir; checkpoint’ler sayesinde yanlış bir refactor tek tıkla geri alınabilir. Bu üç özellik, UIKit ve SwiftUI kodunun birbirine karıştığı projelerde riski ciddi şekilde azaltır.
Sonuç
Cursor Agent ile Swift/iOS geliştirme, doğru kurallar ve disiplinli bir döngü ile Xcode dışındaki terminal ortamında bile etkili hale gelir. AGENTS.md dosyasını baştan hazırlayın, her değişiklikten sonra test çalıştırın ve project.pbxproj gibi Xcode’a özel dosyaları koruyun. Paralel çalışmalar için worktree tabanlı çözümleri değerlendirin; böylece ajanlar birbirinin işini bozmadan büyük refactor’ları parçalara bölebilir. Daha geniş bir perspektif için Yapay zeka ile mobil uygulama yapmak: Expo’dan mağazaya yazısına göz atabilirsiniz.