Swift Expert
Swift/SwiftUI development: protocol-oriented programming, concurrency with async/await, Combine, UIKit interop, App Store submission, and iOS/macOS patterns.
A Swift expert covering protocol-oriented design, Swift concurrency (actors, async/await, TaskGroup), SwiftUI state management with @Observable, and UIKit interop via UIViewRepresentable. Guides App Store submission, handles provisioning profile issues, and optimizes app launch time and memory on constrained iOS devices.
Added Mar 20, 2026
$npx skills add johnefemer/skillfish --skill swift-expert What This Skill Can Do
Concrete capabilities you get when you install this skill.
Design protocol-oriented abstractions for testable, composable iOS code
Implement Swift concurrency with actors, async/await, and structured TaskGroup
Build SwiftUI views with @Observable, @Environment, and custom PreferenceKeys
Bridge UIKit and SwiftUI with UIViewRepresentable and UIHostingController
Diagnose and fix memory leaks with Xcode Instruments (Allocations, Leaks)
Navigate App Store submission, provisioning profiles, and TestFlight setup
Real Conversations
See how the Swift Expert skill responds to actual requests. These are representative examples of what your AI agent will produce.
I need a thread-safe in-memory cache for my iOS app that multiple Tasks can read from concurrently. Should I use NSCache, a dictionary with locks, or something else?
Use a Swift actor for the cleanest thread-safe cache. Actors serialize access automatically — no locks, no data races:
actor ImageCache {
private var storage: [URL: UIImage] = [:]
private let maxSize: Int
init(maxSize: Int = 200) {
self.maxSize = maxSize
}
func get(_ url: URL) -> UIImage? {
storage[url]
}
func set(_ image: UIImage, for url: URL) {
if storage.count >= maxSize {
// Simple eviction: remove first entry
storage.removeValue(forKey: storage.keys.first!)
}
storage[url] = image
}
}
// Usage from any async context
let cache = ImageCache()
func loadImage(url: URL) async throws -> UIImage {
if let cached = await cache.get(url) { return cached }
let (data, _) = try await URLSession.shared.data(from: url)
let image = UIImage(data: data)!
await cache.set(image, for: url)
return image
}
When to use NSCache instead: NSCache is better when you need automatic memory-pressure eviction (it clears itself when iOS is low on memory). The actor pattern above doesn't do that. Combine both: store in NSCache and wrap it in an actor for async access.
When to avoid: Don't wrap the actor in a singleton — inject it as a dependency for testability.
Get Started
How to install and use this skill in your preferred environment.
Skills are designed for AI coding agents (Claude Code, Cursor, Windsurf) and IDE-based workflows where the agent can read files, run scripts, and act on your codebase.
Models & Context
Which AI models and context windows work best with this skill.
Recommended Models
Claude Sonnet 4 or GPT-4o for Swift concurrency and SwiftUI. Verify iOS version-specific APIs (e.g., @Observable requires iOS 17) against Apple developer documentation.
Context Window
SKILL.md ~4KB. Fits comfortably in 32K context; large Xcode project refactors benefit from 64K+.
Pro tips for best results
Be specific
Include numbers — users, budget, RPS — so the skill can size the architecture.
Share constraints
Compliance needs, team size, and existing stack all improve the output.
Iterate
Start with a high-level design, then ask follow-ups for IaC, cost analysis, or security review.
Combine skills
Pair with companion skills below for end-to-end coverage.
Works Great With
These skills complement Swift Expert for end-to-end coverage. Install them together for better results.
Ready to try Swift Expert?
Install the skill and start getting expert-level guidance in your workflow — any agent, any IDE.
$npx skills add johnefemer/skillfish --skill swift-expert