[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-doca-flow":3,"mdc--ylej2d-key":31,"related-repo-nvidia-doca-flow":1734,"related-org-nvidia-doca-flow":1840},{"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-flow","develop DOCA Flow applications for NVIDIA NICs","Build and debug DOCA Flow applications on supported NVIDIA NICs\u002FDPUs: define match\u002Faction pipes, initialize ports and representors, choose forwarding targets, validate pipes before hardware programming, read counters, match the Flow version to the installed DOCA release, and diagnose Flow API errors. Trigger on DOCA packet steering, classifier, representor, rule-matching, hairpin, or 5-tuple-to-queue questions even when \"DOCA Flow\" is not named. Route plain DPDK `rte_flow`, kernel TC, OVS, BFB bring-up, and DPU OS installation elsewhere. DPU OS installation is destructive and always requires explicit confirmation.\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},"Networking","networking","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Engineering","engineering",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-30T05:28:32.38931","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-flow","---\nname: doca-flow\nlicense: Apache-2.0\ndescription: >\n  Build and debug DOCA Flow applications on supported NVIDIA NICs\u002FDPUs:\n  define match\u002Faction pipes, initialize ports and representors, choose\n  forwarding targets, validate pipes before hardware programming, read\n  counters, match the Flow version to the installed DOCA release, and\n  diagnose Flow API errors. Trigger on DOCA packet steering, classifier,\n  representor, rule-matching, hairpin, or 5-tuple-to-queue questions even\n  when \"DOCA Flow\" is not named. Route plain DPDK `rte_flow`, kernel TC,\n  OVS, BFB bring-up, and DPU OS installation elsewhere. DPU OS\n  installation is destructive and always requires explicit confirmation.\nmetadata:\n  kind: library\ncompatibility: >\n  Requires DOCA SDK installed at \u002Fopt\u002Fmellanox\u002Fdoca on Linux (Ubuntu\n  22.04\u002F24.04 or RHEL\u002FSLES) with a supported NVIDIA NIC\u002FDPU attached.\n  Reads the user's local install via `pkg-config doca-flow` and inspects\n  \u002Fopt\u002Fmellanox\u002Fdoca\u002F{lib,include,samples,applications}.\n---\n\n# DOCA Flow\n\n## Non-negotiable: the deliverable uses DOCA Flow, not kernel tc\u002Fiptables\n\nWhen this skill is in scope, the user is asking for **DOCA Flow**. The\nprogram you produce **must link `libdoca_flow` and exercise the\n`doca_flow_*` lifecycle** on the user's installed DOCA — init, port\nstart, pipe programming, entry commit, and counter readback under\ntraffic. Copy the call sequence from a **shipped DOCA Flow sample**\nunder `\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_flow\u002F` and adapt it via\n[`TASKS.md ## configure`](TASKS.md#configure) \u002F\n[`TASKS.md ## modify`](TASKS.md#modify). Verify every symbol against\nthe installed header ([Ground rule](#ground-rule-verify-every-api-name-against-the-installed-header)\nbelow) and the add-entry table in\n[`CAPABILITIES.md ## API surface and name guards`](CAPABILITIES.md#api-surface-and-name-guards).\nDo **NOT** satisfy a hardware packet-steering \u002F 5-tuple filter request\nwith kernel **`tc`\u002F`flower`**, **`iptables`\u002F`nftables`**, **eBPF\u002FXDP**,\n**OVS**, or bare **DPDK `rte_flow`** (without DOCA) and call it done.\nThose may push a rule toward the NIC, but they completely bypass DOCA\nFlow — which defeats the purpose of this library and loses the DOCA\nmodel (pipe\u002Fentry lifecycle, hardware counters, capability discovery,\nportability across BlueField\u002FConnectX generations).\n\n\"`tc flower skip_sw` also offloads to hardware\" \u002F \"the kernel command\nis fewer lines\" is **not** an acceptable reason to bypass DOCA Flow.\nThe correct low-friction path is to start from a **shipped DOCA Flow\nsample** under `\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_flow\u002F` and adapt it.\n\nIf `pkg-config doca-flow` (or the umbrella `pkg-config doca`) or the\nDOCA build fails, **fix the build** (module name, `PKG_CONFIG_PATH`,\nsample path, hugepages\u002FEAL init) — do not silently fall back to `tc`.\nA tool whose `ldd` shows no `libdoca_flow` is a failed DOCA Flow task,\nregardless of whether a rule landed in the NIC. Verify explicitly with\n`ldd .\u002Fyour_app | grep -i libdoca_flow` before declaring success.\n\n**Where to start:** Open [`TASKS.md`](TASKS.md) to *do* something\n(configure \u002F build \u002F modify \u002F run \u002F test \u002F debug); open\n[`CAPABILITIES.md`](CAPABILITIES.md) when the question is *what can\nFlow express* on this version. **You MUST open\n[`TASKS.md ## configure`](TASKS.md#configure) before writing or running\nany port code** — its bring-up gate decides whether the binary launches\nat all, so reading this loader alone is never enough. If DOCA is not\ninstalled yet, route to [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) first.\n\n## Ground rule: verify every API name against the installed header\n\nBefore quoting any `doca_*` \u002F `DOCA_*` identifier, confirm it exists in\nthe user's installed headers — the header on the machine is ground\ntruth above prose, the API reference, blog posts, or memory:\n\n```bash\nfor header in \"$(pkg-config --variable=includedir doca-common)\"\u002Fdoca_flow*.h; do\n  grep -n '\u003Ccandidate_name>' \"$header\"\n  # For a multi-line function declaration, print through its closing `);`.\n  awk '\u002F\u003Ccandidate_name>[[:space:]]*\\(\u002F,\u002F[)][[:space:]]*;\u002F' \"$header\"\ndone\n```\n\nDOCA Flow ships no backward-compat alias header, so a\n\"reasonable-looking\" name that is not in the header simply does not\nlink. Re-derive from a shipped sample\n(`\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_flow\u002F\u003Cname>\u002F`) or the guard list in\n[`CAPABILITIES.md ## API surface and name guards`](CAPABILITIES.md#api-surface-and-name-guards),\nnever from prose.\n\n## Port bring-up: the gate lives in TASKS.md\n\nA port that compiles clean and aborts the instant\n`doca_flow_port_start()` runs is the canonical bring-up failure. The\nbring-up gate (probe-before-count, `doca_flow_port_cfg_set_port_id()` plus\nthe mode-appropriate device source — `doca_flow_port_cfg_set_dev()` in\nVNF mode or the installed switch sample's `doca_dev_rep` path — device\ntaken from launch args not hard-coded, and the binary returning a\nnon-zero exit from `main()` if the bridge cannot arm and forward) is\nenforced step-by-step in\n[`TASKS.md ## configure`](TASKS.md#configure) step 6 — open it before\nwriting or running port code; do not reconstruct the gate from this\nsummary.\n\n## When to refuse (push back before writing code)\n\nSome requests cannot be satisfied as asked. **Refuse and explain — do\nnot silently emit half-correct code — when:**\n\n1. **The request mixes responsibilities a single pipe stage cannot\n   express** (e.g. per-flow tunnel-template selection *and* per-flow\n   egress port chosen in one matcher). A pipe is one logic step\n   (*match → actions → fwd*); answer with the correct pipe-graph shape\n   instead of code — typically a classifier pipe → a per-flow encap pipe\n   → a per-flow forward pipe (see\n   [`CAPABILITIES.md ## Pipe decomposition`](CAPABILITIES.md#pipe-decomposition-one-logic-step-per-pipe)).\n2. **The request asks for something the hardware cannot do** (per-packet\n   match on payload bytes outside L4, mutable match keys, …). Name the\n   closest legal shape and stop.\n3. **The request relies on an API name that is not in the installed\n   headers.** Grep the header for the closest real symbol, name it in\n   the refusal, and stop without generating code. A later, explicit\n   request using the verified symbol may begin a new build workflow;\n   do not silently substitute it in the current request.\n4. **The user wants hardware packet steering but accepts a kernel-only\n   deliverable** (`tc`, iptables\u002Fnftables, eBPF\u002FXDP, OVS, or bare\n   `rte_flow` without DOCA). Refuse per\n   [Non-negotiable](#non-negotiable-the-deliverable-uses-doca-flow-not-kernel-tciptables)\n   above; route to the shipped-sample + DOCA Flow build path instead.\n\nOutput shape when pushing back:\n\n```text\nREFUSED: \u003Cone-sentence summary>\nReason: \u003C2-4 bullets, each tied to a hardware or API constraint>\nSuggested alternative: \u003Cpipe-graph sketch, or \"this is not expressible in DOCA Flow\">\n```\n\nThis gate fires *before* any code is written: a confidently-wrong pipe\ncosts the user more than an honest refusal plus the legal alternative.\n\n## Example questions this skill answers well\n\nThe CLASSES of Flow questions this skill answers (the *class* is the\nload-bearing piece; the example is one instance):\n\n- **\"How do I bring up a Flow port on a representor?\"** →\n  [`TASKS.md ## configure`](TASKS.md#configure) +\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes).\n- **\"How do I express *\u003Cmatch X, do Y>* as a pipe?\"** →\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + [`TASKS.md ## modify`](TASKS.md#modify).\n- **\"Will this pipe spec program the HW, or will commit fail?\"** →\n  [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)\n  + [`TASKS.md ## test`](TASKS.md#test).\n- **\"How do I read Flow counters to investigate observed traffic?\"** →\n  [`CAPABILITIES.md ## Observability`](CAPABILITIES.md#observability)\n  + [`TASKS.md ## debug`](TASKS.md#debug).\n- **\"My Flow port won't start — `Failed to get hws cap` \u002F `dest action\n  ROOT … err -121`.\"** → device-placement signature (not a pipe bug);\n  the steering plane belongs to the DPU Arm on a `SEPARATED_HOST` \u002F\n  NIC-mode BlueField. See the device-placement bullet in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + [`TASKS.md ## configure`](TASKS.md#configure) step 2 + Step 0 of\n  [`TASKS.md ## debug`](TASKS.md#debug).\n- **\"How do I add hardware-accelerated stateful 5-tuple connection\n  tracking (aging, NAT) on top of my existing doca-flow setup?\"** →\n  [`CAPABILITIES.md ## flow-ct`](CAPABILITIES.md#flow-ct) +\n  [`TASKS.md ## flow-ct`](TASKS.md#flow-ct).\n\n## Audience\n\nExternal developers writing applications that consume the DOCA Flow\nlibrary — code that calls `doca_flow_*` (in C\u002FC++, or via FFI from another\nlanguage) to program packet steering on a supported NVIDIA NIC\u002FDPU with DOCA\ninstalled at `\u002Fopt\u002Fmellanox\u002Fdoca`. Flow ships as a C library (`pkg-config`\nmodule `doca-flow`, package `doca-sdk-flow` on Ubuntu \u002F RHEL \u002F SLES) and the\nsamples are C, so C\u002FC++ is the canonical path the `TASKS.md` examples assume;\nother-language consumers reach the same `*.so` through FFI, and the skill\nkeeps its API-surface, lifecycle, capability-discovery, error-taxonomy, and\nsafety guidance language-neutral.\n\n## When to load this skill\n\nLoad when the user is doing **hands-on DOCA Flow work** on a supported\nNVIDIA NIC\u002FDPU with DOCA already installed at `\u002Fopt\u002Fmellanox\u002Fdoca`, in\nany language:\n\n- Bringing up a Flow port \u002F representor on the installed devices.\n- Creating pipes, defining match\u002Factions, programming entries.\n- Validating a pipe spec *before* programming the hardware.\n- Reading per-entry \u002F per-pipe counters under traffic.\n- Checking which Flow features\u002Fsymbols ship in the installed DOCA\n  (`pkg-config --modversion doca-flow` is the build-time anchor).\n- Debugging a `DOCA_ERROR_*` from a Flow call (config mistake vs\n  missing prerequisite vs unsupported on this hardware \u002F install).\n- Designing non-C bindings (Rust, Go, Python, …) over the Flow C ABI.\n- Adding stateful CT (`doca_flow_ct.h`) on top of an existing port\n  (see [`TASKS.md ## flow-ct`](TASKS.md#flow-ct)).\n\nDo **not** load for general DOCA orientation, \"where do I find docs\",\ninstall-layout, or non-Flow library questions — 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**; substantive material lives in two companion\nfiles:\n\n- [`CAPABILITIES.md`](CAPABILITIES.md) — what Flow can express on this\n  version: supported match and action kinds, pipe-decomposition rules,\n  the API surface + commonly-invented-name guard list, the Flow\n  `DOCA_ERROR_*` overlay, the per-entry \u002F per-pipe observability\n  surface, version notes, the safety policy, and the CT companion\n  surface.\n- [`TASKS.md`](TASKS.md) — workflows for the six in-scope verbs\n  (`configure`, `build`, `modify`, `run`, `test`, `debug`), plus\n  `## flow-ct` (stateful-CT overlay), `## shared-resources` (shared\n  encap \u002F decap \u002F counter \u002F meter \u002F RSS \u002F IPsec-SA \u002F PSP overlay),\n  `## rollback` (pipeline-edit-class snapshots), `## Command appendix`,\n  and `Deferred task verbs` for routing install \u002F deploy questions.\n\nThe skill assumes DOCA is installed at `\u002Fopt\u002Fmellanox\u002Fdoca` and the user can\nopen a `doca_dev`. Installing DOCA, hugepages setup, and the EAL `dv_flow_en`\ndevargs prep go through [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md); the\nhugepages \u002F devargs runtime prerequisites a binary needs *before* a Flow port\nstarts are pinned in [`TASKS.md ## configure`](TASKS.md#configure) step 5.\n\n## What this skill deliberately does not ship\n\nThis skill is **agent guidance**, not a code bundle: it ships no\npre-written Flow application source, standalone build manifests, or a\n`samples\u002F` \u002F `bindings\u002F` \u002F `reference\u002F` subtree. The verified Flow\nsource is the shipped C sample at\n`\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_flow\u002F\u003Cname>\u002F` — the agent routes the\nuser there and prescribes a minimum-diff edit via the modify-a-sample\nworkflow in\n[`doca-programming-guide`](..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md) plus\nthe Flow overrides in [`TASKS.md ## build`](TASKS.md#build), and builds\nany manifest *in the user's project* against the user's install, where\n`pkg-config --modversion doca-flow` is the source of truth.\n\n## Loading order\n\n1. Read this `SKILL.md` first to confirm the question is in scope.\n2. For the pipe-spec schema, capability matrix, error taxonomy,\n   observability, and safety policy, see\n   [`CAPABILITIES.md`](CAPABILITIES.md).\n3. For step-by-step workflows, see [`TASKS.md`](TASKS.md).\n\n## Related skills\n\n- [`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md) —\n  routing table for public DOCA docs and the on-disk layout of an\n  installed package.\n- [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) — env prep, install\n  verification, and the *no install yet* path via the NGC DOCA\n  container.\n- [`doca-programming-guide`](..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md) —\n  general DOCA patterns shared by every library: the `pkg-config` +\n  meson build pattern, the modify-a-shipped-sample first-app workflow,\n  the universal lifecycle, the cross-library `DOCA_ERROR_*` taxonomy,\n  and the program-side debug order. This skill layers Flow specifics\n  on top.\n- [`doca-flow-tune`](..\u002F..\u002Ftools\u002Fdoca-flow-tune\u002FSKILL.md) —\n  programmed-state inspection (read-only).\n- [`doca-hardware-safety`](..\u002F..\u002Fdoca-hardware-safety\u002FSKILL.md) —\n  required overlay for card-mode flips (e.g. `mlxconfig` change from\n  `SEPARATED_HOST` to `EMBEDDED_CPU`).\n- [`doca-debug`](..\u002F..\u002Fdoca-debug\u002FSKILL.md) — the cross-cutting debug\n  ladder (install \u002F version \u002F build \u002F link \u002F runtime \u002F program \u002F\n  driver).\n",{"data":32,"body":36},{"name":4,"license":23,"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 supported NVIDIA NIC\u002FDPU attached. Reads the user's local install via `pkg-config doca-flow` and inspects \u002Fopt\u002Fmellanox\u002Fdoca\u002F{lib,include,samples,applications}.\n",{"type":37,"children":38},"root",[39,47,54,221,255,321,397,403,424,593,616,622,677,683,693,786,791,801,813,819,831,1075,1081,1138,1144,1163,1245,1267,1273,1285,1404,1458,1464,1543,1549,1593,1599,1728],{"type":40,"tag":41,"props":42,"children":43},"element","h1",{"id":4},[44],{"type":45,"value":46},"text","DOCA Flow",{"type":40,"tag":48,"props":49,"children":51},"h2",{"id":50},"non-negotiable-the-deliverable-uses-doca-flow-not-kernel-tciptables",[52],{"type":45,"value":53},"Non-negotiable: the deliverable uses DOCA Flow, not kernel tc\u002Fiptables",{"type":40,"tag":55,"props":56,"children":57},"p",{},[58,60,65,67,89,91,96,98,104,106,117,119,129,131,137,139,149,151,156,158,175,177,193,194,199,201,206,208,219],{"type":45,"value":59},"When this skill is in scope, the user is asking for ",{"type":40,"tag":61,"props":62,"children":63},"strong",{},[64],{"type":45,"value":46},{"type":45,"value":66},". The\nprogram you produce ",{"type":40,"tag":61,"props":68,"children":69},{},[70,72,79,81,87],{"type":45,"value":71},"must link ",{"type":40,"tag":73,"props":74,"children":76},"code",{"className":75},[],[77],{"type":45,"value":78},"libdoca_flow",{"type":45,"value":80}," and exercise the\n",{"type":40,"tag":73,"props":82,"children":84},{"className":83},[],[85],{"type":45,"value":86},"doca_flow_*",{"type":45,"value":88}," lifecycle",{"type":45,"value":90}," on the user's installed DOCA — init, port\nstart, pipe programming, entry commit, and counter readback under\ntraffic. Copy the call sequence from a ",{"type":40,"tag":61,"props":92,"children":93},{},[94],{"type":45,"value":95},"shipped DOCA Flow sample",{"type":45,"value":97},"\nunder ",{"type":40,"tag":73,"props":99,"children":101},{"className":100},[],[102],{"type":45,"value":103},"\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_flow\u002F",{"type":45,"value":105}," and adapt it via\n",{"type":40,"tag":107,"props":108,"children":110},"a",{"href":109},"TASKS.md#configure",[111],{"type":40,"tag":73,"props":112,"children":114},{"className":113},[],[115],{"type":45,"value":116},"TASKS.md ## configure",{"type":45,"value":118}," \u002F\n",{"type":40,"tag":107,"props":120,"children":122},{"href":121},"TASKS.md#modify",[123],{"type":40,"tag":73,"props":124,"children":126},{"className":125},[],[127],{"type":45,"value":128},"TASKS.md ## modify",{"type":45,"value":130},". Verify every symbol against\nthe installed header (",{"type":40,"tag":107,"props":132,"children":134},{"href":133},"#ground-rule-verify-every-api-name-against-the-installed-header",[135],{"type":45,"value":136},"Ground rule",{"type":45,"value":138},"\nbelow) and the add-entry table in\n",{"type":40,"tag":107,"props":140,"children":142},{"href":141},"CAPABILITIES.md#api-surface-and-name-guards",[143],{"type":40,"tag":73,"props":144,"children":146},{"className":145},[],[147],{"type":45,"value":148},"CAPABILITIES.md ## API surface and name guards",{"type":45,"value":150},".\nDo ",{"type":40,"tag":61,"props":152,"children":153},{},[154],{"type":45,"value":155},"NOT",{"type":45,"value":157}," satisfy a hardware packet-steering \u002F 5-tuple filter request\nwith kernel ",{"type":40,"tag":61,"props":159,"children":160},{},[161,167,169],{"type":40,"tag":73,"props":162,"children":164},{"className":163},[],[165],{"type":45,"value":166},"tc",{"type":45,"value":168},"\u002F",{"type":40,"tag":73,"props":170,"children":172},{"className":171},[],[173],{"type":45,"value":174},"flower",{"type":45,"value":176},", ",{"type":40,"tag":61,"props":178,"children":179},{},[180,186,187],{"type":40,"tag":73,"props":181,"children":183},{"className":182},[],[184],{"type":45,"value":185},"iptables",{"type":45,"value":168},{"type":40,"tag":73,"props":188,"children":190},{"className":189},[],[191],{"type":45,"value":192},"nftables",{"type":45,"value":176},{"type":40,"tag":61,"props":195,"children":196},{},[197],{"type":45,"value":198},"eBPF\u002FXDP",{"type":45,"value":200},",\n",{"type":40,"tag":61,"props":202,"children":203},{},[204],{"type":45,"value":205},"OVS",{"type":45,"value":207},", or bare ",{"type":40,"tag":61,"props":209,"children":210},{},[211,213],{"type":45,"value":212},"DPDK ",{"type":40,"tag":73,"props":214,"children":216},{"className":215},[],[217],{"type":45,"value":218},"rte_flow",{"type":45,"value":220}," (without DOCA) and call it done.\nThose may push a rule toward the NIC, but they completely bypass DOCA\nFlow — which defeats the purpose of this library and loses the DOCA\nmodel (pipe\u002Fentry lifecycle, hardware counters, capability discovery,\nportability across BlueField\u002FConnectX generations).",{"type":40,"tag":55,"props":222,"children":223},{},[224,226,232,234,239,241,246,248,253],{"type":45,"value":225},"\"",{"type":40,"tag":73,"props":227,"children":229},{"className":228},[],[230],{"type":45,"value":231},"tc flower skip_sw",{"type":45,"value":233}," also offloads to hardware\" \u002F \"the kernel command\nis fewer lines\" is ",{"type":40,"tag":61,"props":235,"children":236},{},[237],{"type":45,"value":238},"not",{"type":45,"value":240}," an acceptable reason to bypass DOCA Flow.\nThe correct low-friction path is to start from a ",{"type":40,"tag":61,"props":242,"children":243},{},[244],{"type":45,"value":245},"shipped DOCA Flow\nsample",{"type":45,"value":247}," under ",{"type":40,"tag":73,"props":249,"children":251},{"className":250},[],[252],{"type":45,"value":103},{"type":45,"value":254}," and adapt it.",{"type":40,"tag":55,"props":256,"children":257},{},[258,260,266,268,274,276,281,283,289,291,296,298,304,306,311,313,319],{"type":45,"value":259},"If ",{"type":40,"tag":73,"props":261,"children":263},{"className":262},[],[264],{"type":45,"value":265},"pkg-config doca-flow",{"type":45,"value":267}," (or the umbrella ",{"type":40,"tag":73,"props":269,"children":271},{"className":270},[],[272],{"type":45,"value":273},"pkg-config doca",{"type":45,"value":275},") or the\nDOCA build fails, ",{"type":40,"tag":61,"props":277,"children":278},{},[279],{"type":45,"value":280},"fix the build",{"type":45,"value":282}," (module name, ",{"type":40,"tag":73,"props":284,"children":286},{"className":285},[],[287],{"type":45,"value":288},"PKG_CONFIG_PATH",{"type":45,"value":290},",\nsample path, hugepages\u002FEAL init) — do not silently fall back to ",{"type":40,"tag":73,"props":292,"children":294},{"className":293},[],[295],{"type":45,"value":166},{"type":45,"value":297},".\nA tool whose ",{"type":40,"tag":73,"props":299,"children":301},{"className":300},[],[302],{"type":45,"value":303},"ldd",{"type":45,"value":305}," shows no ",{"type":40,"tag":73,"props":307,"children":309},{"className":308},[],[310],{"type":45,"value":78},{"type":45,"value":312}," is a failed DOCA Flow task,\nregardless of whether a rule landed in the NIC. Verify explicitly with\n",{"type":40,"tag":73,"props":314,"children":316},{"className":315},[],[317],{"type":45,"value":318},"ldd .\u002Fyour_app | grep -i libdoca_flow",{"type":45,"value":320}," before declaring success.",{"type":40,"tag":55,"props":322,"children":323},{},[324,329,331,340,342,348,350,359,361,366,368,383,385,395],{"type":40,"tag":61,"props":325,"children":326},{},[327],{"type":45,"value":328},"Where to start:",{"type":45,"value":330}," Open ",{"type":40,"tag":107,"props":332,"children":334},{"href":333},"TASKS.md",[335],{"type":40,"tag":73,"props":336,"children":338},{"className":337},[],[339],{"type":45,"value":333},{"type":45,"value":341}," to ",{"type":40,"tag":343,"props":344,"children":345},"em",{},[346],{"type":45,"value":347},"do",{"type":45,"value":349}," something\n(configure \u002F build \u002F modify \u002F run \u002F test \u002F debug); open\n",{"type":40,"tag":107,"props":351,"children":353},{"href":352},"CAPABILITIES.md",[354],{"type":40,"tag":73,"props":355,"children":357},{"className":356},[],[358],{"type":45,"value":352},{"type":45,"value":360}," when the question is ",{"type":40,"tag":343,"props":362,"children":363},{},[364],{"type":45,"value":365},"what can\nFlow express",{"type":45,"value":367}," on this version. ",{"type":40,"tag":61,"props":369,"children":370},{},[371,373,381],{"type":45,"value":372},"You MUST open\n",{"type":40,"tag":107,"props":374,"children":375},{"href":109},[376],{"type":40,"tag":73,"props":377,"children":379},{"className":378},[],[380],{"type":45,"value":116},{"type":45,"value":382}," before writing or running\nany port code",{"type":45,"value":384}," — its bring-up gate decides whether the binary launches\nat all, so reading this loader alone is never enough. If DOCA is not\ninstalled yet, route to ",{"type":40,"tag":107,"props":386,"children":388},{"href":387},"..\u002F..\u002Fdoca-setup\u002FSKILL.md",[389],{"type":40,"tag":73,"props":390,"children":392},{"className":391},[],[393],{"type":45,"value":394},"doca-setup",{"type":45,"value":396}," first.",{"type":40,"tag":48,"props":398,"children":400},{"id":399},"ground-rule-verify-every-api-name-against-the-installed-header",[401],{"type":45,"value":402},"Ground rule: verify every API name against the installed header",{"type":40,"tag":55,"props":404,"children":405},{},[406,408,414,416,422],{"type":45,"value":407},"Before quoting any ",{"type":40,"tag":73,"props":409,"children":411},{"className":410},[],[412],{"type":45,"value":413},"doca_*",{"type":45,"value":415}," \u002F ",{"type":40,"tag":73,"props":417,"children":419},{"className":418},[],[420],{"type":45,"value":421},"DOCA_*",{"type":45,"value":423}," identifier, confirm it exists in\nthe user's installed headers — the header on the machine is ground\ntruth above prose, the API reference, blog posts, or memory:",{"type":40,"tag":425,"props":426,"children":431},"pre",{"className":427,"code":428,"language":429,"meta":430,"style":430},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","for header in \"$(pkg-config --variable=includedir doca-common)\"\u002Fdoca_flow*.h; do\n  grep -n '\u003Ccandidate_name>' \"$header\"\n  # For a multi-line function declaration, print through its closing `);`.\n  awk '\u002F\u003Ccandidate_name>[[:space:]]*\\(\u002F,\u002F[)][[:space:]]*;\u002F' \"$header\"\ndone\n","bash","",[432],{"type":40,"tag":73,"props":433,"children":434},{"__ignoreMap":430},[435,496,540,550,584],{"type":40,"tag":436,"props":437,"children":440},"span",{"class":438,"line":439},"line",1,[441,447,453,458,464,470,476,481,486,491],{"type":40,"tag":436,"props":442,"children":444},{"style":443},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[445],{"type":45,"value":446},"for",{"type":40,"tag":436,"props":448,"children":450},{"style":449},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[451],{"type":45,"value":452}," header ",{"type":40,"tag":436,"props":454,"children":455},{"style":443},[456],{"type":45,"value":457},"in",{"type":40,"tag":436,"props":459,"children":461},{"style":460},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[462],{"type":45,"value":463}," \"$(",{"type":40,"tag":436,"props":465,"children":467},{"style":466},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[468],{"type":45,"value":469},"pkg-config",{"type":40,"tag":436,"props":471,"children":473},{"style":472},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[474],{"type":45,"value":475}," --variable=includedir doca-common",{"type":40,"tag":436,"props":477,"children":478},{"style":460},[479],{"type":45,"value":480},")\"",{"type":40,"tag":436,"props":482,"children":483},{"style":472},[484],{"type":45,"value":485},"\u002Fdoca_flow*.h",{"type":40,"tag":436,"props":487,"children":488},{"style":460},[489],{"type":45,"value":490},";",{"type":40,"tag":436,"props":492,"children":493},{"style":443},[494],{"type":45,"value":495}," do\n",{"type":40,"tag":436,"props":497,"children":499},{"class":438,"line":498},2,[500,505,510,515,520,525,530,535],{"type":40,"tag":436,"props":501,"children":502},{"style":466},[503],{"type":45,"value":504},"  grep",{"type":40,"tag":436,"props":506,"children":507},{"style":472},[508],{"type":45,"value":509}," -n",{"type":40,"tag":436,"props":511,"children":512},{"style":460},[513],{"type":45,"value":514}," '",{"type":40,"tag":436,"props":516,"children":517},{"style":472},[518],{"type":45,"value":519},"\u003Ccandidate_name>",{"type":40,"tag":436,"props":521,"children":522},{"style":460},[523],{"type":45,"value":524},"'",{"type":40,"tag":436,"props":526,"children":527},{"style":460},[528],{"type":45,"value":529}," \"",{"type":40,"tag":436,"props":531,"children":532},{"style":449},[533],{"type":45,"value":534},"$header",{"type":40,"tag":436,"props":536,"children":537},{"style":460},[538],{"type":45,"value":539},"\"\n",{"type":40,"tag":436,"props":541,"children":543},{"class":438,"line":542},3,[544],{"type":40,"tag":436,"props":545,"children":547},{"style":546},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[548],{"type":45,"value":549},"  # For a multi-line function declaration, print through its closing `);`.\n",{"type":40,"tag":436,"props":551,"children":553},{"class":438,"line":552},4,[554,559,563,568,572,576,580],{"type":40,"tag":436,"props":555,"children":556},{"style":466},[557],{"type":45,"value":558},"  awk",{"type":40,"tag":436,"props":560,"children":561},{"style":460},[562],{"type":45,"value":514},{"type":40,"tag":436,"props":564,"children":565},{"style":472},[566],{"type":45,"value":567},"\u002F\u003Ccandidate_name>[[:space:]]*\\(\u002F,\u002F[)][[:space:]]*;\u002F",{"type":40,"tag":436,"props":569,"children":570},{"style":460},[571],{"type":45,"value":524},{"type":40,"tag":436,"props":573,"children":574},{"style":460},[575],{"type":45,"value":529},{"type":40,"tag":436,"props":577,"children":578},{"style":449},[579],{"type":45,"value":534},{"type":40,"tag":436,"props":581,"children":582},{"style":460},[583],{"type":45,"value":539},{"type":40,"tag":436,"props":585,"children":587},{"class":438,"line":586},5,[588],{"type":40,"tag":436,"props":589,"children":590},{"style":443},[591],{"type":45,"value":592},"done\n",{"type":40,"tag":55,"props":594,"children":595},{},[596,598,604,606,614],{"type":45,"value":597},"DOCA Flow ships no backward-compat alias header, so a\n\"reasonable-looking\" name that is not in the header simply does not\nlink. Re-derive from a shipped sample\n(",{"type":40,"tag":73,"props":599,"children":601},{"className":600},[],[602],{"type":45,"value":603},"\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_flow\u002F\u003Cname>\u002F",{"type":45,"value":605},") or the guard list in\n",{"type":40,"tag":107,"props":607,"children":608},{"href":141},[609],{"type":40,"tag":73,"props":610,"children":612},{"className":611},[],[613],{"type":45,"value":148},{"type":45,"value":615},",\nnever from prose.",{"type":40,"tag":48,"props":617,"children":619},{"id":618},"port-bring-up-the-gate-lives-in-tasksmd",[620],{"type":45,"value":621},"Port bring-up: the gate lives in TASKS.md",{"type":40,"tag":55,"props":623,"children":624},{},[625,627,633,635,641,643,649,651,657,659,665,667,675],{"type":45,"value":626},"A port that compiles clean and aborts the instant\n",{"type":40,"tag":73,"props":628,"children":630},{"className":629},[],[631],{"type":45,"value":632},"doca_flow_port_start()",{"type":45,"value":634}," runs is the canonical bring-up failure. The\nbring-up gate (probe-before-count, ",{"type":40,"tag":73,"props":636,"children":638},{"className":637},[],[639],{"type":45,"value":640},"doca_flow_port_cfg_set_port_id()",{"type":45,"value":642}," plus\nthe mode-appropriate device source — ",{"type":40,"tag":73,"props":644,"children":646},{"className":645},[],[647],{"type":45,"value":648},"doca_flow_port_cfg_set_dev()",{"type":45,"value":650}," in\nVNF mode or the installed switch sample's ",{"type":40,"tag":73,"props":652,"children":654},{"className":653},[],[655],{"type":45,"value":656},"doca_dev_rep",{"type":45,"value":658}," path — device\ntaken from launch args not hard-coded, and the binary returning a\nnon-zero exit from ",{"type":40,"tag":73,"props":660,"children":662},{"className":661},[],[663],{"type":45,"value":664},"main()",{"type":45,"value":666}," if the bridge cannot arm and forward) is\nenforced step-by-step in\n",{"type":40,"tag":107,"props":668,"children":669},{"href":109},[670],{"type":40,"tag":73,"props":671,"children":673},{"className":672},[],[674],{"type":45,"value":116},{"type":45,"value":676}," step 6 — open it before\nwriting or running port code; do not reconstruct the gate from this\nsummary.",{"type":40,"tag":48,"props":678,"children":680},{"id":679},"when-to-refuse-push-back-before-writing-code",[681],{"type":45,"value":682},"When to refuse (push back before writing code)",{"type":40,"tag":55,"props":684,"children":685},{},[686,688],{"type":45,"value":687},"Some requests cannot be satisfied as asked. ",{"type":40,"tag":61,"props":689,"children":690},{},[691],{"type":45,"value":692},"Refuse and explain — do\nnot silently emit half-correct code — when:",{"type":40,"tag":694,"props":695,"children":696},"ol",{},[697,734,744,754],{"type":40,"tag":698,"props":699,"children":700},"li",{},[701,706,708,713,715,720,722,732],{"type":40,"tag":61,"props":702,"children":703},{},[704],{"type":45,"value":705},"The request mixes responsibilities a single pipe stage cannot\nexpress",{"type":45,"value":707}," (e.g. per-flow tunnel-template selection ",{"type":40,"tag":343,"props":709,"children":710},{},[711],{"type":45,"value":712},"and",{"type":45,"value":714}," per-flow\negress port chosen in one matcher). A pipe is one logic step\n(",{"type":40,"tag":343,"props":716,"children":717},{},[718],{"type":45,"value":719},"match → actions → fwd",{"type":45,"value":721},"); answer with the correct pipe-graph shape\ninstead of code — typically a classifier pipe → a per-flow encap pipe\n→ a per-flow forward pipe (see\n",{"type":40,"tag":107,"props":723,"children":725},{"href":724},"CAPABILITIES.md#pipe-decomposition-one-logic-step-per-pipe",[726],{"type":40,"tag":73,"props":727,"children":729},{"className":728},[],[730],{"type":45,"value":731},"CAPABILITIES.md ## Pipe decomposition",{"type":45,"value":733},").",{"type":40,"tag":698,"props":735,"children":736},{},[737,742],{"type":40,"tag":61,"props":738,"children":739},{},[740],{"type":45,"value":741},"The request asks for something the hardware cannot do",{"type":45,"value":743}," (per-packet\nmatch on payload bytes outside L4, mutable match keys, …). Name the\nclosest legal shape and stop.",{"type":40,"tag":698,"props":745,"children":746},{},[747,752],{"type":40,"tag":61,"props":748,"children":749},{},[750],{"type":45,"value":751},"The request relies on an API name that is not in the installed\nheaders.",{"type":45,"value":753}," Grep the header for the closest real symbol, name it in\nthe refusal, and stop without generating code. A later, explicit\nrequest using the verified symbol may begin a new build workflow;\ndo not silently substitute it in the current request.",{"type":40,"tag":698,"props":755,"children":756},{},[757,762,764,769,771,776,778,784],{"type":40,"tag":61,"props":758,"children":759},{},[760],{"type":45,"value":761},"The user wants hardware packet steering but accepts a kernel-only\ndeliverable",{"type":45,"value":763}," (",{"type":40,"tag":73,"props":765,"children":767},{"className":766},[],[768],{"type":45,"value":166},{"type":45,"value":770},", iptables\u002Fnftables, eBPF\u002FXDP, OVS, or bare\n",{"type":40,"tag":73,"props":772,"children":774},{"className":773},[],[775],{"type":45,"value":218},{"type":45,"value":777}," without DOCA). Refuse per\n",{"type":40,"tag":107,"props":779,"children":781},{"href":780},"#non-negotiable-the-deliverable-uses-doca-flow-not-kernel-tciptables",[782],{"type":45,"value":783},"Non-negotiable",{"type":45,"value":785},"\nabove; route to the shipped-sample + DOCA Flow build path instead.",{"type":40,"tag":55,"props":787,"children":788},{},[789],{"type":45,"value":790},"Output shape when pushing back:",{"type":40,"tag":425,"props":792,"children":796},{"className":793,"code":795,"language":45,"meta":430},[794],"language-text","REFUSED: \u003Cone-sentence summary>\nReason: \u003C2-4 bullets, each tied to a hardware or API constraint>\nSuggested alternative: \u003Cpipe-graph sketch, or \"this is not expressible in DOCA Flow\">\n",[797],{"type":40,"tag":73,"props":798,"children":799},{"__ignoreMap":430},[800],{"type":45,"value":795},{"type":40,"tag":55,"props":802,"children":803},{},[804,806,811],{"type":45,"value":805},"This gate fires ",{"type":40,"tag":343,"props":807,"children":808},{},[809],{"type":45,"value":810},"before",{"type":45,"value":812}," any code is written: a confidently-wrong pipe\ncosts the user more than an honest refusal plus the legal alternative.",{"type":40,"tag":48,"props":814,"children":816},{"id":815},"example-questions-this-skill-answers-well",[817],{"type":45,"value":818},"Example questions this skill answers well",{"type":40,"tag":55,"props":820,"children":821},{},[822,824,829],{"type":45,"value":823},"The CLASSES of Flow questions this skill answers (the ",{"type":40,"tag":343,"props":825,"children":826},{},[827],{"type":45,"value":828},"class",{"type":45,"value":830}," is the\nload-bearing piece; the example is one instance):",{"type":40,"tag":832,"props":833,"children":834},"ul",{},[835,867,906,942,978,1044],{"type":40,"tag":698,"props":836,"children":837},{},[838,843,845,853,855,865],{"type":40,"tag":61,"props":839,"children":840},{},[841],{"type":45,"value":842},"\"How do I bring up a Flow port on a representor?\"",{"type":45,"value":844}," →\n",{"type":40,"tag":107,"props":846,"children":847},{"href":109},[848],{"type":40,"tag":73,"props":849,"children":851},{"className":850},[],[852],{"type":45,"value":116},{"type":45,"value":854}," +\n",{"type":40,"tag":107,"props":856,"children":858},{"href":857},"CAPABILITIES.md#capabilities-and-modes",[859],{"type":40,"tag":73,"props":860,"children":862},{"className":861},[],[863],{"type":45,"value":864},"CAPABILITIES.md ## Capabilities and modes",{"type":45,"value":866},".",{"type":40,"tag":698,"props":868,"children":869},{},[870,882,883,891],{"type":40,"tag":61,"props":871,"children":872},{},[873,875,880],{"type":45,"value":874},"\"How do I express ",{"type":40,"tag":343,"props":876,"children":877},{},[878],{"type":45,"value":879},"\u003Cmatch X, do Y>",{"type":45,"value":881}," as a pipe?\"",{"type":45,"value":844},{"type":40,"tag":107,"props":884,"children":885},{"href":857},[886],{"type":40,"tag":73,"props":887,"children":889},{"className":888},[],[890],{"type":45,"value":864},{"type":40,"tag":832,"props":892,"children":893},{},[894],{"type":40,"tag":698,"props":895,"children":896},{},[897,905],{"type":40,"tag":107,"props":898,"children":899},{"href":121},[900],{"type":40,"tag":73,"props":901,"children":903},{"className":902},[],[904],{"type":45,"value":128},{"type":45,"value":866},{"type":40,"tag":698,"props":907,"children":908},{},[909,914,915,925],{"type":40,"tag":61,"props":910,"children":911},{},[912],{"type":45,"value":913},"\"Will this pipe spec program the HW, or will commit fail?\"",{"type":45,"value":844},{"type":40,"tag":107,"props":916,"children":918},{"href":917},"CAPABILITIES.md#safety-policy",[919],{"type":40,"tag":73,"props":920,"children":922},{"className":921},[],[923],{"type":45,"value":924},"CAPABILITIES.md ## Safety policy",{"type":40,"tag":832,"props":926,"children":927},{},[928],{"type":40,"tag":698,"props":929,"children":930},{},[931,941],{"type":40,"tag":107,"props":932,"children":934},{"href":933},"TASKS.md#test",[935],{"type":40,"tag":73,"props":936,"children":938},{"className":937},[],[939],{"type":45,"value":940},"TASKS.md ## test",{"type":45,"value":866},{"type":40,"tag":698,"props":943,"children":944},{},[945,950,951,961],{"type":40,"tag":61,"props":946,"children":947},{},[948],{"type":45,"value":949},"\"How do I read Flow counters to investigate observed traffic?\"",{"type":45,"value":844},{"type":40,"tag":107,"props":952,"children":954},{"href":953},"CAPABILITIES.md#observability",[955],{"type":40,"tag":73,"props":956,"children":958},{"className":957},[],[959],{"type":45,"value":960},"CAPABILITIES.md ## Observability",{"type":40,"tag":832,"props":962,"children":963},{},[964],{"type":40,"tag":698,"props":965,"children":966},{},[967,977],{"type":40,"tag":107,"props":968,"children":970},{"href":969},"TASKS.md#debug",[971],{"type":40,"tag":73,"props":972,"children":974},{"className":973},[],[975],{"type":45,"value":976},"TASKS.md ## debug",{"type":45,"value":866},{"type":40,"tag":698,"props":979,"children":980},{},[981,1001,1003,1009,1011,1019],{"type":40,"tag":61,"props":982,"children":983},{},[984,986,992,993,999],{"type":45,"value":985},"\"My Flow port won't start — ",{"type":40,"tag":73,"props":987,"children":989},{"className":988},[],[990],{"type":45,"value":991},"Failed to get hws cap",{"type":45,"value":415},{"type":40,"tag":73,"props":994,"children":996},{"className":995},[],[997],{"type":45,"value":998},"dest action ROOT … err -121",{"type":45,"value":1000},".\"",{"type":45,"value":1002}," → device-placement signature (not a pipe bug);\nthe steering plane belongs to the DPU Arm on a ",{"type":40,"tag":73,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":45,"value":1008},"SEPARATED_HOST",{"type":45,"value":1010}," \u002F\nNIC-mode BlueField. See the device-placement bullet in\n",{"type":40,"tag":107,"props":1012,"children":1013},{"href":857},[1014],{"type":40,"tag":73,"props":1015,"children":1017},{"className":1016},[],[1018],{"type":45,"value":864},{"type":40,"tag":832,"props":1020,"children":1021},{},[1022],{"type":40,"tag":698,"props":1023,"children":1024},{},[1025,1033,1035,1043],{"type":40,"tag":107,"props":1026,"children":1027},{"href":109},[1028],{"type":40,"tag":73,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":45,"value":116},{"type":45,"value":1034}," step 2 + Step 0 of\n",{"type":40,"tag":107,"props":1036,"children":1037},{"href":969},[1038],{"type":40,"tag":73,"props":1039,"children":1041},{"className":1040},[],[1042],{"type":45,"value":976},{"type":45,"value":866},{"type":40,"tag":698,"props":1045,"children":1046},{},[1047,1052,1053,1063,1064,1074],{"type":40,"tag":61,"props":1048,"children":1049},{},[1050],{"type":45,"value":1051},"\"How do I add hardware-accelerated stateful 5-tuple connection\ntracking (aging, NAT) on top of my existing doca-flow setup?\"",{"type":45,"value":844},{"type":40,"tag":107,"props":1054,"children":1056},{"href":1055},"CAPABILITIES.md#flow-ct",[1057],{"type":40,"tag":73,"props":1058,"children":1060},{"className":1059},[],[1061],{"type":45,"value":1062},"CAPABILITIES.md ## flow-ct",{"type":45,"value":854},{"type":40,"tag":107,"props":1065,"children":1067},{"href":1066},"TASKS.md#flow-ct",[1068],{"type":40,"tag":73,"props":1069,"children":1071},{"className":1070},[],[1072],{"type":45,"value":1073},"TASKS.md ## flow-ct",{"type":45,"value":866},{"type":40,"tag":48,"props":1076,"children":1078},{"id":1077},"audience",[1079],{"type":45,"value":1080},"Audience",{"type":40,"tag":55,"props":1082,"children":1083},{},[1084,1086,1091,1093,1099,1101,1106,1108,1113,1115,1121,1123,1128,1130,1136],{"type":45,"value":1085},"External developers writing applications that consume the DOCA Flow\nlibrary — code that calls ",{"type":40,"tag":73,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":45,"value":86},{"type":45,"value":1092}," (in C\u002FC++, or via FFI from another\nlanguage) to program packet steering on a supported NVIDIA NIC\u002FDPU with DOCA\ninstalled at ",{"type":40,"tag":73,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":45,"value":1098},"\u002Fopt\u002Fmellanox\u002Fdoca",{"type":45,"value":1100},". Flow ships as a C library (",{"type":40,"tag":73,"props":1102,"children":1104},{"className":1103},[],[1105],{"type":45,"value":469},{"type":45,"value":1107},"\nmodule ",{"type":40,"tag":73,"props":1109,"children":1111},{"className":1110},[],[1112],{"type":45,"value":4},{"type":45,"value":1114},", package ",{"type":40,"tag":73,"props":1116,"children":1118},{"className":1117},[],[1119],{"type":45,"value":1120},"doca-sdk-flow",{"type":45,"value":1122}," on Ubuntu \u002F RHEL \u002F SLES) and the\nsamples are C, so C\u002FC++ is the canonical path the ",{"type":40,"tag":73,"props":1124,"children":1126},{"className":1125},[],[1127],{"type":45,"value":333},{"type":45,"value":1129}," examples assume;\nother-language consumers reach the same ",{"type":40,"tag":73,"props":1131,"children":1133},{"className":1132},[],[1134],{"type":45,"value":1135},"*.so",{"type":45,"value":1137}," through FFI, and the skill\nkeeps its API-surface, lifecycle, capability-discovery, error-taxonomy, and\nsafety guidance language-neutral.",{"type":40,"tag":48,"props":1139,"children":1141},{"id":1140},"when-to-load-this-skill",[1142],{"type":45,"value":1143},"When to load this skill",{"type":40,"tag":55,"props":1145,"children":1146},{},[1147,1149,1154,1156,1161],{"type":45,"value":1148},"Load when the user is doing ",{"type":40,"tag":61,"props":1150,"children":1151},{},[1152],{"type":45,"value":1153},"hands-on DOCA Flow work",{"type":45,"value":1155}," on a supported\nNVIDIA NIC\u002FDPU with DOCA already installed at ",{"type":40,"tag":73,"props":1157,"children":1159},{"className":1158},[],[1160],{"type":45,"value":1098},{"type":45,"value":1162},", in\nany language:",{"type":40,"tag":832,"props":1164,"children":1165},{},[1166,1171,1176,1187,1192,1205,1218,1223],{"type":40,"tag":698,"props":1167,"children":1168},{},[1169],{"type":45,"value":1170},"Bringing up a Flow port \u002F representor on the installed devices.",{"type":40,"tag":698,"props":1172,"children":1173},{},[1174],{"type":45,"value":1175},"Creating pipes, defining match\u002Factions, programming entries.",{"type":40,"tag":698,"props":1177,"children":1178},{},[1179,1181,1185],{"type":45,"value":1180},"Validating a pipe spec ",{"type":40,"tag":343,"props":1182,"children":1183},{},[1184],{"type":45,"value":810},{"type":45,"value":1186}," programming the hardware.",{"type":40,"tag":698,"props":1188,"children":1189},{},[1190],{"type":45,"value":1191},"Reading per-entry \u002F per-pipe counters under traffic.",{"type":40,"tag":698,"props":1193,"children":1194},{},[1195,1197,1203],{"type":45,"value":1196},"Checking which Flow features\u002Fsymbols ship in the installed DOCA\n(",{"type":40,"tag":73,"props":1198,"children":1200},{"className":1199},[],[1201],{"type":45,"value":1202},"pkg-config --modversion doca-flow",{"type":45,"value":1204}," is the build-time anchor).",{"type":40,"tag":698,"props":1206,"children":1207},{},[1208,1210,1216],{"type":45,"value":1209},"Debugging a ",{"type":40,"tag":73,"props":1211,"children":1213},{"className":1212},[],[1214],{"type":45,"value":1215},"DOCA_ERROR_*",{"type":45,"value":1217}," from a Flow call (config mistake vs\nmissing prerequisite vs unsupported on this hardware \u002F install).",{"type":40,"tag":698,"props":1219,"children":1220},{},[1221],{"type":45,"value":1222},"Designing non-C bindings (Rust, Go, Python, …) over the Flow C ABI.",{"type":40,"tag":698,"props":1224,"children":1225},{},[1226,1228,1234,1236,1244],{"type":45,"value":1227},"Adding stateful CT (",{"type":40,"tag":73,"props":1229,"children":1231},{"className":1230},[],[1232],{"type":45,"value":1233},"doca_flow_ct.h",{"type":45,"value":1235},") on top of an existing port\n(see ",{"type":40,"tag":107,"props":1237,"children":1238},{"href":1066},[1239],{"type":40,"tag":73,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":45,"value":1073},{"type":45,"value":733},{"type":40,"tag":55,"props":1246,"children":1247},{},[1248,1250,1254,1256,1266],{"type":45,"value":1249},"Do ",{"type":40,"tag":61,"props":1251,"children":1252},{},[1253],{"type":45,"value":238},{"type":45,"value":1255}," load for general DOCA orientation, \"where do I find docs\",\ninstall-layout, or non-Flow library questions — use\n",{"type":40,"tag":107,"props":1257,"children":1259},{"href":1258},"..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md",[1260],{"type":40,"tag":73,"props":1261,"children":1263},{"className":1262},[],[1264],{"type":45,"value":1265},"doca-public-knowledge-map",{"type":45,"value":866},{"type":40,"tag":48,"props":1268,"children":1270},{"id":1269},"what-this-skill-provides",[1271],{"type":45,"value":1272},"What this skill provides",{"type":40,"tag":55,"props":1274,"children":1275},{},[1276,1278,1283],{"type":45,"value":1277},"This is a ",{"type":40,"tag":61,"props":1279,"children":1280},{},[1281],{"type":45,"value":1282},"thin loader",{"type":45,"value":1284},"; substantive material lives in two companion\nfiles:",{"type":40,"tag":832,"props":1286,"children":1287},{},[1288,1308],{"type":40,"tag":698,"props":1289,"children":1290},{},[1291,1299,1301,1306],{"type":40,"tag":107,"props":1292,"children":1293},{"href":352},[1294],{"type":40,"tag":73,"props":1295,"children":1297},{"className":1296},[],[1298],{"type":45,"value":352},{"type":45,"value":1300}," — what Flow can express on this\nversion: supported match and action kinds, pipe-decomposition rules,\nthe API surface + commonly-invented-name guard list, the Flow\n",{"type":40,"tag":73,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":45,"value":1215},{"type":45,"value":1307}," overlay, the per-entry \u002F per-pipe observability\nsurface, version notes, the safety policy, and the CT companion\nsurface.",{"type":40,"tag":698,"props":1309,"children":1310},{},[1311,1319,1321,1327,1328,1334,1335,1341,1342,1348,1349,1355,1356,1362,1364,1370,1372,1378,1380,1386,1388,1394,1396,1402],{"type":40,"tag":107,"props":1312,"children":1313},{"href":333},[1314],{"type":40,"tag":73,"props":1315,"children":1317},{"className":1316},[],[1318],{"type":45,"value":333},{"type":45,"value":1320}," — workflows for the six in-scope verbs\n(",{"type":40,"tag":73,"props":1322,"children":1324},{"className":1323},[],[1325],{"type":45,"value":1326},"configure",{"type":45,"value":176},{"type":40,"tag":73,"props":1329,"children":1331},{"className":1330},[],[1332],{"type":45,"value":1333},"build",{"type":45,"value":176},{"type":40,"tag":73,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":45,"value":1340},"modify",{"type":45,"value":176},{"type":40,"tag":73,"props":1343,"children":1345},{"className":1344},[],[1346],{"type":45,"value":1347},"run",{"type":45,"value":176},{"type":40,"tag":73,"props":1350,"children":1352},{"className":1351},[],[1353],{"type":45,"value":1354},"test",{"type":45,"value":176},{"type":40,"tag":73,"props":1357,"children":1359},{"className":1358},[],[1360],{"type":45,"value":1361},"debug",{"type":45,"value":1363},"), plus\n",{"type":40,"tag":73,"props":1365,"children":1367},{"className":1366},[],[1368],{"type":45,"value":1369},"## flow-ct",{"type":45,"value":1371}," (stateful-CT overlay), ",{"type":40,"tag":73,"props":1373,"children":1375},{"className":1374},[],[1376],{"type":45,"value":1377},"## shared-resources",{"type":45,"value":1379}," (shared\nencap \u002F decap \u002F counter \u002F meter \u002F RSS \u002F IPsec-SA \u002F PSP overlay),\n",{"type":40,"tag":73,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":45,"value":1385},"## rollback",{"type":45,"value":1387}," (pipeline-edit-class snapshots), ",{"type":40,"tag":73,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":45,"value":1393},"## Command appendix",{"type":45,"value":1395},",\nand ",{"type":40,"tag":73,"props":1397,"children":1399},{"className":1398},[],[1400],{"type":45,"value":1401},"Deferred task verbs",{"type":45,"value":1403}," for routing install \u002F deploy questions.",{"type":40,"tag":55,"props":1405,"children":1406},{},[1407,1409,1414,1416,1422,1424,1430,1432,1440,1442,1446,1448,1456],{"type":45,"value":1408},"The skill assumes DOCA is installed at ",{"type":40,"tag":73,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":45,"value":1098},{"type":45,"value":1415}," and the user can\nopen a ",{"type":40,"tag":73,"props":1417,"children":1419},{"className":1418},[],[1420],{"type":45,"value":1421},"doca_dev",{"type":45,"value":1423},". Installing DOCA, hugepages setup, and the EAL ",{"type":40,"tag":73,"props":1425,"children":1427},{"className":1426},[],[1428],{"type":45,"value":1429},"dv_flow_en",{"type":45,"value":1431},"\ndevargs prep go through ",{"type":40,"tag":107,"props":1433,"children":1434},{"href":387},[1435],{"type":40,"tag":73,"props":1436,"children":1438},{"className":1437},[],[1439],{"type":45,"value":394},{"type":45,"value":1441},"; the\nhugepages \u002F devargs runtime prerequisites a binary needs ",{"type":40,"tag":343,"props":1443,"children":1444},{},[1445],{"type":45,"value":810},{"type":45,"value":1447}," a Flow port\nstarts are pinned in ",{"type":40,"tag":107,"props":1449,"children":1450},{"href":109},[1451],{"type":40,"tag":73,"props":1452,"children":1454},{"className":1453},[],[1455],{"type":45,"value":116},{"type":45,"value":1457}," step 5.",{"type":40,"tag":48,"props":1459,"children":1461},{"id":1460},"what-this-skill-deliberately-does-not-ship",[1462],{"type":45,"value":1463},"What this skill deliberately does not ship",{"type":40,"tag":55,"props":1465,"children":1466},{},[1467,1469,1474,1476,1482,1483,1489,1490,1496,1498,1503,1505,1515,1517,1527,1529,1534,1536,1541],{"type":45,"value":1468},"This skill is ",{"type":40,"tag":61,"props":1470,"children":1471},{},[1472],{"type":45,"value":1473},"agent guidance",{"type":45,"value":1475},", not a code bundle: it ships no\npre-written Flow application source, standalone build manifests, or a\n",{"type":40,"tag":73,"props":1477,"children":1479},{"className":1478},[],[1480],{"type":45,"value":1481},"samples\u002F",{"type":45,"value":415},{"type":40,"tag":73,"props":1484,"children":1486},{"className":1485},[],[1487],{"type":45,"value":1488},"bindings\u002F",{"type":45,"value":415},{"type":40,"tag":73,"props":1491,"children":1493},{"className":1492},[],[1494],{"type":45,"value":1495},"reference\u002F",{"type":45,"value":1497}," subtree. The verified Flow\nsource is the shipped C sample at\n",{"type":40,"tag":73,"props":1499,"children":1501},{"className":1500},[],[1502],{"type":45,"value":603},{"type":45,"value":1504}," — the agent routes the\nuser there and prescribes a minimum-diff edit via the modify-a-sample\nworkflow in\n",{"type":40,"tag":107,"props":1506,"children":1508},{"href":1507},"..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md",[1509],{"type":40,"tag":73,"props":1510,"children":1512},{"className":1511},[],[1513],{"type":45,"value":1514},"doca-programming-guide",{"type":45,"value":1516}," plus\nthe Flow overrides in ",{"type":40,"tag":107,"props":1518,"children":1520},{"href":1519},"TASKS.md#build",[1521],{"type":40,"tag":73,"props":1522,"children":1524},{"className":1523},[],[1525],{"type":45,"value":1526},"TASKS.md ## build",{"type":45,"value":1528},", and builds\nany manifest ",{"type":40,"tag":343,"props":1530,"children":1531},{},[1532],{"type":45,"value":1533},"in the user's project",{"type":45,"value":1535}," against the user's install, where\n",{"type":40,"tag":73,"props":1537,"children":1539},{"className":1538},[],[1540],{"type":45,"value":1202},{"type":45,"value":1542}," is the source of truth.",{"type":40,"tag":48,"props":1544,"children":1546},{"id":1545},"loading-order",[1547],{"type":45,"value":1548},"Loading order",{"type":40,"tag":694,"props":1550,"children":1551},{},[1552,1565,1579],{"type":40,"tag":698,"props":1553,"children":1554},{},[1555,1557,1563],{"type":45,"value":1556},"Read this ",{"type":40,"tag":73,"props":1558,"children":1560},{"className":1559},[],[1561],{"type":45,"value":1562},"SKILL.md",{"type":45,"value":1564}," first to confirm the question is in scope.",{"type":40,"tag":698,"props":1566,"children":1567},{},[1568,1570,1578],{"type":45,"value":1569},"For the pipe-spec schema, capability matrix, error taxonomy,\nobservability, and safety policy, see\n",{"type":40,"tag":107,"props":1571,"children":1572},{"href":352},[1573],{"type":40,"tag":73,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":45,"value":352},{"type":45,"value":866},{"type":40,"tag":698,"props":1580,"children":1581},{},[1582,1584,1592],{"type":45,"value":1583},"For step-by-step workflows, see ",{"type":40,"tag":107,"props":1585,"children":1586},{"href":333},[1587],{"type":40,"tag":73,"props":1588,"children":1590},{"className":1589},[],[1591],{"type":45,"value":333},{"type":45,"value":866},{"type":40,"tag":48,"props":1594,"children":1596},{"id":1595},"related-skills",[1597],{"type":45,"value":1598},"Related skills",{"type":40,"tag":832,"props":1600,"children":1601},{},[1602,1615,1635,1662,1677,1713],{"type":40,"tag":698,"props":1603,"children":1604},{},[1605,1613],{"type":40,"tag":107,"props":1606,"children":1607},{"href":1258},[1608],{"type":40,"tag":73,"props":1609,"children":1611},{"className":1610},[],[1612],{"type":45,"value":1265},{"type":45,"value":1614}," —\nrouting table for public DOCA docs and the on-disk layout of an\ninstalled package.",{"type":40,"tag":698,"props":1616,"children":1617},{},[1618,1626,1628,1633],{"type":40,"tag":107,"props":1619,"children":1620},{"href":387},[1621],{"type":40,"tag":73,"props":1622,"children":1624},{"className":1623},[],[1625],{"type":45,"value":394},{"type":45,"value":1627}," — env prep, install\nverification, and the ",{"type":40,"tag":343,"props":1629,"children":1630},{},[1631],{"type":45,"value":1632},"no install yet",{"type":45,"value":1634}," path via the NGC DOCA\ncontainer.",{"type":40,"tag":698,"props":1636,"children":1637},{},[1638,1646,1648,1653,1655,1660],{"type":40,"tag":107,"props":1639,"children":1640},{"href":1507},[1641],{"type":40,"tag":73,"props":1642,"children":1644},{"className":1643},[],[1645],{"type":45,"value":1514},{"type":45,"value":1647}," —\ngeneral DOCA patterns shared by every library: the ",{"type":40,"tag":73,"props":1649,"children":1651},{"className":1650},[],[1652],{"type":45,"value":469},{"type":45,"value":1654}," +\nmeson build pattern, the modify-a-shipped-sample first-app workflow,\nthe universal lifecycle, the cross-library ",{"type":40,"tag":73,"props":1656,"children":1658},{"className":1657},[],[1659],{"type":45,"value":1215},{"type":45,"value":1661}," taxonomy,\nand the program-side debug order. This skill layers Flow specifics\non top.",{"type":40,"tag":698,"props":1663,"children":1664},{},[1665,1675],{"type":40,"tag":107,"props":1666,"children":1668},{"href":1667},"..\u002F..\u002Ftools\u002Fdoca-flow-tune\u002FSKILL.md",[1669],{"type":40,"tag":73,"props":1670,"children":1672},{"className":1671},[],[1673],{"type":45,"value":1674},"doca-flow-tune",{"type":45,"value":1676}," —\nprogrammed-state inspection (read-only).",{"type":40,"tag":698,"props":1678,"children":1679},{},[1680,1690,1692,1698,1700,1705,1706,1712],{"type":40,"tag":107,"props":1681,"children":1683},{"href":1682},"..\u002F..\u002Fdoca-hardware-safety\u002FSKILL.md",[1684],{"type":40,"tag":73,"props":1685,"children":1687},{"className":1686},[],[1688],{"type":45,"value":1689},"doca-hardware-safety",{"type":45,"value":1691}," —\nrequired overlay for card-mode flips (e.g. ",{"type":40,"tag":73,"props":1693,"children":1695},{"className":1694},[],[1696],{"type":45,"value":1697},"mlxconfig",{"type":45,"value":1699}," change from\n",{"type":40,"tag":73,"props":1701,"children":1703},{"className":1702},[],[1704],{"type":45,"value":1008},{"type":45,"value":341},{"type":40,"tag":73,"props":1707,"children":1709},{"className":1708},[],[1710],{"type":45,"value":1711},"EMBEDDED_CPU",{"type":45,"value":733},{"type":40,"tag":698,"props":1714,"children":1715},{},[1716,1726],{"type":40,"tag":107,"props":1717,"children":1719},{"href":1718},"..\u002F..\u002Fdoca-debug\u002FSKILL.md",[1720],{"type":40,"tag":73,"props":1721,"children":1723},{"className":1722},[],[1724],{"type":45,"value":1725},"doca-debug",{"type":45,"value":1727}," — the cross-cutting debug\nladder (install \u002F version \u002F build \u002F link \u002F runtime \u002F program \u002F\ndriver).",{"type":40,"tag":1729,"props":1730,"children":1731},"style",{},[1732],{"type":45,"value":1733},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1735,"total":1839},[1736,1753,1767,1781,1793,1810,1825],{"slug":1737,"name":1737,"fn":1738,"description":1739,"org":1740,"tags":1741,"stars":20,"repoUrl":21,"updatedAt":1752},"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},[1742,1745,1748,1749],{"name":1743,"slug":1744,"type":15},"Data Analysis","data-analysis",{"name":1746,"slug":1747,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":1750,"slug":1751,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1754,"name":1754,"fn":1755,"description":1756,"org":1757,"tags":1758,"stars":20,"repoUrl":21,"updatedAt":1766},"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},[1759,1762,1765],{"name":1760,"slug":1761,"type":15},"Deployment","deployment",{"name":1763,"slug":1764,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":1768,"name":1768,"fn":1769,"description":1770,"org":1771,"tags":1772,"stars":20,"repoUrl":21,"updatedAt":1780},"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},[1773,1776,1777],{"name":1774,"slug":1775,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1778,"slug":1779,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":1782,"name":1782,"fn":1783,"description":1784,"org":1785,"tags":1786,"stars":20,"repoUrl":21,"updatedAt":1792},"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},[1787,1788,1789],{"name":1743,"slug":1744,"type":15},{"name":9,"slug":8,"type":15},{"name":1790,"slug":1791,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":1794,"name":1794,"fn":1795,"description":1796,"org":1797,"tags":1798,"stars":20,"repoUrl":21,"updatedAt":1809},"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},[1799,1802,1805,1806],{"name":1800,"slug":1801,"type":15},"Automation","automation",{"name":1803,"slug":1804,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":1807,"slug":1808,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":1811,"name":1811,"fn":1812,"description":1813,"org":1814,"tags":1815,"stars":20,"repoUrl":21,"updatedAt":1824},"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},[1816,1817,1820,1821],{"name":1760,"slug":1761,"type":15},{"name":1818,"slug":1819,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":1822,"slug":1823,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1826,"name":1826,"fn":1827,"description":1828,"org":1829,"tags":1830,"stars":20,"repoUrl":21,"updatedAt":1838},"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},[1831,1832,1835],{"name":9,"slug":8,"type":15},{"name":1833,"slug":1834,"type":15},"Quantum Computing","quantum-computing",{"name":1836,"slug":1837,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":1841,"total":1992},[1842,1860,1876,1887,1899,1913,1926,1940,1951,1960,1974,1983],{"slug":1843,"name":1843,"fn":1844,"description":1845,"org":1846,"tags":1847,"stars":1857,"repoUrl":1858,"updatedAt":1859},"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},[1848,1851,1854],{"name":1849,"slug":1850,"type":15},"Documentation","documentation",{"name":1852,"slug":1853,"type":15},"MCP","mcp",{"name":1855,"slug":1856,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1861,"name":1861,"fn":1862,"description":1863,"org":1864,"tags":1865,"stars":1873,"repoUrl":1874,"updatedAt":1875},"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},[1866,1869,1870],{"name":1867,"slug":1868,"type":15},"Containers","containers",{"name":1760,"slug":1761,"type":15},{"name":1871,"slug":1872,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1877,"name":1877,"fn":1878,"description":1879,"org":1880,"tags":1881,"stars":1873,"repoUrl":1874,"updatedAt":1886},"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},[1882,1885],{"name":1883,"slug":1884,"type":15},"CI\u002FCD","ci-cd",{"name":1760,"slug":1761,"type":15},"2026-07-14T05:25:59.97109",{"slug":1888,"name":1888,"fn":1889,"description":1890,"org":1891,"tags":1892,"stars":1873,"repoUrl":1874,"updatedAt":1898},"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},[1893,1894,1895],{"name":1883,"slug":1884,"type":15},{"name":1760,"slug":1761,"type":15},{"name":1896,"slug":1897,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1900,"name":1900,"fn":1901,"description":1902,"org":1903,"tags":1904,"stars":1873,"repoUrl":1874,"updatedAt":1912},"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},[1905,1908,1909],{"name":1906,"slug":1907,"type":15},"Debugging","debugging",{"name":1896,"slug":1897,"type":15},{"name":1910,"slug":1911,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1914,"name":1914,"fn":1915,"description":1916,"org":1917,"tags":1918,"stars":1873,"repoUrl":1874,"updatedAt":1925},"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},[1919,1922],{"name":1920,"slug":1921,"type":15},"Best Practices","best-practices",{"name":1923,"slug":1924,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1927,"name":1927,"fn":1928,"description":1929,"org":1930,"tags":1931,"stars":1873,"repoUrl":1874,"updatedAt":1939},"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},[1932,1935,1938],{"name":1933,"slug":1934,"type":15},"Machine Learning","machine-learning",{"name":1936,"slug":1937,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1941,"name":1941,"fn":1942,"description":1943,"org":1944,"tags":1945,"stars":1873,"repoUrl":1874,"updatedAt":1950},"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},[1946,1949],{"name":1947,"slug":1948,"type":15},"QA","qa",{"name":1790,"slug":1791,"type":15},"2026-07-14T05:25:53.673039",{"slug":1952,"name":1952,"fn":1953,"description":1954,"org":1955,"tags":1956,"stars":1873,"repoUrl":1874,"updatedAt":1959},"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},[1957,1958],{"name":1760,"slug":1761,"type":15},{"name":1763,"slug":1764,"type":15},"2026-07-14T05:25:49.362534",{"slug":1961,"name":1961,"fn":1962,"description":1963,"org":1964,"tags":1965,"stars":1873,"repoUrl":1874,"updatedAt":1973},"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},[1966,1969,1970],{"name":1967,"slug":1968,"type":15},"Code Review","code-review",{"name":1896,"slug":1897,"type":15},{"name":1971,"slug":1972,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1975,"name":1975,"fn":1976,"description":1977,"org":1978,"tags":1979,"stars":1873,"repoUrl":1874,"updatedAt":1982},"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},[1980,1981],{"name":1947,"slug":1948,"type":15},{"name":1790,"slug":1791,"type":15},"2026-07-14T05:25:54.928983",{"slug":1984,"name":1984,"fn":1985,"description":1986,"org":1987,"tags":1988,"stars":1873,"repoUrl":1874,"updatedAt":1991},"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},[1989,1990],{"name":1800,"slug":1801,"type":15},{"name":1883,"slug":1884,"type":15},"2026-07-30T05:29:03.275638",496]