Generated banner for Doca Version
Generated logo for Doca Version

Doca Version

NVIDIAOfficialCreated by NVIDIA

  • Skill
  • Guidelines
  • Software development
  • Apache-2.0
  • Medium risk

From the author

DOCA version handling: detect the installed release and validate the four-way match across pkg-config doca-common, applications/VERSION, doca_caps --version, and bfver/mlnx-release on BlueField; reason about NGC tags; look up whether a capability exists on this release; diagnose build-vs-runtime drift. Use this skill alongside doca-debug when a symptom smells of version skew: "built but nothing on the wire", "undefined reference to a symbol the docs claim exists", "DOCA_ERROR_NOT_SUPPORTED at runtime", "what does latest mean for this tag", or "is my LTS still supported". Once all four sources match, the component's build / run workflow belongs to its own library, service or tool skill. Refuse install / package choice (doca-setup), per-library API questions (matching library skill), DOCA_ERROR_* taxonomy (doca-programming-guide), and the general debug ladder (doca-debug).
— the description by NVIDIA

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill serves as the central authority for DOCA version handling. It provides the canonical four-source detection chain and the four-way match rule required to ensure consistency across host packages, BlueField BFB releases, and NGC container tags. It is designed to help users identify and resolve version skew, such as build-time versus runtime mismatches, and provides a structured approach to verifying capability support across different DOCA releases.

What it does

  • Defines the four-source detection chain for verifying DOCA installations.
  • Establishes the four-way match rule for validating version consistency.
  • Provides diagnostic procedures for build-vs-runtime drift and version skew.
  • Outlines rules for reasoning about NGC container tags and version pinning.
  • Offers a lookup procedure for checking capability support across versions.
  • Provides templates for per-library version-compatibility documentation.

When to use it

  • When you need to confirm the exact DOCA version installed on a host.
  • When troubleshooting symptoms like DOCA_ERROR_NOT_SUPPORTED or undefined symbol references.
  • When investigating why an application builds successfully but fails to function at runtime.
  • When planning an upgrade or downgrade of DOCA components.
  • When verifying if a specific DOCA capability or API is supported in your current release.
  • When checking if apt-source configurations are consistent to prevent accidental upgrades.

Advantages

  • Eliminates ambiguity by providing a single source of truth for version verification.
  • Prevents common errors like hallucinating version strings or misinterpreting 'latest' tags.
  • Standardizes the diagnosis of complex build-vs-runtime drift issues.
  • Ensures consistent version-handling practices across different DOCA library skills.
  • Provides clear, actionable steps for validating complex multi-component environments.

Usage examples

“What DOCA version do I actually have installed?”
The agent initiates the four-source detection chain (pkg-config, applications/VERSION, doca_caps, and bfver/mlnx-release) to provide an accurate, verified version report.
“My program built but does nothing on the wire; is my install consistent?”
The agent applies the four-way match rule to identify potential version skew between build-time dependencies and runtime environment components.
“Is the symmetric-RSS hash mode supported in Flow 2.6.0?”
The agent uses the version-matrix lookup procedure to confirm if the requested capability exists in the specified DOCA release.
“Can I run my host package version 3.5.0 GA against BFB version 3.2.3 LTS?”
The agent routes the query to the official DOCA Compatibility Policy to determine if the specific host and BFB version combination is supported.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/nvidia/doca-version/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip doca-version.zip -d .agents/skills

Documentation by NVIDIA

DOCA version

Examples

  • "What DOCA version do I actually have installed?" — run the four-source detection chain and require a four-way match.

  • "The program built but does nothing on the wire." — treat mixed-install drift as a version problem before rewriting application code.

Instructions

Follow Loading order below. Open the tasks companion for detect / validate / diagnose, and the capabilities companion for the four-way match and NGC tag rules. Do not open every companion file.

Where to start: This skill is the bundle's single source of truth for DOCA version handling. Open the tasks companion if the user wants to do something with the version (detect / validate / diagnose mismatch); open the capabilities companion when the question is what does version handling cover (the four-way match, the detection chain, NGC semantics, the per-library overlay pattern). Every other skill in the bundle that touches version routes here — they MUST NOT redefine the rules.

