anastasiyaw/codex-claude-code-config/ios-development
Claude Code and agent skill by anastasiyaw/codex-claude-code-config
- community
Checking that the SKILL.md file is still in the repository.
Comprehensive iOS app development skill. Use this skill for ANY iOS-related task: writing Swift/SwiftUI/UIKit code, architecting apps, debugging crashes, setting up navigation, networking, data persistence, animations, performance optimization, App Store submission, Xcode configuration. Trigger when user mentions: iOS, Swift, SwiftUI, UIKit, Xcode, iPhone/iPad app, Combine, CoreData, SwiftData, MVVM, TCA, URLSession, async/await, @State/@Binding/@ObservableObject, NavigationStack, XCTest, TestFlight, provisioning profiles, or any Apple platform development. Always use this skill before writing iOS code or architecture. Do NOT use for web frontends (HTML/CSS/JS, React/Vue, browser UI) — even a WebView's page content is web work; use frontend-design for that. This skill is native Apple-platform code only.
Install
npx vskill@latest install anastasiyaw/codex-claude-code-config/ios-developmentSKILL.md
iOS Development Skill
Quick orientation
Before anything else, identify:
- UI framework → SwiftUI / UIKit / mixed?
- Architecture → MVVM / TCA / VIPER / Clean / MVC?
- iOS target → iOS 16 / 17 / 18? (affects API availability)
- Task type → new feature / debug / refactor / architecture / performance / release?
- Graphics intensity → стандартный UI / средняя 3D / тяжёлая графика / Metal?
Если задача связана с Metal, GPU, рендерингом, шейдерами, TBDR, MetalFX, GPU profiling, frame pacing, PSO, heaps, ICB, MTLIO → читать references/metal-graphics.md первым.
Then read the relevant reference file before writing code.
Reference files — read when needed
| Topic | File | When to read | |
|---|---|---|---|
| SwiftUI pipeline | references/swiftui.md | SwiftUI views, state, bindings, modifiers, animations | |
| UIKit pipeline | references/uikit.md | UIViewController, Auto Layout, delegates, storyboards | |
| Architecture | references/architecture.md | MVVM, TCA, VIPER, Clean, Coordinator | |
| Networking | references/networking.md | URLSession, async/await, REST/GraphQL, auth | |
| Data persistence | references/data.md | CoreData, SwiftData, UserDefaults, Keychain, FileManager | |
| Navigation | references/navigation.md | NavigationStack, Coordinator, deep links, sheets | |
| Performance | references/performance.md | Instruments, memory, launch time, rendering | |
| Metal & Heavy Graphics | references/metal-graphics.md | Metal, GPU рендер, TBDR, PSO/heaps/argument buffers, ICB, MTLIO, MetalFX, терморегуляция, профилирование GPU |
iOS version matrix (API availability)
| Feature | Min iOS | |
|---|---|---|
| SwiftUI | iOS 13 | |
async/await | iOS 15 | |
| NavigationStack | iOS 16 | |
| SwiftData | iOS 17 | |
@Observable macro | iOS 17 | |
| RippleEffect, ScrollView phases | iOS 18 |
Always check target before using newer APIs. Use #available guards for backward compatibility:
Core Swift patterns (always apply)
Concurrency — async/await first
Error handling — typed errors
Value types first
Prefer struct over class unless you need reference semantics, inheritance, or @Observable.
Architecture decision tree
State management quick reference
SwiftUI state hierarchy
iOS 17+ preferred (@Observable)
iOS 16 and below (ObservableObject)
Xcode & project setup checklist
New project:
- [ ] Set deployment target explicitly
- [ ] Enable Swift strict concurrency warnings (
SWIFT_STRICT_CONCURRENCY = complete) - [ ] Add
.gitignorefor Xcode (xcuserdata, DerivedData) - [ ] Configure signing (automatic vs manual)
- [ ] Set bundle ID and version/build numbers
Capabilities to enable when needed:
- Push Notifications → add
Push Notificationscapability - Background fetch →
Background Modes - iCloud/CloudKit →
iCloud - Sign in with Apple →
Sign In with Apple
Testing baseline
Common pitfalls
| Pitfall | Fix | |
|---|---|---|
| Purple warning: "Publishing changes from background thread" | Wrap in await MainActor.run { } or mark func @MainActor | |
| View re-renders too often | Audit @State/@Published — split large ViewModels | |
| Memory leak in closures | Use [weak self] captures in escaping closures | |
@StateObject recreated | Move object creation up the tree; don't init in body | |
| Keyboard covering text field | Use .ignoresSafeArea(.keyboard, edges: .bottom) or ScrollView | |
| Slow list | Use LazyVStack or List with id: stability | |
| Simulator ≠ device behavior | Always test on real device before submission | |
| Metal: CPU↔GPU stall | Triple buffer + DispatchSemaphore; никогда не ждать GPU синхронно в draw() | |
| Metal: PSO компилируется в рантайме | Создавать все PSO до первого кадра, кешировать | |
| Metal: лишние load/store | storeAction = .dontCare для transient (depth buffer) | |
| Metal: OOM jetsam | Мониторить currentAllocatedSize vs recommendedMaxWorkingSetSize; освобождать при warning | |
| Metal: статтер при загрузке | MTLIO + MTLSharedEvent вместо блокирующей загрузки; ODR для тяжёлых ассетов | |
| Metal: перегрев | Подписаться на thermalStateDidChangeNotification, адаптировать render scale + FPS |
Hardware budget ориентиры (GPU capability levels)
Планировать по capability-уровням, не под конкретную модель. Всегда включать adaptive quality.
| Уровень | SoC | Реалистичный target | Ключевые ограничения | |
|---|---|---|---|---|
| Широкий охват | A13–A15 (iPhone SE, 13, 14) | 30–60 FPS, агрессивный render scale | Строгий бюджет RT; MetalFX обязателен для сложных сцен | |
| Средний | A16 (iPhone 15), M1 | 60 FPS при хорошем пайплайне | MetalFX + динамический render scale | |
| Флагман | A17 Pro (iPhone 15 Pro), M3+ | 60–120 FPS, тяжёлые эффекты | Ray tracing (аппаратный); всё равно нужен thermal management |
Важно: даже флагманы упираются в термальную стабильность при длительной нагрузке, а не в пиковую мощность GPU.
App Store submission checklist
- [ ] Increment build number for every TestFlight upload
- [ ] Privacy manifest (
PrivacyInfo.xcprivacy) required for sensitive APIs - [ ] App icons all sizes provided (use Asset Catalog)
- [ ] Screenshots for all required device sizes
- [ ] Export compliance (encryption questions)
- [ ] App Review Information filled in
- [ ] No
UIRequiresFullScreen = NOwithout iPad support reasoning
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/ios/ios-development/SKILL.md
Popularity
- Repository stars
- 150
- Repository forks
- 24
- 7-day trend score
- 25
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/anastasiyaw/codex-claude-code-config/ios-development)