Swift ve iOS projelerinde Claude Code’u proje klasöründe claude komutuyla başlatıp Xcode, Swift Package Manager ve XCTest işlerini yürütebilirsiniz. Ajan, kök dizindeki CLAUDE.md dosyasını okuyarak build, test ve lint komutlarınızı bilir; SwiftUI ve UIKit kodunuza göre çalışır. Bu rehberde kurulumdan paralel ajan kullanımına kadar pratik bir akış paylaşıyorum.
Swift ve iOS işlerine neden uygun
Claude Code, bir Swift/iOS deposunda terminal üzerinden çalışabildiği için Xcode’un komut satırı araçlarını doğrudan kullanır. xcodebuild, swift test, swift package ve simülatör komutlarıyla build alabilir, test çalıştırabilir, bağımlılıkları çözebilir. Swift dilinin async/await, actor ve @MainActor gibi eşzamanlılık özelliklerini anlar; bu sayede ağ katmanı veya ViewModel refactor’larında doğru izolasyon önerileri verir. SwiftUI’nin deklaratif yapısında yeni view’lar eklemek, UIKit’te constraint ve stack view kurmak gibi rutin işlerde hız kazandırır. Ayrıca Swift Package Manager ile modüler yapı kurmak, test hedefleri eklemek ve bağımlılıkları yönetmek için ideal bir arayüz sunar; ajan Package.swift’i okuyup tutarlı değişiklikler yapabilir. Öte yandan Xcode’un görsel arayüzünü açamaz; imzalama, storyboard/xib ve karmaşık proje ayarları için sizden net talimat bekler.
Projeyi ajan için hazırlama ve CLAUDE.md
Ajanın en büyük bağlam kaynağı CLAUDE.md dosyasıdır. Repo köküne bu dosyayı ekleyin; build, test, lint komutlarını, klasör düzenini ve Swift/iOS’e özel kuralları yazın. Böylece ajan her seferinde hangi şemayı, hangi simülatörü ve hangi kuralları kullanacağını bilir. Gerçekçi bir örnek:
# CLAUDE.md
## Komutlar
- Bağımlılıklar: `swift package resolve`
- Build: `xcodebuild -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' build`
- Test: `xcodebuild test -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' -only-testing:MyAppTests`
- Lint: `swiftlint`
## Klasör yapısı
- `MyApp/` uygulama kaynakları
- `MyAppTests/` birim testleri
- `MyAppUITests/` UI testleri
- `Packages/` altında SPM paketleri
## Kurallar
- UIKit ve SwiftUI karışımında ağır işler arka planda çalışsın; UI güncellemeleri @MainActor üzerinde olsun
- Hata yönetiminde Result yerine throws kullanın
- ViewModel'ler @Observable veya ObservableObject kullanmalı; test edilebilir olmalı
- Debug için print bırakmayın; Logger kullanın
Bu kurallar ajanın ürettiği kodun mevcut mimariyle uyumlu olmasını sağlar. Komutları gerçek projenizdeki şema ve simülatör adlarıyla değiştirin; simülatör adını xcrun simctl list devices available ile teyit edebilirsiniz. CLAUDE.md dosyasını kısa tutun; tüm dökümantasyonu içine dökmek yerine yalnızca ajanın karar verirken ihtiyaç duyacağı komutları ve kuralları ekleyin.
Çalışma döngüsü: plan, küçük adımlar, testler, diff
Claude Code ile güvenli çalışmanın anahtarı, ajanı serbest bırakmadan önce plan istemektir. Önce hangi dosyaların değişeceğini, hangi testlerin etkileneceğini ve olası riskleri listeleyin; Claude Code plan modu yaklaşımı burada işe yarar. Ardından tek bir görevi küçük adımlara bölün; her adımdan sonra ajanın xcodebuild veya swift test çalıştırmasını isteyin. Değişiklikleri git diff ile gözden geçirin; ajanın yaptığı refactor’un kapsamını anlamadan merge etmeyin.
Tipik Swift/iOS görevleri için örnek istekler:
- Mevcut UIKit ekranındaki ağ çağrısını async/await ile refactor et; completion handler’ları kaldır, hata yönetimini throws ile yap. Değişiklikleri yapmadan önce etkilenecek dosyaları listele.
- SwiftUI listesinde görselleri async yükleyen bir ViewModel oluştur; @MainActor kullan, servis bağımlılığını protokol olarak enjekte et ve birim testlerini ekle.
- XCTest’te şu test başarısız: [hata mesajı]. Hatayı analiz et ve en küçük düzeltmeyi uygula; mevcut diğer testleri bozma.
- SPM paketine yeni bir hedef ekle ve uygulama hedefine bağla; Package.swift ve gerekli proje dosyalarını güncelle, ardından
swift testçalıştır. - UI testi için erişilebilirlik tanımlayıcıları ekle; her buton, liste hücresi ve metin alanına
accessibilityIdentifierver. Sadece tanımlayıcı ekle, davranışı değiştirme.
Bu istekleri uygularken ajanın her adımda hangi dosyayı neden değiştirdiğini açıklamasını isteyin. git diff çıktısını okuyun; özellikle UIKit constraint değişikliklerinde görsel hiyerarşi bozulmamış mı, @MainActor izolasyonu korunmuş mu kontrol edin. Son adımı siz onaylamadan ajanın bir sonraki göreve geçmesine izin vermeyin.
İyi olduğu işler ve dikkat edilecekler
Claude Code özellikle tekrarlayan ve test edilebilir işlerde iyidir. Aşağıdaki tablo tipik görevler ile dikkat edilmesi gereken Swift/iOS detaylarını özetler.
| Görev | Claude Code iyi yapar | Dikkat edilecekler |
|---|---|---|
| Async/await dönüşümü | Completion handler kaldırma, throws ekleme | @MainActor eksikse arayüz güncellemeleri arka plana düşebilir |
| SwiftUI view/ViewModel | @Observable, bindings, liste yapıları | Önizleme verileri ve environment object’ler test için ayrılmalı |
| UIKit Auto Layout | NSLayoutConstraint ve stack view üretimi | Çakışan constraint’ler, safe area ve trait koleksiyonları |
| SPM entegrasyonu | Package.swift hedef ve bağımlılık ekleme | Xcode projesiyle senkron; kilit dosyası değişiklikleri |
| XCTest ekleme/onarma | Test yazma, async test, expectation | UI testleri yavaş ve kırılgan; sadece kritik akışlar |
En büyük risklerden biri eşzamanlılık: ajan @MainActor veya Sendable uyarılarını göz ardı ederse, Swift 6 strict concurrency modunda derleme hataları oluşabilir. Bu nedenle CLAUDE.md’de thread kurallarını netleştirin. Storyboard ve xib dosyaları XML olarak kırılgandır; ajan bu dosyaları düzenlerken diff’i dikkatle inceleyin, mümkünse yeni ekranları SwiftUI veya kod tabanlı UIKit ile yazmasını isteyin. Proje dosyası project.pbxproj değişiklikleri de risklidir; ajan hedef eklerken Xcode’un beklediği UUID düzenini bozabilir. Bu tür yapısal değişiklikleri ajan yerine Xcode’da yapıp Swift dosyalarını ajana bırakmak daha güvenlidir. Lokalizasyon dosyaları (.strings) ve asset katalogları eklemek ajan için kolaydır; ancak string anahtarlarının unique olması ve format argümanlarının doğru sıralanması gerekir. Özellikle çoğul kurallar için stringsdict dosyası üzerinde yapılan değişiklikleri test edin.
Test ve doğrulama
Her değişiklikten sonra testleri çalıştırmak, ajanla Swift/iOS geliştirmenin en kritik adımıdır. SPM paketlerinde swift test yeterlidir; Xcode projesinde ise belirli şema ve simülatörle xcodebuild test çalıştırın. Örneğin:
xcodebuild test -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' -only-testing:MyAppTests
Ajanın yalnızca hataları değil, test çıktısındaki uyarıları da yorumlamasını isteyin. UI testleri için XCTWaiter ve explicit bekleme kullanın; sabit sleep eklemesine izin vermeyin. Kod kapsamını görmek isterseniz xcodebuild test -enableCodeCoverage YES ardından xcrun xccov view --report komutlarını çalıştırabilirsiniz. Ajan, hangi testlerin ekleneceğini de önerebilir; ancak testleri gözden geçirmeden kabul etmeyin, özellikle asenkron testlerde beklentilerin süresi ve iptal edilme durumları yanlış olabilir. Xcode test planları kullanıyorsanız, ajanın test planını değiştirmesine izin vermeden önce hangi konfigürasyonların kapsandığını kontrol edin. Paralel testlerde simülatör klonlama ve test hedefi izolasyonu ajanın önerdiği komutlardan bağımsız olarak doğrulanmalıdır. Ajan yalnızca test çalıştırmakla kalmaz, başarısız assertion’lardan yola çıkarak üretim kodunu düzeltebilir; ancak düzeltmenin testi geçirmek için testi zayıflatmadığından emin olun.
Birden fazla ajanı AgentVera ile paralel çalıştırma
Swift/iOS projenizde birden fazla Claude Code ajanını paralel çalıştırmak isterseniz AgentVera masaüstü uygulaması her ajanı kendi gerçek terminal panelinde çalıştırır. Ajanlar ayrı git worktree’lerde ilerleyebildiği için aynı Xcode projesini bozmadan paralel özellik geliştirebilirsiniz. Ajan bitince ikinci bir model otomatik kod incelemesi yapar ve bulgular file:line olarak bağlanır; bu, SwiftUI/UIKit değişikliklerinde gözden kaçan @MainActor veya constraint hatalarını yakalar. Her turun anlık görüntüsü checkpoint olarak tutulur; bir değişikliği tek tıkla geri alabilirsiniz.
Özet
Claude Code, Swift ve iOS projelerinde terminal tabanlı doğrulamayı merkeze alarak hız kazandırır. CLAUDE.md ile bağlamı doğru kurun, küçük adımlarla planlı ilerleyin, her değişiklikte testleri çalıştırın ve diff’i inceleyin. Birden fazla ajan gerektiğinde AgentVera ile ayrı worktree’lerde paralel çalışarak riski dağıtabilirsiniz.