coder/skills/build-toolchain/SKILL.md
C/C++ build toolchain with gcc, cmake, autoconf, ninja, git, and pkg-config. Use when working with native compilation, build tools, or C/C++ development.
npx skillsauth add overthinkos/overthink-plugins build-toolchainInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Install files | layer.yml (packages only) |
| Variable | Value |
|----------|-------|
| CCACHE_DISABLE | 1 |
The package list is the centralized place to add system libraries that any builder stage needs. Image-specific cargo deps live here when they're broadly useful; truly image-specific deps stay in their image's own layer.
autoconf, automake, binutils, bison, ccache, cli11-devel, cmake, flex,
gcc, gcc-c++, gdb, git, glibc-devel, libtool, make, ninja-build, patch,
pkgconf, pkgconf-m4, pkgconf-pkg-config, redhat-rpm-config, rpm-build, rpm-sign.
rust, cargo. Used by setuptools-rust and any layer that compiles a Smithay-based
Wayland compositor from source. See /ov-coder:rust for the disambiguation between
this builder-stage Rust and the runtime rust layer.
clang-devel — provides libclang.so, required by bindgen-based crates such as
x264-sys and ffmpeg-sys-next. Without it, those crates panic in their build.rs at
bindgen-0.72.1/lib.rs:616:27.
nasm — assembler for SIMD-accelerated native deps. The turbojpeg-sys crate vendors
libjpeg-turbo, whose CMake build calls enable_language(ASM_NASM) and fails without
nasm with No CMAKE_ASM_NASM_COMPILER could be found.
wayland-devel, libudev-devel, libxkbcommon-devel, mesa-libgbm-devel,
libseat-devel, libinput-devel, systemd-devel, libdrm-devel, pixman-devel,
libjpeg-turbo-devel.
These satisfy smithay's default feature set when pixelflux_wayland builds against
smithay = { rev = "ca932e04…" } with features
["backend_drm", "backend_egl", "backend_gbm", "backend_libinput", "backend_udev", "renderer_gl", "renderer_pixman", "use_system_lib", "desktop", "wayland_frontend"].
Each backend_* and renderer_* feature pulls a pkg-config lookup against the matching
-devel package at link time.
libva-devel, x264-devel, ffmpeg-devel.
These live in RPM Fusion free (not in the base Fedora repos), which is why
/ov-distros:fedora-builder now includes /ov-distros:rpmfusion before
build-toolchain in its layer list. They are required for compiling pixelflux's
libva-sys, x264-sys, and ffmpeg-sys-next cargo crates against the system
codec libraries.
See /ov-selkies:selkies (Patched pixelflux build pipeline) for the consumer story —
the selkies layer's build.sh clones pixelflux from a pinned commit, applies four
inline source patches, and runs pip install . against this builder stage.
rpm: (Fedora), pac: (Arch), deb: (Debian/Ubuntu) — full parity. The deb section maps Fedora's ~40 -devel packages to their Debian -dev equivalents (libclang-dev, libavformat-dev, libdrm-dev, libinput-dev, libturbojpeg0-dev, libseat-dev, libva-dev, libwayland-dev, libxkbcommon-dev, libgbm-dev, libsystemd-dev, libpixman-1-dev, libx264-dev, libudev-dev — plus build-essential). Drops on deb: redhat-rpm-config, rpm-build, rpm-sign, pkgconf-m4 (RPM-specific); cli11-devel (header-only, cmake FetchContent).
# image.yml
my-image:
layers:
- build-toolchain
/ov-distros:fedora-builder/ov-distros:arch-builderbazzite/ov-languages:pixi — Sibling in builder images for conda-forge package builds/ov-coder:nodejs — Sibling in builder images for npm package builds/ov-tools:yay — Pairs in arch-builder for AUR builds/ov-coder:rust — Disambiguates the builder-stage rust+cargo packages here from the runtime rust layer/ov-distros:rpmfusion — Must be applied before this layer in fedora-builder so codec dev libs (x264-devel, ffmpeg-devel) can install/ov-selkies:selkies — Primary consumer of all the new cargo/codec deps (Patched pixelflux build pipeline)/ov-build:build — Multi-stage builders consume this layer for pixi/npm/cargo builds/ov-build:generate — See how builder stages are generated from this layerUse when the user asks about:
build-toolchain layer or its packages/ov-image:layer — layer authoring reference (layer.yml schema, task verbs, service declarations)/ov-eval:eval — declarative testing (eval: block, ov eval image, ov eval live)development
Claude Code multi-agent support in Overthink — sub-agents, dynamic workflows, and agent teams, and how each drives the existing `ov eval` disposable beds to test and verify. MUST be invoked before authoring or invoking an ov sub-agent / dynamic workflow / agent team, wiring agent-lifecycle hooks, or asking "which primitive should drive the R10 beds?".
tools
Mounts a virtiofs share tagged `workspace` at /workspace inside a VM guest via a systemd .mount unit. Use when a kind:vm entity shares a host directory into the guest and you need it auto-mounted (and re-mounted at every boot).
development
MUST be invoked before any work involving: the `kind: android` schema kind, a `target: android` deploy, the `apk:` layer package format (installing Android apps declaratively), AndroidDeployTarget, an in-pod emulator OR a remote/physical adb-endpoint device, or nested `pod → android` deployment. The first-class Android device + app surface that sits above `ov eval adb`/`appium`.
tools
Use when committing, branching, pushing, merging, tagging, creating PRs, or approving/merging PRs with gh — the feat/-branch, R10-gated, never-force-push landing workflow across the main repo + the plugins submodule + image/<distro> submodules. Covers sync-to-upstream, branch/worktree pruning, the fork+PR path for contributors without write access, and cross-repo @github landing order.