What problem does it solve? Long-running Rust operations exposed to mobile apps through UniFFI often ship with mismatched error enums, progress streams that leak workers, and cancel calls that block the UI thread. This Skill treats the error taxonomy, progress stream, and cancellation protocol as one contract so Kotlin and Swift consumers get consistent, safe behavior. ## Core Features & Use Cases - Flat boundary error model: Defines a versioned flat_error UniFFI enum mapped to five native UX buckets, with exhaustive mappers that fail the build when bindings regenerate with new variants. - Progress streaming bridges: Provides callbackFlow with buffer(Channel.CONFLATED) on Kotlin and AsyncThrowingStream with .bufferingNewest(1) on Swift, plus a closed stage enum and determinism guarantees. - Cooperative cancellation: Implements a bounded job registry with pre-cancel reservations, TTL reaping, poison recovery, idempotent non-blocking cancel_job, and partial-output cleanup via temporary-file rename. - Use Case: When wiring a Rust export engine to an Android ViewModel and an iOS SwiftUI screen, use this Skill to ensure a cancelled job maps to CancellationException/CancellationError, leaves no partial file, and never hangs onCleared or deinit. ## Quick Start Ask the agent to review or design the error, progress, and cancellation contract for a UniFFI-exported long-running Rust call consumed from Kotlin or Swift.