# GitHub Copilot CLI ile Swift ve iOS geliştirme rehberi

Adres: https://agentvera.dev/blog/copilot-cli-ile-swift/ · Yayın: 2026-11-01

GitHub Copilot CLI’yi Swift ve iOS projelerinde nasıl kullanacağınızı öğrenin: proje talimatları, çalışma döngüsü, test ve doğrulama ipuçları.

**Kısaca:**

- GitHub Copilot CLI, .github/copilot-instructions.md veya AGENTS.md ile Swift ve iOS projelerine özel kuralları öğrenir.
- Küçük adımlarla ilerleyip her değişiklikten sonra xcodebuild test veya swift test çalıştırmak güvenli bir döngü oluşturur.
- Xcode proje dosyası, imzalama ve strict concurrency konularında ajanın çıktısını dikkatle incelemek gerekir.

GitHub Copilot CLI’yi Swift ve iOS projelerinde doğrudan terminalden `copilot` komutuyla kullanabilirsiniz. Ajan, proje klasöründeki talimatları okur, dosyaları düzenler ve sizin onayınızla testleri çalıştırır. Bu rehberde kurulum, günlük döngü ve doğrulama adımlarını somut örneklerle ele alıyorum.

## Neden GitHub Copilot CLI Swift ve iOS işlerine uyar

Swift ve iOS projeleri Xcode’un arayüzüne bağımlı görünse de terminal tarafında xcodebuild, simctl, swift test ve linter’lar güçlü araçlar vardır. [GitHub Copilot CLI](/ajanlar/copilot-cli/) bu araçları proje kökünde çalıştırarak diff üretir; böylece UIKit veya SwiftUI değişikliklerini uygulamadan önce görebilirsiniz. Ajan, async/await dönüşümlerinde, XCTest hedeflerinde ve katmanlar arası bağımlılıklarda proje bağlamını dosyalardan okur. Özellikle birden çok hedefi olan veya SPM ile Xcode projesini birleştiren yapılarda, komut satırı üzerinden tekrar eden işleri hızlandırır. `xcodebuild -list` ile şemaları listeleyebilir, `xcrun simctl list devices` ile mevcut simülatörleri görebilir; ajan bu komutların çıktısını kullanarak doğru hedefi seçer. Xcode GUI’sini açmadan build ve test döngüsü kurmak, özellikle CI veya uzak sunucularda çalışırken avantaj sağlar. Ajan her değişiklikte size diff gösterir ve onayınızı bekler; bu da yanlış bir UIKit dönüşümü veya yanlış deployment target ayarını daha erken fark etmenizi sağlar. Daha geniş bir kullanım rehberi için [GitHub Copilot CLI nasıl kullanılır?](/blog/copilot-cli-nasil-kullanilir/) sayfasına bakabilirsiniz.

## Projeyi ajan için hazırlama

GitHub Copilot CLI, .github/copilot-instructions.md veya AGENTS.md dosyasındaki talimatları her oturumda okur. Bu dosyayı kısa, kesin ve Swift/iOS’e özgü tutun; ajanın bağlamına eklenir. Aşağıda gerçekçi bir örnek var:

```
# Swift ve iOS proje talimatları

## Komutlar
build: xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 16' build
test: xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 16' test
unit: swift test
lint: swiftlint --strict
format: swiftformat .

## Klasör yapısı
App/       # SwiftUI view'lar ve UIKit view controller'lar
Core/      # Servisler, modeller, protokoller; UIKit veya SwiftUI import etme
Tests/     # XCTest birim ve UI testleri

## Kurallar
- Core katmanı yalnızca Foundation ve Swift standart kütüphanesini kullanır.
- async/await kullan; completion handler yalnızca eski API gerektiriyorsa.
- UIKit view controller'larında ağır işleri viewDidLoad içinde yapma; Task { @MainActor in ... } kullan.
- Yeni dosya eklerken Xcode proje dosyası güncellemesini açıkla; asla elle pbxproj düzenleme.
- Swift 6 dil modunda strict concurrency geçerli; @MainActor ve Sendable uyumunu kontrol et.
- UI testleri için accessibilityIdentifier kullan; metne göre arama yapma.
```

Bu komutlar ajanın terminalde doğru aracı seçmesini sağlar. Klasör yapısı, bağımlılık yönünü netleştirir: Core katmanı UIKit veya SwiftUI import etmez, böylece test edilebilirlik artar. pbxproj dosyasının elle düzenlenmemesi kuralı kritiktir; ajan yeni bir Swift dosyası eklediğinde onu Xcode projesine eklemek için `xcodegen` veya benzeri bir araç kullanılmasını isteyebilir veya size dosyayı manuel eklemenizi söyler. Strict concurrency kuralı, Swift 6 ile gelen hataları önler. UI testlerinde erişilebilirlik tanımlayıcıları kullanmak, testlerin kararlılığını artırır. İyi bir talimat dosyası yazmak için [CLAUDE.md nasıl yazılır?](/blog/claude-md-nasil-yazilir/) rehberindeki genel ilkeler Swift projesine uyarlanabilir.

