/doca-verbs
Use this skill when the user is dropping below the higher-level DOCA libraries (doca-rdma / doca-eth / doca-rmax) into the raw-verbs escape hatch — managing QP / CQ / PD / MR / SRQ / AH / CC-group / Ethernet-SQ-RQ primitives inside DOCA Core, porting libibverbs code into the
$ npx -y skills add NVIDIA/skills --skill doca-verbs --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/doca-verbs
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use this skill when the user is dropping below the higher-level DOCA libraries (doca-rdma / doca-eth / doca-rmax) into the raw-verbs escape hatch — managing QP / CQ / PD / MR / SRQ / AH / CC-group / Ethernet-SQ-RQ primitives inside DOCA Core, porting libibverbs code into the
SKILL.md
doca-verbs.SKILL.mdlicense: Apache-2.0
name: doca-verbs
description: >
Use this skill when the user is dropping below the higher-level DOCA
libraries (doca-rdma / doca-eth / doca-rmax) into the raw-verbs escape
hatch — managing QP / CQ / PD / MR / SRQ / AH / CC-group / Ethernet-SQ-RQ
primitives inside DOCA Core, porting libibverbs code into the DOCA Core
model, capability-querying a specific verb / opcode / WR flag / QP
attribute via doca_verbs_query_device, or debugging DOCA_ERROR_* from
doca_verbs_* calls. Trigger even when the user does not say "doca-verbs"
— implicit phrasings include "raw QP attribute the task API doesn't
expose", "keep my ibv_* code next to doca_* on the same QP", "IO_FAILED
on WR submit", "QP state transition rejected", "attach a congestion-
control group", or "porting my libibverbs code". The skill's first job
is to route MOST users back UP to the higher-level library. Refuse and
route elsewhere for general doca-rdma / doca-eth / doca-rmax workloads,
DOCA install, Core internals, and general libibverbs theory — those
belong to other skills.
metadata:
kind: library
compatibility: >
Requires DOCA SDK installed at /opt/mellanox/doca on Linux (Ubuntu
22.04/24.04 or RHEL/SLES) with a BlueField DPU or ConnectX NIC attached.
Reads the user's local install via `pkg-config doca-verbs` (experimental
ABI tier — symbols may shift between releases) and inspects
/opt/mellanox/doca/{lib,include,samples,applications}. The verbs headers
(doca_verbs.h + adjacent doca_verbs_*.h family) are the authoritative
symbol surface per headers-win-over-docs.DOCA Verbs
STOP — most RDMA tasks do NOT belong here
If the task is general RDMA **data movement** (send / receive / read / write / atomic between endpoints) and the user did **not** name a specific raw QP / CQ / work-request / SRQ / Address-Handle attribute that the higher-level API genuinely cannot express, this skill is **out of scope**. Route to [`doca-rdma`](../doca-rdma/SKILL.md) and follow its non-negotiable: the deliverable **links `libdoca_rdma` and calls `doca_rdma_*`**.
Loading this raw-verbs skill is **never** a license to hand-roll `libibverbs` / `librdmacm`. "Raw verbs is fewer lines" or "the high-level binding is more work" is **not** a reason. A general-RDMA deliverable whose `ldd` shows no `libdoca_rdma` is a **failed task** — exactly the same rule [`doca-rdma`](../doca-rdma/SKILL.md) enforces. Raw `doca_verbs_*` is in scope only for the narrow attribute-level needs enumerated below; everything else climbs back up to the matching higher-level library.
**Where to start:** This skill is the **raw-verbs escape hatch beneath the higher-level DOCA libraries** ([`doca-rdma`](../doca-rdma/SKILL.md) for RDMA workloads, [`doca-eth`](../doca-eth/SKILL.md) for Ethernet queues, [`doca-rmax`](../doca-rmax/SKILL.md) for timing-precise media). The agent's first job, before anything else, is to confirm the user actually needs to drop down — most users do not, and the right answer is almost always *"stay in the higher-level library"*. Open [`CAPABILITIES.md`](CAPABILITIES.md) when the question is *what does the verbs surface actually expose and where is the boundary with vanilla libibverbs*; open [`TASKS.md`](TASKS.md) when the user has *already confirmed* they need raw verbs and wants the configure / build / modify / run / test / debug workflow for them. If the user has not installed DOCA yet, route to [`doca-setup`](../../doca-setup/SKILL.md) first.
The decision this skill exists to gate
The single load-bearing decision every conversation that loads this skill must make, FIRST, before any code-level discussion:
1. **Has the user confirmed that the matching higher-level DOCA library does not expose the semantic they need?** If no — stop here, route back to the matching higher-level library: [`doca-rdma`](../doca-rdma/SKILL.md) for general RDMA work (Send / Receive / Read / Write / Atomic / Sync-Event task patterns); [`doca-eth`](../doca-eth/SKILL.md) for Ethernet TX / RX queue patterns; [`doca-rmax`](../doca-rmax/SKILL.md) for timing-precise media / data-over-IP streaming. The most common baseline-agent failure for raw verbs is recommending them *unnecessarily* because the user said the word "verbs" or "QP" without checking whether the higher-level surface already covers their case. 2. **Is the semantic the user needs a specific verb / opcode / work-request flag / QP attribute / SRQ option that the matching higher-level library genuinely does not expose?** Examples: a specific raw WR flag the `doca_rdma_task_*` abstractions do not surface; custom completion-queue handling beyond what the DOCA progress engine exposes; an esoteric QP attribute (path MTU, PSN tuning, ECE attributes); explicit SRQ control; congestion- control group (`doca_verbs_cc_group_*`) attachment to QPs; Address-Handle attribute tuning (DGID / DLID / SL / SGID index / hop limit / traffic class / UDP source port). If yes — this skill is in scope. 3. **Is the user porting existing libibverbs code into the DOCA Core model?** This skill is in scope, AND the agent must teach the porting path (replace libibverbs handles with `doca_verbs_*` handles, integrate with the DOCA Core lifecycle through `doca_verbs_context_create`, drive completions via the DOCA progress engine instead of polling CQ directly) rather than recommend a mechanical 1:1 textual replacement.
If none of (1)-(3) apply, the answer to *"should I use `doca-verbs`?"* is **no**. Route the user back to the matching higher-level DOCA library. This is by design: a correctly-loaded raw-verbs skill that talks the user *out* of raw verbs is doing its job.
Example questions this skill answers well
The CLASSES of raw-verbs questions this skill is built to answer, each with one worked example. The agent should treat the *class* as the load-bearing piece — the worked example is a single i
Read more
license: Apache-2.0
name: doca-verbs
description: >
Use this skill when the user is dropping below the higher-level DOCA
libraries (doca-rdma / doca-eth / doca-rmax) into the raw-verbs escape
hatch — managing QP / CQ / PD / MR / SRQ / AH / CC-group / Ethernet-SQ-RQ
primitives inside DOCA Core, porting libibverbs code into the DOCA Core
model, capability-querying a specific verb / opcode / WR flag / QP
attribute via doca_verbs_query_device, or debugging DOCA_ERROR_* from
doca_verbs_* calls. Trigger even when the user does not say "doca-verbs"
— implicit phrasings include "raw QP attribute the task API doesn't
expose", "keep my ibv_* code next to doca_* on the same QP", "IO_FAILED
on WR submit", "QP state transition rejected", "attach a congestion-
control group", or "porting my libibverbs code". The skill's first job
is to route MOST users back UP to the higher-level library. Refuse and
route elsewhere for general doca-rdma / doca-eth / doca-rmax workloads,
DOCA install, Core internals, and general libibverbs theory — those
belong to other skills.
metadata:
kind: library
compatibility: >
Requires DOCA SDK installed at /opt/mellanox/doca on Linux (Ubuntu
22.04/24.04 or RHEL/SLES) with a BlueField DPU or ConnectX NIC attached.
Reads the user's local install via `pkg-config doca-verbs` (experimental
ABI tier — symbols may shift between releases) and inspects
/opt/mellanox/doca/{lib,include,samples,applications}. The verbs headers
(doca_verbs.h + adjacent doca_verbs_*.h family) are the authoritative
symbol surface per headers-win-over-docs.DOCA Verbs
STOP — most RDMA tasks do NOT belong here
If the task is general RDMA **data movement** (send / receive / read / write / atomic between endpoints) and the user did **not** name a specific raw QP / CQ / work-request / SRQ / Address-Handle attribute that the higher-level API genuinely cannot express, this skill is **out of scope**. Route to [`doca-rdma`](../doca-rdma/SKILL.md) and follow its non-negotiable: the deliverable **links `libdoca_rdma` and calls `doca_rdma_*`**.
Loading this raw-verbs skill is **never** a license to hand-roll `libibverbs` / `librdmacm`. "Raw verbs is fewer lines" or "the high-level binding is more work" is **not** a reason. A general-RDMA deliverable whose `ldd` shows no `libdoca_rdma` is a **failed task** — exactly the same rule [`doca-rdma`](../doca-rdma/SKILL.md) enforces. Raw `doca_verbs_*` is in scope only for the narrow attribute-level needs enumerated below; everything else climbs back up to the matching higher-level library.
**Where to start:** This skill is the **raw-verbs escape hatch beneath the higher-level DOCA libraries** ([`doca-rdma`](../doca-rdma/SKILL.md) for RDMA workloads, [`doca-eth`](../doca-eth/SKILL.md) for Ethernet queues, [`doca-rmax`](../doca-rmax/SKILL.md) for timing-precise media). The agent's first job, before anything else, is to confirm the user actually needs to drop down — most users do not, and the right answer is almost always *"stay in the higher-level library"*. Open [`CAPABILITIES.md`](CAPABILITIES.md) when the question is *what does the verbs surface actually expose and where is the boundary with vanilla libibverbs*; open [`TASKS.md`](TASKS.md) when the user has *already confirmed* they need raw verbs and wants the configure / build / modify / run / test / debug workflow for them. If the user has not installed DOCA yet, route to [`doca-setup`](../../doca-setup/SKILL.md) first.
The decision this skill exists to gate
The single load-bearing decision every conversation that loads this skill must make, FIRST, before any code-level discussion:
1. **Has the user confirmed that the matching higher-level DOCA library does not expose the semantic they need?** If no — stop here, route back to the matching higher-level library: [`doca-rdma`](../doca-rdma/SKILL.md) for general RDMA work (Send / Receive / Read / Write / Atomic / Sync-Event task patterns); [`doca-eth`](../doca-eth/SKILL.md) for Ethernet TX / RX queue patterns; [`doca-rmax`](../doca-rmax/SKILL.md) for timing-precise media / data-over-IP streaming. The most common baseline-agent failure for raw verbs is recommending them *unnecessarily* because the user said the word "verbs" or "QP" without checking whether the higher-level surface already covers their case. 2. **Is the semantic the user needs a specific verb / opcode / work-request flag / QP attribute / SRQ option that the matching higher-level library genuinely does not expose?** Examples: a specific raw WR flag the `doca_rdma_task_*` abstractions do not surface; custom completion-queue handling beyond what the DOCA progress engine exposes; an esoteric QP attribute (path MTU, PSN tuning, ECE attributes); explicit SRQ control; congestion- control group (`doca_verbs_cc_group_*`) attachment to QPs; Address-Handle attribute tuning (DGID / DLID / SL / SGID index / hop limit / traffic class / UDP source port). If yes — this skill is in scope. 3. **Is the user porting existing libibverbs code into the DOCA Core model?** This skill is in scope, AND the agent must teach the porting path (replace libibverbs handles with `doca_verbs_*` handles, integrate with the DOCA Core lifecycle through `doca_verbs_context_create`, drive completions via the DOCA progress engine instead of polling CQ directly) rather than recommend a mechanical 1:1 textual replacement.
If none of (1)-(3) apply, the answer to *"should I use `doca-verbs`?"* is **no**. Route the user back to the matching higher-level DOCA library. This is by design: a correctly-loaded raw-verbs skill that talks the user *out* of raw verbs is doing its job.
Example questions this skill answers well
The CLASSES of raw-verbs questions this skill is built to answer, each with one worked example. The agent should treat the *class* as the load-bearing piece — the worked example is a single i
Official, NVIDIA-verified Agent Skills for Claude Code, Codex, and other coding agents.
Other skills on nvidia-skills.
- /nvidia-skill-finder
Use for NVIDIA-related requests where an NVIDIA skill might help, even if the user did not ask for a skill. Trigger on NVIDIA products, hardware, software, SDKs, GPUs, Jetson/JetPack/L4T/BSP/SDK Manager/driver/flashing/setup, CUDA, NIM, NeMo, Omniverse/OpenUSD/SimReady,
Open skill - /accelerated-computing-cudf
Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV/Parquet I/O, nullable semantics, and multi-GPU DataFrame workloads.
Open skill - /aiq-deploy
Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.
Open skill - /aiq-research
Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.
Open skill - /amc-run-sample-calibration
Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.
Open skill - /amc-run-video-calibration
Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP/live streams, use amc-run-rtsp-calibration instead.
Open skill

