
DOCA Common
OfficialFreeFoundation for DOCA programming on BlueField and ConnectX.
Free · Opens the source repo
What DOCA Common does
DOCA Common is an essential skill for developers working with NVIDIA's DOCA framework, particularly when programming on BlueField DPUs or ConnectX NICs. This skill provides the foundational primitives necessary for building applications that utilize various DOCA libraries, such as doca-flow, doca-rdma, and doca-eth. It encompasses the lifecycle management of doca_ctx, device discovery through doca_devinfo, and the mechanisms for zero-copy I/O with doca_buf and doca_buf_inventory. By mastering these components, developers can ensure their applications are built on a solid groundwork, enhancing reliability and performance.
When using DOCA Common, developers can efficiently manage the context lifecycle, discover device capabilities, and implement zero-copy buffers across libraries. The skill also addresses common issues, such as ensuring task submissions complete successfully and understanding the logging model within DOCA. Developers can refer to the provided documentation to navigate tasks related to configuration, building, modifying, running, testing, and debugging their applications. This structured approach streamlines the development process, allowing users to focus on higher-level functionalities without getting bogged down by foundational concerns.
This skill is particularly beneficial for external developers who are integrating any DOCA library into their applications. It serves as a reference point for all interactions with DOCA, ensuring that users have the necessary knowledge to handle foundational tasks before delving into specific libraries. Whether you are starting a new project or troubleshooting existing code, DOCA Common equips you with the tools and insights needed to succeed in your development endeavors.
When to use it
Use this skill whenever you are setting up or troubleshooting DOCA applications, especially when dealing with BlueField or ConnectX hardware.
When not to use it
This skill is not suitable for users looking for specific implementations or features of individual DOCA libraries without understanding the foundational context first.
What you can build with it
Setting Up a New DOCA Application
When starting a new DOCA application, use this skill to establish the necessary foundational context before opening any specific library contexts.
Troubleshooting Task Completions
If tasks submit but do not complete, this skill helps identify missing steps in the progress engine or context lifecycle.
Managing Zero-Copy Buffers
When implementing zero-copy I/O, this skill provides guidance on wiring `doca_buf` and managing buffer lifecycles across libraries.
How to install DOCA Common
View source1. Install with the skills CLI
npx skills add nvidia/skills/doca-common --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by nvidiaDOCA Common
Where to start: This skill is the foundation every DOCA app
loads first — before doca-flow, doca-rdma, doca-eth, doca-comch, or
any other higher-level library. Every doca_<library>_* context is
built on top of doca_ctx, every device handle is a doca_dev
discovered through doca_devinfo, every zero-copy buffer is a
doca_buf from a doca_buf_inventory over a doca_mmap, every
task completion drains through a doca_pe, and every log line emits
through doca_log. Open CAPABILITIES.md when
the question is what does Common express on this install; open
TASKS.md when the user wants to do something
(configure / build / modify / run / test / debug). If the user has
not installed DOCA yet, route to
doca-setup first. If the user is
already past the foundation and asking a library-specific question
(e.g. "how do I program a Flow pipe"), load the matching per-library
skill alongside this one — they cross-link back here for the shared
primitives.
Example questions this skill answers well
The CLASSES of doca-common 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 is the doca-common foundation I have to set up BEFORE I
open a doca-flow / doca-rdma / doca-eth / … context?" — worked
example: "I'm starting a brand-new DOCA Flow program on
BlueField-3; what's the doca-common skeleton I need before I open
the Flow port?". Answered by the universal foundation walk in
TASKS.md ## configure+CAPABILITIES.md ## ctx+CAPABILITIES.md ## dev+CAPABILITIES.md ## progress engine. - "How do I discover a device and gate on its capabilities before
trusting the public docs?" — worked example: "I want to use
doca_eth_txqbut the docs hint at a feature only on certain firmware bands". Answered by the capability-discovery rule (doca_devinfo_create_list→doca_*_cap_*against the activedoca_devinfois the runtime authority) inCAPABILITIES.md ## dev+TASKS.md ## use. - "What's the doca_buf / doca_mmap / doca_buf_inventory wiring
for zero-copy I/O, and what's the lifecycle order?" — worked
example: "I want to register a user-space buffer with my device,
carve it into N data-plane buffers, and reference-count them
across multiple DOCA libraries". Answered by the zero-copy
buffer model in
CAPABILITIES.md ## buf+ the buffer-lifecycle walk inTASKS.md ## configure+TASKS.md ## use. - "How does the progress engine work and where do I have to call
it?" — worked example: "my doca_rdma task submits cleanly but
nothing completes — what loop am I missing?". Answered by the PE
surface in
CAPABILITIES.md ## progress engine- the run-loop pattern in
TASKS.md ## run.
- the run-loop pattern in
- "Why don't my DOCA log lines appear at the level I expect, and
what's the difference between
--sdk-log-leveland the app-side setter?" — worked example: "I set--sdk-log-level DEBUG, my ownDOCA_LOG_DBGlines still don't print". Answered by the two-tier log model inCAPABILITIES.md ## log- the tier-flip iteration in
TASKS.md ## log.
- the tier-flip iteration in
- "What does this
DOCA_ERROR_*from adoca_buf_*/doca_ctx_*/doca_dev_*/doca_pe_*/doca_log_*call mean?" — worked example: "DOCA_ERROR_BAD_STATEfromdoca_ctx_start". Answered by the Common overlay on the cross-libraryDOCA_ERROR_*taxonomy inCAPABILITIES.md ## Error taxonomy- the layered ladder in
TASKS.md ## debugthat escalates todoca-debug.
- the layered ladder in
Audience
This skill serves every external developer building applications
that consume any DOCA library — i.e., users whose code calls any
doca_* symbol (directly in C/C++, or through FFI/bindings from
another language). Whether the user's primary library is doca-flow,
doca-rdma, doca-eth, doca-comch, doca-dma, doca-rmax, doca-sha,
doca-aes-gcm, doca-erasure-coding, or any other, the doca-common
surface is under it and the user will hit doca_buf, doca_ctx,
doca_dev, doca_pe, and doca_log as part of the first-app
journey. It is not for NVIDIA developers contributing to DOCA
Common itself.
Language scope
DOCA Common ships as a C library with pkg-config module name
doca-common. The shipped samples that demonstrate Common primitives
live inside every per-library samples tree (any
/opt/mellanox/doca/samples/<library>/<sample>/*_main.c is a worked
example of the universal foundation — doca_devinfo_create_list
→ doca_dev_open → per-library doca_ctx create → doca_pe_create
→ doca_pe_connect_ctx → doca_ctx_start → submit work → drive
doca_pe_progress → drain completions → doca_ctx_stop → destroy).
C and C++ consumers are the canonical case and the worked examples
in TASKS.md assume that path. Other-language consumers (Rust, Go,
Python, …) consume the same *.so through FFI or language-specific
bindings; the skill's contribution in that case is to keep the
universal foundation walk, the lifecycle, the capability-discovery
rule, the PE-drives-completion rule, and the two-tier log model
language-neutral, and to route the agent to the public C ABI as the
authoritative surface that any wrapper will eventually call.
When to load this skill
Load this skill whenever the user is doing any hands-on DOCA work — it is the foundation. Concretely:
- Setting up the universal DOCA-side skeleton before opening any per-library context (Flow, RDMA, Eth, Comch, DMA, Rmax, …).
- Discovering devices and representors and gating capability use
on the active
doca_devinfovia thedoca_*_cap_*family. - Wiring
doca_mmap+doca_buf_inventory+doca_buffor zero-copy I/O that crosses libraries (e.g. doca-eth feeds doca-dma feeds doca-rdma — they share the same buf surface). - Driving the progress engine (
doca_pe_create/doca_pe_connect_ctx/doca_pe_progress) — the universal task-completion drain every DOCA Core context relies on. - Wiring DOCA Log into a fresh app or modifying a shipped sample to
add the user's own per-component log lines via the two-tier
(
--sdk-log-levelvs app-side registry) model. - Debugging a
DOCA_ERROR_*returned from anydoca_buf_*/doca_ctx_*/doca_dev_*/doca_pe_*/doca_log_*call — the Common surface is where most lifecycle / capability / permission errors first surface for higher-level libraries. - Designing or extending non-C bindings (Rust, Go, Python, …) that wrap any DOCA library — for the universal foundation surface (buf, ctx, dev, pe, log) the wrapper has to expose first.
Do not load this skill for library-specific Flow, RDMA, Eth,
Comch, DMA, Rmax, … questions in isolation — load the matching
per-library skill alongside this one. Do not load this skill for
general DOCA orientation, install of DOCA itself, or
"where do I find docs". For those, use
doca-public-knowledge-map
or doca-setup.
What this skill provides
This is a thin loader. The body keeps only the orientation needed to pick the right next file. The substantive Common material lives in two companion files:
CAPABILITIES.md— what doca-common expresses on this install: the## Capabilities and modesoverview of the universal primitives every DOCA application touches; the five subsystem H2s (## log,## buf,## ctx,## dev,## progress engine) that own the per-primitive surface; the## Version compatibilitydoca-common-specific overlay; the## Error taxonomyCommon-side view of the universalDOCA_ERROR_*set; the## Observabilitysurface (logs, PE events, capability snapshots); and the## Safety policyoverlay on the bundle-wide hardware-safety meta-policy.TASKS.md— step-by-step workflows for the universal verbs (configure,build,modify,run,test,debug,use) PLUS a## logverb-side that covers the two-tier log model in workflow form. Plus aDeferred task verbsblock that points install / deploy / rollback questions at the right next skill.
The skill assumes a host or BlueField where DOCA is already
installed at the standard location and the user has the privileges
their public install profile expects. It does not cover installing
DOCA — that path goes through
doca-setup.
What this skill deliberately does not ship
This skill is agent guidance, not a samples or templates bundle. To keep the boundary clean, it deliberately does not contain — and pull requests should not add:
- Pre-written DOCA application source code, in any language.
The verified Common usage shows up inside every shipped DOCA
sample at
/opt/mellanox/doca/samples/<library>/<sample>/*_main.cand inside every shipped reference application. The agent's job is to route the user to those files and prescribe a minimum-diff modification on them via the universal modify-a-sample workflow indoca-programming-guide. - Standalone build manifests (
meson.build,CMakeLists.txt,Cargo.toml,setup.py,go.mod, …) parked inside the skill. The agent constructs the build manifest in the user's project directory against the user's installed DOCA, wherepkg-config --modversion doca-commonis the source of truth. - A
samples/,bindings/, orreference/subtree of any kind. A mock or incomplete artifact in this skill's tree, even one labeled "reference", is misleading: users will read it as buildable.
Loading order
- Read this
SKILL.mdfirst to confirm the user's question is in scope. - For the universal primitives (
log/buf/ctx/dev/progress engine), thepkg-config --modversion doca-commonanchor, the Common error overlay, observability, and safety policy, see CAPABILITIES.md. - For step-by-step workflows — configure, build, modify, run, test, debug, use, log — see TASKS.md.
Both companion files cross-link to each other,
doca-version for the canonical
version-handling rules,
doca-programming-guide
for the universal modify-a-shipped-sample workflow and the
cross-library DOCA_ERROR_* taxonomy,
doca-debug for the cross-cutting
debug ladder, and
doca-public-knowledge-map
whenever the right answer is "look it up in the public docs or the
installed package layout" rather than "Common-specific guidance".
Related skills
doca-public-knowledge-map— the routing table for every public DOCA documentation source and the on-disk layout of an installed DOCA package. Always available alongside this skill; this skill expects to be able to defer documentation-finding and install-layout questions there instead of duplicating them.doca-setup— env preparation, install verification, and the I have no install yet path with the public NGC DOCA container (nvcr.io/nvidia/doca/doca) as the universal Stage-1 fallback. This skill assumes its preconditions are satisfied.doca-version— canonical DOCA version-handling rules (four-way match, NGC semantics, headers-win-over-docs).pkg-config --modversion doca-commonis the build-time anchor every DOCA install carries; this skill's## Version compatibilityoverlays the Common-specific notes on top.doca-programming-guide— general DOCA programming patterns shared by every library: the canonicalpkg-config+ meson build pattern, the universal modify-a-shipped-sample first-app workflow, the universal lifecycle, the cross-libraryDOCA_ERROR_*taxonomy, and the program-side debug order. This skill is the primitives layer the programming-guide patterns rest on.doca-debug— the cross-cutting debug ladder (install / version / build / link / runtime / program / driver) and the verbosity-escalation surface. DOCA Log is the foundationdoca-debugbuilds its runtime-debug story on; this skill is where the two-tier log model and the universal lifecycle errors first surface, anddoca-debugcross-links here for both.doca-structured-tools-contract— the bundle's structured-tools precedence rule (detect / prefer / fall back / report). The Command appendix in TASKS.md honors this contract.doca-hardware-safety— the cross-cutting hardware-safety meta-policy this skill's## Safety policyoverlays.- Per-library skills (
doca-flow,doca-rdma,doca-eth,doca-comch,doca-dma,doca-rmax,doca-sha,doca-aes-gcm,doca-erasure-coding,doca-compress,doca-dpa,doca-gpunetio,doca-pcc,doca-sta,doca-telemetry,doca-urom,doca-verbs,doca-argp,doca-devemu,doca-dpdk-bridge, …) — every per-library skill cross-links back to this skill for the foundation primitives. Loading this skill alongside any of them is the recommended default.
Frequently asked questions about DOCA Common
Similar skills
WinMD API Search
Easily find and explore Windows desktop APIs.
WebMCPify
Transform any web app into an agent-ready platform.
Phoenix Tracing
Instrument LLM applications with OpenInference tracing.
Foundry Hosted Agent CopilotKit
Guidance for developing agentic web apps on Azure.
Power Automate Foundation
Connect AI agents to Power Automate seamlessly.
Power Automate Flow Builder
Efficiently build and deploy Power Automate flows programmatically.
