Odin Native
Odin Native from OutlineDriven/odin-claude-plugin.
Skills in this plugin
118- ▌ Wasm Emscripten · outlinedriven-odin-claude-plugin bundleUse when compiling C or C++ to WebAssembly with emcc, exporting functions to JavaScript, sizing WASM memory, using Asyncify, or debugging .wasm. Not for server-side runtimes: use wasm-wasmtime.
- ▌ Binary Hardening · outlinedriven-odin-claude-plugin bundleUse when enabling RELRO, PIE, stack canaries, FORTIFY_SOURCE, CET, CFI, or seccomp filters, or checking a binary with checksec. Not for runtime sanitizer builds: use sanitizers.
- ▌ Gpu Memory Model · outlinedriven-odin-claude-plugin bundleUse when analyzing warp divergence, memory coalescing, shared memory bank conflicts, cache behavior, atomics, or occupancy tradeoffs on NVIDIA and AMD GPUs. Not for tool commands: use cuda-profiling.
- ▌ Kernel Debugging · outlinedriven-odin-claude-plugin bundleUse when debugging the Linux kernel: kgdb and kdb, ftrace and kprobes, dynamic debug, kdump and crash analysis, or printk levels on a live or crashed target.
- ▌ Kernel Internals · outlinedriven-odin-claude-plugin bundleUse when diagnosing scheduler latency, kmalloc vs vmalloc, page cache, meminfo under pressure, or OOM victim choice, or when reading kernel/sched, mm, or fs source.
- ▌ Numa Programming · outlinedriven-odin-claude-plugin bundleUse when detecting NUMA topology, binding processes with numactl, using the libnuma API, building NUMA-aware data structures, or measuring remote memory access penalties.
- ▌ Riscv Privileged · outlinedriven-odin-claude-plugin bundleUse when writing RISC-V M-mode or S-mode code: CSRs, trap handlers, PLIC and CLINT interrupts, OpenSBI payloads, Sv39 or Sv48 page tables, or QEMU virt boot. Not for user-mode asm: use assembly-riscv.
- ▌ Rust Build Times · outlinedriven-odin-claude-plugin bundleUse when profiling slow Rust builds with cargo --timings, configuring sccache, selecting the Cranelift dev backend, splitting a workspace for parallelism, or tuning LTO and the linker.
- ▌ Zig Build System · outlinedriven-odin-claude-plugin bundleUse when writing or fixing a build.zig: executables, libraries, modules, C sources, build options, test steps, custom steps, or build.zig.zon dependencies. Not for one-file builds: use zig-compiler.
- ▌ Adc Dac Baremetal · outlinedriven-odin-claude-plugin bundleUse when configuring ADC sampling time, DMA-driven ADC, calibration, or DAC channel setup on bare-metal MCUs. Not for the DMA stream itself: use dma-baremetal.
- ▌ Baremetal Startup · outlinedriven-odin-claude-plugin bundleUse when writing reset-to-main startup code, vector tables, VTOR, .data/.bss init, stack setup, startup.s, or crt0 for Cortex-M/RISC-V. Not for the bootloader jump: use bootloaders-embedded.
- ▌ Compiler Frontend · outlinedriven-odin-claude-plugin bundleUse when building a lexer, Pratt or recursive-descent parser, AST, symbol table, type checker, or LLVM IR emitter for a language or DSL. Not for optimizing IR: use llvm-passes.
- ▌ Custom Allocators · outlinedriven-odin-claude-plugin bundleUse when implementing pool/slab/arena allocators, tuning jemalloc/mimalloc/tcmalloc, writing a Rust GlobalAlloc, or benchmarking allocator performance and fragmentation.
- ▌ Hardware Counters · outlinedriven-odin-claude-plugin bundleUse when measuring PMU events with perf stat -e or PAPI, computing IPC, miss rates, or MPKI, or attributing cache misses to source lines with perf annotate. Not for sampling profiles: use linux-perf.
- ▌ Protocol Analysis · outlinedriven-odin-claude-plugin bundleUse when decoding I2C, SPI, or UART captures with sigrok or PulseView, checking bus traffic against a datasheet, or post-processing captures in Python. Not for bus drivers: use spi-i2c-baremetal.
- ▌ Spi I2c Baremetal · outlinedriven-odin-claude-plugin bundleUse when implementing SPI/I2C master transfers, register read/write protocols, I2C START/STOP, clock phase/polarity, or bus stalls on bare-metal MCUs. Not for Linux drivers: use bus-drivers-i2c-spi.
- ▌ Build Acceleration · outlinedriven-odin-claude-plugin bundleUse when reducing C/C++ compilation times with ccache, sccache, distcc, unity builds, precompiled headers, split DWARF, IWYU, or link time reduction.
- ▌ Dwarf Debug Format · outlinedriven-odin-claude-plugin bundleUse when inspecting .debug_info or .debug_line sections with dwarfdump or readelf, working with split-DWARF .dwo files, setting up debuginfod, or checking how LTO and stripping affect debug info.
- ▌ Kernel Concurrency · outlinedriven-odin-claude-plugin bundleUse when choosing kernel spinlocks versus mutexes, using RCU, seqlocks, completions, or memory barriers, or debugging scheduling-while-atomic. Not for userspace atomics: use concurrency-debugging.
- ▌ Llvm Ir And Passes · outlinedriven-odin-claude-plugin bundleUse when reading LLVM IR, explaining SSA and PHI nodes, finding what -O2 changed, or running opt on a .ll or .bc file. Not for writing a pass plugin: use llvm-passes.
- ▌ Low Power Embedded · outlinedriven-odin-claude-plugin bundleUse when configuring MCU sleep/stop/standby, WFI, STM32 PWR, nRF sleep, clock gating, wake-up EXTI sources, or measuring current draw. Not for the wake ISR: use interrupts-and-exceptions-baremetal.
- ▌ Bus Drivers I2c Spi · outlinedriven-odin-claude-plugin bundleUse when writing a Linux i2c_driver or spi_driver, doing bus register access, DMA-safe SPI transfers, or debugging -EREMOTEIO. Not for MMIO platform drivers: use platform-device-model.
- ▌ Reverse Engineering · outlinedriven-odin-claude-plugin bundleUse when triaging an unknown binary, decompiling with Ghidra, scripting radare2, or diffing two builds for patched functions. Not for ELF structure basics: use elf-inspection.
- ▌ Bootloaders Embedded · outlinedriven-odin-claude-plugin bundleUse when writing a custom bootloader, jumping to application code, relocating VTOR, or implementing DFU/USB firmware update on Cortex-M. Not for reset-to-main: use baremetal-startup.
- ▌ C Hardening Baseline · outlinedriven-odin-claude-plugin bundleUse when C code is written or audited and needs a pure-C baseline: standard, undefined behavior, integer and buffer safety, sanitizers, fuzzing, build flags. Not for C++: use modern-cpp-practices.
- ▌ Containers Internals · outlinedriven-odin-claude-plugin bundleUse when explaining or building on Linux container primitives: namespaces, cgroups v2, overlayfs, runc and the OCI spec, seccomp-bpf, capabilities, or escapes. Not for VM isolation: use qemu-kvm.
- ▌ Cpu Kernel Authoring · outlinedriven-odin-claude-plugin bundleUse when writing, optimizing, or benchmarking a C++ CPU kernel with AVX2 or AVX512 intrinsics for the Hugging Face kernels ecosystem. Not for CUDA kernels: use cuda.
- ▌ Hypervisor Internals · outlinedriven-odin-claude-plugin bundleUse when studying Intel VT-x or AMD-V internals: VMCS and VMCB, EPT and NPT, VM exit handling, APIC virtualization, or building a minimal type-1 hypervisor. Not for running VMs: use qemu-kvm.
- ▌ Include What You Use · outlinedriven-odin-claude-plugin bundleUse when reducing header bloat and compilation cascades with Include What You Use, interpreting IWYU reports, mapping files, forward declarations, or CMake integration.
- ▌ Linux Kernel Modules · outlinedriven-odin-claude-plugin bundleUse when writing loadable kernel modules: Kbuild, module parameters, proc and sysfs entries, char devices, or ftrace debugging. Not for driver architecture: use writing-char-drivers.
- ▌ Modern Cpp Practices · outlinedriven-odin-claude-plugin bundleUse when C++ code is being written or reviewed and the compiler supports modern safe idioms. Read-only. No source or remote-system changes.
- ▌ Rust Async Internals · outlinedriven-odin-claude-plugin bundleUse when understanding the Rust Future poll model, Pin and Unpin, tokio scheduling, async stack traces, waker leaks, or select!/join! behavior.
- ▌ Rust Sanitizers Miri · outlinedriven-odin-claude-plugin bundleUse when running AddressSanitizer, ThreadSanitizer, MemorySanitizer, UndefinedBehaviorSanitizer, or Miri on Rust code, interpreting sanitizer output, or validating unsafe code for undefined behaviour.
- ▌ Timers Pwm Baremetal · outlinedriven-odin-claude-plugin bundleUse when configuring general-purpose timers for PWM, input capture, periodic ticks, timer prescaler, PWM duty cycle, or SysTick without an RTOS. Not for the timer pin mux: use gpio-baremetal.
- ▌ Writing Char Drivers · outlinedriven-odin-claude-plugin bundleUse when writing a Linux char driver: file_operations, cdev, copy_to_user, ioctl commands, device memory mmap, or poll. Not for probe and remove lifecycle: use platform-device-model.
- ▌ Concurrency Debugging · outlinedriven-odin-claude-plugin bundleUse when reading TSan race reports, debugging deadlocks with GDB thread inspection, analyzing Helgrind lock-order violations, or reviewing std::atomic and happens-before usage.
- ▌ Intel Vtune Amd Uprof · outlinedriven-odin-claude-plugin bundleUse when profiling with Intel VTune or AMD uProf for hotspots, top-down pipeline stalls, memory-bound analysis, or roofline data. Not for raw perf stat counters: use hardware-counters.
- ▌ Platform Device Model · outlinedriven-odin-claude-plugin bundleUse when implementing or debugging platform_driver probe/remove, sysfs attributes, device properties, or deferred probe on Linux. Not for device tree syntax: use device-tree.
- ▌ Uart Serial Baremetal · outlinedriven-odin-claude-plugin bundleUse when configuring UART baud rate/BRR, polling or IRQ-driven TX/RX, serial printf retargeting, USART interrupts, or UART with DMA on bare-metal MCUs. Not for the DMA stream: use dma-baremetal.
- ▌ Debug Optimized Builds · outlinedriven-odin-claude-plugin bundleUse when debugging RelWithDebInfo or -O2 release builds, using -Og for debuggable optimization, split-DWARF, GDB scheduler-locking, reading inlined frames, or understanding "value optimized out".
- ▌ Kernel Memory Management · outlinedriven-odin-claude-plugin bundleUse when using kmalloc, vmalloc, or the page allocator, sizing kmalloc allocations, working with SLUB or the buddy allocator, or debugging memory zones and kernel OOM.
- ▌ Qemu Embedded Simulation · outlinedriven-odin-claude-plugin bundleUse when running ARM or RISC-V bare-metal firmware in QEMU: machine selection, -kernel ELF loading, semihosting, or GDB debugging without hardware. Not for KVM guests: use qemu-kvm.
- ▌ Cpu Pipelines And Hazards · outlinedriven-odin-claude-plugin bundleUse when explaining pipeline stages, data or control hazards, forwarding, stalls, or superscalar basics behind a counter reading. Not for mispredict cost: use branch-prediction-and-speculation.
- ▌ Kernel Debugging Advanced · outlinedriven-odin-claude-plugin bundleUse when tracing kernel functions with ftrace or trace-cmd, profiling with perf, kprobes, or dyndbg, or analyzing a vmcore with crash. Not for QEMU GDB stubs: use qemu-for-kernel-development.
- ▌ Linux Kernel Architecture · outlinedriven-odin-claude-plugin bundleUse when navigating kernel source, understanding boot flow, initcall levels, or major subsystems (VFS, scheduler, MM) in linux.git. Not for driver-model depth: use platform-device-model.
- ▌ Mmio And Bit Manipulation · outlinedriven-odin-claude-plugin bundleUse when accessing memory-mapped peripherals with volatile, bit masks, read-modify-write, register alignment, or endianness in bare-metal firmware. Not for pin setup: use gpio-baremetal.
- ▌ Peripherals From Datasheet · outlinedriven-odin-claude-plugin bundleUse when writing a register-level peripheral driver from an MCU reference manual: register map, init sequence, timing, bit definitions. Not for finding facts: use datasheet-and-refmanual-reading.
- ▌ Abi And Calling Conventions · outlinedriven-odin-claude-plugin bundleUse when explaining System V AMD64, ARM AAPCS, RISC-V psABI, stack frames, variadic calls, or FFI register rules. Not for the Rust FFI binding layer: use rust-ffi.
- ▌ Compiler Optimizations Deep · outlinedriven-odin-claude-plugin bundleUse when -O3 leaves a hot loop scalar, spills appear in assembly, or a PGO or BOLT deployment is planned or stalls. Not for machine lowering: use code-generation-and-backends.
- ▌ Memory Hierarchy And Caches · outlinedriven-odin-claude-plugin bundleUse when explaining cache levels, associativity, cache lines, false sharing, prefetching, or MESI coherence. Not for measuring and fixing cache misses in a program: use cpu-cache-opt.
- ▌ Qemu For Kernel Development · outlinedriven-odin-claude-plugin bundleUse when booting custom kernels in QEMU, building Buildroot or Yocto rootfs, attaching virtio devices, or iterating kernel modules over NFS or 9p root. Not for KVM management: use qemu-kvm.
- ▌ Verilog Basics For Lowlevel · outlinedriven-odin-claude-plugin bundleUse when reading RTL to understand hardware behavior, reset and clock domains, CDC synchronizers, APB/AHB/AXI bus protocols, or collaborating with hardware teams on SoC diagrams.
- ▌ Code Generation And Backends · outlinedriven-odin-claude-plugin bundleUse when reading llc output, tracing IR through legalization and instruction selection, or scoping a new LLVM target. Not for IR-level passes: use llvm-ir-and-passes.
- ▌ Resource Optimization Lowend · outlinedriven-odin-claude-plugin bundleUse when reducing flash or RAM usage on constrained MCUs, analyzing stack depth, reading linker map files, or tuning -Os size-versus-speed tradeoffs on bare-metal and small RTOS images.
- ▌ Virtual Memory Paging And Tlb · outlinedriven-odin-claude-plugin bundleUse when explaining page faults, multi-level page tables, TLB misses, huge pages, or mmap and brk behavior. Not for the kernel page allocator: use kernel-memory-management.
- ▌ Datasheet And Refmanual Reading · outlinedriven-odin-claude-plugin bundleUse when extracting pinouts, electrical limits, register maps, clock trees, timing, or errata from MCU datasheets and reference manuals. Not for writing the driver: use peripherals-from-datasheet.
- ▌ Branch Prediction And Speculation · outlinedriven-odin-claude-plugin bundleUse when explaining branch predictors, mispredict penalties, speculative execution, Spectre or Meltdown mitigations, or branchless code. Not for pipeline stage theory: use cpu-pipelines-and-hazards.
- ▌ Interrupts And Exceptions Baremetal · outlinedriven-odin-claude-plugin bundleUse when writing Cortex-M NVIC ISRs, configuring priorities, handling HardFault, tail-chaining, or measuring interrupt latency. Not for the vector table itself: use baremetal-startup.