custom-allocators
Custom allocator skill for memory allocation strategies. Use when implementing…
Clang/LLVM compiler skill for C/C++ projects. Use when working with clang or clang++ for diagnostics, sanitizer instrumentation, optimization remarks, static analysis with clang-tidy, LTO via lld, or when migrating from GCC to Clang. Activates on queries about clang flags,
$ npx -y skills add mohitmishra786/low-level-dev-skills --skill clang --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/clangContext preview
The summary Claude sees to decide when to auto-load this skill.
Clang/LLVM compiler skill for C/C++ projects. Use when working with clang or clang++ for diagnostics, sanitizer instrumentation, optimization remarks, static analysis with clang-tidy, LTO via lld, or when migrating from GCC to Clang. Activates on queries about clang flags,
name: clang description: Clang/LLVM compiler skill for C/C++ projects. Use when working with clang or clang++ for diagnostics, sanitizer instrumentation, optimization remarks, static analysis with clang-tidy, LTO via lld, or when migrating from GCC to Clang. Activates on queries about clang flags, clang-tidy, clang-format, better error messages, Apple/FreeBSD toolchains, or LLVM-specific optimizations. Covers flag selection, diagnostic tuning, and integration with LLVM tooling.
Guide agents through Clang-specific features: superior diagnostics, sanitizer integration, optimization remarks, static analysis, and LLVM tooling. Covers divergences from GCC and Apple/FreeBSD specifics.
Clang accepts most GCC flags. Key differences:
| Feature | GCC | Clang | |---------|-----|-------| | Min size | `-Os` | `-Os` or `-Oz` (more aggressive) | | Optimise only hot | — | `-fprofile-instr-use` (LLVM PGO) | | Thin LTO | `-flto` | `-flto=thin` (faster) | | Static analyser | `-fanalyzer` | `clang --analyze` or `clang-tidy` |
# Show fix-it hints inline clang -Wall -Wextra --show-fixits src.c # Limit error count clang -ferror-limit=5 src.c # Verbose template errors (disable elision) clang -fno-elide-type src.cpp # Show tree diff for template mismatch clang -fdiagnostics-show-template-tree src.cpp
Clang's diagnostics include exact range highlighting and fix-it suggestions that GCC lacks.
Optimization remarks let you see what Clang did or refused to do:
# Inliner decisions clang -O2 -Rpass=inline src.c # Missed vectorisation clang -O2 -Rpass-missed=loop-vectorize src.c # Why a loop was not vectorized clang -O2 -Rpass-analysis=loop-vectorize src.c # Save all remarks to YAML for post-processing clang -O2 -fsave-optimization-record src.c # Produces src.opt.yaml
Interpret remarks:
# Built-in analyser (CSA) clang --analyze -Xanalyzer -analyzer-output=text src.c # clang-tidy (separate tool, richer checks) clang-tidy src.c -- -std=c++17 -I/usr/include # Enable specific check families clang-tidy -checks='clang-analyzer-*,modernize-*,bugprone-*' src.cpp -- # Apply fixits automatically clang-tidy -fix src.cpp --
Common `clang-tidy` check families:
# Full LTO clang -O2 -flto -fuse-ld=lld src.c -o prog # Thin LTO (faster link, nearly same quality) clang -O2 -flto=thin -fuse-ld=lld src.c -o prog # Check lld is available clang -fuse-ld=lld -Wl,--version 2>&1 | head -1
For large projects, ThinLTO is preferred: link times 5-10x faster than full LTO with comparable code quality.
# Step 1: instrument clang -O2 -fprofile-instr-generate prog.c -o prog_inst # Step 2: run with representative input ./prog_inst < workload.input # Generates default.profraw # Step 3: merge profiles llvm-profdata merge -output=prog.profdata default.profraw # Step 4: use profile clang -O2 -fprofile-instr-use=prog.profdata prog.c -o prog
AutoFDO (sampling-based, less intrusive): collect with `perf`, convert with `create_llvm_prof`, use with `-fprofile-sample-use`. See `skills/profilers/linux-perf`.
Clang is intentionally GCC-compatible for driver flags. Key differences:
On macOS, `clang` is the system compiler (Apple LLVM). Key points:
For flag reference, see [references/flags.md](references/flags.md). For clang-tidy config examples, see [references/clang-tidy.md](references/clang-tidy.md).
A curated suite of AI agent skills for systems and low-level programming — C/C++, Rust, Zig, GPU, bare-metal firmware, Linux kernel/driver development, computer architecture, compiler internals, HPC, and more.
Repo: mohitmishra786/low-level-dev-skills
Custom allocator skill for memory allocation strategies. Use when implementing…
NUMA programming skill for multi-socket memory locality. Use when detecting NUMA topology,…
AF_XDP skill for high-performance XDP sockets. Use when creating AF_XDP sockets, configuring…
DPDK skill for userspace packet I/O. Use when initializing EAL, configuring PMD drivers,…
io_uring skill for Linux async I/O. Use when building high-performance servers with liburing,…
Bare-metal ADC and DAC skill. Use when configuring analog sampling, DMA-driven ADC,…