[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-doca-rdma":3,"mdc-7qbrsj-key":34,"related-repo-nvidia-doca-rdma":1370,"related-org-nvidia-doca-rdma":1476},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"doca-rdma","program RDMA contexts on NVIDIA hardware","Use this skill when the user is doing hands-on DOCA RDMA programming on a BlueField DPU, ConnectX NIC, or DOCA host — bringing up an RDMA context on a doca_dev, picking a connection method (RDMA CM, bridge\u002FOOB, or gRPC exchange of doca_rdma_export()), enabling one of the eleven task types (Send\u002FReceive\u002FSend-Imm, Read\u002FWrite\u002FWrite-Imm, Atomic CmpSwap\u002FFetchAdd, Get\u002FSet\u002FAdd Remote Sync Event), setting matching mmap + RDMA permissions, sizing queues and connections, querying doca_rdma_cap_*, or debugging DOCA_ERROR_* from an RDMA call. Trigger even when the user does not mention \"DOCA RDMA\" — typical implicit phrasings include \"one-sided read returns permission denied\", \"completions never arrive after submit\", \"connection callback never fires\", \"how do I do atomic compare-and-swap over RoCE\", or \"send queue hits DOCA_ERROR_FULL under burst\". Refuse and route elsewhere for general RDMA \u002F ibverbs theory (queue pairs, MRs, RoCE vs IB), installing DOCA itself, or non-RDMA DOCA libraries.\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,19,20],{"name":13,"slug":14,"type":15},"Networking","networking","tag",{"name":17,"slug":18,"type":15},"Hardware","hardware",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Engineering","engineering",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-30T05:28:23.422604","Apache-2.0",281,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fdoca-rdma","---\nlicense: Apache-2.0\nname: doca-rdma\ndescription: >\n  Use this skill when the user is doing hands-on DOCA RDMA programming\n  on a BlueField DPU, ConnectX NIC, or DOCA host — bringing up an RDMA\n  context on a doca_dev, picking a connection method (RDMA CM,\n  bridge\u002FOOB, or gRPC exchange of doca_rdma_export()), enabling one of\n  the eleven task types (Send\u002FReceive\u002FSend-Imm, Read\u002FWrite\u002FWrite-Imm,\n  Atomic CmpSwap\u002FFetchAdd, Get\u002FSet\u002FAdd Remote Sync Event), setting\n  matching mmap + RDMA permissions, sizing queues and connections,\n  querying doca_rdma_cap_*, or debugging DOCA_ERROR_* from an RDMA\n  call. Trigger even when the user does not mention \"DOCA RDMA\" —\n  typical implicit phrasings include \"one-sided read returns permission\n  denied\", \"completions never arrive after submit\", \"connection\n  callback never fires\", \"how do I do atomic compare-and-swap over\n  RoCE\", or \"send queue hits DOCA_ERROR_FULL under burst\". Refuse and\n  route elsewhere for general RDMA \u002F ibverbs theory (queue pairs, MRs,\n  RoCE vs IB), installing DOCA itself, or non-RDMA DOCA libraries.\nmetadata:\n  kind: library\ncompatibility: >\n  Requires DOCA SDK on Linux (Ubuntu 22.04\u002F24.04 or RHEL\u002FSLES) with a\n  BlueField DPU or ConnectX NIC. Resolves the local install and module via\n  `pkg-config --list-all | grep -i doca` and\n  `pkg-config --variable=prefix MODULE`, replacing `MODULE` with the exact\n  name returned by the preceding query. The normal module is the umbrella\n  `doca`, while split installs may expose a per-library module.\n\n---\n\n# DOCA RDMA\n\n## Non-negotiable: the deliverable uses DOCA RDMA, not raw verbs\n\nWhen this skill is in scope, the user is asking for **DOCA RDMA**. The\nprogram you produce **must link `libdoca_rdma` and call the\n`doca_rdma_*` API** (directly in C\u002FC++, or through a thin FFI\u002Fcgo shim\nfrom another language). Do **NOT** implement the request with raw\n`libibverbs` \u002F `librdmacm` \u002F RDMA-CM and call it done. Those move bytes\nbut completely bypass DOCA — which defeats the entire purpose of using\nthis library, loses the DOCA programming model (progress engine, task\u002F\nevent lifecycle, capability discovery, portability across BlueField\u002F\nConnectX generations), and is the single most common failure mode.\n\n\"Raw verbs is fewer lines\" \u002F \"it avoids building a DOCA binding layer\"\nis **not** an acceptable reason to bypass DOCA. The correct low-friction\npath for a non-C language (Go, Rust, Python, …) is **not** to re-bind\nthe whole API — it is to start from a **shipped DOCA RDMA sample** under\n`$(pkg-config --variable=prefix doca)\u002Fsamples\u002Fdoca_rdma\u002F` (substitute the\nmodule resolved on the target) and wrap its entry functions in\na **thin** cgo\u002FFFI shim built with `#cgo pkg-config: doca` (Go) or the\nequivalent. That shim is a single small file, not \"a large custom\nbinding layer\". See [`TASKS.md ## build`](TASKS.md#build) Step 0 and\n[`TASKS.md ## modify`](TASKS.md#modify).\n\nIf `pkg-config doca` or the DOCA build fails, **fix the build** (module\nname, `PKG_CONFIG_PATH`, sample path) — do not silently fall back to\nverbs. A binary whose `ldd` shows no `libdoca_rdma` is a failed\nDOCA-RDMA task, regardless of whether bytes moved.\n\n**Where to start:** This skill assumes DOCA is already installed and\nthe user is doing **hands-on RDMA work** on a BlueField \u002F ConnectX \u002F\nhost with DOCA. Open [`TASKS.md`](TASKS.md) if the user wants to *do*\nsomething (configure \u002F build \u002F modify \u002F run \u002F test \u002F debug); open\n[`CAPABILITIES.md`](CAPABILITIES.md) when the question is *what can\nRDMA express* on this version. If the user has not installed DOCA\nyet, route to [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) first.\n\n## Example questions this skill answers well\n\nThe CLASSES of RDMA questions this skill is built to answer, each\nwith one worked example. The agent should treat the *class* as the\nload-bearing piece — the worked example is a single instance.\n\n- **\"How do I bring up an RDMA context and connect two sides?\"** —\n  worked example: *\"set up sender + receiver with RDMA CM on a single\n  host for first-run testing\"*. Answered by the lifecycle + connection\n  workflow in [`TASKS.md ## configure`](TASKS.md#configure) +\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  connection-method selection.\n- **\"Which RDMA task type fits this data-movement pattern?\"** —\n  worked example: *\"one-sided write + completion via Send-with-Immediate\n  for a small control message\"*. Answered by the task taxonomy in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the task-config workflow in\n  [`TASKS.md ## modify`](TASKS.md#modify).\n- **\"What mmap permissions does this task need? Do I have to export\n  the mmap?\"** — worked example: *\"my Read task fails with insufficient\n  permissions\"*. Answered by the permission matrix in\n  [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)\n  + the mmap-export checklist in\n  [`TASKS.md ## test`](TASKS.md#test).\n- **\"Is this RDMA capability supported on my device + transport?\"** —\n  worked example: *\"does this device support Atomic Compare-and-Swap\n  over RoCE\"*. Answered by the capability-query rule\n  (`doca_rdma_cap_task_*_is_supported` against a `doca_devinfo`) 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- **\"Is this RDMA API available on my installed DOCA version?\"** —\n  worked example: *\"is RDMA CM in DOCA 2.6.0\"*. Answered by the\n  version-compatibility section in\n  [`CAPABILITIES.md ## Version compatibility`](CAPABILITIES.md#version-compatibility)\n  + the version-discovery rule (`pkg-config --modversion doca`)\n  pinned in [`TASKS.md ## configure`](TASKS.md#configure).\n- **\"What does this `DOCA_ERROR_*` from an RDMA call mean and which\n  layer caused it?\"** — worked example: *\"`DOCA_ERROR_BAD_STATE` from\n  `doca_rdma_connection_disconnect`\"*. Answered by the RDMA overlay\n  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 that\nconsume the DOCA RDMA library** — i.e., users whose code calls\n`doca_rdma_*` (directly in C\u002FC++, or through FFI\u002Fbindings from\nanother language) to do RDMA data movement between two sides\n(host↔host, host↔BlueField, DPU↔DPU, or SF↔SF on a BlueField). It\nis *not* for NVIDIA developers contributing to DOCA RDMA itself.\n\n**Language scope.** DOCA RDMA normally ships as a C library *inside the\numbrella `doca` pkg-config module* (public header `doca_rdma.h`, shared\nobject `libdoca_rdma.so`); split installs may expose a per-library module.\nAlways discover the module on the target (`pkg-config --list-all |\ngrep -i doca`) rather than assuming either layout. The\nshipped samples are written in C\n(NVIDIA's choice). C and C++ consumers are the canonical case and\nthe worked examples in `TASKS.md` assume that path. Other-language\nconsumers (Rust, Go, Python, …) consume the same `*.so` through FFI\nor language-specific bindings; the skill's contribution in that case\nis to keep the lifecycle, capability-discovery, permission-matrix,\nerror-taxonomy, and connection-method guidance language-neutral, and\nto route the agent to the public C ABI as the authoritative surface\nthat any wrapper will eventually call. **The non-C deliverable is still\na DOCA program**: a thin cgo\u002FFFI shim over the shipped `doca_rdma`\nsample that links `libdoca_rdma` (`#cgo pkg-config: doca`) — never a\nraw-libibverbs reimplementation chosen to avoid wrapping DOCA (see the\nmandate at the top of this file).\n\n## When to load this skill\n\nLoad this skill when the user is doing hands-on DOCA RDMA work, in\nany language. Concretely:\n\n- Initializing an RDMA context on a `doca_dev` and configuring at\n  least one task type before `doca_ctx_start()`.\n- Establishing a connection — picking between RDMA CM\n  (`doca_rdma_connect_to_addr()` \u002F `doca_rdma_start_listen_to_port()`\n  \u002F `doca_rdma_connection_accept()`), bridge \u002F OOB\n  (`doca_rdma_bridge_*`), or gRPC (out-of-band exchange\n  of `doca_rdma_export()` output).\n- Setting permissions on `doca_mmap` correctly for the chosen task\n  type (Read needs RDMA-read + local read-write; Write needs\n  RDMA-write; Atomic needs RDMA-atomic; Send needs only local\n  read-write).\n- Reading \u002F setting library properties via `doca_rdma_set_*` and\n  `doca_rdma_cap_get_*` to size queues, list lengths, and\n  transport-type selection.\n- Checking which RDMA task types and transport types are supported\n  on the active `doca_devinfo`.\n- Debugging a `DOCA_ERROR_*` returned from an RDMA call (lifecycle\n  vs. permission vs. capability vs. driver-below) and the connection\n  state-machine transitions (`doca_rdma_set_connection_state_callbacks`).\n- Designing or extending non-C bindings (Rust, Go, Python, …) that\n  wrap the RDMA 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 of\nDOCA itself, or non-RDMA 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 RDMA-specific\nmaterial lives in two companion files:\n\n- `CAPABILITIES.md` — what RDMA can express on this version: the\n  eleven task types and their permission matrix, the three\n  connection methods, transport types (RC baseline and alpha-level\n  DC for the export\u002Fconnect CPU-datapath flow — there is no UD) — note\n  these are the per-QP service\n  type controlled by `doca_rdma_set_transport_type()`, NOT the\n  link-layer (IB vs RoCE) which is inherited from the device\n  port configuration, the\n  capability-query surface (`doca_rdma_cap_*`), the RDMA error\n  taxonomy (mapped onto the cross-library `DOCA_ERROR_*` set), the\n  observability surface (per-task events, connection state callbacks),\n  and the safety policy that gates permission and export decisions.\n- `TASKS.md` — step-by-step workflows for the six in-scope RDMA\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 privileges\ntheir public install profile expects. It does not cover installing\nDOCA — 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 bundle.\nTo keep the boundary clean, it deliberately does not contain — and\npull requests should not add:\n\n- **Pre-written DOCA RDMA application source code, in any\n  language.** The verified RDMA source code is the shipped C\n  samples below the install prefix at\n  `$(pkg-config --variable=prefix doca)\u002Fsamples\u002Fdoca_rdma\u002F\u003Cname>\u002F`\n  (using the module resolved on the target). The\n  agent's job is to route the user to those files and prescribe a\n  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 RDMA-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 the\n  user's installed DOCA, where `pkg-config --modversion doca`\n  is the source of truth (resolve the module per `TASKS.md ## build`\n  Step 0 — there is normally no separate `doca-rdma.pc`).\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 in\n   scope.\n2. If the question is *what RDMA can express*—task taxonomy,\n   link-layer vs transport-type selection, connection methods,\n   permissions, errors, observability, or safety—read\n   [CAPABILITIES.md](CAPABILITIES.md).\n3. If the question is *how to do it*—configure, build, modify, run,\n   test, or debug—read the matching H2 in [TASKS.md](TASKS.md).\n   Read both companions only when the workflow depends on a\n   capability or safety decision; do not load both unconditionally.\n\nBoth companion files cross-link to each other and to\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 the\ninstalled package layout\" rather than \"RDMA-specific guidance\".\n\n## Related skills\n\n- [`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md) — the\n  routing table for every public DOCA documentation source and the\n  on-disk layout of an installed DOCA package. Always available\n  alongside this skill.\n- [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) — env preparation,\n  install verification, and the *I have no install yet* path with\n  the public NGC DOCA container. This skill assumes its\n  preconditions are satisfied.\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 RDMA specifics on\n  top.\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). RDMA-specific debug (state-machine transitions,\n  permission failures, connection callbacks) overlays on top of\n  that ladder.\n\n\n",{"data":35,"body":39},{"license":26,"name":4,"description":6,"metadata":36,"compatibility":38},{"kind":37},"library","Requires DOCA SDK on Linux (Ubuntu 22.04\u002F24.04 or RHEL\u002FSLES) with a BlueField DPU or ConnectX NIC. Resolves the local install and module via `pkg-config --list-all | grep -i doca` and `pkg-config --variable=prefix MODULE`, replacing `MODULE` with the exact name returned by the preceding query. The normal module is the umbrella `doca`, while split installs may expose a per-library module.\n",{"type":40,"children":41},"root",[42,50,57,117,190,233,299,305,317,638,644,669,762,768,773,910,932,938,950,1048,1062,1068,1080,1215,1221,1272,1287,1293],{"type":43,"tag":44,"props":45,"children":46},"element","h1",{"id":4},[47],{"type":48,"value":49},"text","DOCA RDMA",{"type":43,"tag":51,"props":52,"children":54},"h2",{"id":53},"non-negotiable-the-deliverable-uses-doca-rdma-not-raw-verbs",[55],{"type":48,"value":56},"Non-negotiable: the deliverable uses DOCA RDMA, not raw verbs",{"type":43,"tag":58,"props":59,"children":60},"p",{},[61,63,68,70,92,94,99,101,107,109,115],{"type":48,"value":62},"When this skill is in scope, the user is asking for ",{"type":43,"tag":64,"props":65,"children":66},"strong",{},[67],{"type":48,"value":49},{"type":48,"value":69},". The\nprogram you produce ",{"type":43,"tag":64,"props":71,"children":72},{},[73,75,82,84,90],{"type":48,"value":74},"must link ",{"type":43,"tag":76,"props":77,"children":79},"code",{"className":78},[],[80],{"type":48,"value":81},"libdoca_rdma",{"type":48,"value":83}," and call the\n",{"type":43,"tag":76,"props":85,"children":87},{"className":86},[],[88],{"type":48,"value":89},"doca_rdma_*",{"type":48,"value":91}," API",{"type":48,"value":93}," (directly in C\u002FC++, or through a thin FFI\u002Fcgo shim\nfrom another language). Do ",{"type":43,"tag":64,"props":95,"children":96},{},[97],{"type":48,"value":98},"NOT",{"type":48,"value":100}," implement the request with raw\n",{"type":43,"tag":76,"props":102,"children":104},{"className":103},[],[105],{"type":48,"value":106},"libibverbs",{"type":48,"value":108}," \u002F ",{"type":43,"tag":76,"props":110,"children":112},{"className":111},[],[113],{"type":48,"value":114},"librdmacm",{"type":48,"value":116}," \u002F RDMA-CM and call it done. Those move bytes\nbut completely bypass DOCA — which defeats the entire purpose of using\nthis library, loses the DOCA programming model (progress engine, task\u002F\nevent lifecycle, capability discovery, portability across BlueField\u002F\nConnectX generations), and is the single most common failure mode.",{"type":43,"tag":58,"props":118,"children":119},{},[120,122,127,129,133,135,140,142,148,150,155,157,163,165,176,178,188],{"type":48,"value":121},"\"Raw verbs is fewer lines\" \u002F \"it avoids building a DOCA binding layer\"\nis ",{"type":43,"tag":64,"props":123,"children":124},{},[125],{"type":48,"value":126},"not",{"type":48,"value":128}," an acceptable reason to bypass DOCA. The correct low-friction\npath for a non-C language (Go, Rust, Python, …) is ",{"type":43,"tag":64,"props":130,"children":131},{},[132],{"type":48,"value":126},{"type":48,"value":134}," to re-bind\nthe whole API — it is to start from a ",{"type":43,"tag":64,"props":136,"children":137},{},[138],{"type":48,"value":139},"shipped DOCA RDMA sample",{"type":48,"value":141}," under\n",{"type":43,"tag":76,"props":143,"children":145},{"className":144},[],[146],{"type":48,"value":147},"$(pkg-config --variable=prefix doca)\u002Fsamples\u002Fdoca_rdma\u002F",{"type":48,"value":149}," (substitute the\nmodule resolved on the target) and wrap its entry functions in\na ",{"type":43,"tag":64,"props":151,"children":152},{},[153],{"type":48,"value":154},"thin",{"type":48,"value":156}," cgo\u002FFFI shim built with ",{"type":43,"tag":76,"props":158,"children":160},{"className":159},[],[161],{"type":48,"value":162},"#cgo pkg-config: doca",{"type":48,"value":164}," (Go) or the\nequivalent. That shim is a single small file, not \"a large custom\nbinding layer\". See ",{"type":43,"tag":166,"props":167,"children":169},"a",{"href":168},"TASKS.md#build",[170],{"type":43,"tag":76,"props":171,"children":173},{"className":172},[],[174],{"type":48,"value":175},"TASKS.md ## build",{"type":48,"value":177}," Step 0 and\n",{"type":43,"tag":166,"props":179,"children":181},{"href":180},"TASKS.md#modify",[182],{"type":43,"tag":76,"props":183,"children":185},{"className":184},[],[186],{"type":48,"value":187},"TASKS.md ## modify",{"type":48,"value":189},".",{"type":43,"tag":58,"props":191,"children":192},{},[193,195,201,203,208,210,216,218,224,226,231],{"type":48,"value":194},"If ",{"type":43,"tag":76,"props":196,"children":198},{"className":197},[],[199],{"type":48,"value":200},"pkg-config doca",{"type":48,"value":202}," or the DOCA build fails, ",{"type":43,"tag":64,"props":204,"children":205},{},[206],{"type":48,"value":207},"fix the build",{"type":48,"value":209}," (module\nname, ",{"type":43,"tag":76,"props":211,"children":213},{"className":212},[],[214],{"type":48,"value":215},"PKG_CONFIG_PATH",{"type":48,"value":217},", sample path) — do not silently fall back to\nverbs. A binary whose ",{"type":43,"tag":76,"props":219,"children":221},{"className":220},[],[222],{"type":48,"value":223},"ldd",{"type":48,"value":225}," shows no ",{"type":43,"tag":76,"props":227,"children":229},{"className":228},[],[230],{"type":48,"value":81},{"type":48,"value":232}," is a failed\nDOCA-RDMA task, regardless of whether bytes moved.",{"type":43,"tag":58,"props":234,"children":235},{},[236,241,243,248,250,259,261,267,269,278,280,285,287,297],{"type":43,"tag":64,"props":237,"children":238},{},[239],{"type":48,"value":240},"Where to start:",{"type":48,"value":242}," This skill assumes DOCA is already installed and\nthe user is doing ",{"type":43,"tag":64,"props":244,"children":245},{},[246],{"type":48,"value":247},"hands-on RDMA work",{"type":48,"value":249}," on a BlueField \u002F ConnectX \u002F\nhost with DOCA. Open ",{"type":43,"tag":166,"props":251,"children":253},{"href":252},"TASKS.md",[254],{"type":43,"tag":76,"props":255,"children":257},{"className":256},[],[258],{"type":48,"value":252},{"type":48,"value":260}," if the user wants to ",{"type":43,"tag":262,"props":263,"children":264},"em",{},[265],{"type":48,"value":266},"do",{"type":48,"value":268},"\nsomething (configure \u002F build \u002F modify \u002F run \u002F test \u002F debug); open\n",{"type":43,"tag":166,"props":270,"children":272},{"href":271},"CAPABILITIES.md",[273],{"type":43,"tag":76,"props":274,"children":276},{"className":275},[],[277],{"type":48,"value":271},{"type":48,"value":279}," when the question is ",{"type":43,"tag":262,"props":281,"children":282},{},[283],{"type":48,"value":284},"what can\nRDMA express",{"type":48,"value":286}," on this version. If the user has not installed DOCA\nyet, route to ",{"type":43,"tag":166,"props":288,"children":290},{"href":289},"..\u002F..\u002Fdoca-setup\u002FSKILL.md",[291],{"type":43,"tag":76,"props":292,"children":294},{"className":293},[],[295],{"type":48,"value":296},"doca-setup",{"type":48,"value":298}," first.",{"type":43,"tag":51,"props":300,"children":302},{"id":301},"example-questions-this-skill-answers-well",[303],{"type":48,"value":304},"Example questions this skill answers well",{"type":43,"tag":58,"props":306,"children":307},{},[308,310,315],{"type":48,"value":309},"The CLASSES of RDMA questions this skill is built to answer, each\nwith one worked example. The agent should treat the ",{"type":43,"tag":262,"props":311,"children":312},{},[313],{"type":48,"value":314},"class",{"type":48,"value":316}," as the\nload-bearing piece — the worked example is a single instance.",{"type":43,"tag":318,"props":319,"children":320},"ul",{},[321,363,404,450,507,558],{"type":43,"tag":322,"props":323,"children":324},"li",{},[325,330,332,337,339,349,351,361],{"type":43,"tag":64,"props":326,"children":327},{},[328],{"type":48,"value":329},"\"How do I bring up an RDMA context and connect two sides?\"",{"type":48,"value":331}," —\nworked example: ",{"type":43,"tag":262,"props":333,"children":334},{},[335],{"type":48,"value":336},"\"set up sender + receiver with RDMA CM on a single\nhost for first-run testing\"",{"type":48,"value":338},". Answered by the lifecycle + connection\nworkflow in ",{"type":43,"tag":166,"props":340,"children":342},{"href":341},"TASKS.md#configure",[343],{"type":43,"tag":76,"props":344,"children":346},{"className":345},[],[347],{"type":48,"value":348},"TASKS.md ## configure",{"type":48,"value":350}," +\n",{"type":43,"tag":166,"props":352,"children":354},{"href":353},"CAPABILITIES.md#capabilities-and-modes",[355],{"type":43,"tag":76,"props":356,"children":358},{"className":357},[],[359],{"type":48,"value":360},"CAPABILITIES.md ## Capabilities and modes",{"type":48,"value":362},"\nconnection-method selection.",{"type":43,"tag":322,"props":364,"children":365},{},[366,371,372,377,379,387],{"type":43,"tag":64,"props":367,"children":368},{},[369],{"type":48,"value":370},"\"Which RDMA task type fits this data-movement pattern?\"",{"type":48,"value":331},{"type":43,"tag":262,"props":373,"children":374},{},[375],{"type":48,"value":376},"\"one-sided write + completion via Send-with-Immediate\nfor a small control message\"",{"type":48,"value":378},". Answered by the task taxonomy in\n",{"type":43,"tag":166,"props":380,"children":381},{"href":353},[382],{"type":43,"tag":76,"props":383,"children":385},{"className":384},[],[386],{"type":48,"value":360},{"type":43,"tag":318,"props":388,"children":389},{},[390],{"type":43,"tag":322,"props":391,"children":392},{},[393,395,403],{"type":48,"value":394},"the task-config workflow in\n",{"type":43,"tag":166,"props":396,"children":397},{"href":180},[398],{"type":43,"tag":76,"props":399,"children":401},{"className":400},[],[402],{"type":48,"value":187},{"type":48,"value":189},{"type":43,"tag":322,"props":405,"children":406},{},[407,412,414,419,421,431],{"type":43,"tag":64,"props":408,"children":409},{},[410],{"type":48,"value":411},"\"What mmap permissions does this task need? Do I have to export\nthe mmap?\"",{"type":48,"value":413}," — worked example: ",{"type":43,"tag":262,"props":415,"children":416},{},[417],{"type":48,"value":418},"\"my Read task fails with insufficient\npermissions\"",{"type":48,"value":420},". Answered by the permission matrix in\n",{"type":43,"tag":166,"props":422,"children":424},{"href":423},"CAPABILITIES.md#safety-policy",[425],{"type":43,"tag":76,"props":426,"children":428},{"className":427},[],[429],{"type":48,"value":430},"CAPABILITIES.md ## Safety policy",{"type":43,"tag":318,"props":432,"children":433},{},[434],{"type":43,"tag":322,"props":435,"children":436},{},[437,439,449],{"type":48,"value":438},"the mmap-export checklist in\n",{"type":43,"tag":166,"props":440,"children":442},{"href":441},"TASKS.md#test",[443],{"type":43,"tag":76,"props":444,"children":446},{"className":445},[],[447],{"type":48,"value":448},"TASKS.md ## test",{"type":48,"value":189},{"type":43,"tag":322,"props":451,"children":452},{},[453,458,459,464,466,472,474,480,482,490],{"type":43,"tag":64,"props":454,"children":455},{},[456],{"type":48,"value":457},"\"Is this RDMA capability supported on my device + transport?\"",{"type":48,"value":331},{"type":43,"tag":262,"props":460,"children":461},{},[462],{"type":48,"value":463},"\"does this device support Atomic Compare-and-Swap\nover RoCE\"",{"type":48,"value":465},". Answered by the capability-query rule\n(",{"type":43,"tag":76,"props":467,"children":469},{"className":468},[],[470],{"type":48,"value":471},"doca_rdma_cap_task_*_is_supported",{"type":48,"value":473}," against a ",{"type":43,"tag":76,"props":475,"children":477},{"className":476},[],[478],{"type":48,"value":479},"doca_devinfo",{"type":48,"value":481},") in\n",{"type":43,"tag":166,"props":483,"children":484},{"href":353},[485],{"type":43,"tag":76,"props":486,"children":488},{"className":487},[],[489],{"type":48,"value":360},{"type":43,"tag":318,"props":491,"children":492},{},[493],{"type":43,"tag":322,"props":494,"children":495},{},[496,498,506],{"type":48,"value":497},"the discovery step in\n",{"type":43,"tag":166,"props":499,"children":500},{"href":341},[501],{"type":43,"tag":76,"props":502,"children":504},{"className":503},[],[505],{"type":48,"value":348},{"type":48,"value":189},{"type":43,"tag":322,"props":508,"children":509},{},[510,515,516,521,523,533],{"type":43,"tag":64,"props":511,"children":512},{},[513],{"type":48,"value":514},"\"Is this RDMA API available on my installed DOCA version?\"",{"type":48,"value":331},{"type":43,"tag":262,"props":517,"children":518},{},[519],{"type":48,"value":520},"\"is RDMA CM in DOCA 2.6.0\"",{"type":48,"value":522},". Answered by the\nversion-compatibility section in\n",{"type":43,"tag":166,"props":524,"children":526},{"href":525},"CAPABILITIES.md#version-compatibility",[527],{"type":43,"tag":76,"props":528,"children":530},{"className":529},[],[531],{"type":48,"value":532},"CAPABILITIES.md ## Version compatibility",{"type":43,"tag":318,"props":534,"children":535},{},[536],{"type":43,"tag":322,"props":537,"children":538},{},[539,541,547,549,557],{"type":48,"value":540},"the version-discovery rule (",{"type":43,"tag":76,"props":542,"children":544},{"className":543},[],[545],{"type":48,"value":546},"pkg-config --modversion doca",{"type":48,"value":548},")\npinned in ",{"type":43,"tag":166,"props":550,"children":551},{"href":341},[552],{"type":43,"tag":76,"props":553,"children":555},{"className":554},[],[556],{"type":48,"value":348},{"type":48,"value":189},{"type":43,"tag":322,"props":559,"children":560},{},[561,574,575,595,597,607],{"type":43,"tag":64,"props":562,"children":563},{},[564,566,572],{"type":48,"value":565},"\"What does this ",{"type":43,"tag":76,"props":567,"children":569},{"className":568},[],[570],{"type":48,"value":571},"DOCA_ERROR_*",{"type":48,"value":573}," from an RDMA call mean and which\nlayer caused it?\"",{"type":48,"value":413},{"type":43,"tag":262,"props":576,"children":577},{},[578,580,586,588,594],{"type":48,"value":579},"\"",{"type":43,"tag":76,"props":581,"children":583},{"className":582},[],[584],{"type":48,"value":585},"DOCA_ERROR_BAD_STATE",{"type":48,"value":587}," from\n",{"type":43,"tag":76,"props":589,"children":591},{"className":590},[],[592],{"type":48,"value":593},"doca_rdma_connection_disconnect",{"type":48,"value":579},{"type":48,"value":596},". Answered by the RDMA overlay\non the cross-library taxonomy in\n",{"type":43,"tag":166,"props":598,"children":600},{"href":599},"CAPABILITIES.md#error-taxonomy",[601],{"type":43,"tag":76,"props":602,"children":604},{"className":603},[],[605],{"type":48,"value":606},"CAPABILITIES.md ## Error taxonomy",{"type":43,"tag":318,"props":608,"children":609},{},[610],{"type":43,"tag":322,"props":611,"children":612},{},[613,615,625,627,637],{"type":48,"value":614},"the layered ladder in\n",{"type":43,"tag":166,"props":616,"children":618},{"href":617},"TASKS.md#debug",[619],{"type":43,"tag":76,"props":620,"children":622},{"className":621},[],[623],{"type":48,"value":624},"TASKS.md ## debug",{"type":48,"value":626}," that escalates to\n",{"type":43,"tag":166,"props":628,"children":630},{"href":629},"..\u002F..\u002Fdoca-debug\u002FSKILL.md",[631],{"type":43,"tag":76,"props":632,"children":634},{"className":633},[],[635],{"type":48,"value":636},"doca-debug",{"type":48,"value":189},{"type":43,"tag":51,"props":639,"children":641},{"id":640},"audience",[642],{"type":48,"value":643},"Audience",{"type":43,"tag":58,"props":645,"children":646},{},[647,649,654,656,661,663,667],{"type":48,"value":648},"This skill serves ",{"type":43,"tag":64,"props":650,"children":651},{},[652],{"type":48,"value":653},"external developers building applications that\nconsume the DOCA RDMA library",{"type":48,"value":655}," — i.e., users whose code calls\n",{"type":43,"tag":76,"props":657,"children":659},{"className":658},[],[660],{"type":48,"value":89},{"type":48,"value":662}," (directly in C\u002FC++, or through FFI\u002Fbindings from\nanother language) to do RDMA data movement between two sides\n(host↔host, host↔BlueField, DPU↔DPU, or SF↔SF on a BlueField). It\nis ",{"type":43,"tag":262,"props":664,"children":665},{},[666],{"type":48,"value":126},{"type":48,"value":668}," for NVIDIA developers contributing to DOCA RDMA itself.",{"type":43,"tag":58,"props":670,"children":671},{},[672,677,679,692,694,700,702,708,710,716,718,723,725,731,733,738,740,746,748,753,755,760],{"type":43,"tag":64,"props":673,"children":674},{},[675],{"type":48,"value":676},"Language scope.",{"type":48,"value":678}," DOCA RDMA normally ships as a C library ",{"type":43,"tag":262,"props":680,"children":681},{},[682,684,690],{"type":48,"value":683},"inside the\numbrella ",{"type":43,"tag":76,"props":685,"children":687},{"className":686},[],[688],{"type":48,"value":689},"doca",{"type":48,"value":691}," pkg-config module",{"type":48,"value":693}," (public header ",{"type":43,"tag":76,"props":695,"children":697},{"className":696},[],[698],{"type":48,"value":699},"doca_rdma.h",{"type":48,"value":701},", shared\nobject ",{"type":43,"tag":76,"props":703,"children":705},{"className":704},[],[706],{"type":48,"value":707},"libdoca_rdma.so",{"type":48,"value":709},"); split installs may expose a per-library module.\nAlways discover the module on the target (",{"type":43,"tag":76,"props":711,"children":713},{"className":712},[],[714],{"type":48,"value":715},"pkg-config --list-all | grep -i doca",{"type":48,"value":717},") rather than assuming either layout. The\nshipped samples are written in C\n(NVIDIA's choice). C and C++ consumers are the canonical case and\nthe worked examples in ",{"type":43,"tag":76,"props":719,"children":721},{"className":720},[],[722],{"type":48,"value":252},{"type":48,"value":724}," assume that path. Other-language\nconsumers (Rust, Go, Python, …) consume the same ",{"type":43,"tag":76,"props":726,"children":728},{"className":727},[],[729],{"type":48,"value":730},"*.so",{"type":48,"value":732}," through FFI\nor language-specific bindings; the skill's contribution in that case\nis to keep the lifecycle, capability-discovery, permission-matrix,\nerror-taxonomy, and connection-method guidance language-neutral, and\nto route the agent to the public C ABI as the authoritative surface\nthat any wrapper will eventually call. ",{"type":43,"tag":64,"props":734,"children":735},{},[736],{"type":48,"value":737},"The non-C deliverable is still\na DOCA program",{"type":48,"value":739},": a thin cgo\u002FFFI shim over the shipped ",{"type":43,"tag":76,"props":741,"children":743},{"className":742},[],[744],{"type":48,"value":745},"doca_rdma",{"type":48,"value":747},"\nsample that links ",{"type":43,"tag":76,"props":749,"children":751},{"className":750},[],[752],{"type":48,"value":81},{"type":48,"value":754}," (",{"type":43,"tag":76,"props":756,"children":758},{"className":757},[],[759],{"type":48,"value":162},{"type":48,"value":761},") — never a\nraw-libibverbs reimplementation chosen to avoid wrapping DOCA (see the\nmandate at the top of this file).",{"type":43,"tag":51,"props":763,"children":765},{"id":764},"when-to-load-this-skill",[766],{"type":48,"value":767},"When to load this skill",{"type":43,"tag":58,"props":769,"children":770},{},[771],{"type":48,"value":772},"Load this skill when the user is doing hands-on DOCA RDMA work, in\nany language. Concretely:",{"type":43,"tag":318,"props":774,"children":775},{},[776,796,840,853,874,885,905],{"type":43,"tag":322,"props":777,"children":778},{},[779,781,787,789,795],{"type":48,"value":780},"Initializing an RDMA context on a ",{"type":43,"tag":76,"props":782,"children":784},{"className":783},[],[785],{"type":48,"value":786},"doca_dev",{"type":48,"value":788}," and configuring at\nleast one task type before ",{"type":43,"tag":76,"props":790,"children":792},{"className":791},[],[793],{"type":48,"value":794},"doca_ctx_start()",{"type":48,"value":189},{"type":43,"tag":322,"props":797,"children":798},{},[799,801,807,808,814,816,822,824,830,832,838],{"type":48,"value":800},"Establishing a connection — picking between RDMA CM\n(",{"type":43,"tag":76,"props":802,"children":804},{"className":803},[],[805],{"type":48,"value":806},"doca_rdma_connect_to_addr()",{"type":48,"value":108},{"type":43,"tag":76,"props":809,"children":811},{"className":810},[],[812],{"type":48,"value":813},"doca_rdma_start_listen_to_port()",{"type":48,"value":815},"\n\u002F ",{"type":43,"tag":76,"props":817,"children":819},{"className":818},[],[820],{"type":48,"value":821},"doca_rdma_connection_accept()",{"type":48,"value":823},"), bridge \u002F OOB\n(",{"type":43,"tag":76,"props":825,"children":827},{"className":826},[],[828],{"type":48,"value":829},"doca_rdma_bridge_*",{"type":48,"value":831},"), or gRPC (out-of-band exchange\nof ",{"type":43,"tag":76,"props":833,"children":835},{"className":834},[],[836],{"type":48,"value":837},"doca_rdma_export()",{"type":48,"value":839}," output).",{"type":43,"tag":322,"props":841,"children":842},{},[843,845,851],{"type":48,"value":844},"Setting permissions on ",{"type":43,"tag":76,"props":846,"children":848},{"className":847},[],[849],{"type":48,"value":850},"doca_mmap",{"type":48,"value":852}," correctly for the chosen task\ntype (Read needs RDMA-read + local read-write; Write needs\nRDMA-write; Atomic needs RDMA-atomic; Send needs only local\nread-write).",{"type":43,"tag":322,"props":854,"children":855},{},[856,858,864,866,872],{"type":48,"value":857},"Reading \u002F setting library properties via ",{"type":43,"tag":76,"props":859,"children":861},{"className":860},[],[862],{"type":48,"value":863},"doca_rdma_set_*",{"type":48,"value":865}," and\n",{"type":43,"tag":76,"props":867,"children":869},{"className":868},[],[870],{"type":48,"value":871},"doca_rdma_cap_get_*",{"type":48,"value":873}," to size queues, list lengths, and\ntransport-type selection.",{"type":43,"tag":322,"props":875,"children":876},{},[877,879,884],{"type":48,"value":878},"Checking which RDMA task types and transport types are supported\non the active ",{"type":43,"tag":76,"props":880,"children":882},{"className":881},[],[883],{"type":48,"value":479},{"type":48,"value":189},{"type":43,"tag":322,"props":886,"children":887},{},[888,890,895,897,903],{"type":48,"value":889},"Debugging a ",{"type":43,"tag":76,"props":891,"children":893},{"className":892},[],[894],{"type":48,"value":571},{"type":48,"value":896}," returned from an RDMA call (lifecycle\nvs. permission vs. capability vs. driver-below) and the connection\nstate-machine transitions (",{"type":43,"tag":76,"props":898,"children":900},{"className":899},[],[901],{"type":48,"value":902},"doca_rdma_set_connection_state_callbacks",{"type":48,"value":904},").",{"type":43,"tag":322,"props":906,"children":907},{},[908],{"type":48,"value":909},"Designing or extending non-C bindings (Rust, Go, Python, …) that\nwrap the RDMA C ABI — for the lifecycle, permission, and\ncapability rules the wrapper must honor.",{"type":43,"tag":58,"props":911,"children":912},{},[913,915,919,921,931],{"type":48,"value":914},"Do ",{"type":43,"tag":64,"props":916,"children":917},{},[918],{"type":48,"value":126},{"type":48,"value":920}," load this skill for general DOCA orientation, install of\nDOCA itself, or non-RDMA library questions. For those, use\n",{"type":43,"tag":166,"props":922,"children":924},{"href":923},"..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md",[925],{"type":43,"tag":76,"props":926,"children":928},{"className":927},[],[929],{"type":48,"value":930},"doca-public-knowledge-map",{"type":48,"value":189},{"type":43,"tag":51,"props":933,"children":935},{"id":934},"what-this-skill-provides",[936],{"type":48,"value":937},"What this skill provides",{"type":43,"tag":58,"props":939,"children":940},{},[941,943,948],{"type":48,"value":942},"This is a ",{"type":43,"tag":64,"props":944,"children":945},{},[946],{"type":48,"value":947},"thin loader",{"type":48,"value":949},". The body keeps only the orientation\nneeded to pick the right next file. The substantive RDMA-specific\nmaterial lives in two companion files:",{"type":43,"tag":318,"props":951,"children":952},{},[953,986],{"type":43,"tag":322,"props":954,"children":955},{},[956,961,963,969,971,977,979,984],{"type":43,"tag":76,"props":957,"children":959},{"className":958},[],[960],{"type":48,"value":271},{"type":48,"value":962}," — what RDMA can express on this version: the\neleven task types and their permission matrix, the three\nconnection methods, transport types (RC baseline and alpha-level\nDC for the export\u002Fconnect CPU-datapath flow — there is no UD) — note\nthese are the per-QP service\ntype controlled by ",{"type":43,"tag":76,"props":964,"children":966},{"className":965},[],[967],{"type":48,"value":968},"doca_rdma_set_transport_type()",{"type":48,"value":970},", NOT the\nlink-layer (IB vs RoCE) which is inherited from the device\nport configuration, the\ncapability-query surface (",{"type":43,"tag":76,"props":972,"children":974},{"className":973},[],[975],{"type":48,"value":976},"doca_rdma_cap_*",{"type":48,"value":978},"), the RDMA error\ntaxonomy (mapped onto the cross-library ",{"type":43,"tag":76,"props":980,"children":982},{"className":981},[],[983],{"type":48,"value":571},{"type":48,"value":985}," set), the\nobservability surface (per-task events, connection state callbacks),\nand the safety policy that gates permission and export decisions.",{"type":43,"tag":322,"props":987,"children":988},{},[989,994,996,1002,1004,1010,1011,1017,1018,1024,1025,1031,1032,1038,1040,1046],{"type":43,"tag":76,"props":990,"children":992},{"className":991},[],[993],{"type":48,"value":252},{"type":48,"value":995}," — step-by-step workflows for the six in-scope RDMA\nverbs: ",{"type":43,"tag":76,"props":997,"children":999},{"className":998},[],[1000],{"type":48,"value":1001},"configure",{"type":48,"value":1003},", ",{"type":43,"tag":76,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":48,"value":1009},"build",{"type":48,"value":1003},{"type":43,"tag":76,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":48,"value":1016},"modify",{"type":48,"value":1003},{"type":43,"tag":76,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":48,"value":1023},"run",{"type":48,"value":1003},{"type":43,"tag":76,"props":1026,"children":1028},{"className":1027},[],[1029],{"type":48,"value":1030},"test",{"type":48,"value":1003},{"type":43,"tag":76,"props":1033,"children":1035},{"className":1034},[],[1036],{"type":48,"value":1037},"debug",{"type":48,"value":1039},".\nPlus a ",{"type":43,"tag":76,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":48,"value":1045},"Deferred task verbs",{"type":48,"value":1047}," block that points out-of-scope\nquestions at the right next skill.",{"type":43,"tag":58,"props":1049,"children":1050},{},[1051,1053,1061],{"type":48,"value":1052},"The skill assumes a host or BlueField where DOCA is already\ninstalled at the standard location and the user has the privileges\ntheir public install profile expects. It does not cover installing\nDOCA — that path goes through\n",{"type":43,"tag":166,"props":1054,"children":1055},{"href":289},[1056],{"type":43,"tag":76,"props":1057,"children":1059},{"className":1058},[],[1060],{"type":48,"value":296},{"type":48,"value":189},{"type":43,"tag":51,"props":1063,"children":1065},{"id":1064},"what-this-skill-deliberately-does-not-ship",[1066],{"type":48,"value":1067},"What this skill deliberately does not ship",{"type":43,"tag":58,"props":1069,"children":1070},{},[1071,1073,1078],{"type":48,"value":1072},"This skill is ",{"type":43,"tag":64,"props":1074,"children":1075},{},[1076],{"type":48,"value":1077},"agent guidance",{"type":48,"value":1079},", not a samples or templates bundle.\nTo keep the boundary clean, it deliberately does not contain — and\npull requests should not add:",{"type":43,"tag":318,"props":1081,"children":1082},{},[1083,1122,1182],{"type":43,"tag":322,"props":1084,"children":1085},{},[1086,1091,1093,1099,1101,1111,1113,1121],{"type":43,"tag":64,"props":1087,"children":1088},{},[1089],{"type":48,"value":1090},"Pre-written DOCA RDMA application source code, in any\nlanguage.",{"type":48,"value":1092}," The verified RDMA source code is the shipped C\nsamples below the install prefix at\n",{"type":43,"tag":76,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":48,"value":1098},"$(pkg-config --variable=prefix doca)\u002Fsamples\u002Fdoca_rdma\u002F\u003Cname>\u002F",{"type":48,"value":1100},"\n(using the module resolved on the target). The\nagent's job is to route the user to those files and prescribe a\nminimum-diff modification on them via the universal\nmodify-a-sample workflow in\n",{"type":43,"tag":166,"props":1102,"children":1104},{"href":1103},"..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md",[1105],{"type":43,"tag":76,"props":1106,"children":1108},{"className":1107},[],[1109],{"type":48,"value":1110},"doca-programming-guide",{"type":48,"value":1112},",\nlayered with the RDMA-specific overrides in\n",{"type":43,"tag":166,"props":1114,"children":1115},{"href":180},[1116],{"type":43,"tag":76,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":48,"value":187},{"type":48,"value":189},{"type":43,"tag":322,"props":1123,"children":1124},{},[1125,1130,1131,1137,1138,1144,1146,1152,1154,1159,1161,1166,1168,1173,1175,1181],{"type":43,"tag":64,"props":1126,"children":1127},{},[1128],{"type":48,"value":1129},"Standalone build manifests",{"type":48,"value":754},{"type":43,"tag":76,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":48,"value":1136},"meson.build",{"type":48,"value":1003},{"type":43,"tag":76,"props":1139,"children":1141},{"className":1140},[],[1142],{"type":48,"value":1143},"CMakeLists.txt",{"type":48,"value":1145},",\n",{"type":43,"tag":76,"props":1147,"children":1149},{"className":1148},[],[1150],{"type":48,"value":1151},"Cargo.toml",{"type":48,"value":1153},", …) parked inside the skill. The agent constructs\nthe build manifest ",{"type":43,"tag":262,"props":1155,"children":1156},{},[1157],{"type":48,"value":1158},"in the user's project directory",{"type":48,"value":1160}," against the\nuser's installed DOCA, where ",{"type":43,"tag":76,"props":1162,"children":1164},{"className":1163},[],[1165],{"type":48,"value":546},{"type":48,"value":1167},"\nis the source of truth (resolve the module per ",{"type":43,"tag":76,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":48,"value":175},{"type":48,"value":1174},"\nStep 0 — there is normally no separate ",{"type":43,"tag":76,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":48,"value":1180},"doca-rdma.pc",{"type":48,"value":904},{"type":43,"tag":322,"props":1183,"children":1184},{},[1185,1213],{"type":43,"tag":64,"props":1186,"children":1187},{},[1188,1190,1196,1197,1203,1205,1211],{"type":48,"value":1189},"A ",{"type":43,"tag":76,"props":1191,"children":1193},{"className":1192},[],[1194],{"type":48,"value":1195},"samples\u002F",{"type":48,"value":1003},{"type":43,"tag":76,"props":1198,"children":1200},{"className":1199},[],[1201],{"type":48,"value":1202},"bindings\u002F",{"type":48,"value":1204},", or ",{"type":43,"tag":76,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":48,"value":1210},"reference\u002F",{"type":48,"value":1212}," subtree",{"type":48,"value":1214}," 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":43,"tag":51,"props":1216,"children":1218},{"id":1217},"loading-order",[1219],{"type":48,"value":1220},"Loading order",{"type":43,"tag":1222,"props":1223,"children":1224},"ol",{},[1225,1238,1255],{"type":43,"tag":322,"props":1226,"children":1227},{},[1228,1230,1236],{"type":48,"value":1229},"Read this ",{"type":43,"tag":76,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":48,"value":1235},"SKILL.md",{"type":48,"value":1237}," first to confirm the user's question is in\nscope.",{"type":43,"tag":322,"props":1239,"children":1240},{},[1241,1243,1248,1250,1254],{"type":48,"value":1242},"If the question is ",{"type":43,"tag":262,"props":1244,"children":1245},{},[1246],{"type":48,"value":1247},"what RDMA can express",{"type":48,"value":1249},"—task taxonomy,\nlink-layer vs transport-type selection, connection methods,\npermissions, errors, observability, or safety—read\n",{"type":43,"tag":166,"props":1251,"children":1252},{"href":271},[1253],{"type":48,"value":271},{"type":48,"value":189},{"type":43,"tag":322,"props":1256,"children":1257},{},[1258,1259,1264,1266,1270],{"type":48,"value":1242},{"type":43,"tag":262,"props":1260,"children":1261},{},[1262],{"type":48,"value":1263},"how to do it",{"type":48,"value":1265},"—configure, build, modify, run,\ntest, or debug—read the matching H2 in ",{"type":43,"tag":166,"props":1267,"children":1268},{"href":252},[1269],{"type":48,"value":252},{"type":48,"value":1271},".\nRead both companions only when the workflow depends on a\ncapability or safety decision; do not load both unconditionally.",{"type":43,"tag":58,"props":1273,"children":1274},{},[1275,1277,1285],{"type":48,"value":1276},"Both companion files cross-link to each other and to\n",{"type":43,"tag":166,"props":1278,"children":1279},{"href":923},[1280],{"type":43,"tag":76,"props":1281,"children":1283},{"className":1282},[],[1284],{"type":48,"value":930},{"type":48,"value":1286},"\nwhenever the right answer is \"look it up in the public docs or the\ninstalled package layout\" rather than \"RDMA-specific guidance\".",{"type":43,"tag":51,"props":1288,"children":1290},{"id":1289},"related-skills",[1291],{"type":48,"value":1292},"Related skills",{"type":43,"tag":318,"props":1294,"children":1295},{},[1296,1309,1329,1357],{"type":43,"tag":322,"props":1297,"children":1298},{},[1299,1307],{"type":43,"tag":166,"props":1300,"children":1301},{"href":923},[1302],{"type":43,"tag":76,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":48,"value":930},{"type":48,"value":1308}," — the\nrouting table for every public DOCA documentation source and the\non-disk layout of an installed DOCA package. Always available\nalongside this skill.",{"type":43,"tag":322,"props":1310,"children":1311},{},[1312,1320,1322,1327],{"type":43,"tag":166,"props":1313,"children":1314},{"href":289},[1315],{"type":43,"tag":76,"props":1316,"children":1318},{"className":1317},[],[1319],{"type":48,"value":296},{"type":48,"value":1321}," — env preparation,\ninstall verification, and the ",{"type":43,"tag":262,"props":1323,"children":1324},{},[1325],{"type":48,"value":1326},"I have no install yet",{"type":48,"value":1328}," path with\nthe public NGC DOCA container. This skill assumes its\npreconditions are satisfied.",{"type":43,"tag":322,"props":1330,"children":1331},{},[1332,1340,1342,1348,1350,1355],{"type":43,"tag":166,"props":1333,"children":1334},{"href":1103},[1335],{"type":43,"tag":76,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":48,"value":1110},{"type":48,"value":1341}," —\ngeneral DOCA programming patterns shared by every library: the\ncanonical ",{"type":43,"tag":76,"props":1343,"children":1345},{"className":1344},[],[1346],{"type":48,"value":1347},"pkg-config",{"type":48,"value":1349}," + meson build pattern, the universal\nmodify-a-shipped-sample first-app workflow, the universal\nlifecycle, the cross-library ",{"type":43,"tag":76,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":48,"value":571},{"type":48,"value":1356}," taxonomy, and the\nprogram-side debug order. This skill layers RDMA specifics on\ntop.",{"type":43,"tag":322,"props":1358,"children":1359},{},[1360,1368],{"type":43,"tag":166,"props":1361,"children":1362},{"href":629},[1363],{"type":43,"tag":76,"props":1364,"children":1366},{"className":1365},[],[1367],{"type":48,"value":636},{"type":48,"value":1369}," — the cross-cutting\ndebug ladder (install \u002F version \u002F build \u002F link \u002F runtime \u002F\nprogram \u002F driver). RDMA-specific debug (state-machine transitions,\npermission failures, connection callbacks) overlays on top of\nthat ladder.",{"items":1371,"total":1475},[1372,1389,1403,1417,1429,1446,1461],{"slug":1373,"name":1373,"fn":1374,"description":1375,"org":1376,"tags":1377,"stars":23,"repoUrl":24,"updatedAt":1388},"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},[1378,1381,1384,1385],{"name":1379,"slug":1380,"type":15},"Data Analysis","data-analysis",{"name":1382,"slug":1383,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":1386,"slug":1387,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1390,"name":1390,"fn":1391,"description":1392,"org":1393,"tags":1394,"stars":23,"repoUrl":24,"updatedAt":1402},"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},[1395,1398,1401],{"name":1396,"slug":1397,"type":15},"Deployment","deployment",{"name":1399,"slug":1400,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":1404,"name":1404,"fn":1405,"description":1406,"org":1407,"tags":1408,"stars":23,"repoUrl":24,"updatedAt":1416},"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},[1409,1412,1413],{"name":1410,"slug":1411,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1414,"slug":1415,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":1418,"name":1418,"fn":1419,"description":1420,"org":1421,"tags":1422,"stars":23,"repoUrl":24,"updatedAt":1428},"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},[1423,1424,1425],{"name":1379,"slug":1380,"type":15},{"name":9,"slug":8,"type":15},{"name":1426,"slug":1427,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":1430,"name":1430,"fn":1431,"description":1432,"org":1433,"tags":1434,"stars":23,"repoUrl":24,"updatedAt":1445},"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},[1435,1438,1441,1442],{"name":1436,"slug":1437,"type":15},"Automation","automation",{"name":1439,"slug":1440,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":1443,"slug":1444,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":1447,"name":1447,"fn":1448,"description":1449,"org":1450,"tags":1451,"stars":23,"repoUrl":24,"updatedAt":1460},"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},[1452,1453,1456,1457],{"name":1396,"slug":1397,"type":15},{"name":1454,"slug":1455,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":1458,"slug":1459,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1462,"name":1462,"fn":1463,"description":1464,"org":1465,"tags":1466,"stars":23,"repoUrl":24,"updatedAt":1474},"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},[1467,1468,1471],{"name":9,"slug":8,"type":15},{"name":1469,"slug":1470,"type":15},"Quantum Computing","quantum-computing",{"name":1472,"slug":1473,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":1477,"total":1628},[1478,1496,1512,1523,1535,1549,1562,1576,1587,1596,1610,1619],{"slug":1479,"name":1479,"fn":1480,"description":1481,"org":1482,"tags":1483,"stars":1493,"repoUrl":1494,"updatedAt":1495},"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},[1484,1487,1490],{"name":1485,"slug":1486,"type":15},"Documentation","documentation",{"name":1488,"slug":1489,"type":15},"MCP","mcp",{"name":1491,"slug":1492,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1497,"name":1497,"fn":1498,"description":1499,"org":1500,"tags":1501,"stars":1509,"repoUrl":1510,"updatedAt":1511},"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},[1502,1505,1506],{"name":1503,"slug":1504,"type":15},"Containers","containers",{"name":1396,"slug":1397,"type":15},{"name":1507,"slug":1508,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1513,"name":1513,"fn":1514,"description":1515,"org":1516,"tags":1517,"stars":1509,"repoUrl":1510,"updatedAt":1522},"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},[1518,1521],{"name":1519,"slug":1520,"type":15},"CI\u002FCD","ci-cd",{"name":1396,"slug":1397,"type":15},"2026-07-14T05:25:59.97109",{"slug":1524,"name":1524,"fn":1525,"description":1526,"org":1527,"tags":1528,"stars":1509,"repoUrl":1510,"updatedAt":1534},"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},[1529,1530,1531],{"name":1519,"slug":1520,"type":15},{"name":1396,"slug":1397,"type":15},{"name":1532,"slug":1533,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1536,"name":1536,"fn":1537,"description":1538,"org":1539,"tags":1540,"stars":1509,"repoUrl":1510,"updatedAt":1548},"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},[1541,1544,1545],{"name":1542,"slug":1543,"type":15},"Debugging","debugging",{"name":1532,"slug":1533,"type":15},{"name":1546,"slug":1547,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1550,"name":1550,"fn":1551,"description":1552,"org":1553,"tags":1554,"stars":1509,"repoUrl":1510,"updatedAt":1561},"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},[1555,1558],{"name":1556,"slug":1557,"type":15},"Best Practices","best-practices",{"name":1559,"slug":1560,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1563,"name":1563,"fn":1564,"description":1565,"org":1566,"tags":1567,"stars":1509,"repoUrl":1510,"updatedAt":1575},"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},[1568,1571,1574],{"name":1569,"slug":1570,"type":15},"Machine Learning","machine-learning",{"name":1572,"slug":1573,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1577,"name":1577,"fn":1578,"description":1579,"org":1580,"tags":1581,"stars":1509,"repoUrl":1510,"updatedAt":1586},"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},[1582,1585],{"name":1583,"slug":1584,"type":15},"QA","qa",{"name":1426,"slug":1427,"type":15},"2026-07-14T05:25:53.673039",{"slug":1588,"name":1588,"fn":1589,"description":1590,"org":1591,"tags":1592,"stars":1509,"repoUrl":1510,"updatedAt":1595},"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},[1593,1594],{"name":1396,"slug":1397,"type":15},{"name":1399,"slug":1400,"type":15},"2026-07-14T05:25:49.362534",{"slug":1597,"name":1597,"fn":1598,"description":1599,"org":1600,"tags":1601,"stars":1509,"repoUrl":1510,"updatedAt":1609},"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},[1602,1605,1606],{"name":1603,"slug":1604,"type":15},"Code Review","code-review",{"name":1532,"slug":1533,"type":15},{"name":1607,"slug":1608,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1611,"name":1611,"fn":1612,"description":1613,"org":1614,"tags":1615,"stars":1509,"repoUrl":1510,"updatedAt":1618},"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},[1616,1617],{"name":1583,"slug":1584,"type":15},{"name":1426,"slug":1427,"type":15},"2026-07-14T05:25:54.928983",{"slug":1620,"name":1620,"fn":1621,"description":1622,"org":1623,"tags":1624,"stars":1509,"repoUrl":1510,"updatedAt":1627},"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},[1625,1626],{"name":1436,"slug":1437,"type":15},{"name":1519,"slug":1520,"type":15},"2026-07-30T05:29:03.275638",496]