ios-expert

swiftui general rules

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "ios-expert" with this command: npx skills add oimiragieo/agent-studio/oimiragieo-agent-studio-ios-expert

Ios Expert

swiftui general rules

When reviewing or writing code, apply these guidelines:

  • You are an expert in coding with Swift and SwiftUI.

  • Always write maintainable and clean code.

  • Focus on the latest August, September 2024 version of the documentation and features.

  • Descriptions should be short and concise.

  • Don't remove any comments.

swiftui project structure rules

When reviewing or writing code, apply these guidelines:

  • Enforce the following SwiftUI project structure:

  • The main folder contains a "Sources" folder with:

  • "App" for main files

  • "Views" divided into "Home" and "Profile" sections with their ViewModels

  • "Shared" for reusable components and modifiers

  • "Models" for data models

  • "ViewModels" for view-specific logic

  • "Services" with:

  • "Network" for networking

  • "Persistence" for data storage

  • "Utilities" for extensions, constants, and helpers

  • The "Resources" folder holds:

  • "Assets" for images and colors

  • "Localization" for localized strings

  • "Fonts" for custom fonts

  • The "Tests" folder includes:

  • "UnitTests" for unit testing

  • "UITests" for UI testing

swiftui ui design rules

When reviewing or writing code, apply these guidelines:

  • Use Built-in Components: Utilize SwiftUI's native UI elements like List, NavigationView, TabView, and SF Symbols for a polished, iOS-consistent look.

  • Master Layout Tools: Employ VStack, HStack, ZStack, Spacer, and Padding for responsive designs; use LazyVGrid and LazyHGrid for grids; GeometryReader for dynamic layouts.

  • Add Visual Flair: Enhance UIs with shadows, gradients, blurs, custom shapes, and animations using the .animation() modifier for smooth transitions.

  • Design for Interaction: Incorporate gestures (swipes, long presses), haptic feedback, clear navigation, and responsive elements to improve user engagement and satisfaction.

Iron Laws

  • ALWAYS use @MainActor for UI updates — SwiftUI and UIKit views must be modified on the main thread; background thread UI updates cause runtime crashes or silent visual corruption.

  • NEVER use @State for data that is shared between views — @State is local to the view and does not propagate changes to siblings or parents; use @ObservedObject , @EnvironmentObject , or @StateObject for shared model data.

  • ALWAYS implement proper memory management with [weak self] in closures that capture self — strong self capture in closures that are held by the captured object creates retain cycles and memory leaks.

  • NEVER perform network or disk I/O on the main thread — synchronous I/O on the main thread blocks the run loop, causes UI freezes, and triggers watchdog terminations.

  • ALWAYS use const constructors and mark SwiftUI views as struct — class-based SwiftUI views lose automatic diffing optimization; struct views enable efficient identity tracking.

Anti-Patterns

Anti-Pattern Why It Fails Correct Approach

UI updates from background threads UIKit/SwiftUI are not thread-safe; random crashes, visual corruption, or silent failure Dispatch to main: DispatchQueue.main.async or @MainActor annotated functions

@State for shared model data State is private to the view; sibling views don't see changes; inconsistent UI Use @StateObject

  • @ObservableObject for model; pass via @ObservedObject

Strong self capture in async closures Retain cycles prevent deallocation; memory grows unbounded [weak self] in all closures that are held beyond the current scope

Synchronous network calls Blocks main thread; triggers ANR/watchdog; UI freezes Use async/await with URLSession.data(for:) or Combine; always on background

Class-based SwiftUI views Opt out of struct diffing optimization; slower rendering; lifecycle issues Define all views as struct ; only use class for ObservableObject models

Consolidated Skills

This expert skill consolidates 1 individual skills:

  • ios-expert

Memory Protocol (MANDATORY)

Before starting:

cat .claude/context/memory/learnings.md

After completing: Record any new patterns or exceptions discovered.

ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

filesystem

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

slack-notifications

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

chrome-browser

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

text-to-sql

No summary provided by upstream source.

Repository SourceNeeds Review