Agent Skills: Actor Isolation Fixer

Fix Swift 6 actor isolation errors in Leavn app - deinit accessing @MainActor properties, nonisolated contexts, concurrent access violations

UncategorizedID: willsigmon/sigstack/actor-isolation-fixer

Install this agent skill to your local

pnpm dlx add-skill https://github.com/willsigmon/sigstack/tree/HEAD/ops/sigmachines/claude/skills/actor-isolation-fixer

Skill Files

Browse the full folder contents for actor-isolation-fixer.

Download Skill

Loading file tree…

ops/sigmachines/claude/skills/actor-isolation-fixer/SKILL.md

Skill Metadata

Name
actor-isolation-fixer
Description
Fix Swift 6 actor isolation errors in Leavn app - deinit accessing @MainActor properties, nonisolated contexts, concurrent access violations

Actor Isolation Fixer

Instructions

Fix actor isolation errors systematically:

  1. Error: "main actor-isolated property X cannot be accessed from nonisolated"

    • In deinit: Mark property as nonisolated(unsafe) private var
    • In closure: Add @MainActor to Task or use await MainActor.run { }
    • In method: Mark method @MainActor or nonisolated
  2. Common Leavn patterns:

    // Timer in @MainActor class deinit
    nonisolated(unsafe) private var timer: Timer?
    
    deinit {
        timer?.invalidate() // Safe - Timer.invalidate() is thread-safe
    }
    
    // Task property in @MainActor class
    nonisolated(unsafe) private var task: Task<Void, Never>?
    
    deinit {
        task?.cancel() // Safe - Task.cancel() is thread-safe
    }
    
  3. Don't use nonisolated(unsafe) for:

    • UI properties (views, layers)
    • Mutable state accessed across threads
    • Non-thread-safe types
  4. Safe to use nonisolated(unsafe) for:

    • Timers (invalidate is thread-safe)
    • Tasks (cancel is thread-safe)
    • Notification observers (removeObserver is thread-safe)

Use this skill when: Actor isolation errors, deinit cannot access properties, concurrent access violations