doca-dma
Use this skill when the user is doing hands-on DOCA DMA programming — bringing up a doca_dma context, configuring the single doca_dma_task_memcpy task type, sizing buffers via the doca_dma_cap_task_memcpy_* queries, setting LOCAL_READ_ONLY / LOCAL_READ_WRITE permissions on source / destination doca_…
Install / Use
npx skills add NVIDIA/skills --skill doca-dmaInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of doca-dma
doca-dma scores 88/100 on our quality scale, 961st of 3,356 Development & Engineering skills we index (top 29%).
Its SKILL.md is 13 KB long, well organised into 8 sections and no code examples: a thorough specification that gives an agent plenty to work with.
With 3,421 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 5 days ago, so doca-dma is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
doca-dma compared with similar skills
All 4 of these similar skills score higher than doca-dma; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| doca-dma (this skill)by NVIDIA | 88 | 3.4k | 5d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 86.0k | 13d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.0k | today | CLAUDE.md |
| rufloby ruvnet | 100 | 73.4k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
Frequently asked questions
- How do I install doca-dma?
- Run
npx skills add NVIDIA/skills --skill doca-dma. The install tabs above show the steps for each supported agent. - Which AI agents does doca-dma work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is doca-dma safe to use?
- It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is doca-dma still maintained?
- The repository was last updated 5 days ago, so doca-dma is actively maintained.
Skill content
View source on GitHublicense: Apache-2.0
name: doca-dma
description: >
Use this skill when the user is doing hands-on DOCA DMA
programming — bringing up a doca_dma context, configuring the
single doca_dma_task_memcpy task type, sizing buffers via the
doca_dma_cap_task_memcpy_* queries, setting LOCAL_READ_ONLY /
LOCAL_READ_WRITE permissions on source / destination doca_mmap
regions (plus doca_mmap_export_* for cross-peer copies),
driving the progress engine, or debugging DOCA_ERROR_* returns.
Trigger even when the user does not explicitly mention "DOCA
DMA" or "doca_mmap" — typical implicit phrasings include
"memcpy host buffer to BlueField without using the CPU",
"offload a bulk copy to the DPU", "copy returns NOT_PERMITTED
on first submit", "buffer too big for one DMA task", "task
submitted but no completion", or "scatter-gather copy between
two memory regions". Refuse and route elsewhere for
cross-network copies (DOCA RDMA), producer/consumer messaging
(DOCA Comch), DOCA Core / progress-engine internals, or DOCA
install — 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-dma and inspects
/opt/mellanox/doca/{lib,include,samples,applications}.
DOCA DMA
Where to start: This skill assumes DOCA is already installed
and the user is doing hands-on DMA work on a BlueField /
ConnectX / host with DOCA. Open TASKS.md if the user
wants to do something (configure / build / modify / run / test /
debug); open CAPABILITIES.md when the question
is what can DMA express on this version. If the user has not
installed DOCA yet, route to
doca-setup first. If the user is
not sure DMA is even the right library — the data has to traverse
the network, or the flow is small messages between two processes —
read the path-selection rule in
CAPABILITIES.md ## Capabilities and modes
before configuring anything.
Example questions this skill answers well
The CLASSES of DMA 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.
- "How do I bring up a DOCA DMA context and copy a buffer
between host and DPU?" — worked example: "copy a 64 KiB
buffer from host memory to DPU memory in one task, starting from
the shipped DMA Copy reference application". Answered by the
lifecycle + memcpy-task workflow in
TASKS.md ## configure+CAPABILITIES.md ## Capabilities and modestask-type table. - "How big a buffer can I memcpy in one task on this device?" —
worked example: "can I copy 16 MiB in a single
doca_dma_task_memcpy". Answered by the capability-query rule (doca_dma_cap_task_memcpy_get_max_buf_size, plus_get_max_buf_list_lenfor scatter-gather) inCAPABILITIES.md ## Capabilities and modes- the discovery step in
TASKS.md ## configure.
- the discovery step in
- "What permissions do my source and destination mmaps need?" —
worked example: "my memcpy task returns
DOCA_ERROR_NOT_PERMITTEDon the first submit". Answered by the source / destination permission matrix inCAPABILITIES.md ## Safety policy- the permission checklist in
TASKS.md ## test.
- the permission checklist in
- "Should I use DOCA DMA or DOCA RDMA / Comch / a plain CPU
memcpy for this copy?" — worked example: "I have a 1 MiB copy
that has to go from a host process to a DPU process; do I want
DMA or Comch fast-path". Answered by the "when to use DMA"
vs "when not to" path-selection bullet in
CAPABILITIES.md ## Capabilities and modes- the routing pointers in
## Related skills.
- the routing pointers in
- "Is DOCA DMA on my installed version, and is the memcpy task
supported on my device?" — worked example: "is
doca_dma_task_memcpyavailable on DOCA 2.6 against this ConnectX-6". Answered by the version-compatibility overlay inCAPABILITIES.md ## Version compatibility, which cross-links the canonical detection chain indoca-version, plus the capability-query rule inCAPABILITIES.md ## Capabilities and modes. - "What does this
DOCA_ERROR_*from a DMA call mean and which layer caused it?" — worked example: "DOCA_ERROR_AGAINfromdoca_task_submiton adoca_dma_task_memcpy". Answered by the DMA overlay on the cross-library taxonomy inCAPABILITIES.md ## Error taxonomy- the layered ladder in
TASKS.md ## debugthat escalates todoca-debug.
- the layered ladder in
Audience
This skill serves external developers building applications
that consume the DOCA DMA library — i.e., users whose code calls
doca_dma_* (directly in C/C++, or through FFI/bindings from
another language) to copy bytes between two doca_mmap regions
using the BlueField DMA engine instead of the host CPU. It is
not for NVIDIA developers contributing to DOCA DMA itself.
Language scope. DOCA DMA ships as a C library with
pkg-config module name doca-dma. The shipped samples are
written in C. 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 lifecycle, capability-discovery,
permission, error-taxonomy, and path-selection guidance
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 when the user is doing hands-on DOCA DMA work, in any language. Concretely:
- Initializing a
doca_dmacontext on adoca_devand configuring the memcpy task type viadoca_dma_task_memcpy_set_confbeforedoca_ctx_start(). - Setting up the source and destination
doca_mmapregions for a memcpy, including the per-side permission flags (DOCA_ACCESS_FLAG_LOCAL_READ_ONLYon the source,DOCA_ACCESS_FLAG_LOCAL_READ_WRITEon the destination) and, for cross-peer copies, thedoca_mmap_export_*step. - Reading the device capability surface for DMA via the
doca_dma_cap_task_memcpy_*query family (_is_supported,_get_max_buf_size,_get_max_buf_list_len) before sizing any buffer or assuming scatter-gather is available. - Submitting
doca_dma_task_memcpytasks against a DOCA progress engine and reacting to per-task completion events. - Choosing between DOCA DMA and an adjacent option (DOCA RDMA when the data has to cross the network, DOCA Comch fast-path for message-oriented producer/consumer flows, plain CPU memcpy when the copy is tiny and one-shot).
- Debugging a
DOCA_ERROR_*returned from a DMA call (lifecycle vs. permission vs. capability vs. would-block) and the per-task completion status reported on the progress engine. - Designing or extending non-C bindings (Rust, Go, Python, …) that wrap the DMA C ABI — for the lifecycle, permission, and capability rules the wrapper must honor.
Do not load this skill for general DOCA orientation, install
of DOCA itself, or non-DMA library questions. For those, use
doca-public-knowledge-map.
What this skill provides
This is a thin loader. The body keeps only the orientation needed to pick the right next file. The substantive DMA-specific material lives in two companion files:
CAPABILITIES.md— what DMA can express on this version: the singledoca_dma_task_memcpytask type and its scatter-gather buffer-list shape, the capability-query surface (doca_dma_cap_task_memcpy_*), the DMA error taxonomy (mapped onto the cross-libraryDOCA_ERROR_*set), the observability surface (per-task completion events on the progress engine), the source / destination mmap permission policy, and the path-selection rule against the adjacent libraries (RDMA / Comch / CPU memcpy).TASKS.md— step-by-step workflows for the six in-scope DMA verbs:configure,build,modify,run,test,debug. Plus aDeferred task verbsblock that points out-of-scope 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 DMA application source code, in any
language. The verified DMA source code is the shipped C
samples at
/opt/mellanox/doca/samples/doca_dma/<name>/and the DMA Copy reference application reachable viadoca-public-knowledge-map. 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, layered with the DMA-specific overrides inTASKS.md ## modify. - Standalone build manifests (
meson.build,CMakeLists.txt,Cargo.toml, …) 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-dmais 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 DMA capability surface, the memcpy task type, the capability-query rule, the source / destination permission matrix, the error taxonomy, observability, and the path-selection rule against RDMA / Comch / CPU memcpy, see CAPABILITIES.md.
- For step-by-step workflows — configure, build, modify, run, test, debug — see TASKS.md.
Both companion files cross-link to each other,
doca-version for the canonical
version-handling rules, and
doca-public-knowledge-map
whenever the right answer is "look it up in the public docs or
the installed package layout" rather than "DMA-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. The DMA URL ishttps://docs.nvidia.com/doca/sdk/DOCA-DMA/index.html; the canonical reference application is DMA Copy.doca-setup— env preparation, install verification, and the I have no install yet path with the public NGC DOCA container. This skill assumes its preconditions are satisfied.doca-version— canonical DOCA version-handling rules. This skill's## Version compatibilitycross-links the four-way match rule + detection chain and adds at most one DMA-spe
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
86.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ruflo
73.4k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
CowAgent
47.2kOpen-source super AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