## Çalışma döngüsü ve örnek prompt’lar

Ajanla çalışırken küçük adımlar atın. Önce plan isteyin, sonra uygulama, ardından test çalıştırıp diff’i inceleyin. Döngü şöyle işler:

1. Mevcut kodu özetletin ve değişiklik planı isteyin.
2. Tek bir değişiklik yapmasını isteyin.
3. Ajanın ürettiği diff’i inceleyin; özellikle proje dosyası, Info.plist ve imzalama ayarlarına dikkat edin.
4. `xcodebuild test` veya `swift test` çalıştırmasını söyleyin.
5. Başarısız test varsa ajan düzeltsin.
6. Commit mesajı üretmesini isteyin.

Her adımda ajan size ne yapacağını söyler; onayınız olmadan dosyaları değiştirmez. Çalışma ağacınızı temiz tutun ve her görev için ayrı bir git branch açın; böylece beğenmediğiniz değişiklikleri geri almak kolay olur. Diff’i incelerken Swift’e özgü olarak şunlara bakın: `@MainActor` eklenmiş mi, `Sendable` ihlalleri var mı, closure retain cycle’ı oluşmuş mu, optional unwrapping güvenli mi. Ayrıca storyboard veya xib dosyalarında yapılan değişiklikleri XML diff olarak inceleyin.

Tipik Swift/iOS görevleri için örnek prompt’lar:

- "Bu UITableViewController’ı modern diffable data source kullanacak şekilde yeniden yaz; mevcut hücre sınıflarını koru ve kodu async/await’e uygun hale getir."
- "Bu SwiftUI view’ında butona basınca URLSession ile veri çeken bir işlev ekle; @MainActor ile işaretle ve hata durumunu alert ile göster."
- "CoreData modeline yeni bir 'lastSyncDate' alanı ekle, migration policy’si olmadan hafif migration kullan, ve ilgili fetch request’i güncelle."
- "Bu XCTest sınıfına ağ servisi için async test ekle; mock URLProtocol kullan ve beklentileri doğrula."
- "Storyboard’daki bir ekranı programatik UIKit ile yeniden oluştur; Auto Layout kısıtlamalarını NSLayoutConstraint ile yaz ve safe area’ya uy."

## Ajanın iyi olduğu işler ve dikkat edilecekler

Ajan, SwiftUI view’larını refactor etmek, Swift concurrency dönüşümü, XCTest yazmak, model katmanını güncellemek, linter uyarılarını temizlemek gibi işlerde iyidir. Özellikle async/await geçişlerinde closure zincirlerini çözmede faydalıdır.

| Görev | İyi prompt |
|-------|-----------|
| SwiftUI view refactor | "Bu view’ı küçük alt view’lara böl ve environment object kullanarak bağımlılıkları geçir." |
| Async/await dönüşümü | "completion handler’lı bu fonksiyonu async throws olarak yeniden yaz, çağıran yerleri güncelle." |
| XCTest ekleme | "Bu ViewModel için temel birim testleri yaz; bağımlılıkları protocol ile soyutla." |
| UIKit’tan SwiftUI’ye köprü | "Bu UIViewController’ı UIViewControllerRepresentable ile SwiftUI’ye sarmala." |

Dikkat edilmesi gerekenler: Xcode proje dosyası (pbxproj) elle düzenlenmemeli; ajan bazen target membership’i atlar, yeni dosya eklerken projeye eklemeyi unutabilir. Kod imzalama ve provisioning profillerinde değişiklik yapmasına izin vermeyin. Swift strict concurrency hatalarını yanlış çözebilir; @unchecked Sendable ekleyerek geçiştirmesine karşı kodu inceleyin. UIKit arayüz kodunda autoresizing mask ile Auto Layout karışıklığı olabilir. UI testlerinde erişilebilirlik tanımlayıcıları yoksa metne göre arama yapabilir, bu kırılgandır. Ayrıca asset catalog değişikliklerinde (renk, resim ekleme) ajan dosyayı doğru güncelleyemeyebilir; bu durumda Xcode’da manuel ekleme gerekebilir. Core Data model değişikliklerinde model sürümü oluşturmak yerine mevcut modeli değiştirirse migration hatası alırsınız. SwiftUI preview provider’ları ajan tarafından eklenebilir, ancak preview’lar derleme süresini uzatabilir; sadece ihtiyaç varsa eklemesini isteyin.

