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.