nvidia/doca-setup
> Use this skill when the user is dealing with the DOCA environment around their workload — verifying an install is healthy, preparing the build env (pkg-config, headers, LD_LIBRARY_PATH, hugepages, devlink, representors), debugging env-class failures, deciding container-vs-bare-metal deployment shape, or reaching a DOCA install from a host that doesn't have one yet via the NGC DOCA container Stage-1 fallback. Trigger even when the user does not explicitly mention "DOCA setup" — typical implicit phrasings include "I just got a BlueField, what now", "my code is built, how do I run it", "pkg-config can't find doca-flow", "no free 2048 kB hugepages", "representor X not found", "I'm on a Mac and want to learn DOCA". Refuse and route elsewhere for library API specifics (Flow pipes, RDMA queues), the modify-a-sample first-app workflow or DOCA_ERROR_* program-side debugging, and "where is X documented" knowledge-map questions — those belong to other skills.
npx skills add https://github.com/NVIDIA/skills --skill doca-setup
Where to start: If the user's question is *deployment-shaped*
(*"how do I deploy"*, *"how do I run my DOCA workload"*, *"I just got a
BlueField, what now"*, *"my code is built, what next"*), walk
TASKS.md ## recognize first. It is the
bundle's front-door: it detects the system shape (host x86 / BlueField
Arm bare-metal / DPU-only / fresh laptop), asks the developer the
minimal set of questions needed to disambiguate, and routes to the
correct downstream skill — the container deployment path
(doca-container-deployment),
the bare-metal hardware deployment path
(doca-bare-metal-deployment),
or the no-hardware fallback
(TASKS.md ## no-install). The wrong failure
mode is to silently steer every developer onto containers because the
agent loaded that skill first; ## recognize exists to prevent that.
If the user does not have DOCA installed yet and the request is not
deployment-shaped, jump straight to
TASKS.md ## no-install for the NGC container
path. Deployment-shaped requests still enter ## recognize first,
which routes fresh-laptop cases to ## no-install. Otherwise read
## When to load this skill to confirm the
question is env-class, then route to the section below that matches the
user's intent.
The CLASSES this skill is built to handle, each with one worked example.
The skill must answer the *class*; the worked example is illustrative.
worked example: *"I just got a BlueField; my code is built; what
now?"* Resolved by the front-door decision tree in
TASKS.md ## recognize, which detects the
system shape, asks the minimum residual question, and routes to
either the container or the bare-metal deployment skill.
*"Is DOCA Flow actually available on this box?"* Resolved by the
install-health snapshot in TASKS.md ## test plus the
version-detection rules in
CAPABILITIES.md ## Capabilities and modes.
on macOS and want to learn DOCA before I get a BlueField."* Resolved
by TASKS.md ## no-install (NGC DOCA container
as universal Stage-1).
example: *"pkg-config --cflags doca-flow returns nothing — what's
missing?"* Resolved by the build-prep workflow in
TASKS.md ## configure and the build-class
error taxonomy in
CAPABILITIES.md ## Error taxonomy.
example: *"hugepages / representors / devlink — what's the minimum set
before I run my first DOCA Flow program?"* Resolved by
TASKS.md ## configure and the runtime
observability rules in
CAPABILITIES.md ## Observability.
worked example: *"My DOCA Flow program built fine but says
pkg-config cannot find it at runtime."* Resolved by the layered
env-class debug workflow in TASKS.md ## debug.
example: *"I want to switch eswitch mode from legacy to switchdev."*
Resolved by the safety constraints in
CAPABILITIES.md ## Safety policy.
If the question is library-API-shaped (Flow pipe construction, RDMA
queue setup, …) or program-shaped (how to build, modify a sample, debug
the program itself), route to
doca-programming-guide or the
matching library skill instead — env-class only lives here.
Load this skill when the user is dealing with the environment around DOCA — installing it, verifying the install is healthy, preparing the build / runtime preconditions, debugging env-class failures, figuring out *how to reach an install* from a host that doesn't have one yet, or asking a deployment-shaped question that hasn't yet been routed (containers vs. bare-metal) — the front-door routing decision lives here. Concretely:
## recognize first so the agent does not silently push the user onto the wrong path.pkg-config, headers, library paths).devlink device visibility, representor enumeration, kernel-module prerequisites.*.pc file, hugepages not mounted, representor not visible, header-vs-runtime version mismatch.nvcr.io/nvidia/doca/doca (works on any OS that runs Docker; no NVIDIA hardware required for the build / read / learn loop). See TASKS.md ## no-install.Do not load this skill for:
doca-public-knowledge-map.DOCA_ERROR_BAD_STATE mean?"* — those are programming-class questions and live in doca-programming-guide, which owns the universal ## modify (first-app derivation), the canonical ## build pattern, the universal lifecycle, and the cross-library DOCA_ERROR_* taxonomy.doca-flow). This skill stops at *"the install is healthy and the env is ready"*; it does not own program semantics.This is a thin loader. The body keeps only the orientation needed to pick the right next file. The substantive env material lives in two companion files:
CAPABILITIES.md — what the install / build / runtime *environment* surface looks like: install profiles (doca-all, doca-ofed, doca-networking), where the build flavors (release vs trace) live on disk and how to point LD_LIBRARY_PATH at them, the env-side version-detection rules, the env-class error taxonomy (pkg-config not finding doca-flow, hugepages not reserved, representors not visible), what a healthy install looks like under observation, and the safety constraints on environment changes (hugepages global, mlxconfig reset, eswitch mode change).TASKS.md — env workflows: recognize (the front-door system-shape detect + dev-Q decision tree that routes deployment-shaped questions to either container or bare-metal), configure (env prep), test (install health snapshot), debug (env-class layered diagnosis), and no-install (the *I have no install yet* procedure with the NGC container as Path 0). Three other anchors (build, modify, run) exist for lint compliance and route to doca-programming-guide, which owns those verbs after the env / program split.This skill assumes nothing about whether DOCA is installed — the ## no-install workflow exists precisely for the *fresh laptop* case.
SKILL.md and classify the question as programming,knowledge-map, beginner orientation, deployment routing, or
environment work. Programming and knowledge-map questions route to
their owning skill and stop here.
TASKS.md ## no-install Stage 1 vs Stage 2 roadmap
before any command. Then route Stage 1/container learning to
## no-install Path 0 and Stage 2/hardware runtime to
## no-install Paths A/C, followed by ## recognize before
selecting container versus bare-metal. Ask one clarifying question
when the stage is unknown; if it remains unknown or no reply is
available in unattended execution, stop with
confirmation_required and both paths explained rather than
guessing.
TASKS.md ## recognize first only when the
container-versus-bare-metal path is not already established. If it
is established, proceed directly to the matching env workflow.
load the mandatory
Universal verification contract
and walk all applicable steps through an auditable green signal.
Hardware-touching answers also load the
hardware binding-layer command stanza.
The Stage-1 no-hardware path instead uses its own container
install/smoke green signal; never fabricate unavailable PCIe,
representor, or hardware evidence.
configure, test, debug, andno-install — see TASKS.md.** The build, modify,
and run anchors route to
doca-programming-guide.
then doca-programming-guide, then the matching library skill.
Both companion files cross-link to each other and to doca-public-knowledge-map whenever the right answer is *"look it up in the public docs or the installed package layout"* rather than *"setup-specific guidance"*.
doca-container-deployment — the container deployment runtime (kubelet standalone + YAML pod-spec drop) for any DOCA service container on BlueField. ## recognize here routes to this skill when the developer's workload + system shape land on the container path.doca-bare-metal-deployment — the bare-metal hardware deployment runtime (host x86 OR BlueField Arm direct launch — systemd / tmux / direct invocation, hardware-resource binding, per-tenant isolation, restart discipline) for a DOCA-linked binary. ## recognize here routes to this skill when the developer's workload + system shape land on the bare-metal path.doca-public-knowledge-map — public DOCA documentation routing and the on-disk layout of an installed DOCA package. This skill defers all *"where is X documented"*, *"where on disk is Y"*, and *"how do I check the installed version"* questions to the knowledge-map.doca-programming-guide — general DOCA programming patterns once the env is healthy: the canonical pkg-config doca-<library> build pattern, the universal *derive a custom first app from a sample* workflow (with C / C++ + non-C tracks), the universal lifecycle, and the cross-library DOCA_ERROR_* taxonomy. Anything beyond *"is the install healthy and the env ready"* lives there.doca-flow — DOCA Flow on BlueField. Builds on this skill for env preparation and on doca-programming-guide for the universal first-app derivation, then layers Flow-specific overrides on top.Take nvidia/doca-setup from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.