Odin Native
Odin Native from OutlineDriven/odin-claude-plugin.
Skills in this plugin
118- ▌ Cross Gcc · outlinedriven-odin-claude-plugin bundleUse when compiling for ARM, AArch64, RISC-V, or MIPS from x86-64 with a GCC cross toolchain: triplets, sysroots, pkg-config, CMake toolchain files, QEMU. Not for Zig: use zig-cross.
- ▌ Ebpf Rust · outlinedriven-odin-claude-plugin bundleUse when writing eBPF programs in Rust with aya-ebpf and aya-log, declaring maps, sharing them with a tokio user-space loader, or debugging an Aya load failure. Not for C and libbpf: use ebpf.
- ▌ Hare Lang · outlinedriven-odin-claude-plugin bundleUse when building or evaluating a Hare program: hare build, run, or test, tagged-union error handling, or calling C through bodyless fn declarations and -l. Not for Zig or C: use zig-cinterop or gcc.
- ▌ Heaptrack · outlinedriven-odin-claude-plugin bundleUse when tracking heap allocations on Linux with heaptrack: allocation hotspots, peak heap, temporary allocations, leaks, or a diff of two runs via heaptrack_print. Not for heap errors: use valgrind.
- ▌ Core Dumps · outlinedriven-odin-claude-plugin bundleUse when loading core files in GDB or LLDB, enabling core dump generation via ulimit or coredumpctl, mapping symbols with debuginfod, or extracting backtraces from production segfaults.
- ▌ Linux Perf · outlinedriven-odin-claude-plugin bundleUse when collecting sampling profiles with perf record, reading perf report or perf annotate, or measuring counters with perf stat on Linux. Not for SVG rendering: use flamegraphs.
- ▌ Rdma Verbs · outlinedriven-odin-claude-plugin bundleUse when programming InfiniBand or RoCE with libibverbs: device setup, memory registration, queue pairs, send/recv or RDMA write, completion polling, or perftest benchmarks. Not for MPI: use mpi.
- ▌ Rust Cross · outlinedriven-odin-claude-plugin bundleUse when building Rust binaries for a different target architecture or OS, using cross or cargo-zigbuild, configuring .cargo/config.toml, or targeting embedded bare-metal.
- ▌ Sanitizers · outlinedriven-odin-claude-plugin bundleUse when enabling or interpreting ASan, UBSan, TSan, MSan, LSan, or HWASan with GCC or Clang, or reading sanitizer reports. Not for fuzz target setup: use fuzzing.
- ▌ Carbon Lang · outlinedriven-odin-claude-plugin bundleUse when evaluating Carbon for a C++ code base, running the carbon toolchain from a nightly or Bazel build, or comparing Carbon with staying on C++. Not for C++ modules: use cpp-modules.
- ▌ Conan Vcpkg · outlinedriven-odin-claude-plugin bundleUse when adding C/C++ dependencies with Conan or vcpkg, managing binary compatibility, integrating with CMake via conanfile.txt or vcpkg.json, or choosing between Conan and vcpkg.
- ▌ Cpp Modules · outlinedriven-odin-claude-plugin bundleUse when a C++ project adopts C++20 modules: named modules, partitions, header units, the global module fragment, CMake CXX_MODULES, or a BMI lookup error. Not for flag basics: use clang.
- ▌ Device Tree · outlinedriven-odin-claude-plugin bundleUse when writing DTS/DTSI, bindings, overlays, phandles, or debugging OF platform probe failures. Not for probe and remove code: use platform-device-model.
- ▌ Flamegraphs · outlinedriven-odin-claude-plugin bundleUse when turning perf, DTrace, pprof, or async-profiler stacks into an SVG flamegraph with the FlameGraph scripts, reading one, or diffing two profiles. Not for collecting data: use linux-perf.
- ▌ Linkers Lto · outlinedriven-odin-claude-plugin bundleUse when choosing a linker, fixing link order or undefined symbol errors, enabling LTO or ThinLTO, or cutting dead code with --gc-sections. Not for inspecting the linked binary: use elf-inspection.
- ▌ Llvm Passes · outlinedriven-odin-claude-plugin bundleUse when writing an LLVM pass plugin, registering it for opt -passes, using DominatorTree or LoopInfo, or testing with FileCheck and lit. Not for reading IR: use llvm-ir-and-passes.
- ▌ Rust No Std · outlinedriven-odin-claude-plugin bundleUse when writing #![no_std] Rust crates, using core and alloc without std, selecting panic handlers, or testing no_std code on the host.
- ▌ Rust Unsafe · outlinedriven-odin-claude-plugin bundleUse when writing, reviewing, or auditing unsafe Rust, or understanding raw pointers, transmute, UnsafeCell, and safe abstractions over unsafe code.
- ▌ Triton Lang · outlinedriven-odin-claude-plugin bundleUse when writing Triton kernels with @triton.jit, tl.load and tl.store with masking, tl.atomic_add, autotuning, benchmarking, or integrating kernels into PyTorch. Not for raw CUDA: use cuda.
- ▌ Zig Testing · outlinedriven-odin-claude-plugin bundleUse when writing or running Zig tests: test blocks, zig test, filters, std.testing assertions, the leak-detecting allocator, comptime tests, or the fuzzer. Not for build.zig: use zig-build-system.
- ▌ Assembly Arm · outlinedriven-odin-claude-plugin bundleUse when reading or writing AArch64 or AArch32 Thumb assembly, inline asm in C, AAPCS64 register roles, or NEON and SVE vector code. Not for ABI detail across ISAs: use abi-and-calling-conventions.
- ▌ Assembly X86 · outlinedriven-odin-claude-plugin bundleUse when reading GCC or Clang x86-64 assembly, writing inline asm, decoding AT&T syntax, or applying System V AMD64 register rules. Not for SIMD intrinsic selection: use simd-intrinsics.
- ▌ Dwarf Expert · outlinedriven-odin-claude-plugin bundleUse when inspecting, searching, verifying, or parsing DWARF debug info: DIEs, DW_TAG_/DW_AT_ entries, .debug_* sections, line tables, or llvm-dwarfdump/readelf output.
- ▌ Interpreters · outlinedriven-odin-claude-plugin bundleUse when designing bytecode dispatch loops, choosing stack or register VM shapes, adding inline caches, or building a first JIT with mmap. Not for a language toolchain: use compiler-frontend.
- ▌ Memory Model · outlinedriven-odin-claude-plugin bundleUse when choosing memory orderings for C++ or Rust atomics, reasoning about happens-before, writing lock-free patterns, or diagnosing data races. Not for lock-based design: use kernel-concurrency.
- ▌ Openocd Jtag · outlinedriven-odin-claude-plugin bundleUse when configuring OpenOCD for a JTAG or SWD target, flashing through it, attaching GDB to a bare-metal MCU, or setting hardware breakpoints and watchpoints. Not for probe-rs: use embedded-rust.
- ▌ Rustc Basics · outlinedriven-odin-claude-plugin bundleUse when selecting RUSTFLAGS, configuring Cargo profiles, tuning release builds, reading assembly or MIR output, understanding monomorphization, or diagnosing compilation errors.
- ▌ Zig Cinterop · outlinedriven-odin-claude-plugin bundleUse when Zig code calls C or C code calls Zig: @cImport, translate-c, C type mapping, extern and packed structs, export fn, opaque handles, or a mixed C and Zig build. Not for Rust FFI: use rust-ffi.
- ▌ Zig Compiler · outlinedriven-odin-claude-plugin bundleUse when invoking zig directly: build-exe, build-lib, optimize modes, zig cc as a C compiler, emit flags, ast-check, fmt, or a Zig compile error. Not for build.zig projects: use zig-build-system.
- ▌ Zig Comptime · outlinedriven-odin-claude-plugin bundleUse when Zig code needs compile-time evaluation: comptime parameters, generic types, anytype, @typeInfo reflection, comptime tables, or a ported C++ template pattern. Not for C++: use cpp-templates.
- ▌ Apple Silicon · outlinedriven-odin-claude-plugin bundleUse when tuning or profiling native code on Apple M-series Macs: unified memory, 16 KiB pages, Accelerate and Metal for matrix work, xctrace and leaks, Rosetta 2, or sysctl hardware queries.
- ▌ Cpp Templates · outlinedriven-odin-claude-plugin bundleUse when a C++ template error needs decoding, a template needs a concept or requires-clause instead of SFINAE, or template instantiation is slowing compilation. Not for C++20 modules: use cpp-modules.
- ▌ Cpu Cache Opt · outlinedriven-odin-claude-plugin bundleUse when diagnosing cache misses with perf, fixing false sharing, choosing AoS or SoA layout, or adding software prefetch. Not for cache theory: use memory-hierarchy-and-caches.
- ▌ Dma Baremetal · outlinedriven-odin-claude-plugin bundleUse when configuring DMA channels, circular buffer mode, double buffering, memory-to-peripheral transfers, or DMA IRQ completion on bare-metal MCUs. Not for cache theory: use cpu-cache-opt.
- ▌ Embedded Rust · outlinedriven-odin-claude-plugin bundleUse when writing no_std Cortex-M or RISC-V firmware in Rust with cortex-m-rt, probe-rs, defmt, RTIC, or a panic handler. Not for no_std library constraints: use rust-no-std.
- ▌ Production Go · outlinedriven-odin-claude-plugin bundleUse when writing, reviewing, debugging, or architecting Go code. Routes by project type and topic to conventions and reference chapters, then verifies with toolchain gates and unseen behavioral tests.
- ▌ Rust Security · outlinedriven-odin-claude-plugin bundleUse when auditing Rust dependencies for vulnerabilities, enforcing license and source policies with cargo-deny, reviewing RUSTSEC advisories, or fuzzing and testing unsafe code for security.
- ▌ Strace Ltrace · outlinedriven-odin-claude-plugin bundleUse when a binary misbehaves without crashing and the question is which file, socket, syscall, or library call fails: strace for syscalls, ltrace for library calls. Not for stepping: use gdb.
- ▌ Wasm Wasmtime · outlinedriven-odin-claude-plugin bundleUse when running WASM with the wasmtime CLI, embedding wasmtime in Rust, limiting execution with fuel, or building WASI preview2 components. Not for browser targets: use wasm-emscripten.
- ▌ Zig Debugging · outlinedriven-odin-claude-plugin bundleUse when a Zig program panics, returns an error trace, or needs stepping in GDB or LLDB, print or std.log tracing, or a comptime value printed. Not for compiler flags: use zig-compiler.
- ▌ Assembly Riscv · outlinedriven-odin-claude-plugin bundleUse when reading or writing RV32/RV64 assembly, inline asm in C, the RISC-V psABI, IMAFD extension naming, compressed instructions, or QEMU RISC-V debugging.
- ▌ Cpp Coroutines · outlinedriven-odin-claude-plugin bundleUse when working with C++20 co_await, co_yield, and co_return, implementing promise_type, sizing coroutine frames, or debugging suspended coroutines in GDB. Not for Rust async: use idiomatic-rust.
- ▌ Cuda Debugging · outlinedriven-odin-claude-plugin bundleUse when debugging CUDA with cuda-gdb or Compute Sanitizer, reading GPU core dumps, using device printf, or triaging error codes 700, 701, 702, and 719. Not for performance: use cuda-profiling.
- ▌ Cuda Profiling · outlinedriven-odin-claude-plugin bundleUse when profiling CUDA with Nsight Systems or Nsight Compute, reading roofline and occupancy metrics, or annotating phases with NVTX. Not for correctness: use cuda-debugging.
- ▌ Device Drivers · outlinedriven-odin-claude-plugin bundleUse when writing or fixing a Linux device driver: platform/i2c/spi probe and remove, char device lifecycle, threaded IRQs, DMA mappings, regmap, runtime PM, or udev rules.
- ▌ Elf Inspection · outlinedriven-odin-claude-plugin bundleUse when examining ELF binaries with readelf, objdump, nm, or ldd: dependencies, symbols, sections, relocations, build IDs, or hardening. Not for modifying binaries: use binutils.
- ▌ Gpio Baremetal · outlinedriven-odin-claude-plugin bundleUse when configuring GPIO modes, alternate functions, pull resistors, or EXTI interrupts on STM32/nRF/ESP32-class MCUs. Not for register access rules: use mmio-and-bit-manipulation.
- ▌ Idiomatic Rust · outlinedriven-odin-claude-plugin bundleUse when writing, reviewing, or refactoring Rust code. Routes the task to handbook chapters on idioms, lints, errors, testing, generics, and pointers under the edition 2024 and current-stable pins.
- ▌ Kernel Testing · outlinedriven-odin-claude-plugin bundleUse when writing KUnit tests, adding kselftest cases, fuzzing syscalls with syzkaller and kcov, running LTP, or wiring CI for a kernel patch.
- ▌ Linker Scripts · outlinedriven-odin-claude-plugin bundleUse when writing a GNU ld script for a bare-metal target, placing code in a flash or RAM region, wiring .data and .bss startup, or fixing a region overflowed error. Not for LTO: use linkers-lto.
- ▌ Os Dev Scratch · outlinedriven-odin-claude-plugin bundleUse when building a minimal x86-64 OS: boot protocols, long mode, page tables, IDT, PIC/APIC, serial and keyboard drivers, frame allocator, or context switching.
- ▌ Rust Debugging · outlinedriven-odin-claude-plugin bundleUse when debugging Rust binaries with GDB or LLDB, enabling pretty-printers, interpreting panics and backtraces, debugging async with tokio-console, or stepping through no_std code.
- ▌ Rust Profiling · outlinedriven-odin-claude-plugin bundleUse when profiling Rust binaries with flamegraphs, cargo-bloat, cargo-llvm-lines, Criterion, perf, heaptrack, or DHAT.
- ▌ Cargo Workflows · outlinedriven-odin-claude-plugin bundleUse when managing Cargo workspaces, feature flags, build scripts, CI caching, dependency auditing, or Cargo.lock with Rust.
- ▌ Dynamic Linking · outlinedriven-odin-claude-plugin bundleUse when debugging shared library load failures, setting RPATH or RUNPATH, applying soname versioning, writing dlopen plugins, or intercepting with LD_PRELOAD. Not for static archives: use binutils.
- ▌ Jit Compilation · outlinedriven-odin-claude-plugin bundleUse when adding code generation with LLVM ORC or LLJIT, Cranelift, or dynasm, lazy compilation or inline caches, or fixing W^X faults. Not for AST-to-IR: use compiler-frontend.
- ▌ Kernel Security · outlinedriven-odin-claude-plugin bundleUse when writing an SELinux or AppArmor policy, a seccomp-bpf filter, enabling CET, PAC, or BTI, or triaging a kernel CVE. Not for KASAN report analysis: use kernel-debugging.
- ▌ Simd Intrinsics · outlinedriven-odin-claude-plugin bundleUse when reading auto-vectorization reports, writing SSE2, AVX2, or NEON intrinsics, or fixing vectorization failures. Not for reading the asm itself: use assembly-x86.
- ▌ Static Analysis · outlinedriven-odin-claude-plugin bundleUse when hardening C/C++ code quality with clang-tidy, cppcheck, or scan-build, interpreting check categories, suppressing false positives, integrating into CI, or working with compile_commands.json.
- ▌ Stm32 Baremetal · outlinedriven-odin-claude-plugin bundleUse when scaffolding STM32 firmware without HAL, CMSIS-only clock/RCC config, STM32F4/H7 bring-up, or building with arm-none-eabi-gcc for Cortex-M. Not for the startup file: use baremetal-startup.