Communitygithub.com

nguyenthdat/opencode-manager

Project-scoped OpenCode TUI plugin for grouping and managing MCP servers, custom agent skills, and pinned vendor skill registries.

O que é opencode-manager?

opencode-manager is a OpenCode agent skill that project-scoped OpenCode TUI plugin for grouping and managing MCP servers, custom agent skills, and pinned vendor skill registries.

Funciona com~Claude Code~Codex CLI~CursorOpenCode
npx skills add nguyenthdat/opencode-manager

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

UniFFI

Use this skill for creating multi-language bindings from Rust to Kotlin and Swift. UniFFI generates a C-compatible FFI layer from Rust, then produces idiomatic foreign language bindings.

Working rules

  • Choose proc-macros for new projects. #[uniffi::export] is the modern, ergonomic approach. Use UDL files only for legacy or complex cross-crate scenarios.
  • The Rust crate must produce a cdylib. Set crate-type = ["cdylib"] in Cargo.toml. This is required for the shared library that Kotlin/Swift will load.
  • Call uniffi::setup_scaffolding!() in lib.rs or build.rs. Proc-macros need this macro invoked once in the crate. UDL-based setups call uniffi::include_scaffolding!() instead.
  • Use uniffi-bindgen to generate foreign code. Point it at the .udl file or the compiled cdylib (--library mode). Library mode is preferred for multi-crate projects.
  • Async Rust maps to Kotlin coroutines (Deferred) and Swift's async/await. Requires kotlinx-coroutines-core on Android.
  • Type mappings are automatic: Vec<T>List<T> (Kotlin) / [T] (Swift), HashMap<K,V>Map<K,V> / Dictionary<K,V>, Option<T>T?, StringString, Vec<u8>ByteArray / Data.
  • Check exact docs before complex types. Custom types, external types, and callback interfaces have specific requirements. Refer to the official docs.

First checks

cargo install uniffi_bindgen
uniffi-bindgen --version
cargo add uniffi --features cli

Pipeline overview

Rust source (proc-macros or UDL)
       │
       ▼
  uniffi::setup_scaffolding!()
       │
       ▼
  cargo build --release          →  lib<name>.so / .dylib
       │
       ▼
  uniffi-bindgen generate        →  <name>.kt / <name>.swift
       │
       ▼
  Kotlin / Swift consumer code

Pick the right reference

GoalRead
Project setup, Cargo.toml, build.rs, first scaffoldreferences/getting-started.md
Rust API: proc macros, UDL, types, objects, errors, asyncreferences/rust-api.md
Kotlin: bindings generation, Gradle, consumer code, coroutinesreferences/kotlin-bindings.md
Swift: bindings generation, iOS integration, consumer code, modulereferences/swift-bindings.md

Load only the relevant reference file before writing code.

Rust → Kotlin / Swift type map

RustKotlinSwift
boolBooleanBool
u8u64, i8i64UByteULong, ByteLongUInt8UInt64, Int8Int64
f32, f64Float, DoubleFloat, Double
StringStringString
Vec<T>List<T>[T]
HashMap<K,V>Map<K,V>Dictionary<K,V>
Option<T>T?T?
Vec<u8>ByteArrayData
()UnitVoid / ()
SystemTimejava.time.InstantDate
Durationjava.time.DurationTimeInterval

Habilidades Relacionadas