This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Rust FFI library (bitkitcore) providing Bitcoin & Lightning functionality with UniFFI-generated bindings for iOS (Swift), Android (Kotlin), and Python.
cargo build # Rust library
./build.sh <ios|android|python|all> # Platform bindings
./build.sh -r --patch <target> # Bump version + build (--minor, --major)cargo test # All tests
cargo test modules::<module> # Single module (scanner, lnurl, onchain, activity, blocktank, trezor, pubky)cargo clippy # Lint
cargo fmt # Format RustAndroid bindings use ktlint via Gradle plugin (org.jlleitschuh.gradle.ktlint), excluding generated code.
src/lib.rs— UniFFI exports and module re-exportssrc/modules/— Core modules: scanner, lnurl, onchain, activity, blocktank, trezor, pubkybindings/— Platform-specific binding outputs (ios/, android/, python/)build.sh,build_ios.sh,build_android.sh,build_python.sh— Build scripts
- Version sync: Version must match across
Cargo.toml,Package.swift, andbindings/android/gradle.properties. Usebuild.sh -rto bump all three. - UniFFI: Public types exposed to bindings are declared in
src/lib.rs. Follow existing UniFFI patterns when adding new types. - Platform-specific deps: Trezor uses Bluetooth-only on iOS, USB+Bluetooth on other platforms (see
Cargo.tomltarget-specific dependencies). - Android build:
build_android.shtemporarily modifiesCargo.tomlcrate-type and removesexample/main.rsduring build — don't run concurrent builds.
- Branch naming:
feat/*,fix/*,chore/*