|
1 | 1 | # Swift Agent Team |
2 | 2 |
|
| 3 | +[](LICENSE) |
| 4 | +[](https://github.com/taylorarndt/swift-agent-team/stargazers) |
| 5 | +[](https://swift.org) |
| 6 | +[](https://developer.apple.com) |
| 7 | +[](https://docs.anthropic.com/en/docs/claude-code) |
| 8 | + |
3 | 9 | **A team of specialized Swift agents for Claude Code.** |
4 | 10 |
|
5 | 11 | Built by [Taylor Arndt](https://github.com/taylorarndt) for Swift developers who want AI that actually understands modern Swift. Swift 6.2 strict concurrency, Apple Foundation Models, on-device AI, SwiftUI best practices, and mobile accessibility -- enforced on every prompt. |
6 | 12 |
|
| 13 | +> Also from the author: **[A11y Agent Team](https://github.com/taylorarndt/a11y-agent-team)** — 19 accessibility agents for web development in Claude Code, GitHub Copilot, and Claude Desktop. |
| 14 | +
|
7 | 15 | ## The Problem |
8 | 16 |
|
9 | 17 | AI coding tools write Swift like it is 2020. They use ObservableObject when @Observable exists. They ignore actor isolation. They produce views with no accessibility modifiers. They have never heard of Apple Foundation Models or @Generable. They use Task.detached for no reason. They put heavy work on @MainActor. They write custom controls that VoiceOver cannot read. |
10 | 18 |
|
| 19 | +## Before / After |
| 20 | + |
| 21 | +**Without Swift Agent Team** — AI writes this: |
| 22 | + |
| 23 | +```swift |
| 24 | +class SettingsViewModel: ObservableObject { |
| 25 | + @Published var notifications = false |
| 26 | +} |
| 27 | + |
| 28 | +struct SettingsView: View { |
| 29 | + @StateObject var vm = SettingsViewModel() |
| 30 | + var body: some View { |
| 31 | + NavigationView { |
| 32 | + Toggle("Notifications", isOn: $vm.notifications) |
| 33 | + } |
| 34 | + } |
| 35 | +} |
| 36 | +``` |
| 37 | + |
| 38 | +**With Swift Agent Team** — AI writes this: |
| 39 | + |
| 40 | +```swift |
| 41 | +@Observable |
| 42 | +class SettingsViewModel { |
| 43 | + var notifications = false |
| 44 | +} |
| 45 | + |
| 46 | +struct SettingsView: View { |
| 47 | + @State private var vm = SettingsViewModel() |
| 48 | + var body: some View { |
| 49 | + NavigationStack { |
| 50 | + Toggle("Notifications", isOn: $vm.notifications) |
| 51 | + .accessibilityLabel("Push notifications") |
| 52 | + .accessibilityHint("Enables or disables push notifications for this app") |
| 53 | + } |
| 54 | + } |
| 55 | +} |
| 56 | +``` |
| 57 | + |
| 58 | +Modern `@Observable` instead of `ObservableObject`. `NavigationStack` instead of deprecated `NavigationView`. Accessibility labels and hints so VoiceOver users know what the toggle does. That is the difference. |
| 59 | + |
11 | 60 | ## The Solution |
12 | 61 |
|
13 | 62 | Swift Agent Team is a set of nine specialized agents plus a hook that evaluates every prompt. Each agent has deep knowledge of one domain and cannot forget it. The Swift Lead orchestrator coordinates the team and ensures the right specialists review every task. |
|
0 commit comments