Skip to content
Back to skills

Swiftui Expert

ASecurity

Use when building, optimizing, and securing swiftui expert mobile interfaces, native bridges, touch gestures, and offline states.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agentsgoswiftbashnoderailstestingrefactoringapifrontendsecurity

Works with

  • terminal
  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add Harmitx7/tribunal-kit --skill swiftui-expert --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Swiftui Expert?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Swiftui Expert
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/harmitx7-swiftui-expert/badge)](https://www.skillsdirectory.com/skills/harmitx7-swiftui-expert)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: swiftui-expert
description: "Use when building, optimizing, and securing swiftui expert mobile interfaces, native bridges, touch gestures, and offline states."
version: 6.0.0
last-updated: 2026-09-29
skills:
  - mobile-design
  - building-native-ui
  - apple-design
tools: Read, Grep, Glob, Bash, Edit, Write
scripts-binding:
  - .agent/scripts/lint_runner.js
  - .agent/scripts/verify_all.js
---

# SwiftUI Expert β€” Native Apple Platforms Mastery

## Mandatory Pre-Flight Context Inspection
Before reading, generating, or refactoring code in the `swiftui-expert` domain, inspect these 5 critical parameters:
1. **System Boundaries & Dependencies**: Verify that all required dependencies exist in target package manifests and environment paths.
2. **Runtime Context & Platform Invariants**: Confirm target platform constraints (Node.js, Browser, Mobile OS, Edge runtime) before applying APIs.
3. **Execution Guardrails**: Identify potential side-effects, state mutations, and unhandled asynchronous exceptions.
4. **Validation & Type Contracts**: Validate input data schemas and strict type constraints across all module interfaces.
5. **Observability & Proof of Execution**: Ensure execution produces tangible verification signals (terminal output, tests, metrics).


## Activation Boundaries
- **Activate when:** Use when building, optimizing, and securing swiftui expert mobile interfaces, native bridges, touch gestures, and offline states.
- **DO NOT activate when:** The task falls outside the `swiftui-expert` domain or is managed by a different dedicated specialist agent.


## πŸ” Multi-Pass Execution Protocol

| Pass | Phase | Core Action | Adaptive Depth |
|:---|:---|:---|:---|
| **Pass 1** | **Understand** | Deconstruct the user's explicit objective, implicit requirements, and platform constraints. | Fast / Standard / Deep |
| **Pass 2** | **Plan** | Decompose task into smallest logical steps; map dependencies, affected files, and tool calls. | Standard / Deep |
| **Pass 3** | **Execute** | Implement solution with production-grade craft, zero placeholders, and strict typing. | All Modes |
| **Pass 4** | **Verify** | Run linters, unit tests, or compiler checks to validate structural correctness. | All Modes |
| **Pass 5** | **Attack & Falsify** | Perform adversarial search for edge-case failures, counterexamples, race conditions, and traps. | Standard / Deep |
| **Pass 6** | **Harden** | Eliminate discovered friction, optimize performance, and harden error boundaries. | Standard / Deep |
| **Pass 7** | **Quality Gate** | Enforce Verification-Before-Completion (VBC) with concrete terminal proof before finalizing. | All Modes |


---

## πŸ› οΈ Technical Architecture & Reference Recipes

## Hallucination Traps (Read First)

- ❌ Using `@State` for shared data between views -> βœ… `@State` is local to a view; use `@Binding`, `@Environment`, or `@Observable` for sharing
- ❌ Putting heavy computation in the `body` property -> βœ… `body` is called on EVERY re-render; move computation to `.task {}` or `onChange`
- ❌ `List { ForEach(items) { ... } }` without `id:` parameter -> βœ… Always provide `id:` for `Identifiable` conformance or use `\.self`
- ❌ Using `NavigationView` -> βœ… Deprecated in iOS 16+; use `NavigationStack` or `NavigationSplitView`

---
## 1. Modern State Management (iOS 17+ / Swift 5.9+)

Apple deprecated `@StateObject` and `@ObservedObject` in favor of the new `@Observable` macro.

```swift
// ❌ OLD WAY (Pre-iOS 17)
class UserProfile: ObservableObject {
    @Published var name: String = "Guest"
}
struct ProfileView: View {
    @StateObject var profile = UserProfile()
    // ...
}

// βœ… NEW WAY (iOS 17+ / @Observable)
import Observation

@Observable
class UserProfile {
    var name: String = "Guest"
    var age: Int = 0
    // No @Published needed! Only properties that are actually read
    // inside the body will trigger view updates.
}

struct ProfileView: View {
    // Treat the reference type exactly like a value type!
    @State private var profile = UserProfile()

    var body: some View {
        VStack {
            TextField("Name", text: $profile.name)
            Text("Hello, \(profile.name)")
        }
    }
}
```

### Property Data Flow Cheat Sheet

- `@State`: The view OWNS value (or reference if `@Observable`).
- `@Binding`: The view mutates a value OWNED by a parent.
- `@Environment`: The view reads value injected high up in the view hierarchy.
- `@Bindable`: Creates bindings from an `@Observable` model passed via parameters/environment.

---

## 2. View Architecture & Modifiers

SwiftUI Views should be impossibly small. Extract frequently.

```swift
// ❌ BAD: Massive body with 10 layers of nesting
struct MassiveView: View {
    var body: some View { ... }
}

// βœ… GOOD: Extract via properties, functions, or new View structs
struct CleanView: View {
    var body: some View {
        VStack {
            headerSection
            CustomScrollingList(items: data)
            footerSection
        }
    }

    private var headerSection: some View {
        Text("Header").font(.headline)
    }
}
```

### Modifier Ordering Matters

Modifiers wrap views sequentially. The order fundamentally changes the rendering.

```swift
// Padding BEFORE Background
Text("Hello")
    .padding()
    .background(Color.blue)
// Result: A large blue box with text inside.

// Padding AFTER Background
Text("Hello")
    .background(Color.blue)
    .padding()
// Result: A tight blue box around text, surrounded by invisible spacing.
```

---

## 3. Performance & Rendering

```swift
// ❌ BAD: Using indices in ForEach
// If the array mutates (items injected/deleted), SwiftUI loses
// track of identity and re-renders EVERYTHING aggressively.
ForEach(0..<items.count, id: \.self) { index in
    ItemRow(item: items[index])
}

// βœ… GOOD: Identifiable protocol
struct Item: Identifiable {
    let id = UUID()
    let title: String
}

ForEach(items) { item in
    ItemRow(item: item)
}
```

### Avoiding Massive Layout Recalculations

Use `LazyVStack` and `LazyHStack` inside ScrollViews when presenting large lists, but NOT everywhere. Normal `VStack` is faster for < 20 items because it pre-calculates boundaries instantly.

---

## 4. MVVM vs Context-Driven Architecture

While MVVM is historically popular, SwiftUI natively represents View-as-a-function-of-State.

```swift
// βœ… Context-Driven / Feature-Driven
// The Model handles data fetching/logic.
// The View creates its own local @State and passes @Bindings down.
// Only use full ViewModels for complex orchestration crossing multiple views.
```

## 🚨 Edge-Case & Failure Mode Matrix

| Scenario | Risk | Production Mitigation |
|:---|:---|:---|
| **Empty or Null Inputs** | Unhandled exception or unexpected rendering collapse | Enforce fallback guards, optional chaining, and explicit empty state handlers |
| **Network Timeout / Latency** | Hanging operations or duplicate side-effects | Implement bounded abort controllers, exponential backoff, and idempotency keys |
| **Concurrency / Race Conditions** | Stale state overwrite or inconsistent data mutations | Use atomic transactions, mutex locking, or cancel-on-resubmit controls |
| **Invalid Schema / Malformed Payload** | Downstream runtime errors or security injection | Validate boundary payloads with Zod/Pydantic schemas prior to execution |
| **Resource / Memory Saturation** | OOM errors, frame drops, or memory leaks | Clean up listeners, cancel active timers, and enforce pagination/virtualization |


## πŸ›οΈ Tribunal Verification & Guardrails

**Active Reviewers:** `mobile-reviewer` Β· `frontend-reviewer` Β· `type-safety`
**Slash Command:** `/review` or `/tribunal-full`

### πŸ”¬ Evidence Standard (Tri-State Verification)
Every finding, audit statement, or completion claim must classify its factual certainty:
- **`[OBSERVED]`**: Directly confirmed in the codebase or verified via executed terminal command.
- **`[INFERRED]`**: Logically deduced from code patterns, architectural data flow, or schema relations.
- **`[UNVERIFIED]`**: Speculative hypothesis or runtime possibility requiring active testing or measurement.

### βœ… Pre-Flight Self-Audit Checklist
```
βœ… Do touch targets satisfy the 44x44px minimum touch boundary standard?
βœ… Are gesture handlers and native animations offloaded via Reanimated worklets on the UI thread?
βœ… Are keyboard avoiding views, safe areas, and notch offsets handled?
βœ… Is offline storage and state hydration handled with optimistic sync?
βœ… Did I verify compatibility across iOS, Android, and varying screen densities?
```

### πŸ›‘ Verification-Before-Completion (VBC) Protocol
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
- βœ… **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing test suites, compiler success, or equivalent operational proof) that your output works as intended.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…