[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-doca-dma":3,"mdc--wtlsu-key":31,"related-repo-nvidia-doca-dma":1297,"related-org-nvidia-doca-dma":1403},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"doca-dma","program DOCA DMA tasks","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 \u002F LOCAL_READ_WRITE permissions on source \u002F 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\u002Fconsumer messaging (DOCA Comch), DOCA Core \u002F progress-engine internals, or DOCA install — those belong to other skills.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,17],{"name":13,"slug":14,"type":15},"Hardware","hardware","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Engineering","engineering",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-20T06:24:08.410021","Apache-2.0",281,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fdoca-dma","---\nlicense: Apache-2.0\nname: doca-dma\ndescription: >\n  Use this skill when the user is doing hands-on DOCA DMA\n  programming — bringing up a doca_dma context, configuring the\n  single doca_dma_task_memcpy task type, sizing buffers via the\n  doca_dma_cap_task_memcpy_* queries, setting LOCAL_READ_ONLY \u002F\n  LOCAL_READ_WRITE permissions on source \u002F destination doca_mmap\n  regions (plus doca_mmap_export_* for cross-peer copies),\n  driving the progress engine, or debugging DOCA_ERROR_* returns.\n  Trigger even when the user does not explicitly mention \"DOCA\n  DMA\" or \"doca_mmap\" — typical implicit phrasings include\n  \"memcpy host buffer to BlueField without using the CPU\",\n  \"offload a bulk copy to the DPU\", \"copy returns NOT_PERMITTED\n  on first submit\", \"buffer too big for one DMA task\", \"task\n  submitted but no completion\", or \"scatter-gather copy between\n  two memory regions\". Refuse and route elsewhere for\n  cross-network copies (DOCA RDMA), producer\u002Fconsumer messaging\n  (DOCA Comch), DOCA Core \u002F progress-engine internals, or DOCA\n  install — those belong to other skills.\nmetadata:\n  kind: library\ncompatibility: >\n  Requires DOCA SDK installed at \u002Fopt\u002Fmellanox\u002Fdoca on Linux\n  (Ubuntu 22.04\u002F24.04 or RHEL\u002FSLES) with a BlueField DPU or\n  ConnectX NIC attached. Reads the user's local install via\n  `pkg-config doca-dma` and inspects\n  \u002Fopt\u002Fmellanox\u002Fdoca\u002F{lib,include,samples,applications}.\n---\n\n# DOCA DMA\n\n**Where to start:** This skill assumes DOCA is already installed\nand the user is doing **hands-on DMA work** on a BlueField \u002F\nConnectX \u002F host with DOCA. Open [`TASKS.md`](TASKS.md) if the user\nwants to *do* something (configure \u002F build \u002F modify \u002F run \u002F test \u002F\ndebug); open [`CAPABILITIES.md`](CAPABILITIES.md) when the question\nis *what can DMA express* on this version. If the user has not\ninstalled DOCA yet, route to\n[`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) first. If the user is\nnot sure DMA is even the right library — the data has to traverse\nthe network, or the flow is small messages between two processes —\nread the path-selection rule in\n[`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\nbefore configuring anything.\n\n## Example questions this skill answers well\n\nThe CLASSES of DMA questions this skill is built to answer, each\nwith one worked example. The agent should treat the *class* as\nthe load-bearing piece — the worked example is a single instance.\n\n- **\"How do I bring up a DOCA DMA context and copy a buffer\n  between host and DPU?\"** — worked example: *\"copy a 64 KiB\n  buffer from host memory to DPU memory in one task, starting from\n  the shipped DMA Copy reference application\"*. Answered by the\n  lifecycle + memcpy-task workflow in\n  [`TASKS.md ## configure`](TASKS.md#configure) +\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  task-type table.\n- **\"How big a buffer can I memcpy in one task on this device?\"** —\n  worked example: *\"can I copy 16 MiB in a single\n  `doca_dma_task_memcpy`\"*. Answered by the capability-query rule\n  (`doca_dma_cap_task_memcpy_get_max_buf_size`, plus\n  `_get_max_buf_list_len` for scatter-gather) in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the discovery step in\n  [`TASKS.md ## configure`](TASKS.md#configure).\n- **\"What permissions do my source and destination mmaps need?\"** —\n  worked example: *\"my memcpy task returns\n  `DOCA_ERROR_NOT_PERMITTED` on the first submit\"*. Answered by the\n  source \u002F destination permission matrix in\n  [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)\n  + the permission checklist in\n  [`TASKS.md ## test`](TASKS.md#test).\n- **\"Should I use DOCA DMA or DOCA RDMA \u002F Comch \u002F a plain CPU\n  memcpy for this copy?\"** — worked example: *\"I have a 1 MiB copy\n  that has to go from a host process to a DPU process; do I want\n  DMA or Comch fast-path\"*. Answered by the *\"when to use DMA\"*\n  vs *\"when not to\"* path-selection bullet in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the routing pointers in [`## Related skills`](#related-skills).\n- **\"Is DOCA DMA on my installed version, and is the memcpy task\n  supported on my device?\"** — worked example: *\"is\n  `doca_dma_task_memcpy` available on DOCA 2.6 against this\n  ConnectX-6\"*. Answered by the version-compatibility overlay in\n  [`CAPABILITIES.md ## Version compatibility`](CAPABILITIES.md#version-compatibility),\n  which cross-links the canonical detection chain in\n  [`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md), plus the\n  capability-query rule in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes).\n- **\"What does this `DOCA_ERROR_*` from a DMA call mean and which\n  layer caused it?\"** — worked example: *\"`DOCA_ERROR_AGAIN` from\n  `doca_task_submit` on a `doca_dma_task_memcpy`\"*. Answered by\n  the DMA overlay on the cross-library taxonomy in\n  [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)\n  + the layered ladder in\n  [`TASKS.md ## debug`](TASKS.md#debug) that escalates to\n  [`doca-debug`](..\u002F..\u002Fdoca-debug\u002FSKILL.md).\n\n## Audience\n\nThis skill serves **external developers building applications\nthat consume the DOCA DMA library** — i.e., users whose code calls\n`doca_dma_*` (directly in C\u002FC++, or through FFI\u002Fbindings from\nanother language) to copy bytes between two `doca_mmap` regions\nusing the BlueField DMA engine instead of the host CPU. It is\n*not* for NVIDIA developers contributing to DOCA DMA itself.\n\n**Language scope.** DOCA DMA ships as a C library with\n`pkg-config` module name `doca-dma`. The shipped samples are\nwritten in C. C and C++ consumers are the canonical case and the\nworked examples in `TASKS.md` assume that path. Other-language\nconsumers (Rust, Go, Python, …) consume the same `*.so` through\nFFI or language-specific bindings; the skill's contribution in\nthat case is to keep the lifecycle, capability-discovery,\npermission, error-taxonomy, and path-selection guidance\nlanguage-neutral, and to route the agent to the public C ABI as\nthe authoritative surface that any wrapper will eventually call.\n\n## When to load this skill\n\nLoad this skill when the user is doing hands-on DOCA DMA work,\nin any language. Concretely:\n\n- Initializing a `doca_dma` context on a `doca_dev` and\n  configuring the memcpy task type via\n  `doca_dma_task_memcpy_set_conf` before `doca_ctx_start()`.\n- Setting up the source and destination `doca_mmap` regions for\n  a memcpy, including the per-side permission flags\n  (`DOCA_ACCESS_FLAG_LOCAL_READ_ONLY` on the source,\n  `DOCA_ACCESS_FLAG_LOCAL_READ_WRITE` on the destination) and,\n  for cross-peer copies, the `doca_mmap_export_*` step.\n- Reading the device capability surface for DMA via the\n  `doca_dma_cap_task_memcpy_*` query family\n  (`_is_supported`, `_get_max_buf_size`,\n  `_get_max_buf_list_len`) before sizing any buffer or assuming\n  scatter-gather is available.\n- Submitting `doca_dma_task_memcpy` tasks against a DOCA progress\n  engine and reacting to per-task completion events.\n- Choosing between DOCA DMA and an adjacent option (DOCA RDMA when\n  the data has to cross the network, DOCA Comch fast-path for\n  message-oriented producer\u002Fconsumer flows, plain CPU memcpy when\n  the copy is tiny and one-shot).\n- Debugging a `DOCA_ERROR_*` returned from a DMA call (lifecycle\n  vs. permission vs. capability vs. would-block) and the\n  per-task completion status reported on the progress engine.\n- Designing or extending non-C bindings (Rust, Go, Python, …)\n  that wrap the DMA C ABI — for the lifecycle, permission, and\n  capability rules the wrapper must honor.\n\nDo **not** load this skill for general DOCA orientation, install\nof DOCA itself, or non-DMA library questions. For those, use\n[`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md).\n\n## What this skill provides\n\nThis is a **thin loader**. The body keeps only the orientation\nneeded to pick the right next file. The substantive DMA-specific\nmaterial lives in two companion files:\n\n- `CAPABILITIES.md` — what DMA can express on this version: the\n  single `doca_dma_task_memcpy` task type and its scatter-gather\n  buffer-list shape, the capability-query surface\n  (`doca_dma_cap_task_memcpy_*`), the DMA error taxonomy (mapped\n  onto the cross-library `DOCA_ERROR_*` set), the observability\n  surface (per-task completion events on the progress engine),\n  the source \u002F destination mmap permission policy, and the\n  path-selection rule against the adjacent libraries\n  (RDMA \u002F Comch \u002F CPU memcpy).\n- `TASKS.md` — step-by-step workflows for the six in-scope DMA\n  verbs: `configure`, `build`, `modify`, `run`, `test`, `debug`.\n  Plus a `Deferred task verbs` block that points out-of-scope\n  questions at the right next skill.\n\nThe skill assumes a host or BlueField where DOCA is already\ninstalled at the standard location and the user has the\nprivileges their public install profile expects. It does not\ncover installing DOCA — that path goes through\n[`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md).\n\n## What this skill deliberately does not ship\n\nThis skill is **agent guidance**, not a samples or templates\nbundle. To keep the boundary clean, it deliberately does not\ncontain — and pull requests should not add:\n\n- **Pre-written DOCA DMA application source code, in any\n  language.** The verified DMA source code is the shipped C\n  samples at `\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_dma\u002F\u003Cname>\u002F` and\n  the DMA Copy reference application reachable via\n  [`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md).\n  The agent's job is to route the user to those files and\n  prescribe a minimum-diff modification on them via the universal\n  modify-a-sample workflow in\n  [`doca-programming-guide`](..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md),\n  layered with the DMA-specific overrides in\n  [`TASKS.md ## modify`](TASKS.md#modify).\n- **Standalone build manifests** (`meson.build`, `CMakeLists.txt`,\n  `Cargo.toml`, …) parked inside the skill. The agent constructs\n  the build manifest *in the user's project directory* against\n  the user's installed DOCA, where `pkg-config --modversion\n  doca-dma` is the source of truth.\n- **A `samples\u002F`, `bindings\u002F`, or `reference\u002F` subtree** of any\n  kind. A mock or incomplete artifact in this skill's tree, even\n  one labeled \"reference\", is misleading: users will read it as\n  buildable.\n\n## Loading order\n\n1. Read this `SKILL.md` first to confirm the user's question is\n   in scope.\n2. **For the DMA capability surface, the memcpy task type, the\n   capability-query rule, the source \u002F destination permission\n   matrix, the error taxonomy, observability, and the\n   path-selection rule against RDMA \u002F Comch \u002F CPU memcpy, see\n   [CAPABILITIES.md](CAPABILITIES.md).**\n3. **For step-by-step workflows — configure, build, modify, run,\n   test, debug — see [TASKS.md](TASKS.md).**\n\nBoth companion files cross-link to each other,\n[`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md) for the canonical\nversion-handling rules, and\n[`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md)\nwhenever the right answer is \"look it up in the public docs or\nthe installed package layout\" rather than \"DMA-specific\nguidance\".\n\n## Related skills\n\n- [`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md) —\n  the routing table for every public DOCA documentation source\n  and the on-disk layout of an installed DOCA package. The DMA\n  URL is `https:\u002F\u002Fdocs.nvidia.com\u002Fdoca\u002Fsdk\u002FDOCA-DMA\u002Findex.html`;\n  the canonical reference application is *DMA Copy*.\n- [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) — env preparation,\n  install verification, and the *I have no install yet* path\n  with the public NGC DOCA container. This skill assumes its\n  preconditions are satisfied.\n- [`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md) — canonical DOCA\n  version-handling rules. This skill's `## Version\n  compatibility` cross-links the four-way match rule + detection\n  chain and adds at most one DMA-specific overlay rule.\n- [`doca-structured-tools-contract`](..\u002F..\u002Fdoca-structured-tools-contract\u002FSKILL.md) —\n  the bundle's structured-tools precedence rule (detect \u002F prefer\n  \u002F fall back \u002F report). The Command appendix in\n  [TASKS.md](TASKS.md) honors this contract.\n- [`doca-programming-guide`](..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md) —\n  general DOCA programming patterns shared by every library: the\n  canonical `pkg-config` + meson build pattern, the universal\n  modify-a-shipped-sample first-app workflow, the universal\n  lifecycle, the cross-library `DOCA_ERROR_*` taxonomy, and the\n  program-side debug order. This skill layers DMA specifics on\n  top.\n- [`doca-rdma`](..\u002Fdoca-rdma\u002FSKILL.md) — the right library when\n  the copy has to traverse the network. This skill's\n  path-selection rule routes to RDMA when DMA is *not* the\n  answer.\n- [`doca-comch`](..\u002Fdoca-comch\u002FSKILL.md) — the right library\n  when the flow is producer \u002F consumer messaging between a host\n  and DPU process pair, rather than a raw mmap-to-mmap copy.\n- [`doca-debug`](..\u002F..\u002Fdoca-debug\u002FSKILL.md) — the cross-cutting\n  debug ladder (install \u002F version \u002F build \u002F link \u002F runtime \u002F\n  program \u002F driver). DMA-specific debug (lifecycle violations,\n  permission mismatches, oversize-buffer rejections) overlays on\n  top of that ladder.\n",{"data":32,"body":36},{"license":23,"name":4,"description":6,"metadata":33,"compatibility":35},{"kind":34},"library","Requires DOCA SDK installed at \u002Fopt\u002Fmellanox\u002Fdoca on Linux (Ubuntu 22.04\u002F24.04 or RHEL\u002FSLES) with a BlueField DPU or ConnectX NIC attached. Reads the user's local install via `pkg-config doca-dma` and inspects \u002Fopt\u002Fmellanox\u002Fdoca\u002F{lib,include,samples,applications}.\n",{"type":37,"children":38},"root",[39,47,129,136,148,511,517,552,592,598,603,748,770,776,788,883,897,903,915,1049,1055,1098,1123,1129],{"type":40,"tag":41,"props":42,"children":43},"element","h1",{"id":4},[44],{"type":45,"value":46},"text","DOCA DMA",{"type":40,"tag":48,"props":49,"children":50},"p",{},[51,57,59,64,66,77,79,85,87,96,98,103,105,115,117,127],{"type":40,"tag":52,"props":53,"children":54},"strong",{},[55],{"type":45,"value":56},"Where to start:",{"type":45,"value":58}," This skill assumes DOCA is already installed\nand the user is doing ",{"type":40,"tag":52,"props":60,"children":61},{},[62],{"type":45,"value":63},"hands-on DMA work",{"type":45,"value":65}," on a BlueField \u002F\nConnectX \u002F host with DOCA. Open ",{"type":40,"tag":67,"props":68,"children":70},"a",{"href":69},"TASKS.md",[71],{"type":40,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":45,"value":69},{"type":45,"value":78}," if the user\nwants to ",{"type":40,"tag":80,"props":81,"children":82},"em",{},[83],{"type":45,"value":84},"do",{"type":45,"value":86}," something (configure \u002F build \u002F modify \u002F run \u002F test \u002F\ndebug); open ",{"type":40,"tag":67,"props":88,"children":90},{"href":89},"CAPABILITIES.md",[91],{"type":40,"tag":72,"props":92,"children":94},{"className":93},[],[95],{"type":45,"value":89},{"type":45,"value":97}," when the question\nis ",{"type":40,"tag":80,"props":99,"children":100},{},[101],{"type":45,"value":102},"what can DMA express",{"type":45,"value":104}," on this version. If the user has not\ninstalled DOCA yet, route to\n",{"type":40,"tag":67,"props":106,"children":108},{"href":107},"..\u002F..\u002Fdoca-setup\u002FSKILL.md",[109],{"type":40,"tag":72,"props":110,"children":112},{"className":111},[],[113],{"type":45,"value":114},"doca-setup",{"type":45,"value":116}," first. If the user is\nnot sure DMA is even the right library — the data has to traverse\nthe network, or the flow is small messages between two processes —\nread the path-selection rule in\n",{"type":40,"tag":67,"props":118,"children":120},{"href":119},"CAPABILITIES.md#capabilities-and-modes",[121],{"type":40,"tag":72,"props":122,"children":124},{"className":123},[],[125],{"type":45,"value":126},"CAPABILITIES.md ## Capabilities and modes",{"type":45,"value":128},"\nbefore configuring anything.",{"type":40,"tag":130,"props":131,"children":133},"h2",{"id":132},"example-questions-this-skill-answers-well",[134],{"type":45,"value":135},"Example questions this skill answers well",{"type":40,"tag":48,"props":137,"children":138},{},[139,141,146],{"type":45,"value":140},"The CLASSES of DMA questions this skill is built to answer, each\nwith one worked example. The agent should treat the ",{"type":40,"tag":80,"props":142,"children":143},{},[144],{"type":45,"value":145},"class",{"type":45,"value":147}," as\nthe load-bearing piece — the worked example is a single instance.",{"type":40,"tag":149,"props":150,"children":151},"ul",{},[152,192,259,312,369,425],{"type":40,"tag":153,"props":154,"children":155},"li",{},[156,161,163,168,170,180,182,190],{"type":40,"tag":52,"props":157,"children":158},{},[159],{"type":45,"value":160},"\"How do I bring up a DOCA DMA context and copy a buffer\nbetween host and DPU?\"",{"type":45,"value":162}," — worked example: ",{"type":40,"tag":80,"props":164,"children":165},{},[166],{"type":45,"value":167},"\"copy a 64 KiB\nbuffer from host memory to DPU memory in one task, starting from\nthe shipped DMA Copy reference application\"",{"type":45,"value":169},". Answered by the\nlifecycle + memcpy-task workflow in\n",{"type":40,"tag":67,"props":171,"children":173},{"href":172},"TASKS.md#configure",[174],{"type":40,"tag":72,"props":175,"children":177},{"className":176},[],[178],{"type":45,"value":179},"TASKS.md ## configure",{"type":45,"value":181}," +\n",{"type":40,"tag":67,"props":183,"children":184},{"href":119},[185],{"type":40,"tag":72,"props":186,"children":188},{"className":187},[],[189],{"type":45,"value":126},{"type":45,"value":191},"\ntask-type table.",{"type":40,"tag":153,"props":193,"children":194},{},[195,200,202,215,217,223,225,231,233,241],{"type":40,"tag":52,"props":196,"children":197},{},[198],{"type":45,"value":199},"\"How big a buffer can I memcpy in one task on this device?\"",{"type":45,"value":201}," —\nworked example: ",{"type":40,"tag":80,"props":203,"children":204},{},[205,207,213],{"type":45,"value":206},"\"can I copy 16 MiB in a single\n",{"type":40,"tag":72,"props":208,"children":210},{"className":209},[],[211],{"type":45,"value":212},"doca_dma_task_memcpy",{"type":45,"value":214},"\"",{"type":45,"value":216},". Answered by the capability-query rule\n(",{"type":40,"tag":72,"props":218,"children":220},{"className":219},[],[221],{"type":45,"value":222},"doca_dma_cap_task_memcpy_get_max_buf_size",{"type":45,"value":224},", plus\n",{"type":40,"tag":72,"props":226,"children":228},{"className":227},[],[229],{"type":45,"value":230},"_get_max_buf_list_len",{"type":45,"value":232}," for scatter-gather) in\n",{"type":40,"tag":67,"props":234,"children":235},{"href":119},[236],{"type":40,"tag":72,"props":237,"children":239},{"className":238},[],[240],{"type":45,"value":126},{"type":40,"tag":149,"props":242,"children":243},{},[244],{"type":40,"tag":153,"props":245,"children":246},{},[247,249,257],{"type":45,"value":248},"the discovery step in\n",{"type":40,"tag":67,"props":250,"children":251},{"href":172},[252],{"type":40,"tag":72,"props":253,"children":255},{"className":254},[],[256],{"type":45,"value":179},{"type":45,"value":258},".",{"type":40,"tag":153,"props":260,"children":261},{},[262,267,268,281,283,293],{"type":40,"tag":52,"props":263,"children":264},{},[265],{"type":45,"value":266},"\"What permissions do my source and destination mmaps need?\"",{"type":45,"value":201},{"type":40,"tag":80,"props":269,"children":270},{},[271,273,279],{"type":45,"value":272},"\"my memcpy task returns\n",{"type":40,"tag":72,"props":274,"children":276},{"className":275},[],[277],{"type":45,"value":278},"DOCA_ERROR_NOT_PERMITTED",{"type":45,"value":280}," on the first submit\"",{"type":45,"value":282},". Answered by the\nsource \u002F destination permission matrix in\n",{"type":40,"tag":67,"props":284,"children":286},{"href":285},"CAPABILITIES.md#safety-policy",[287],{"type":40,"tag":72,"props":288,"children":290},{"className":289},[],[291],{"type":45,"value":292},"CAPABILITIES.md ## Safety policy",{"type":40,"tag":149,"props":294,"children":295},{},[296],{"type":40,"tag":153,"props":297,"children":298},{},[299,301,311],{"type":45,"value":300},"the permission checklist in\n",{"type":40,"tag":67,"props":302,"children":304},{"href":303},"TASKS.md#test",[305],{"type":40,"tag":72,"props":306,"children":308},{"className":307},[],[309],{"type":45,"value":310},"TASKS.md ## test",{"type":45,"value":258},{"type":40,"tag":153,"props":313,"children":314},{},[315,320,321,326,328,333,335,340,342,350],{"type":40,"tag":52,"props":316,"children":317},{},[318],{"type":45,"value":319},"\"Should I use DOCA DMA or DOCA RDMA \u002F Comch \u002F a plain CPU\nmemcpy for this copy?\"",{"type":45,"value":162},{"type":40,"tag":80,"props":322,"children":323},{},[324],{"type":45,"value":325},"\"I have a 1 MiB copy\nthat has to go from a host process to a DPU process; do I want\nDMA or Comch fast-path\"",{"type":45,"value":327},". Answered by the ",{"type":40,"tag":80,"props":329,"children":330},{},[331],{"type":45,"value":332},"\"when to use DMA\"",{"type":45,"value":334},"\nvs ",{"type":40,"tag":80,"props":336,"children":337},{},[338],{"type":45,"value":339},"\"when not to\"",{"type":45,"value":341}," path-selection bullet in\n",{"type":40,"tag":67,"props":343,"children":344},{"href":119},[345],{"type":40,"tag":72,"props":346,"children":348},{"className":347},[],[349],{"type":45,"value":126},{"type":40,"tag":149,"props":351,"children":352},{},[353],{"type":40,"tag":153,"props":354,"children":355},{},[356,358,368],{"type":45,"value":357},"the routing pointers in ",{"type":40,"tag":67,"props":359,"children":361},{"href":360},"#related-skills",[362],{"type":40,"tag":72,"props":363,"children":365},{"className":364},[],[366],{"type":45,"value":367},"## Related skills",{"type":45,"value":258},{"type":40,"tag":153,"props":370,"children":371},{},[372,377,378,390,392,402,404,414,416,424],{"type":40,"tag":52,"props":373,"children":374},{},[375],{"type":45,"value":376},"\"Is DOCA DMA on my installed version, and is the memcpy task\nsupported on my device?\"",{"type":45,"value":162},{"type":40,"tag":80,"props":379,"children":380},{},[381,383,388],{"type":45,"value":382},"\"is\n",{"type":40,"tag":72,"props":384,"children":386},{"className":385},[],[387],{"type":45,"value":212},{"type":45,"value":389}," available on DOCA 2.6 against this\nConnectX-6\"",{"type":45,"value":391},". Answered by the version-compatibility overlay in\n",{"type":40,"tag":67,"props":393,"children":395},{"href":394},"CAPABILITIES.md#version-compatibility",[396],{"type":40,"tag":72,"props":397,"children":399},{"className":398},[],[400],{"type":45,"value":401},"CAPABILITIES.md ## Version compatibility",{"type":45,"value":403},",\nwhich cross-links the canonical detection chain in\n",{"type":40,"tag":67,"props":405,"children":407},{"href":406},"..\u002F..\u002Fdoca-version\u002FSKILL.md",[408],{"type":40,"tag":72,"props":409,"children":411},{"className":410},[],[412],{"type":45,"value":413},"doca-version",{"type":45,"value":415},", plus the\ncapability-query rule in\n",{"type":40,"tag":67,"props":417,"children":418},{"href":119},[419],{"type":40,"tag":72,"props":420,"children":422},{"className":421},[],[423],{"type":45,"value":126},{"type":45,"value":258},{"type":40,"tag":153,"props":426,"children":427},{},[428,441,442,468,470,480],{"type":40,"tag":52,"props":429,"children":430},{},[431,433,439],{"type":45,"value":432},"\"What does this ",{"type":40,"tag":72,"props":434,"children":436},{"className":435},[],[437],{"type":45,"value":438},"DOCA_ERROR_*",{"type":45,"value":440}," from a DMA call mean and which\nlayer caused it?\"",{"type":45,"value":162},{"type":40,"tag":80,"props":443,"children":444},{},[445,446,452,454,460,462,467],{"type":45,"value":214},{"type":40,"tag":72,"props":447,"children":449},{"className":448},[],[450],{"type":45,"value":451},"DOCA_ERROR_AGAIN",{"type":45,"value":453}," from\n",{"type":40,"tag":72,"props":455,"children":457},{"className":456},[],[458],{"type":45,"value":459},"doca_task_submit",{"type":45,"value":461}," on a ",{"type":40,"tag":72,"props":463,"children":465},{"className":464},[],[466],{"type":45,"value":212},{"type":45,"value":214},{"type":45,"value":469},". Answered by\nthe DMA overlay on the cross-library taxonomy in\n",{"type":40,"tag":67,"props":471,"children":473},{"href":472},"CAPABILITIES.md#error-taxonomy",[474],{"type":40,"tag":72,"props":475,"children":477},{"className":476},[],[478],{"type":45,"value":479},"CAPABILITIES.md ## Error taxonomy",{"type":40,"tag":149,"props":481,"children":482},{},[483],{"type":40,"tag":153,"props":484,"children":485},{},[486,488,498,500,510],{"type":45,"value":487},"the layered ladder in\n",{"type":40,"tag":67,"props":489,"children":491},{"href":490},"TASKS.md#debug",[492],{"type":40,"tag":72,"props":493,"children":495},{"className":494},[],[496],{"type":45,"value":497},"TASKS.md ## debug",{"type":45,"value":499}," that escalates to\n",{"type":40,"tag":67,"props":501,"children":503},{"href":502},"..\u002F..\u002Fdoca-debug\u002FSKILL.md",[504],{"type":40,"tag":72,"props":505,"children":507},{"className":506},[],[508],{"type":45,"value":509},"doca-debug",{"type":45,"value":258},{"type":40,"tag":130,"props":512,"children":514},{"id":513},"audience",[515],{"type":45,"value":516},"Audience",{"type":40,"tag":48,"props":518,"children":519},{},[520,522,527,529,535,537,543,545,550],{"type":45,"value":521},"This skill serves ",{"type":40,"tag":52,"props":523,"children":524},{},[525],{"type":45,"value":526},"external developers building applications\nthat consume the DOCA DMA library",{"type":45,"value":528}," — i.e., users whose code calls\n",{"type":40,"tag":72,"props":530,"children":532},{"className":531},[],[533],{"type":45,"value":534},"doca_dma_*",{"type":45,"value":536}," (directly in C\u002FC++, or through FFI\u002Fbindings from\nanother language) to copy bytes between two ",{"type":40,"tag":72,"props":538,"children":540},{"className":539},[],[541],{"type":45,"value":542},"doca_mmap",{"type":45,"value":544}," regions\nusing the BlueField DMA engine instead of the host CPU. It is\n",{"type":40,"tag":80,"props":546,"children":547},{},[548],{"type":45,"value":549},"not",{"type":45,"value":551}," for NVIDIA developers contributing to DOCA DMA itself.",{"type":40,"tag":48,"props":553,"children":554},{},[555,560,562,568,570,575,577,582,584,590],{"type":40,"tag":52,"props":556,"children":557},{},[558],{"type":45,"value":559},"Language scope.",{"type":45,"value":561}," DOCA DMA ships as a C library with\n",{"type":40,"tag":72,"props":563,"children":565},{"className":564},[],[566],{"type":45,"value":567},"pkg-config",{"type":45,"value":569}," module name ",{"type":40,"tag":72,"props":571,"children":573},{"className":572},[],[574],{"type":45,"value":4},{"type":45,"value":576},". The shipped samples are\nwritten in C. C and C++ consumers are the canonical case and the\nworked examples in ",{"type":40,"tag":72,"props":578,"children":580},{"className":579},[],[581],{"type":45,"value":69},{"type":45,"value":583}," assume that path. Other-language\nconsumers (Rust, Go, Python, …) consume the same ",{"type":40,"tag":72,"props":585,"children":587},{"className":586},[],[588],{"type":45,"value":589},"*.so",{"type":45,"value":591}," through\nFFI or language-specific bindings; the skill's contribution in\nthat case is to keep the lifecycle, capability-discovery,\npermission, error-taxonomy, and path-selection guidance\nlanguage-neutral, and to route the agent to the public C ABI as\nthe authoritative surface that any wrapper will eventually call.",{"type":40,"tag":130,"props":593,"children":595},{"id":594},"when-to-load-this-skill",[596],{"type":45,"value":597},"When to load this skill",{"type":40,"tag":48,"props":599,"children":600},{},[601],{"type":45,"value":602},"Load this skill when the user is doing hands-on DOCA DMA work,\nin any language. Concretely:",{"type":40,"tag":149,"props":604,"children":605},{},[606,642,678,714,726,731,743],{"type":40,"tag":153,"props":607,"children":608},{},[609,611,617,619,625,627,633,635,641],{"type":45,"value":610},"Initializing a ",{"type":40,"tag":72,"props":612,"children":614},{"className":613},[],[615],{"type":45,"value":616},"doca_dma",{"type":45,"value":618}," context on a ",{"type":40,"tag":72,"props":620,"children":622},{"className":621},[],[623],{"type":45,"value":624},"doca_dev",{"type":45,"value":626}," and\nconfiguring the memcpy task type via\n",{"type":40,"tag":72,"props":628,"children":630},{"className":629},[],[631],{"type":45,"value":632},"doca_dma_task_memcpy_set_conf",{"type":45,"value":634}," before ",{"type":40,"tag":72,"props":636,"children":638},{"className":637},[],[639],{"type":45,"value":640},"doca_ctx_start()",{"type":45,"value":258},{"type":40,"tag":153,"props":643,"children":644},{},[645,647,652,654,660,662,668,670,676],{"type":45,"value":646},"Setting up the source and destination ",{"type":40,"tag":72,"props":648,"children":650},{"className":649},[],[651],{"type":45,"value":542},{"type":45,"value":653}," regions for\na memcpy, including the per-side permission flags\n(",{"type":40,"tag":72,"props":655,"children":657},{"className":656},[],[658],{"type":45,"value":659},"DOCA_ACCESS_FLAG_LOCAL_READ_ONLY",{"type":45,"value":661}," on the source,\n",{"type":40,"tag":72,"props":663,"children":665},{"className":664},[],[666],{"type":45,"value":667},"DOCA_ACCESS_FLAG_LOCAL_READ_WRITE",{"type":45,"value":669}," on the destination) and,\nfor cross-peer copies, the ",{"type":40,"tag":72,"props":671,"children":673},{"className":672},[],[674],{"type":45,"value":675},"doca_mmap_export_*",{"type":45,"value":677}," step.",{"type":40,"tag":153,"props":679,"children":680},{},[681,683,689,691,697,699,705,707,712],{"type":45,"value":682},"Reading the device capability surface for DMA via the\n",{"type":40,"tag":72,"props":684,"children":686},{"className":685},[],[687],{"type":45,"value":688},"doca_dma_cap_task_memcpy_*",{"type":45,"value":690}," query family\n(",{"type":40,"tag":72,"props":692,"children":694},{"className":693},[],[695],{"type":45,"value":696},"_is_supported",{"type":45,"value":698},", ",{"type":40,"tag":72,"props":700,"children":702},{"className":701},[],[703],{"type":45,"value":704},"_get_max_buf_size",{"type":45,"value":706},",\n",{"type":40,"tag":72,"props":708,"children":710},{"className":709},[],[711],{"type":45,"value":230},{"type":45,"value":713},") before sizing any buffer or assuming\nscatter-gather is available.",{"type":40,"tag":153,"props":715,"children":716},{},[717,719,724],{"type":45,"value":718},"Submitting ",{"type":40,"tag":72,"props":720,"children":722},{"className":721},[],[723],{"type":45,"value":212},{"type":45,"value":725}," tasks against a DOCA progress\nengine and reacting to per-task completion events.",{"type":40,"tag":153,"props":727,"children":728},{},[729],{"type":45,"value":730},"Choosing between DOCA DMA and an adjacent option (DOCA RDMA when\nthe data has to cross the network, DOCA Comch fast-path for\nmessage-oriented producer\u002Fconsumer flows, plain CPU memcpy when\nthe copy is tiny and one-shot).",{"type":40,"tag":153,"props":732,"children":733},{},[734,736,741],{"type":45,"value":735},"Debugging a ",{"type":40,"tag":72,"props":737,"children":739},{"className":738},[],[740],{"type":45,"value":438},{"type":45,"value":742}," returned from a DMA call (lifecycle\nvs. permission vs. capability vs. would-block) and the\nper-task completion status reported on the progress engine.",{"type":40,"tag":153,"props":744,"children":745},{},[746],{"type":45,"value":747},"Designing or extending non-C bindings (Rust, Go, Python, …)\nthat wrap the DMA C ABI — for the lifecycle, permission, and\ncapability rules the wrapper must honor.",{"type":40,"tag":48,"props":749,"children":750},{},[751,753,757,759,769],{"type":45,"value":752},"Do ",{"type":40,"tag":52,"props":754,"children":755},{},[756],{"type":45,"value":549},{"type":45,"value":758}," load this skill for general DOCA orientation, install\nof DOCA itself, or non-DMA library questions. For those, use\n",{"type":40,"tag":67,"props":760,"children":762},{"href":761},"..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md",[763],{"type":40,"tag":72,"props":764,"children":766},{"className":765},[],[767],{"type":45,"value":768},"doca-public-knowledge-map",{"type":45,"value":258},{"type":40,"tag":130,"props":771,"children":773},{"id":772},"what-this-skill-provides",[774],{"type":45,"value":775},"What this skill provides",{"type":40,"tag":48,"props":777,"children":778},{},[779,781,786],{"type":45,"value":780},"This is a ",{"type":40,"tag":52,"props":782,"children":783},{},[784],{"type":45,"value":785},"thin loader",{"type":45,"value":787},". The body keeps only the orientation\nneeded to pick the right next file. The substantive DMA-specific\nmaterial lives in two companion files:",{"type":40,"tag":149,"props":789,"children":790},{},[791,822],{"type":40,"tag":153,"props":792,"children":793},{},[794,799,801,806,808,813,815,820],{"type":40,"tag":72,"props":795,"children":797},{"className":796},[],[798],{"type":45,"value":89},{"type":45,"value":800}," — what DMA can express on this version: the\nsingle ",{"type":40,"tag":72,"props":802,"children":804},{"className":803},[],[805],{"type":45,"value":212},{"type":45,"value":807}," task type and its scatter-gather\nbuffer-list shape, the capability-query surface\n(",{"type":40,"tag":72,"props":809,"children":811},{"className":810},[],[812],{"type":45,"value":688},{"type":45,"value":814},"), the DMA error taxonomy (mapped\nonto the cross-library ",{"type":40,"tag":72,"props":816,"children":818},{"className":817},[],[819],{"type":45,"value":438},{"type":45,"value":821}," set), the observability\nsurface (per-task completion events on the progress engine),\nthe source \u002F destination mmap permission policy, and the\npath-selection rule against the adjacent libraries\n(RDMA \u002F Comch \u002F CPU memcpy).",{"type":40,"tag":153,"props":823,"children":824},{},[825,830,832,838,839,845,846,852,853,859,860,866,867,873,875,881],{"type":40,"tag":72,"props":826,"children":828},{"className":827},[],[829],{"type":45,"value":69},{"type":45,"value":831}," — step-by-step workflows for the six in-scope DMA\nverbs: ",{"type":40,"tag":72,"props":833,"children":835},{"className":834},[],[836],{"type":45,"value":837},"configure",{"type":45,"value":698},{"type":40,"tag":72,"props":840,"children":842},{"className":841},[],[843],{"type":45,"value":844},"build",{"type":45,"value":698},{"type":40,"tag":72,"props":847,"children":849},{"className":848},[],[850],{"type":45,"value":851},"modify",{"type":45,"value":698},{"type":40,"tag":72,"props":854,"children":856},{"className":855},[],[857],{"type":45,"value":858},"run",{"type":45,"value":698},{"type":40,"tag":72,"props":861,"children":863},{"className":862},[],[864],{"type":45,"value":865},"test",{"type":45,"value":698},{"type":40,"tag":72,"props":868,"children":870},{"className":869},[],[871],{"type":45,"value":872},"debug",{"type":45,"value":874},".\nPlus a ",{"type":40,"tag":72,"props":876,"children":878},{"className":877},[],[879],{"type":45,"value":880},"Deferred task verbs",{"type":45,"value":882}," block that points out-of-scope\nquestions at the right next skill.",{"type":40,"tag":48,"props":884,"children":885},{},[886,888,896],{"type":45,"value":887},"The skill assumes a host or BlueField where DOCA is already\ninstalled at the standard location and the user has the\nprivileges their public install profile expects. It does not\ncover installing DOCA — that path goes through\n",{"type":40,"tag":67,"props":889,"children":890},{"href":107},[891],{"type":40,"tag":72,"props":892,"children":894},{"className":893},[],[895],{"type":45,"value":114},{"type":45,"value":258},{"type":40,"tag":130,"props":898,"children":900},{"id":899},"what-this-skill-deliberately-does-not-ship",[901],{"type":45,"value":902},"What this skill deliberately does not ship",{"type":40,"tag":48,"props":904,"children":905},{},[906,908,913],{"type":45,"value":907},"This skill is ",{"type":40,"tag":52,"props":909,"children":910},{},[911],{"type":45,"value":912},"agent guidance",{"type":45,"value":914},", not a samples or templates\nbundle. To keep the boundary clean, it deliberately does not\ncontain — and pull requests should not add:",{"type":40,"tag":149,"props":916,"children":917},{},[918,969,1016],{"type":40,"tag":153,"props":919,"children":920},{},[921,926,928,934,936,944,946,956,958,968],{"type":40,"tag":52,"props":922,"children":923},{},[924],{"type":45,"value":925},"Pre-written DOCA DMA application source code, in any\nlanguage.",{"type":45,"value":927}," The verified DMA source code is the shipped C\nsamples at ",{"type":40,"tag":72,"props":929,"children":931},{"className":930},[],[932],{"type":45,"value":933},"\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_dma\u002F\u003Cname>\u002F",{"type":45,"value":935}," and\nthe DMA Copy reference application reachable via\n",{"type":40,"tag":67,"props":937,"children":938},{"href":761},[939],{"type":40,"tag":72,"props":940,"children":942},{"className":941},[],[943],{"type":45,"value":768},{"type":45,"value":945},".\nThe agent's job is to route the user to those files and\nprescribe a minimum-diff modification on them via the universal\nmodify-a-sample workflow in\n",{"type":40,"tag":67,"props":947,"children":949},{"href":948},"..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md",[950],{"type":40,"tag":72,"props":951,"children":953},{"className":952},[],[954],{"type":45,"value":955},"doca-programming-guide",{"type":45,"value":957},",\nlayered with the DMA-specific overrides in\n",{"type":40,"tag":67,"props":959,"children":961},{"href":960},"TASKS.md#modify",[962],{"type":40,"tag":72,"props":963,"children":965},{"className":964},[],[966],{"type":45,"value":967},"TASKS.md ## modify",{"type":45,"value":258},{"type":40,"tag":153,"props":970,"children":971},{},[972,977,979,985,986,992,993,999,1001,1006,1008,1014],{"type":40,"tag":52,"props":973,"children":974},{},[975],{"type":45,"value":976},"Standalone build manifests",{"type":45,"value":978}," (",{"type":40,"tag":72,"props":980,"children":982},{"className":981},[],[983],{"type":45,"value":984},"meson.build",{"type":45,"value":698},{"type":40,"tag":72,"props":987,"children":989},{"className":988},[],[990],{"type":45,"value":991},"CMakeLists.txt",{"type":45,"value":706},{"type":40,"tag":72,"props":994,"children":996},{"className":995},[],[997],{"type":45,"value":998},"Cargo.toml",{"type":45,"value":1000},", …) parked inside the skill. The agent constructs\nthe build manifest ",{"type":40,"tag":80,"props":1002,"children":1003},{},[1004],{"type":45,"value":1005},"in the user's project directory",{"type":45,"value":1007}," against\nthe user's installed DOCA, where ",{"type":40,"tag":72,"props":1009,"children":1011},{"className":1010},[],[1012],{"type":45,"value":1013},"pkg-config --modversion doca-dma",{"type":45,"value":1015}," is the source of truth.",{"type":40,"tag":153,"props":1017,"children":1018},{},[1019,1047],{"type":40,"tag":52,"props":1020,"children":1021},{},[1022,1024,1030,1031,1037,1039,1045],{"type":45,"value":1023},"A ",{"type":40,"tag":72,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":45,"value":1029},"samples\u002F",{"type":45,"value":698},{"type":40,"tag":72,"props":1032,"children":1034},{"className":1033},[],[1035],{"type":45,"value":1036},"bindings\u002F",{"type":45,"value":1038},", or ",{"type":40,"tag":72,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":45,"value":1044},"reference\u002F",{"type":45,"value":1046}," subtree",{"type":45,"value":1048}," of any\nkind. A mock or incomplete artifact in this skill's tree, even\none labeled \"reference\", is misleading: users will read it as\nbuildable.",{"type":40,"tag":130,"props":1050,"children":1052},{"id":1051},"loading-order",[1053],{"type":45,"value":1054},"Loading order",{"type":40,"tag":1056,"props":1057,"children":1058},"ol",{},[1059,1072,1085],{"type":40,"tag":153,"props":1060,"children":1061},{},[1062,1064,1070],{"type":45,"value":1063},"Read this ",{"type":40,"tag":72,"props":1065,"children":1067},{"className":1066},[],[1068],{"type":45,"value":1069},"SKILL.md",{"type":45,"value":1071}," first to confirm the user's question is\nin scope.",{"type":40,"tag":153,"props":1073,"children":1074},{},[1075],{"type":40,"tag":52,"props":1076,"children":1077},{},[1078,1080,1084],{"type":45,"value":1079},"For the DMA capability surface, the memcpy task type, the\ncapability-query rule, the source \u002F destination permission\nmatrix, the error taxonomy, observability, and the\npath-selection rule against RDMA \u002F Comch \u002F CPU memcpy, see\n",{"type":40,"tag":67,"props":1081,"children":1082},{"href":89},[1083],{"type":45,"value":89},{"type":45,"value":258},{"type":40,"tag":153,"props":1086,"children":1087},{},[1088],{"type":40,"tag":52,"props":1089,"children":1090},{},[1091,1093,1097],{"type":45,"value":1092},"For step-by-step workflows — configure, build, modify, run,\ntest, debug — see ",{"type":40,"tag":67,"props":1094,"children":1095},{"href":69},[1096],{"type":45,"value":69},{"type":45,"value":258},{"type":40,"tag":48,"props":1099,"children":1100},{},[1101,1103,1111,1113,1121],{"type":45,"value":1102},"Both companion files cross-link to each other,\n",{"type":40,"tag":67,"props":1104,"children":1105},{"href":406},[1106],{"type":40,"tag":72,"props":1107,"children":1109},{"className":1108},[],[1110],{"type":45,"value":413},{"type":45,"value":1112}," for the canonical\nversion-handling rules, and\n",{"type":40,"tag":67,"props":1114,"children":1115},{"href":761},[1116],{"type":40,"tag":72,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":45,"value":768},{"type":45,"value":1122},"\nwhenever the right answer is \"look it up in the public docs or\nthe installed package layout\" rather than \"DMA-specific\nguidance\".",{"type":40,"tag":130,"props":1124,"children":1126},{"id":1125},"related-skills",[1127],{"type":45,"value":1128},"Related skills",{"type":40,"tag":149,"props":1130,"children":1131},{},[1132,1159,1179,1200,1221,1248,1269,1284],{"type":40,"tag":153,"props":1133,"children":1134},{},[1135,1143,1145,1151,1153,1158],{"type":40,"tag":67,"props":1136,"children":1137},{"href":761},[1138],{"type":40,"tag":72,"props":1139,"children":1141},{"className":1140},[],[1142],{"type":45,"value":768},{"type":45,"value":1144}," —\nthe routing table for every public DOCA documentation source\nand the on-disk layout of an installed DOCA package. The DMA\nURL is ",{"type":40,"tag":72,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":45,"value":1150},"https:\u002F\u002Fdocs.nvidia.com\u002Fdoca\u002Fsdk\u002FDOCA-DMA\u002Findex.html",{"type":45,"value":1152},";\nthe canonical reference application is ",{"type":40,"tag":80,"props":1154,"children":1155},{},[1156],{"type":45,"value":1157},"DMA Copy",{"type":45,"value":258},{"type":40,"tag":153,"props":1160,"children":1161},{},[1162,1170,1172,1177],{"type":40,"tag":67,"props":1163,"children":1164},{"href":107},[1165],{"type":40,"tag":72,"props":1166,"children":1168},{"className":1167},[],[1169],{"type":45,"value":114},{"type":45,"value":1171}," — env preparation,\ninstall verification, and the ",{"type":40,"tag":80,"props":1173,"children":1174},{},[1175],{"type":45,"value":1176},"I have no install yet",{"type":45,"value":1178}," path\nwith the public NGC DOCA container. This skill assumes its\npreconditions are satisfied.",{"type":40,"tag":153,"props":1180,"children":1181},{},[1182,1190,1192,1198],{"type":40,"tag":67,"props":1183,"children":1184},{"href":406},[1185],{"type":40,"tag":72,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":45,"value":413},{"type":45,"value":1191}," — canonical DOCA\nversion-handling rules. This skill's ",{"type":40,"tag":72,"props":1193,"children":1195},{"className":1194},[],[1196],{"type":45,"value":1197},"## Version compatibility",{"type":45,"value":1199}," cross-links the four-way match rule + detection\nchain and adds at most one DMA-specific overlay rule.",{"type":40,"tag":153,"props":1201,"children":1202},{},[1203,1213,1215,1219],{"type":40,"tag":67,"props":1204,"children":1206},{"href":1205},"..\u002F..\u002Fdoca-structured-tools-contract\u002FSKILL.md",[1207],{"type":40,"tag":72,"props":1208,"children":1210},{"className":1209},[],[1211],{"type":45,"value":1212},"doca-structured-tools-contract",{"type":45,"value":1214}," —\nthe bundle's structured-tools precedence rule (detect \u002F prefer\n\u002F fall back \u002F report). The Command appendix in\n",{"type":40,"tag":67,"props":1216,"children":1217},{"href":69},[1218],{"type":45,"value":69},{"type":45,"value":1220}," honors this contract.",{"type":40,"tag":153,"props":1222,"children":1223},{},[1224,1232,1234,1239,1241,1246],{"type":40,"tag":67,"props":1225,"children":1226},{"href":948},[1227],{"type":40,"tag":72,"props":1228,"children":1230},{"className":1229},[],[1231],{"type":45,"value":955},{"type":45,"value":1233}," —\ngeneral DOCA programming patterns shared by every library: the\ncanonical ",{"type":40,"tag":72,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":45,"value":567},{"type":45,"value":1240}," + meson build pattern, the universal\nmodify-a-shipped-sample first-app workflow, the universal\nlifecycle, the cross-library ",{"type":40,"tag":72,"props":1242,"children":1244},{"className":1243},[],[1245],{"type":45,"value":438},{"type":45,"value":1247}," taxonomy, and the\nprogram-side debug order. This skill layers DMA specifics on\ntop.",{"type":40,"tag":153,"props":1249,"children":1250},{},[1251,1261,1263,1267],{"type":40,"tag":67,"props":1252,"children":1254},{"href":1253},"..\u002Fdoca-rdma\u002FSKILL.md",[1255],{"type":40,"tag":72,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":45,"value":1260},"doca-rdma",{"type":45,"value":1262}," — the right library when\nthe copy has to traverse the network. This skill's\npath-selection rule routes to RDMA when DMA is ",{"type":40,"tag":80,"props":1264,"children":1265},{},[1266],{"type":45,"value":549},{"type":45,"value":1268}," the\nanswer.",{"type":40,"tag":153,"props":1270,"children":1271},{},[1272,1282],{"type":40,"tag":67,"props":1273,"children":1275},{"href":1274},"..\u002Fdoca-comch\u002FSKILL.md",[1276],{"type":40,"tag":72,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":45,"value":1281},"doca-comch",{"type":45,"value":1283}," — the right library\nwhen the flow is producer \u002F consumer messaging between a host\nand DPU process pair, rather than a raw mmap-to-mmap copy.",{"type":40,"tag":153,"props":1285,"children":1286},{},[1287,1295],{"type":40,"tag":67,"props":1288,"children":1289},{"href":502},[1290],{"type":40,"tag":72,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":45,"value":509},{"type":45,"value":1296}," — the cross-cutting\ndebug ladder (install \u002F version \u002F build \u002F link \u002F runtime \u002F\nprogram \u002F driver). DMA-specific debug (lifecycle violations,\npermission mismatches, oversize-buffer rejections) overlays on\ntop of that ladder.",{"items":1298,"total":1402},[1299,1316,1330,1344,1356,1373,1388],{"slug":1300,"name":1300,"fn":1301,"description":1302,"org":1303,"tags":1304,"stars":20,"repoUrl":21,"updatedAt":1315},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1305,1308,1311,1312],{"name":1306,"slug":1307,"type":15},"Data Analysis","data-analysis",{"name":1309,"slug":1310,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":1313,"slug":1314,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1317,"name":1317,"fn":1318,"description":1319,"org":1320,"tags":1321,"stars":20,"repoUrl":21,"updatedAt":1329},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1322,1325,1328],{"name":1323,"slug":1324,"type":15},"Deployment","deployment",{"name":1326,"slug":1327,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":1331,"name":1331,"fn":1332,"description":1333,"org":1334,"tags":1335,"stars":20,"repoUrl":21,"updatedAt":1343},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1336,1339,1340],{"name":1337,"slug":1338,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1341,"slug":1342,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":1345,"name":1345,"fn":1346,"description":1347,"org":1348,"tags":1349,"stars":20,"repoUrl":21,"updatedAt":1355},"amc-run-sample-calibration","run AMC sample dataset 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'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1350,1351,1352],{"name":1306,"slug":1307,"type":15},{"name":9,"slug":8,"type":15},{"name":1353,"slug":1354,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":1357,"name":1357,"fn":1358,"description":1359,"org":1360,"tags":1361,"stars":20,"repoUrl":21,"updatedAt":1372},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","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\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1362,1365,1368,1369],{"name":1363,"slug":1364,"type":15},"Automation","automation",{"name":1366,"slug":1367,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":1370,"slug":1371,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":1374,"name":1374,"fn":1375,"description":1376,"org":1377,"tags":1378,"stars":20,"repoUrl":21,"updatedAt":1387},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1379,1380,1383,1384],{"name":1323,"slug":1324,"type":15},{"name":1381,"slug":1382,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":1385,"slug":1386,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1389,"name":1389,"fn":1390,"description":1391,"org":1392,"tags":1393,"stars":20,"repoUrl":21,"updatedAt":1401},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1394,1395,1398],{"name":9,"slug":8,"type":15},{"name":1396,"slug":1397,"type":15},"Quantum Computing","quantum-computing",{"name":1399,"slug":1400,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":1404,"total":1555},[1405,1423,1439,1450,1462,1476,1489,1503,1514,1523,1537,1546],{"slug":1406,"name":1406,"fn":1407,"description":1408,"org":1409,"tags":1410,"stars":1420,"repoUrl":1421,"updatedAt":1422},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1411,1414,1417],{"name":1412,"slug":1413,"type":15},"Documentation","documentation",{"name":1415,"slug":1416,"type":15},"MCP","mcp",{"name":1418,"slug":1419,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1424,"name":1424,"fn":1425,"description":1426,"org":1427,"tags":1428,"stars":1436,"repoUrl":1437,"updatedAt":1438},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1429,1432,1433],{"name":1430,"slug":1431,"type":15},"Containers","containers",{"name":1323,"slug":1324,"type":15},{"name":1434,"slug":1435,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1440,"name":1440,"fn":1441,"description":1442,"org":1443,"tags":1444,"stars":1436,"repoUrl":1437,"updatedAt":1449},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1445,1448],{"name":1446,"slug":1447,"type":15},"CI\u002FCD","ci-cd",{"name":1323,"slug":1324,"type":15},"2026-07-14T05:25:59.97109",{"slug":1451,"name":1451,"fn":1452,"description":1453,"org":1454,"tags":1455,"stars":1436,"repoUrl":1437,"updatedAt":1461},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1456,1457,1458],{"name":1446,"slug":1447,"type":15},{"name":1323,"slug":1324,"type":15},{"name":1459,"slug":1460,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1463,"name":1463,"fn":1464,"description":1465,"org":1466,"tags":1467,"stars":1436,"repoUrl":1437,"updatedAt":1475},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1468,1471,1472],{"name":1469,"slug":1470,"type":15},"Debugging","debugging",{"name":1459,"slug":1460,"type":15},{"name":1473,"slug":1474,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1477,"name":1477,"fn":1478,"description":1479,"org":1480,"tags":1481,"stars":1436,"repoUrl":1437,"updatedAt":1488},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1482,1485],{"name":1483,"slug":1484,"type":15},"Best Practices","best-practices",{"name":1486,"slug":1487,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1490,"name":1490,"fn":1491,"description":1492,"org":1493,"tags":1494,"stars":1436,"repoUrl":1437,"updatedAt":1502},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1495,1498,1501],{"name":1496,"slug":1497,"type":15},"Machine Learning","machine-learning",{"name":1499,"slug":1500,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1504,"name":1504,"fn":1505,"description":1506,"org":1507,"tags":1508,"stars":1436,"repoUrl":1437,"updatedAt":1513},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1509,1512],{"name":1510,"slug":1511,"type":15},"QA","qa",{"name":1353,"slug":1354,"type":15},"2026-07-14T05:25:53.673039",{"slug":1515,"name":1515,"fn":1516,"description":1517,"org":1518,"tags":1519,"stars":1436,"repoUrl":1437,"updatedAt":1522},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1520,1521],{"name":1323,"slug":1324,"type":15},{"name":1326,"slug":1327,"type":15},"2026-07-14T05:25:49.362534",{"slug":1524,"name":1524,"fn":1525,"description":1526,"org":1527,"tags":1528,"stars":1436,"repoUrl":1437,"updatedAt":1536},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1529,1532,1533],{"name":1530,"slug":1531,"type":15},"Code Review","code-review",{"name":1459,"slug":1460,"type":15},{"name":1534,"slug":1535,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1538,"name":1538,"fn":1539,"description":1540,"org":1541,"tags":1542,"stars":1436,"repoUrl":1437,"updatedAt":1545},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1543,1544],{"name":1510,"slug":1511,"type":15},{"name":1353,"slug":1354,"type":15},"2026-07-14T05:25:54.928983",{"slug":1547,"name":1547,"fn":1548,"description":1549,"org":1550,"tags":1551,"stars":1436,"repoUrl":1437,"updatedAt":1554},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1552,1553],{"name":1363,"slug":1364,"type":15},{"name":1446,"slug":1447,"type":15},"2026-07-30T05:29:03.275638",496]