Agent skill · NVIDIA

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_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.

What it needs

About 7k tokens when loaded.

What this skill does

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 modes task-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 docadmataskmemcpy". Answered by the capability-query rule (docadmacaptaskmemcpygetmaxbufsize, plus getmaxbuflistlen for scatter-gather) in CAPABILITIES.md ## Capabilities and modes the discovery step in TASKS.md ## configure. "What permissions do my source and destination mmaps need?" — worked example: "my memcpy task returns DOCAERRORNOTPERMITTED on the first submit". Answered by the source / destination permission matrix in CAPABILITIES.md ## Safety policy the permission checklist in TASKS.md ## test. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills NVIDIA/doca-dma

View the source on GitHub

Browse the @skills marketplace