uniffi-packaging-versioninglisted
Install: claude install-skill po4yka/rust-skills
# UniFFI Packaging and Versioning
This skill covers two jobs that must stay in step:
1. **Packaging.** Turn one Rust FFI crate into distributable native artifacts -
a `cdylib` `.so` per Android ABI, and a `staticlib`-based XCFramework for
Apple platforms.
2. **Versioning.** Keep the generated binding surface and the compiled library
at the same revision, so a bindings/library mismatch never reaches users.
Related skills: `uniffi-boundary` owns the exported API surface, type mapping,
and error taxonomy. `ffi-error-progress-cancel` owns callbacks, progress, and
cancellation across the boundary. `cargo-workflows` owns profiles, the toolchain
pin, and cross-compilation targets. `rust-android-build` and `rust-jni` cover
the wider Android native build. Use this skill for the artifact contract and the
compatibility rules between them.
---
## When to use this skill
- You add, rename, or remove any `#[uniffi::export]` function, record, enum, or
error variant.
- You ship a new version of the Rust core to an Android or iOS consumer.
- You investigate a `RustBuffer` deserialization panic, a "wrong number of
fields" error, or a checksum error at library load after a native update.
- You set up a fresh developer machine or CI runner to build native artifacts.
- You must decide whether an FFI change is source-compatible,
binary-compatible, or a breaking bump.
---
## The artifact contract
| Consumer | Rust crate type | Artifact | Generated glue |
|----------|---------