brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Use when writing Swift code for Apple platforms - iOS, macOS, visionOS. Covers Swift 6 concurrency, actors, Sendable, async/await, SwiftUI, MVVM architecture, Metal GPU programming, RealityKit ECS, visionOS scenes, interpolation/animation, advanced collection types, property
Claude Code
$ npx -y skills add piemonte/apple-engineer-superpowers --skill apple-engineer-superpowers --agent claude-code
Codex
$ npx skills add piemonte/apple-engineer-superpowers --skill apple-engineer-superpowers -a codex -y
Cursor
$ npx skills add piemonte/apple-engineer-superpowers --skill apple-engineer-superpowers -a cursor -y
Gemini CLI
$ npx skills add piemonte/apple-engineer-superpowers --skill apple-engineer-superpowers -a gemini-cli -y
GitHub Copilot
$ npx skills add piemonte/apple-engineer-superpowers --skill apple-engineer-superpowers -a github-copilot -y
OpenCode
$ npx skills add piemonte/apple-engineer-superpowers --skill apple-engineer-superpowers -a opencode -y
Windsurf
$ npx skills add piemonte/apple-engineer-superpowers --skill apple-engineer-superpowers -a windsurf -y
name: apple-engineer-superpowers description: Use when writing Swift code for Apple platforms - iOS, macOS, visionOS. Covers Swift 6 concurrency, actors, Sendable, async/await, SwiftUI, MVVM architecture, Metal GPU programming, RealityKit ECS, visionOS scenes, interpolation/animation, advanced collection types, property wrappers, Combine bridging, error handling, testing, and API design patterns.
Comprehensive Swift engineering standards for building production-quality Apple platform applications.
1. **No Force Unwrapping (`!`)** - Use `guard let`, `if let`, nil coalescing (`??`), or optional chaining. Never crash on nil. 2. **Actor-First Concurrency** - Use actors as the default for stateful components. Prefer actor isolation over manual locking. 3. **Async/Await Always** - Never use completion handlers in new code. Use `async throws` functions. 4. **Sendable Everything** - All shared types must conform to `Sendable`. All closures crossing concurrency boundaries must be `@Sendable`. 5. **Swift 6 Strict Concurrency** - Enable `StrictConcurrency` from the start. No data races. 6. **Protocol-Oriented Design** - Define contracts through protocols. Use dependency injection for testability. 7. **LocalizedError for Errors** - Domain-specific error enums conforming to `LocalizedError, Sendable`.
| Instead of | Use | |------------|-----| | `value!` | `guard let value else { return }` | | `string.data(using: .utf8)!` | `string.data(using: .utf8) ?? Data()` | | `url!` | `guard let url = URL(string: s) else { return }` | | `object.property!` | `object.property?.method()` or `if let prop = object.property { }` |
| Need | Use | |------|-----| | Stateful shared component | `actor` | | Simple value protection | `Mutex<State>` | | Low-level sync | `OSAllocatedUnfairLock` | | UI state management | `@MainActor` on ViewModels | | Progress/events stream | `AsyncStream` / `AsyncThrowingStream` | | Multi-subscriber broadcast | `AsyncBroadcastChannel` or `AsyncNotifier` |
| Scenario | Use | |----------|-----| | API service, data operations | `actor` | | ViewModel with `@Published` | `@MainActor final class: ObservableObject` | | Service with `@Published` properties Views observe | `@MainActor ObservableObject` (rare) | | Pure data model | `struct: Sendable` |
enum ServiceError: LocalizedError, Sendable {
case operationFailed(String)
var errorDescription: String? {
switch self {
case .operationFailed(let msg): return "Operation failed: \(msg)"
}
}
}| Pattern | Use | |---------|-----| | `func work() async throws -> T` | Standard async operation | | `func work() -> AsyncThrowingStream<Event, Error>` | Progress/event reporting | | `func work(progress: @Sendable (Float) -> Void) async throws -> T` | Simple progress callback |
| Need | Use | |------|-----| | Compute pipeline | `MTLComputePipelineDescriptor` + `device.makeComputePipelineState` | | Render pipeline | `MTLRenderPipelineDescriptor` + vertex/fragment functions | | Buffer management | `MetalBuffer<Element>` generic wrapper | | Multi-frame pipelining | Ring buffer (pool of 3) with `tick()` | | Texture from IOSurface | `device.makeTexture(descriptor:iosurface:plane:)` | | Threadgroup sizing | `min(elementCount, pipelineState.maxTotalThreadsPerThreadgroup)` |
| Need | Use | |------|-----| | Custom entity data | `struct: Component` | | Per-frame logic | `class: System` with scene subscriptions | | Show entities in SwiftUI | `RealityView { content in content.add(entity) }` | | Observe component changes | `entity.componentChangePublisher(T.self)` | | Full immersion | `ImmersiveSpace(id:) { }.immersionStyle(.full)` | | Multi-window | `WindowGroup(id:)` with `WindowPlacement` |
| Need | Use | |------|-----| | Smooth value tracking | `ExponentialDamper<T: Lerpable>` | | Generic interpolation | `Lerpable` protocol with `lerp(from:to:blend:)` | | Non-empty guarantee | `NonEmpty<C: Collection>` | | Enum-keyed storage | `Table<E: CaseIterable, V>` | | Multi-consumer async | `AsyncBroadcastChannel` with back-pressure | | Combine to async | `publisher.sinkSingleValue() async throws` | | Custom defaults | `@DefaultValue<T>` property wrapper |
The most comprehensive Apple platform engineering skill for AI coding assistants. ~100KB of production-tested patterns across Swift 6 concurrency, SwiftUI, Metal, RealityKit, and visionOS — areas no other skill covers in depth.
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.