AgentSkillsCN

ios-stack

为 iOS 应用做出技术栈决策(SwiftUI、离线优先、推送通知),并在开始搭建或架构设计之前做好参考。

SKILL.md
--- frontmatter
name: ios-stack
description: Stack decisions for iOS apps (SwiftUI, offline-first, push notifications). Reference before scaffolding or architecture work.

Locked decisions

LayerDecision
DistributionApp Store (starting without developer program membership)
UISwiftUI
ArchitectureMVVM with lightweight service layer
ConcurrencySwift async/await
PersistenceSwiftData (offline-first)
NetworkingURLSession (scaffolded for future use)
PushStubbed until signing available
DependenciesMinimal; Swift Package Manager only if needed
Environmentslocal → non-prod → prod
Quality gatesStrict (tests required, SwiftLint enforced)

Project layout

code
MyApp/
  Features/               # Feature modules (View + ViewModel)
  UIComponents/           # Shared UI primitives
  Services/
    Persistence/          # PersistenceStore protocol + SwiftDataStore
    Notifications/        # Push handling (stubbed)
    Network/              # API client (scaffolded)
    Config/               # Environment configuration
  Infrastructure/         # Router, composition root
  Models/                 # SwiftData models
  Resources/              # Assets, strings

Key patterns

Environment switching

  • Environment.swift with .local, .nonProd, .prod cases
  • Resolved at build time via scheme + build configuration
  • API base URLs, feature flags per environment

Persistence boundary

  • PersistenceStore protocol defines all data operations
  • SwiftDataStore is the concrete implementation
  • ViewModels never touch SwiftData directly

Push notification stubbing

  • NotificationService exists with full interface
  • Permission requests return simulated success in local/non-prod
  • Token registration logs locally until signing available
  • Swap to real implementation when developer membership active

Reference

For versions, Xcode setup, and implementation patterns, see reference/ios-stack-reference.md