## Test ve doğrulama

Ajanın ürettiği kodu her zaman testlerle doğrulayın. Terminalde `xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 16'` veya SPM için `swift test` çalıştırın. Ajanın testleri kendisinin çalıştırmasına izin verin ama sonuçları siz yorumlayın. Özellikle async testlerde beklenti timeout sürelerini kontrol edin; yavaş CI’da yanlış negatif sonuçlar olabilir. UI testleri için simülatörü önceden başlatın (`xcrun simctl boot "iPhone 16"`). Ajan, test başarısızsa düzeltmeler önerebilir, ancak testin kendisini zayıflatmadığından emin olun. Kod kapsamı için `xcodebuild test -enableCodeCoverage YES` kullanabilirsiniz. Ayrıca `swiftlint` çalıştırarak stil sorunlarını yakalayın. Daha hızlı iterasyon için `xcodebuild test-without-building` komutunu kullanabilirsiniz. Belirli testleri çalıştırmak için `-only-testing:MyAppTests/MyViewModelTests` parametresini ekleyin. Test sonuçlarını bir result bundle’a yazmak (`-resultBundlePath /tmp/MyAppTests.xcresult`) ajanın sonuçları daha kolay yorumlamasını sağlar. UI testlerinde erişilebilirlik tanımlayıcılarını tutarlı kullanın; ajanın eklediği testlerde bu kurala uyulduğunu doğrulayın.

## Birden çok ajanla çalışma: AgentVera

AgentVera, GitHub Copilot CLI gibi ajanların gerçek komut satırı araçlarını aynı pencerede yan yana çalıştırır. Swift ve iOS projesinde paralel işler için kullanışlıdır: her ajan kendi git worktree’sinde çalışabildiği için bir ajan UIKit refactor yaparken diğeri SwiftUI ekranı üzerinde çalışabilir. Dönüş sonunda otomatik kod incelemesi, değişiklikleri dosya:satır düzeyinde gösterir; bu, Xcode proje dosyasındaki riskli değişiklikleri hızlı yakalamanızı sağlar. Token bütçeleri ve checkpoint’ler sayesinde yanlış giden bir adımı geri alabilir ve oturumu adım adım yeniden oynatabilirsiniz. Özellikle birden çok hedefi olan büyük Swift projelerinde bu kontrol mekanizmaları güvenli paralellik sağlar.

## Sonuç

GitHub Copilot CLI, doğru proje talimatları ve disiplinli bir döngü ile Swift ve iOS geliştirmeyi hızlandırır. Küçük adımlar, sürekli test ve diff incelemesi başarının anahtarıdır. Ajanın güçlü olduğu refactor ve test işlerini kullanın, ancak proje yapılandırması, imzalama ve concurrency konularında kontrolü elden bırakmayın. Talimat dosyanızı güncel tuttukça ajan projenize daha iyi uyum sağlar.

## Sık sorulanlar

**GitHub Copilot CLI Swift ve iOS projelerinde Xcode olmadan çalışabilir mi?** Evet, terminalden xcodebuild, simctl ve swift test kullanarak çalışır. Ancak cihazda çalıştırma, imzalama ve bazı UI düzenlemeleri için Xcode gerekebilir.

**GitHub Copilot CLI için Swift projesine hangi talimatları eklemeliyim?** Build, test ve lint komutlarını, klasör düzenini, async/await ve MainActor kurallarını içeren kısa bir AGENTS.md veya copilot-instructions.md ekleyin. Ajan bu dosyayı her oturumda okur.

**GitHub Copilot CLI UIKit’ten SwiftUI’ye geçişi güvenli yapar mı?** Parça parça dönüşümlerde iyi çalışır; view controller mantığını view model’e taşıyabilir. Ancak storyboard/xib bağlantıları, segue’ler ve target membership değişikliklerini siz kontrol etmelisiniz.

**GitHub Copilot CLI ile iOS testleri nasıl çalıştırılır?** Proje talimatlarına xcodebuild test veya swift test komutlarını yazın. Ajan bu komutları çalıştırır, sonuçları yorumlar ve başarısız testler için düzeltme önerir.

---

**AgentVera hakkında.** AgentVera, Solviera Teknoloji tarafından geliştirilen macOS, Windows ve Linux masaüstü uygulamasıdır. 18 yapay zeka kodlama ajanını (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) proje bazında, gerçek terminallerde ve kullanıcının kendi CLI kurulum ve girişleriyle yan yana çalıştırır. Ücretsiz planda sınırsız ajan vardır. İndir: https://agentvera.dev/indir/ · Fiyatlar: https://agentvera.dev/fiyatlar/
