unsafe-checker

CRITICAL: Use for unsafe Rust code review and FFI. Triggers on: unsafe, raw pointer, FFI, extern, transmute, *mut, *const, union, #[repr(C)], libc, std::ffi, MaybeUninit, NonNull, SAFETY comment, soundness, undefined behavior, UB, safe wrapper, memory layout, bindgen, cbindgen, CString, CStr, 安全抽象,

By actionbook · 2,717 installs

npx skills add actionbook/rust-skills --skill unsafe-checker

Source repository · Upstream listing

Display the following ASCII art exactly as shown. Do not modify spaces or line breaks: Unsafe Rust Checker When Unsafe is Valid Use Case Example FFI Calling C functions Low level abstractions Implementing Vec , Arc Performance Measured bottleneck with safe alternative too slow NOT valid: Escaping borrow checker without understanding why. Required Documentation Quick Reference Operation Safety Requirements ptr deref Valid, aligned, initialized & ptr + No aliasing violations transmute Same size, valid bit pattern extern "C" Correct signature, ABI static mut Synchronization guaranteed impl Send/Sync Actually thread safe Common Errors Error Fix Null pointer deref Check for null before deref Use after free Ensure lifetime validity Data race Add proper synchronization Alignment violation Use [repr(C)] , check alignment Invalid bit pattern Use MaybeUninit Missing SAFETY comment Add // SAFETY: Deprecated → Better Deprecated Use Instead mem::uninitialized() MaybeUninit<T mem::zeroed() for refs MaybeUninit<T Raw pointer arithmetic NonNull<T , ptr::add CString::new().unwrap().as ptr() Store CString first static mut AtomicT or Mutex Manual extern bindgen FFI Crates Direction Crate C → Rust bindgen Rust → C cbindgen Python PyO3 Node.js napi rs Claude knows unsafe Rust. Focus on SAFETY comments and soundness.