Example questions this skill answers well

The CLASSES of version-handling 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 instance.

  • "What DOCA version do I actually have installed?" — worked example: "the docs say 3.3 but I'm not sure what's on this host". Answered by the canonical detection chain in

    configure +

    Capabilities and modes

    source-of-truth table.

  • "My program built but does nothing on the wire — is my install consistent?" — worked example: "pkg-config --modversion says 3.3.0; doca_caps --version says 3.2.0". Answered by the four-way match rule in

    Version compatibility

    • the partial-install diagnosis in

    debug.

  • "Is this DOCA capability / API / sample on the version I have?" — worked example: "is the symmetric-RSS hash mode in Flow 2.6.0". Answered by the version-matrix lookup procedure in

    test (which uses the

    version-matrix.json schema defined in doca-structured-tools-contract/SKILL.md#schemas with fallback to per-library docs via doca-public-knowledge-map/SKILL.md).

  • "Can I run my host package version X against BFB version Y?" — worked example: "host is 3.5.0 GA, BlueField BFB is 3.2.3 LTS". Answered by the routing to the DOCA Compatibility Policy documented in

    Version compatibility.

  • "I'm inside the NGC DOCA container — what does the version match look like?" — worked example: "do I still need to check pkg-config / applications/VERSION / doca_caps separately?". Answered by the NGC container rule in

    Version compatibility

    • the container path in

    configure.

  • "How do I write a per-library version-compatibility section for a new skill?" — worked example: "adding doca-comch to the bundle, what does its ## Version compatibility look like?". Answered by the per-library overlay pattern in

    Safety policy

    • the worked-example template in

    modify.

  • "My apt list shows DOCA 3.3.0109, but /etc/apt/sources.list.d/doca.list is pinned at latest / a different release — is the next apt install doca-* going to silently upgrade me?" — worked example: "I rolled back BFB to 3.1.0105 but my sources still point at the latest channel." Answered by the apt-source consistency precheck in

    apt-source consistency,

    which enumerates the three legitimate shapes of a configured DOCA apt source (network URL, local file-repo, RHEL/OEL equivalent) and the do-not-install-until-the-source-matches rule that protects pinned installs from accidental drift.

When to load this skill

Load this skill whenever version handling is the load-bearing concern. The decision must be made before the agent composes its first sentence — the activation checklist below is the same one referenced from AGENTS.md ## Cross-cutting overlay activation triggers (bundle AGENTS.md#cross-cutting-overlay-activation-triggers), mirrored here so the activation rule is at hand whenever this skill is consulted.

Agent activation checklist — load this skill at the START of the answer when any cell below is true

Trigger classConcrete prompt-side signals (any one fires the overlay)
Direct version question"what DOCA version do I have", "is X consistent", "is feature Y supported on version Z", "can I mix host package version A with BFB version B", "is my LTS still supported", "what does the version string mean"
Container tag questionany prompt that mentions a specific NGC container tag, or asks about latest, or asks how to pin a tag in a Dockerfile / pod spec / Compose file. The agent MUST also cite the "never invent a tag string from memory, never quote latest without confirming it" rule from ## Safety policy.
Build vs runtime driftany debug session where the symptom is "the program built fine but DOCA_ERROR_NOT_SUPPORTED at runtime", "undefined reference to a symbol the docs say exists", "my code does nothing on the wire", "counter didn't increment" — these are the canonical partial-install symptoms
Upgrade / downgrade planthe user is planning to upgrade or downgrade DOCA on a host already running other DOCA workloads, or to refresh the BFB on a BlueField pair already attached to a host
Per-artifact cross-linka per-artifact skill's ## Version compatibility section cross-links here for the rule body, OR the agent is about to author a new per-artifact skill and needs the overlay template

When any cell above fires, the agent MUST:

  1. Cite the four-source detection chain from ## Capabilities and modes explicitly in the answer — pkg-config --modversion doca-common → cat /opt/mellanox/doca/applications/VERSION → doca_caps --version → bfver plus cat /etc/mlnx-release (BlueField hosts). Do not paraphrase or summarize the chain; cite the commands by name. Do NOT substitute mlxprivhost or bfb-info for the BFB leg — those are common hallucinations and the bundle explicitly bans them in ## Capabilities and modes.

  2. State the four-way match rule from ## Version compatibility verbatim if the prompt could possibly involve a mismatch (every deploy-shape question and every debug-shape question can; orientation-shape questions usually cannot).

  3. Refuse to invent a version string. If the agent doesn't have the actual pkg-config --modversion output from the user's host, the answer must say so and route to the detection chain — not assert a version from training-data recall.

Universal version-coherence trigger

Whenever ANOTHER overlay (e.g. doca-setup/SKILL.md, doca-hardware-safety/SKILL.md, doca-container-deployment/SKILL.md, doca-bare-metal-deployment/SKILL.md) calls a ## test / ## configure / ## modify step that requires "the install is healthy" or "versions are consistent", that step MUST resolve to a citation of this skill's four-source detection chain and four-way match rule. The agent does NOT redefine the rule per-overlay — every step that needs a version verification must route here. This is the only place in the bundle that owns the rule body.

Do not load this skill for general DOCA orientation, for install procedures (use doca-setup/SKILL.md), or for library-specific API questions (use the matching library skill).

What this skill provides

This is a thin loader. The body keeps only the orientation needed to pick the right next file. The substantive version-handling material lives in two companion files:

  • the capabilities companion — the version-handling surface: the canonical source-of-truth table for version detection, the four-way match rule, NGC container semantics, the per-library overlay pattern, the routing to the DOCA Compatibility Policy, the error taxonomy for version-related failures (pkg-config missing, partial install, BFB/host mismatch, NGC mixing), the observability surface (which command to read for which version source), and the safety policy ("never invent a version, never quote latest").

  • the tasks companion — step-by-step workflows for the six in-scope version verbs: configure (detect on this host), build (build-time match), modify (update a version pin in a build manifest), run (runtime check), test (four-way validation + version-matrix lookup), debug (diagnose mismatch / partial install). Plus a Deferred task verbs block.

Loading order

  1. Read this skill first to confirm the user's question is in scope.

  2. For the version-detection sources, four-way match rule, NGC semantics, per-library overlay pattern, error taxonomy, observability, and safety policy, see the capabilities companion.

  3. For step-by-step workflows — configure, build, modify, run, test, debug — see the tasks companion.

  • doca-structured-tools-contract/SKILL.md — the JSON schemas for the helper tools the agent should prefer when present. This skill's ## test workflow uses the version-matrix.json schema defined there; do not redefine the schema here.

  • doca-public-knowledge-map/SKILL.md — the routing table to public DOCA docs, including the Compatibility Policy. This skill cites the Compatibility Policy URL once via that map; it does not duplicate the routing.

  • doca-setup/SKILL.md — env-side install / verify / NGC container path. This skill assumes its preconditions are satisfied (i.e., something is installed somewhere; the version question is what was installed and is it consistent).

  • doca-programming-guide/SKILL.md — program-side guidance (quote the version observed, header-wins, capability-discovery rules). The program-side ## Version compatibility section there is now a 3-5 line redirect to this skill plus the program-side overlay (quote vs assume; never use agent-memory version).

  • doca-debug/SKILL.md — the cross-cutting debug ladder. Layer 2 (version mismatch) of that ladder is owned by this skill's ## debug workflow.

Files

TASKS.md

DOCA version handling workflows

Where to start: The verbs run configure → build → modify → run → test → debug. Skip ahead only when the user is already past a verb. The ## test verb is the four-way match + version-matrix lookup loop (read sources → cross-check → look up min-version per capability → loop back if drift detected), not a one-shot pass — see the eval-loop overlay in ## test below.

Read this file when the loader sent you here from SKILL.md. For the underlying detection sources, the four-way match rule, NGC semantics, error taxonomy, observability, and per-library overlay pattern, see CAPABILITIES.md. For the JSON schemas of the structured-tools helpers the agent prefers when present, see doca-structured-tools-contract/SKILL.md.

Each verb below describes the shape of the workflow, not a copy-paste recipe. The agent's job is to walk the user through the steps in order, verifying preconditions before recommending the next call.

configure

Goal: detect the DOCA version installed on this host and confirm the four-way match (so every subsequent answer in the same session can quote the verified version).

Steps the agent should walk the user through:

  1. Probe for the structured helper first. Run command -v doca-env (per doca-structured-tools-contract ## The agent behavior contract (doca-structured-tools-contract/SKILL.md#the-agent-behavior-contract)). If present, run doca-env --json and read version.consistent — one line, four-way match pre-computed. Report "using structured doca-env" per the contract's report rule. If the command fails, emits invalid JSON, or omits version.consistent, record the helper failure and fall back to the manual chain; do not infer coherence from partial output.

  2. If structured helper absent, walk the manual chain. In order: pkg-config --modversion doca-common, cat /opt/mellanox/doca/applications/VERSION, doca_caps --version. Before the runtime leg, resolve the installed binary without assuming it is on PATH: DOCA_CAPS="$(command -v doca_caps || true)"; test -n "$DOCA_CAPS" || DOCA_CAPS=/opt/mellanox/doca/tools/doca_caps; test -x "$DOCA_CAPS". Stop and report the missing runtime source if that final test fails; otherwise invoke "$DOCA_CAPS" --version. This is the chain's doca_caps --version leg. On BlueField hosts also: bfver (BlueField Arm console, or on the host against a standalone BFB file) and cat /etc/mlnx-release (BlueField Arm side). Do NOT substitute mlxprivhost (privileged-host configuration, not BFB version) or bfb-info (not a real NVIDIA-documented tool); both are common hallucinations. Quote the version observed from each source; never paraphrase. Report "falling back to manual chain" per the contract.

  3. Compare the four sources. All four must agree. If any disagree, the install is partial; route to ## debug ladder step 2 before continuing.

  4. Identify the host kind. Host (x86 / Arm with BlueField as SmartNIC), BlueField (Arm running the BFB image directly), or inside-NGC-container. The host kind decides which version-related questions are even meaningful (e.g. "BFB version" is meaningless inside a non-BlueField NGC container).

  5. Record the version + host_kind for the session. Every subsequent answer in the same conversation quotes this verified version. Do not re-detect on every question; re-detect only when the user reports an install change.

If any step fails with a pkg-config: Package ... was not found or similar, route through ## Error taxonomy before retrying.

build

Goal: confirm the build-time DOCA version the user's project will link against matches the runtime DOCA version on the build host.

The build pattern for any DOCA C/C++ consumer uses pkg-config for include + link flags — fully documented in doca-programming-guide TASKS.md ## build (doca-programming-guide/TASKS.md#build). This skill carries only the version-side overlay:

SlotValueWhy it matters
Build-time version sourcepkg-config --modversion doca-common (cross-library) + pkg-config --modversion doca-<library> (per library being linked)The agent quotes the version observed; the build manifest does NOT pin a version (Linux pkg-config does that already). Hardcoding a version in the build file is anti-pattern: it creates the partial-install trap on the next reinstall.
Compile-time version macrosDOCA_VERSION_MAJOR / MINOR / PATCH from doca_version.hThe user's program reads these at compile time if it wants conditional compilation across DOCA releases. Cite this when the user is doing version-gated #ifdef work.
Build-time vs runtime match guaranteeBuild host == deploy host case is trivial. Cross-host: the agent MUST surface that the user is building on a host that will deploy elsewhere, and that the four-way match has to be re-verified on the deploy host.A program built on a 3.3.0 host and deployed to a 3.2.0 host will fail at runtime in confusing ways; this is the multi-host case of the partial-install trap.

For non-C consumers (Rust, Go, Python), the build-time version visibility goes through the language's own FFI generator (e.g. bindgen against doca_version.h); the four-way match rule still applies — the wrapper consumes a *.so that has its own runtime version.

modify

Goal: update a version-related setting in a build manifest, an install procedure, or a per-library skill's ## Version compatibility overlay.

Three concrete shapes the modify workflow handles:

Modify intentWhat changesPre-modify checklist
1. Update a build-manifest pkg-config minimumThe minimum DOCA version the project requires (e.g. dependency('doca-common', version: '>=2.6.0') in meson.build)Confirm via the version-matrix that 2.6.0 is in fact when the user's needed capability landed; over-pinning excludes users whose install is older but supports the capability via a different path
2. Update a per-library skill's ## Version compatibility overlayThe 3-5 line redirect + the one library-specific overlay rulePer the overlay pattern in CAPABILITIES.md ## Safety policy, the overlay MUST cross-link this skill and MUST add at most one library-specific rule; if you find yourself writing more, the content belongs here instead
3. Bump the version-matrix when a new DOCA release shipsAppend rows to version-matrix.json for newly-available capabilities, set max_doca_version on rows the new release removesThe schema is locked in doca-structured-tools-contract/SKILL.md#schemas; follow it. The source-quote field MUST be derived from a public docs URL, never agent memory

Each modify intent produces a minimum diff; never expand scope to "while we're here". A version-only modify that also re-flows prose in adjacent sections is a scope creep in disguise.

run

Goal: confirm at runtime that the DOCA version the program is actually loading matches the version it expects.

Three runtime checks the agent recommends in order:

  1. doca_caps --version. Resolve doca_caps through the DOCA_CAPS command above before invocation; do not assume it is on PATH. The result is the runtime DOCA version visible to the program and must match the build-time version from ## build.

  2. ldconfig -p | grep doca. Which DOCA *.so files the runtime linker can find. If multiple DOCA installs exist on the host, this is where the cross-version trap shows up — the runtime resolves to whichever install is first on LD_LIBRARY_PATH, regardless of which one pkg-config found at build time.

  3. Per-library cap query at runtime. Once the program is up, call the relevant doca_<library>_cap_* query for the capabilities the program depends on. The version-matrix told the program what should be there; the cap query tells it what is actually there. When they disagree, the cap query wins.

test

Goal: prove the installed DOCA is consistent (four-way match) and that the capabilities the user's program depends on are actually available on this version + device.

This is a loop, not a one-shot pass. Each iteration narrows either the source set being checked, the library being looked up, or the device being capability-queried. The loop terminates when either (a) the four-way match holds AND every required capability reports is_supported == true, or (b) the agent has narrowed the failure to a layer outside version handling (driver / firmware / hardware) and escalated to the matching skill.

Iteration shape:

  1. Four-way match check. Read all four sources (per ## configure step 2). Pass = all four agree. Fail = route to ## debug ladder step 2.

  2. Version-matrix lookup. For each capability the user's program / question depends on: look up version-matrix.json (per doca-structured-tools-contract ## version-matrix.json schema (doca-structured-tools-contract/SKILL.md#schemas)) if present; otherwise fetch the matching per-library docs page via doca-public-knowledge-map/SKILL.md and extract the "available since" prose. Compare the minimum DOCA version against the installed version.

  3. Per-library capability query. For each capability the version-matrix says is in this release: run the matching doca_<library>_cap_* query against the active doca_devinfo. If false, the device does not support the capability even though the version does — narrow to a device-level answer (route to the matching library skill).

  4. Cross-host check (when applicable). If the user builds on host A and deploys on host B, re-run steps 1-3 on host B. The four-way match is a per-host property; cross-host deployment requires both hosts to pass.

  5. Loop back if any check changed the version picture. A reinstall, a LD_LIBRARY_PATH change, or a BFB re-image changes the version state; re-run from step 1 after any of those.

Eval-loop overlay — why this is a loop, not a one-shot pass:

Iteration triggerWhat it looks likeWhat changes next iteration
Four-way match was passing yesterday, fails todayOne of the sources is now reading a different versionSomething on disk changed: a partial upgrade, a new LD_LIBRARY_PATH, a different PKG_CONFIG_PATH in the shell. Re-narrow to which source moved.
Version-matrix says capability X is available; cap query returns falseThe release supports the capability; this device does notDevice-level constraint; the answer is at the device layer, not the version layer. Route to the matching library skill's ## configure.
Cap query returns true; runtime call still returns DOCA_ERROR_NOT_SUPPORTEDThe capability claim is fine at startup; something else changedRuntime state changed mid-program (different context, different device, different permissions). Route to the matching library skill's ## debug.
Version-matrix lookup gave a definitive answer; the user reports a different resultEither the version-matrix is stale, OR the user's installed version is not what the agent thoughtRe-run step 1 (four-way match) first; a stale version-matrix is rare, a forgotten reinstall is common.
Cross-host: host A passes; host B failsThe deploy host has a different DOCA installThis is the multi-host case of partial-install. The fix is to bring both hosts to the same release.

Loop termination: run the version sweep once and, only when one evidence-backed correction changes the captured version state, run it one more time. Stop after that second sweep regardless of outcome. If it is still inconsistent or reveals another required correction, the cause is below version handling; escalate to doca-debug ## debug (doca-debug/TASKS.md#debug) with both captures as evidence.

debug

Goal: when a session's symptom narrows to a version-handling cause, diagnose it through the layered ladder below before any other layer is considered.

The cross-library debug ladder lives in doca-debug TASKS.md ## debug (doca-debug/TASKS.md#debug). Walk through it in order — install → version → build → link → runtime → program → driver. This skill OWNS layer 2 (version); the other layers redirect.

Layer 2 (version) — full diagnosis ladder.

  1. Read all four sources. Per ## configure step 2. Capture them in the session for reference.

  2. Identify the disagreement. Most common patterns:

    • pkg-config doca-common ≠ cat applications/VERSION → install scripts and *.pc files are from different releases. Re-install consistently via doca-setup/SKILL.md.

    • pkg-config doca-common ≠ doca_caps --version → build-time and runtime are from different releases. Check LD_LIBRARY_PATH and ldconfig -p | grep doca; the runtime is resolving to a different install.

    • pkg-config doca-common ≠ pkg-config doca-<library> → individual library .pc file is from a different release. The user installed doca-<library> from a different package than doca-common; route to doca-setup/SKILL.md for a consistent reinstall.

    • BFB version differs from host package version → cross-host compatibility-window question. Cite the DOCA Compatibility Policy; bring host and DPU into agreement.

  3. Verify the fix. After the reinstall, re-run ## test step 1. The four-way match must hold before any other layer is re-considered.

  4. Document the version state in the session. Subsequent answers in the same conversation quote the verified version; the user does not have to re-detect.

For the other ladder layers — install, build, link, runtime, program, driver — route to the matching skill (doca-setup, doca-programming-guide, doca-debug).

apt-source consistency

The single most expensive class of partial-install failure on Debian / Ubuntu hosts is apt-source mismatch: the host's /etc/apt/sources.list.d/doca.list (or equivalent) is pointed at one DOCA release channel (frequently latest, or a specific point release like 3.5), while the host's already-installed doca-* packages are pinned to a different release (e.g. 3.1.0105). The symptom set is wide and confusing:

  • "I rolled back the BlueField to 3.1.0105 for a bug repro, but on the host apt upgrade re-installed doca-tools from latest and now nothing on host/BF agrees."

  • "I ran the documented install line from the DOCA Installation Guide for release X, but on this host the package candidate is from release Y."

  • "Two co-tenants installed DOCA on the same host from different channels and now doca-common is from one release and doca-tools is from another."

  • "Everything looked fine yesterday; today apt update && apt upgrade quietly pulled a newer DOCA point release and broke my build."

This anchor is the agent's precheck for any host that has DOCA installed AND is about to receive any subsequent apt install / apt upgrade invocation. It runs BEFORE doca-setup ## configure (doca-setup/TASKS.md#configure) and is referenced from the cross-cutting precondition step there.

  1. Capture the configured DOCA apt source(s). On Debian / Ubuntu: grep -R 'doca' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null. The agent reads back to the user (a) the source file path(s) DOCA is configured from, and (b) the release channel string the source resolves to. Three shapes the agent should recognize and treat equivalently when reasoning about "which release this host will pull from":

    • Network URL form — typically https://linux.mellanox.com/public/repo/doca/<channel>/<distro>/<arch>/, where <channel> is either latest (rolling) or a pinned X.Y.Z (e.g. 3.3.0/). This is the canonical form the DOCA Installation Guide documents for fresh installs.

    • Local file-repo form — file:/usr/share/doca-host-<full-build-id>/repo ./, dropped on disk by the doca-host meta-package on Ubuntu / Debian hosts that installed via the offline .deb bundle. The build-id embeds the release: e.g. doca-host-3.3.0-088000-26.01-ubuntu2204 is DOCA 3.3.0 host build 088000, OFED 26.01, on Ubuntu 22.04. The release channel is the X.Y.Z inside the build-id; it is already pinned by the bundle and cannot drift across apt upgrade unless doca-host itself is upgraded.

    • RHEL / OEL equivalent — /etc/yum.repos.d/doca*.repo with a baseurl= line; the same three-way distinction (network URL with channel, or pinned URL with X.Y.Z, or local file-repo dropped by doca-host) applies.

  2. Capture the installed DOCA package version(s). Run dpkg -l | grep -E '^ii\s+doca-' | awk '{print $2, $3}' (Ubuntu) or rpm -qa | grep '^doca-' | sort (RHEL). The agent reads back to the user the installed versions of the canonical anchors doca-common, doca-tools, doca-host, doca-samples (any that are installed).

  3. Cross-check the two captures. The release channel in step 1 MUST be the same release as the installed versions in step 2. The mismatches that are load-bearing failure modes:

    • Step 1 source channel = latest, step 2 installed = a pinned X.Y.Z — the next apt upgrade will silently move the host to whatever latest resolves to at that moment, which may not be the release the operator's BlueField / co-tenant assumes.

    • Step 1 source channel = X.Y.Z, step 2 installed = a different A.B.C — the host was installed from one channel, the source list points at another. apt-cache policy doca-common will report a "Candidate" version that also differs from "Installed", and any subsequent apt install of a new DOCA-coupled package will pull from the channel, not from the installed release.

    • Step 1 returns no DOCA source AND step 2 reports DOCA installed — the host was installed once and then the apt source was removed; future apt upgrade cannot keep DOCA in sync, and the agent surfaces that the host is on a frozen release.

  4. Action depending on which mismatch. The agent surfaces the mismatch to the user AND surfaces the documented apt-source-pin recommendation BEFORE any further apt install / apt upgrade runs:

    • Prefer pinning the apt source to the explicit X.Y.Z URL form documented in the DOCA Installation Guide (reached through doca-public-knowledge-map/SKILL.md#public-documentation-entry-points) for any controlled upgrade — latest channels are for fresh installs, NOT for landing on a known target release.

    • When the source channel and installed version genuinely diverge, the safe path is: (a) pick the release the operator WANTS this host on, (b) reconfigure the apt source to that explicit X.Y.Z channel, (c) apt update && apt-cache policy doca-common to confirm "Candidate" matches the target, (d) THEN re-install the DOCA package set to converge the host on that release (per the documented Installation Guide procedure — the agent does not invent the package list).

  5. Tie back to the four-source detection chain. Once the apt source is reconciled with the installed release, re-run the four-source chain in ## configure step 1 — the match is only meaningful AFTER the apt source is no longer silently disagreeing with what is installed.

  6. For BFB / BlueField side. The same class of failure exists on the BlueField side when the operator pushed a different BFB (e.g. rolled the BF back to 3.1.0105) but did NOT simultaneously reconfigure the host's apt source to match. This is exactly the doca-bare-metal-deployment ## bluefield-state-classifier (doca-bare-metal-deployment/TASKS.md#bluefield-state-classifier) state host-bf-version-mismatch; the apt-source precheck above is the host-side cause of that state.

The precheck is intentionally simple to run (two grep / dpkg captures plus a comparison) precisely because the agent should run it on EVERY install-shaped session. Skipping it is the most common way an otherwise-clean version-handling session ends with the user on a release they did not ask for.

Deferred task verbs

The following verbs are out of scope for this skill but are commonly asked in the same conversations. Route them as follows so the agent does not invent guidance:

  • install. Installing DOCA, choosing packages, post-install verification — defer to doca-setup/SKILL.md. This skill assumes something is installed; version handling is what was installed and is it consistent.

  • deploy. Deploying DOCA-using applications at scale across multiple hosts / DPUs, Kubernetes operator workflows — out of scope for this skill. The multi-host version match is handled in this skill's ## test cross-host check; the deploy mechanics are not.

  • rollback. Coordinated rollback of a DOCA release across multiple hosts / DPUs — out of scope for this skill. For single-host version rollback, the right verb is reinstalling the previous release via doca-setup; this skill does not own the rollback procedure.

  • firmware burn / BFB re-image. Burning new ConnectX firmware or re-imaging a BlueField with a different BFB — out of scope. This skill DETECTS the BFB version as one of the four match legs; it does not change the BFB.

Command appendix

Every command below is cross-cutting on DOCA version handling — it answers a recurring class of question that comes up in the verbs above. The agent should treat the class as load-bearing; the worked example is a single instance. Run-as user is the unprivileged user unless noted. Rows that need elevated privileges call that out explicitly.

Command (worked example)Owning stepClass of question it answersWhat healthy output looks like
Read version.consistent from doca-env --json if present per doca-structured-tools-contract/SKILL.md#schemas; else walk the manual chain below## configure step 1What is the installed DOCA version and is it consistent?Single semver matching across all sources (structured) OR four matching semver strings from the manual chain
pkg-config --modversion doca-common## configure step 2; ## build slot 1What is the build-time DOCA version?A semver string matching doca_caps --version
cat /opt/mellanox/doca/applications/VERSION## configure step 2What does the install tree itself claim?A semver string matching the other sources
"$DOCA_CAPS" --version after resolving DOCA_CAPS in ## configure step 2 (the canonical doca_caps --version leg)## configure step 2; ## run step 1What is the runtime DOCA version without assuming the tool is on PATH?A semver string matching pkg-config --modversion doca-common
bfver (BlueField Arm console, or on the host against a standalone BFB file) and cat /etc/mlnx-release (BlueField Arm side)## configure step 2 (BlueField only)What is the BFB-side DOCA version?A semver string from bfver and a full BFB image string from /etc/mlnx-release, both matching the host package version. Do NOT use mlxprivhost or bfb-info for this — see CAPABILITIES.md ## Capabilities and modes.
grep -RHn 'DOCA_VERSION_' $(pkg-config --variable=includedir doca-common)/doca_version.h## configure step 2; ## build slot 2What macros does this install expose for compile-time version checks?A DOCA_VERSION_MAJOR / MINOR / PATCH triple matching the runtime version
`ldconfig -pgrep doca`## run step 2; ## debug layer 2Which DOCA *.so files does the runtime linker see?
ls "$(dirname "$(find /opt/mellanox/doca -name doca-common.pc -print -quit)")" (commonly /opt/mellanox/doca/lib/<arch>-linux-gnu/pkgconfig/ on DOCA 3.3+, OR /opt/mellanox/doca/infrastructure/lib/pkgconfig/ on legacy / split-profile installs)## debug layer 2Which *.pc files does this install ship?One *.pc per installed library; doca-common.pc MUST be present
Look up capability in version-matrix.json if present per doca-structured-tools-contract/SKILL.md#schemas; else fetch the matching per-library docs page via doca-public-knowledge-map/SKILL.md and extract the "available since" prose## test step 2Is capability X available on the user's installed version?Min-version row (structured) OR quoted prose (manual) — both saying "available since DOCA Y.Z.W"

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

The author says: No DOCA install required to read this skill (it is an overlay loaded against any DOCA artifact skill); the validation steps within DO require a live DOCA install at /opt/mellanox/doca.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
NVIDIA
Publisher
NVIDIA (Official)
Source
NVIDIA/skills · skills/doca-version · commit fce3cca
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE-APACHE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by NVIDIA or NVIDIA.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download doca-version.zip