What problem does it solve? Hand-written C ABI boundaries between Rust and Swift fail in ways neither compiler catches: double releases, callbacks racing on non-Sendable boxes, panics aborting at extern "C" frames, and MainActor-isolated code running on Rust worker threads. This Skill defines the ownership, threading, and lifecycle contract that prevents those failures. ## Core Features & Use Cases - Boundary contract rules: Opaque handle types, symmetric allocator ownership with rs_buffer_t, explicit numeric error codes, and panic containment at every export. - Callback and concurrency model: One retained context per callback via Unmanaged, nonisolated Sendable boxes, @concurrent async wrappers, and non-blocking idempotent cancellation. - Verification evidence: Triage tables, Clang header checks, nm symbol audits, Swift consumer tests under Thread and Address Sanitizers, and Miri for the Rust side. - Use Case: When wrapping a Rust engine for an iOS app without UniFFI, use this Skill to define the C header, the Swift handle classes, and the AsyncStream progress bridge, then prove the boundary with sanitizer-backed consumer tests. ## Quick Start Ask the agent to review the ownership and threading contract of your hand-written Swift wrapper that calls Rust through a C ABI.