[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-doca-pcc-counters":3,"mdc--cn24e2-key":31,"related-org-nvidia-doca-pcc-counters":1418,"related-repo-nvidia-doca-pcc-counters":1579},{"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-pcc-counters","read NVIDIA PCC hardware counters","Use this skill when the user is invoking the DOCA PCC Counters tool — the `pcc_counters.sh` bash script under the DOCA tools directory — to arm and read the fixed firmware\u002Fhardware PCC (Programmable Congestion Control) diagnostic counters (CNP, RTT, WRED-drop, etc.) on a ConnectX \u002F BlueField device via mst + the mlx5 debugfs `diag_cnt` interface. The script takes two positional args — `set | query` and an mst device path — with no `--help` or subcommands. Trigger even without \"pcc_counters.sh\" or \"PCC counters\": \"how do I read the CNP \u002F RTT \u002F WRED-drop counters\", \"PCC counter stuck at zero\", \"the script says Bad Device\", or \"is congestion control dropping packets on this port?\". Route elsewhere for writing a custom PCC algorithm (doca-pcc), factory firmware PCC config, DOCA install, or fleet-wide CC tuning.\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],{"name":13,"slug":14,"type":15},"Monitoring","monitoring","tag",{"name":17,"slug":18,"type":15},"Hardware","hardware",{"name":9,"slug":8,"type":15},2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-30T05:28:25.429398","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-pcc-counters","---\nlicense: Apache-2.0\nname: doca-pcc-counters\ndescription: >\n  Use this skill when the user is invoking the DOCA PCC Counters tool\n  — the `pcc_counters.sh` bash script under the DOCA tools directory —\n  to arm and read the fixed firmware\u002Fhardware PCC (Programmable\n  Congestion Control) diagnostic counters (CNP, RTT, WRED-drop, etc.)\n  on a ConnectX \u002F BlueField device via mst + the mlx5 debugfs\n  `diag_cnt` interface. The script takes two positional args —\n  `set | query` and an mst device path — with no `--help` or\n  subcommands. Trigger even without \"pcc_counters.sh\" or \"PCC\n  counters\": \"how do I read the CNP \u002F RTT \u002F WRED-drop counters\",\n  \"PCC counter stuck at zero\", \"the script says Bad Device\", or \"is\n  congestion control dropping packets on this port?\". Route elsewhere\n  for writing a custom PCC algorithm (doca-pcc), factory firmware PCC\n  config, DOCA install, or fleet-wide CC tuning.\nmetadata:\n  kind: tool\ncompatibility: >\n  Requires DOCA\u002FMFT on Linux with a ConnectX-6 or newer or BlueField\n  device, mst tools, mounted debugfs, and root access to the mlx5\n  diag_cnt interface. The script reads fixed firmware and hardware\n  diagnostics independently of custom PCC code. Its set operation\n  changes which counters are collected, not congestion-control or\n  forwarding behavior; treat later fleet tuning as a separate\n  high-stakes action.\n\n---\n\n# DOCA PCC Counters (`pcc_counters.sh`)\n\n**Where to start:** This is a tool skill for invoking\n`pcc_counters.sh` — a small bash script that arms and reads the\ndevice's fixed set of firmware \u002F hardware **PCC diagnostic\ncounters** (CNP count, RTT-perf, WRED-drop, RTT-gen, handled\nevents) through the mlx5 debugfs `diag_cnt` interface. Open\n[`TASKS.md`](TASKS.md) and start at [`## run`](TASKS.md#run) for\nthe canonical `set`-then-`query` sequence, or\n[`## debug`](TASKS.md#debug) when the user reports\n*\"`ERROR: Bad Device`\"*, *\"counter stuck at zero\"*, or *\"the\ndump is empty\"*. Open [`CAPABILITIES.md`](CAPABILITIES.md) when\nthe question is *which counters the script reports and how it\nreaches them*. If the user has not installed DOCA \u002F MFT yet,\nroute to [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) first.\n\nThis skill is the **firmware \u002F HW PCC counter readout** surface.\nIt is NOT the host-side control library that loads custom\ncongestion-control kernels onto the DPA (that is\n[`doca-pcc`](..\u002F..\u002Flibs\u002Fdoca-pcc\u002FSKILL.md)) and it is NOT the\nfirmware PCC *algorithm* configuration (that path is firmware\nconfiguration, routed via\n[`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md)).\nThe counters this script reads are device \u002F firmware\ndiagnostic counters that exist **regardless of whether a custom\n`doca-pcc` DPA kernel is running** — do not condition them on a\ncustom kernel being loaded.\n\n## Example questions this skill answers well\n\nThe CLASSES of `pcc_counters.sh` questions this skill is built\nto answer, each with one worked example. The class is the\nload-bearing piece; the worked example is one instance.\n\n- **\"How do I read the PCC diagnostic counters on this\n  device?\"** — worked example: *\"arm and dump the CNP \u002F RTT \u002F\n  WRED-drop counters for `\u002Fdev\u002Fmst\u002Fmt41692_pciconf0`\"*.\n  Answered by the fixed counter set in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the `set`-then-`query` invocation in\n  [`TASKS.md ## run`](TASKS.md#run).\n- **\"What is the smallest legal invocation?\"** — worked\n  example: *\"what exactly do I type?\"*. Answered by the\n  two-positional-argument contract\n  (`set | query` + an mst device path) in\n  [`TASKS.md ## run`](TASKS.md#run).\n- **\"The script printed `ERROR: Bad Device` — what's wrong?\"**\n  — worked example: *\"my device path is not matching\"*.\n  Answered by the device-resolution layer in\n  [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)\n  + [`TASKS.md ## debug`](TASKS.md#debug).\n- **\"A counter is stuck at zero — is the device idle, the\n  counters not armed, or genuinely no events?\"** — worked\n  example: *\"`PCC_CNP_COUNT` reads 0 after `query`\"*. Answered\n  by the arm-before-read rule and the layered diagnosis in\n  [`TASKS.md ## debug`](TASKS.md#debug) +\n  [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy).\n- **\"Is this script on my install, and where?\"** — worked\n  example: *\"is `pcc_counters.sh` present and where does the\n  install put it\"*. Answered by the install overlay in\n  [`CAPABILITIES.md ## Version compatibility`](CAPABILITIES.md#version-compatibility),\n  which redirects to the canonical\n  [`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md) rules.\n\n## Audience\n\nThis skill serves **operators, developers, and AI agents who\nneed to read a ConnectX \u002F BlueField device's firmware PCC\ndiagnostic counters** to reason about congestion-control\nbehaviour (CNP generation, RTT requests\u002Fresponses, WRED\ndrops) on a port. Concretely:\n\n- A network operator confirming whether congestion-control\n  events (CNPs, RTT, WRED drops) are occurring on a device.\n- A developer correlating a custom `doca-pcc` algorithm's\n  effect with the device-level PCC diagnostic counters\n  (the script reads the firmware counters; the custom\n  algorithm itself is a separate surface owned by\n  [`doca-pcc`](..\u002F..\u002Flibs\u002Fdoca-pcc\u002FSKILL.md)).\n- An AI agent producing a *PCC counter snapshot* as evidence\n  for a congestion-control investigation.\n\nIt is **not** for users debugging the script's bash itself,\n**not** the place to learn how to write a custom PCC\nalgorithm — that audience belongs in\n[`doca-pcc`](..\u002F..\u002Flibs\u002Fdoca-pcc\u002FSKILL.md) — and **not** the\nplace for users who want to configure the factory firmware PCC\nalgorithm (route via\n[`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md)).\n\n`pcc_counters.sh` is shipped as a **plain bash script**\ninstalled under the DOCA tools directory (per `install_data` in\n`tools\u002Fpcc_counters\u002Fmeson.build`), not a compiled binary and\nnot a library you link against. The skill uses the bundle's\n`kind: tool` three-file shape (`SKILL.md` + `CAPABILITIES.md`\n+ `TASKS.md`) so the agent's task-verb contract\n(`configure \u002F build \u002F modify \u002F run \u002F test \u002F debug`) is uniform\nacross the bundle.\n\n## When to load this skill\n\nLoad this skill when the user is — or the agent needs to —\narm and read the device PCC diagnostic counters on a host or\nBlueField Arm with the mst tools available and debugfs\nmounted. Concretely:\n\n- Arming the diagnostic counters with `set` on a target mst\n  device.\n- Reading the armed counters with `query` and quoting the\n  named counter lines verbatim.\n- Capturing a counter readout as evidence for a\n  congestion-control investigation.\n\nDo **not** load this skill for general DOCA orientation,\ncustom-PCC algorithm design, the host-side `doca-pcc` library\nAPI, the factory firmware PCC algorithm, or DOCA \u002F MFT install.\nFor those, route to\n[`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md),\n[`doca-pcc`](..\u002F..\u002Flibs\u002Fdoca-pcc\u002FSKILL.md), or\n[`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md).\n\n## What this skill provides\n\nThis is a **thin loader**. Substantive material lives in two\ncompanion files:\n\n- `CAPABILITIES.md` — what `pcc_counters.sh` does: the exact\n  two-operation surface (`set` arms the device's diagnostic\n  counters by writing counter IDs + params to debugfs;\n  `query` reads the `diag_cnt\u002Fdump` and prints the named\n  counters), the FIXED firmware \u002F HW counter set it knows\n  (`PCC_CNP_COUNT`, the `MAD_RTT_PERF_CONT_*`, the\n  `*_EVENT_WRED_DROP` family, `HANDLED_*_EVENTS`, the\n  `DROP_RTT_PORT*`\u002F`RTT_GEN_PORT*` families), how it resolves\n  an mst device to a PCI address (`mst status -v` + `lspci`)\n  and reaches `\u002Fsys\u002Fkernel\u002Fdebug\u002Fmlx5\u002F\u003Cpci>\u002Fdiag_cnt\u002F`, the\n  install-availability overlay that redirects to\n  [`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md), the layered\n  error taxonomy (script-not-present \u002F bad-device \u002F\n  not-armed-before-query \u002F debugfs-or-permission \u002F\n  counter-stuck-at-zero \u002F cross-cutting), and the safety\n  policy that flags `set` as a privileged debugfs write and\n  any CC tuning decision derived from a reading as\n  high-stakes.\n- `TASKS.md` — step-by-step workflows for the in-scope task\n  verbs: `configure` (route to install + confirm mst \u002F\n  debugfs \u002F sudo), `build` (route to install; nothing to\n  compile — it is a script), `modify` (refuse — do not patch\n  the shipped script), `run` (the `set`-then-`query`\n  sequence), `test` (confirm the dump contains the named\n  counters with finite values), `debug` (the layered\n  diagnosis ladder), plus a `Deferred task verbs` block and a\n  `Command appendix`.\n\nThe skill assumes a host or BlueField where DOCA \u002F MFT is\nalready installed (mst tools present, debugfs mounted, sudo\navailable) and the target device is visible to `mst status -v`.\n\n## What this skill deliberately does not ship\n\nThis skill is **agent guidance**, not a samples or scripts\nbundle. To keep the boundary clean, it deliberately does not\ncontain — and pull requests should not add:\n\n- **Invented flags or subcommands.** `pcc_counters.sh` has\n  exactly two operations (`set`, `query`), takes exactly two\n  positional arguments, and has NO `--help`, `--version`,\n  `list`, `snapshot`, `watch`, or `diff`. Do not invent any.\n- **Pre-baked example counter values.** Counter values are\n  device-, firmware-, and traffic-state-specific; a captured\n  value will mislead an operator on a different device.\n- **Wrappers, parsers, or rewritten copies of the script.**\n  The script is the contract; modifying or re-implementing it\n  is out of scope.\n- **A specific congestion-control tuning recommendation\n  derived from a counter reading.** That is a high-stakes\n  domain question — the skill prescribes how to *capture* the\n  counters; it refuses to translate a delta into a CC\n  parameter change without the user's own domain analysis.\n- **A `samples\u002F` or `reference\u002F` subtree.** This is a thin\n  loader for a documented script; substantive material lives\n  in the script and the public PCC documentation.\n\n## Loading order\n\n1. Read this `SKILL.md` first to confirm the user's question\n   is in scope (reading the device's firmware PCC diagnostic\n   counters; not designing or loading a custom algorithm).\n2. **For what the script does, the fixed counter set, the\n   debugfs mechanism, the install-availability overlay, the\n   layered error surface, and the safety posture, see\n   [CAPABILITIES.md](CAPABILITIES.md).**\n3. **For the documented invocations — `configure`, `build`,\n   `modify`, `run`, `test`, `debug`, plus the `Command\n   appendix` — see [TASKS.md](TASKS.md).**\n\n## Related skills\n\n- [`doca-pcc`](..\u002F..\u002Flibs\u002Fdoca-pcc\u002FSKILL.md) — the host-side\n  library for writing and loading custom congestion-control\n  kernels onto the DPA. It is a SEPARATE surface: the\n  firmware PCC diagnostic counters `pcc_counters.sh` reads\n  exist independently of any custom `doca-pcc` kernel, but an\n  operator tuning a custom algorithm may read these counters\n  to observe device-level CC behaviour. Conflating the script\n  (firmware counter readout) with the library (custom\n  algorithm load\u002Fcontrol) is the most common PCC first-touch\n  error.\n- [`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md)\n  — routing to the public DOCA \u002F PCC documentation set,\n  including the firmware PCC algorithm configuration.\n- [`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md) — canonical\n  DOCA version-handling rules. The `## Version compatibility`\n  section in [`CAPABILITIES.md`](CAPABILITIES.md) is a concise\n  overlay that redirects here.\n- [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) — env preparation,\n  install verification, mst tools, debugfs, and the\n  *I have no install yet* path with the public NGC DOCA\n  container. This skill assumes its preconditions are\n  satisfied.\n- [`doca-debug`](..\u002F..\u002Fdoca-debug\u002FSKILL.md) — the\n  cross-cutting debug ladder. The PCC counter readout slots\n  in as a read-only device-state evidence source before any\n  congestion-control tuning recommendation is made.\n- [`doca-programming-guide`](..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md)\n  — general DOCA programming patterns shared across the\n  bundle.\n",{"data":32,"body":36},{"license":23,"name":4,"description":6,"metadata":33,"compatibility":35},{"kind":34},"tool","Requires DOCA\u002FMFT on Linux with a ConnectX-6 or newer or BlueField device, mst tools, mounted debugfs, and root access to the mlx5 diag_cnt interface. The script reads fixed firmware and hardware diagnostics independently of custom PCC code. Its set operation changes which counters are collected, not congestion-control or forwarding behavior; treat later fleet tuning as a separate high-stakes action.\n",{"type":37,"children":38},"root",[39,57,202,259,266,278,528,534,546,588,631,685,706,712,717,749,796,802,814,1028,1039,1045,1057,1196,1202,1288,1294],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"doca-pcc-counters-pcc_counterssh",[45,48,55],{"type":46,"value":47},"text","DOCA PCC Counters (",{"type":40,"tag":49,"props":50,"children":52},"code",{"className":51},[],[53],{"type":46,"value":54},"pcc_counters.sh",{"type":46,"value":56},")",{"type":40,"tag":58,"props":59,"children":60},"p",{},[61,67,69,74,76,81,83,89,91,101,103,113,115,121,123,129,131,141,143,156,158,163,165,170,172,181,183,188,190,200],{"type":40,"tag":62,"props":63,"children":64},"strong",{},[65],{"type":46,"value":66},"Where to start:",{"type":46,"value":68}," This is a tool skill for invoking\n",{"type":40,"tag":49,"props":70,"children":72},{"className":71},[],[73],{"type":46,"value":54},{"type":46,"value":75}," — a small bash script that arms and reads the\ndevice's fixed set of firmware \u002F hardware ",{"type":40,"tag":62,"props":77,"children":78},{},[79],{"type":46,"value":80},"PCC diagnostic\ncounters",{"type":46,"value":82}," (CNP count, RTT-perf, WRED-drop, RTT-gen, handled\nevents) through the mlx5 debugfs ",{"type":40,"tag":49,"props":84,"children":86},{"className":85},[],[87],{"type":46,"value":88},"diag_cnt",{"type":46,"value":90}," interface. Open\n",{"type":40,"tag":92,"props":93,"children":95},"a",{"href":94},"TASKS.md",[96],{"type":40,"tag":49,"props":97,"children":99},{"className":98},[],[100],{"type":46,"value":94},{"type":46,"value":102}," and start at ",{"type":40,"tag":92,"props":104,"children":106},{"href":105},"TASKS.md#run",[107],{"type":40,"tag":49,"props":108,"children":110},{"className":109},[],[111],{"type":46,"value":112},"## run",{"type":46,"value":114}," for\nthe canonical ",{"type":40,"tag":49,"props":116,"children":118},{"className":117},[],[119],{"type":46,"value":120},"set",{"type":46,"value":122},"-then-",{"type":40,"tag":49,"props":124,"children":126},{"className":125},[],[127],{"type":46,"value":128},"query",{"type":46,"value":130}," sequence, or\n",{"type":40,"tag":92,"props":132,"children":134},{"href":133},"TASKS.md#debug",[135],{"type":40,"tag":49,"props":136,"children":138},{"className":137},[],[139],{"type":46,"value":140},"## debug",{"type":46,"value":142}," when the user reports\n",{"type":40,"tag":144,"props":145,"children":146},"em",{},[147,149,155],{"type":46,"value":148},"\"",{"type":40,"tag":49,"props":150,"children":152},{"className":151},[],[153],{"type":46,"value":154},"ERROR: Bad Device",{"type":46,"value":148},{"type":46,"value":157},", ",{"type":40,"tag":144,"props":159,"children":160},{},[161],{"type":46,"value":162},"\"counter stuck at zero\"",{"type":46,"value":164},", or ",{"type":40,"tag":144,"props":166,"children":167},{},[168],{"type":46,"value":169},"\"the\ndump is empty\"",{"type":46,"value":171},". Open ",{"type":40,"tag":92,"props":173,"children":175},{"href":174},"CAPABILITIES.md",[176],{"type":40,"tag":49,"props":177,"children":179},{"className":178},[],[180],{"type":46,"value":174},{"type":46,"value":182}," when\nthe question is ",{"type":40,"tag":144,"props":184,"children":185},{},[186],{"type":46,"value":187},"which counters the script reports and how it\nreaches them",{"type":46,"value":189},". If the user has not installed DOCA \u002F MFT yet,\nroute to ",{"type":40,"tag":92,"props":191,"children":193},{"href":192},"..\u002F..\u002Fdoca-setup\u002FSKILL.md",[194],{"type":40,"tag":49,"props":195,"children":197},{"className":196},[],[198],{"type":46,"value":199},"doca-setup",{"type":46,"value":201}," first.",{"type":40,"tag":58,"props":203,"children":204},{},[205,207,212,214,224,226,231,233,243,245,257],{"type":46,"value":206},"This skill is the ",{"type":40,"tag":62,"props":208,"children":209},{},[210],{"type":46,"value":211},"firmware \u002F HW PCC counter readout",{"type":46,"value":213}," surface.\nIt is NOT the host-side control library that loads custom\ncongestion-control kernels onto the DPA (that is\n",{"type":40,"tag":92,"props":215,"children":217},{"href":216},"..\u002F..\u002Flibs\u002Fdoca-pcc\u002FSKILL.md",[218],{"type":40,"tag":49,"props":219,"children":221},{"className":220},[],[222],{"type":46,"value":223},"doca-pcc",{"type":46,"value":225},") and it is NOT the\nfirmware PCC ",{"type":40,"tag":144,"props":227,"children":228},{},[229],{"type":46,"value":230},"algorithm",{"type":46,"value":232}," configuration (that path is firmware\nconfiguration, routed via\n",{"type":40,"tag":92,"props":234,"children":236},{"href":235},"..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md",[237],{"type":40,"tag":49,"props":238,"children":240},{"className":239},[],[241],{"type":46,"value":242},"doca-public-knowledge-map",{"type":46,"value":244},").\nThe counters this script reads are device \u002F firmware\ndiagnostic counters that exist ",{"type":40,"tag":62,"props":246,"children":247},{},[248,250,255],{"type":46,"value":249},"regardless of whether a custom\n",{"type":40,"tag":49,"props":251,"children":253},{"className":252},[],[254],{"type":46,"value":223},{"type":46,"value":256}," DPA kernel is running",{"type":46,"value":258}," — do not condition them on a\ncustom kernel being loaded.",{"type":40,"tag":260,"props":261,"children":263},"h2",{"id":262},"example-questions-this-skill-answers-well",[264],{"type":46,"value":265},"Example questions this skill answers well",{"type":40,"tag":58,"props":267,"children":268},{},[269,271,276],{"type":46,"value":270},"The CLASSES of ",{"type":40,"tag":49,"props":272,"children":274},{"className":273},[],[275],{"type":46,"value":54},{"type":46,"value":277}," questions this skill is built\nto answer, each with one worked example. The class is the\nload-bearing piece; the worked example is one instance.",{"type":40,"tag":279,"props":280,"children":281},"ul",{},[282,349,383,433,481],{"type":40,"tag":283,"props":284,"children":285},"li",{},[286,291,293,305,307,317],{"type":40,"tag":62,"props":287,"children":288},{},[289],{"type":46,"value":290},"\"How do I read the PCC diagnostic counters on this\ndevice?\"",{"type":46,"value":292}," — worked example: ",{"type":40,"tag":144,"props":294,"children":295},{},[296,298,304],{"type":46,"value":297},"\"arm and dump the CNP \u002F RTT \u002F\nWRED-drop counters for ",{"type":40,"tag":49,"props":299,"children":301},{"className":300},[],[302],{"type":46,"value":303},"\u002Fdev\u002Fmst\u002Fmt41692_pciconf0",{"type":46,"value":148},{"type":46,"value":306},".\nAnswered by the fixed counter set in\n",{"type":40,"tag":92,"props":308,"children":310},{"href":309},"CAPABILITIES.md#capabilities-and-modes",[311],{"type":40,"tag":49,"props":312,"children":314},{"className":313},[],[315],{"type":46,"value":316},"CAPABILITIES.md ## Capabilities and modes",{"type":40,"tag":279,"props":318,"children":319},{},[320],{"type":40,"tag":283,"props":321,"children":322},{},[323,325,330,331,336,338,347],{"type":46,"value":324},"the ",{"type":40,"tag":49,"props":326,"children":328},{"className":327},[],[329],{"type":46,"value":120},{"type":46,"value":122},{"type":40,"tag":49,"props":332,"children":334},{"className":333},[],[335],{"type":46,"value":128},{"type":46,"value":337}," invocation in\n",{"type":40,"tag":92,"props":339,"children":340},{"href":105},[341],{"type":40,"tag":49,"props":342,"children":344},{"className":343},[],[345],{"type":46,"value":346},"TASKS.md ## run",{"type":46,"value":348},".",{"type":40,"tag":283,"props":350,"children":351},{},[352,357,359,364,366,372,374,382],{"type":40,"tag":62,"props":353,"children":354},{},[355],{"type":46,"value":356},"\"What is the smallest legal invocation?\"",{"type":46,"value":358}," — worked\nexample: ",{"type":40,"tag":144,"props":360,"children":361},{},[362],{"type":46,"value":363},"\"what exactly do I type?\"",{"type":46,"value":365},". Answered by the\ntwo-positional-argument contract\n(",{"type":40,"tag":49,"props":367,"children":369},{"className":368},[],[370],{"type":46,"value":371},"set | query",{"type":46,"value":373}," + an mst device path) in\n",{"type":40,"tag":92,"props":375,"children":376},{"href":105},[377],{"type":40,"tag":49,"props":378,"children":380},{"className":379},[],[381],{"type":46,"value":346},{"type":46,"value":348},{"type":40,"tag":283,"props":384,"children":385},{},[386,398,400,405,407,417],{"type":40,"tag":62,"props":387,"children":388},{},[389,391,396],{"type":46,"value":390},"\"The script printed ",{"type":40,"tag":49,"props":392,"children":394},{"className":393},[],[395],{"type":46,"value":154},{"type":46,"value":397}," — what's wrong?\"",{"type":46,"value":399},"\n— worked example: ",{"type":40,"tag":144,"props":401,"children":402},{},[403],{"type":46,"value":404},"\"my device path is not matching\"",{"type":46,"value":406},".\nAnswered by the device-resolution layer in\n",{"type":40,"tag":92,"props":408,"children":410},{"href":409},"CAPABILITIES.md#error-taxonomy",[411],{"type":40,"tag":49,"props":412,"children":414},{"className":413},[],[415],{"type":46,"value":416},"CAPABILITIES.md ## Error taxonomy",{"type":40,"tag":279,"props":418,"children":419},{},[420],{"type":40,"tag":283,"props":421,"children":422},{},[423,432],{"type":40,"tag":92,"props":424,"children":425},{"href":133},[426],{"type":40,"tag":49,"props":427,"children":429},{"className":428},[],[430],{"type":46,"value":431},"TASKS.md ## debug",{"type":46,"value":348},{"type":40,"tag":283,"props":434,"children":435},{},[436,441,442,460,462,470,472,480],{"type":40,"tag":62,"props":437,"children":438},{},[439],{"type":46,"value":440},"\"A counter is stuck at zero — is the device idle, the\ncounters not armed, or genuinely no events?\"",{"type":46,"value":358},{"type":40,"tag":144,"props":443,"children":444},{},[445,446,452,454,459],{"type":46,"value":148},{"type":40,"tag":49,"props":447,"children":449},{"className":448},[],[450],{"type":46,"value":451},"PCC_CNP_COUNT",{"type":46,"value":453}," reads 0 after ",{"type":40,"tag":49,"props":455,"children":457},{"className":456},[],[458],{"type":46,"value":128},{"type":46,"value":148},{"type":46,"value":461},". Answered\nby the arm-before-read rule and the layered diagnosis in\n",{"type":40,"tag":92,"props":463,"children":464},{"href":133},[465],{"type":40,"tag":49,"props":466,"children":468},{"className":467},[],[469],{"type":46,"value":431},{"type":46,"value":471}," +\n",{"type":40,"tag":92,"props":473,"children":474},{"href":409},[475],{"type":40,"tag":49,"props":476,"children":478},{"className":477},[],[479],{"type":46,"value":416},{"type":46,"value":348},{"type":40,"tag":283,"props":482,"children":483},{},[484,489,490,502,504,514,516,526],{"type":40,"tag":62,"props":485,"children":486},{},[487],{"type":46,"value":488},"\"Is this script on my install, and where?\"",{"type":46,"value":358},{"type":40,"tag":144,"props":491,"children":492},{},[493,495,500],{"type":46,"value":494},"\"is ",{"type":40,"tag":49,"props":496,"children":498},{"className":497},[],[499],{"type":46,"value":54},{"type":46,"value":501}," present and where does the\ninstall put it\"",{"type":46,"value":503},". Answered by the install overlay in\n",{"type":40,"tag":92,"props":505,"children":507},{"href":506},"CAPABILITIES.md#version-compatibility",[508],{"type":40,"tag":49,"props":509,"children":511},{"className":510},[],[512],{"type":46,"value":513},"CAPABILITIES.md ## Version compatibility",{"type":46,"value":515},",\nwhich redirects to the canonical\n",{"type":40,"tag":92,"props":517,"children":519},{"href":518},"..\u002F..\u002Fdoca-version\u002FSKILL.md",[520],{"type":40,"tag":49,"props":521,"children":523},{"className":522},[],[524],{"type":46,"value":525},"doca-version",{"type":46,"value":527}," rules.",{"type":40,"tag":260,"props":529,"children":531},{"id":530},"audience",[532],{"type":46,"value":533},"Audience",{"type":40,"tag":58,"props":535,"children":536},{},[537,539,544],{"type":46,"value":538},"This skill serves ",{"type":40,"tag":62,"props":540,"children":541},{},[542],{"type":46,"value":543},"operators, developers, and AI agents who\nneed to read a ConnectX \u002F BlueField device's firmware PCC\ndiagnostic counters",{"type":46,"value":545}," to reason about congestion-control\nbehaviour (CNP generation, RTT requests\u002Fresponses, WRED\ndrops) on a port. Concretely:",{"type":40,"tag":279,"props":547,"children":548},{},[549,554,576],{"type":40,"tag":283,"props":550,"children":551},{},[552],{"type":46,"value":553},"A network operator confirming whether congestion-control\nevents (CNPs, RTT, WRED drops) are occurring on a device.",{"type":40,"tag":283,"props":555,"children":556},{},[557,559,564,566,574],{"type":46,"value":558},"A developer correlating a custom ",{"type":40,"tag":49,"props":560,"children":562},{"className":561},[],[563],{"type":46,"value":223},{"type":46,"value":565}," algorithm's\neffect with the device-level PCC diagnostic counters\n(the script reads the firmware counters; the custom\nalgorithm itself is a separate surface owned by\n",{"type":40,"tag":92,"props":567,"children":568},{"href":216},[569],{"type":40,"tag":49,"props":570,"children":572},{"className":571},[],[573],{"type":46,"value":223},{"type":46,"value":575},").",{"type":40,"tag":283,"props":577,"children":578},{},[579,581,586],{"type":46,"value":580},"An AI agent producing a ",{"type":40,"tag":144,"props":582,"children":583},{},[584],{"type":46,"value":585},"PCC counter snapshot",{"type":46,"value":587}," as evidence\nfor a congestion-control investigation.",{"type":40,"tag":58,"props":589,"children":590},{},[591,593,598,600,604,606,614,616,620,622,630],{"type":46,"value":592},"It is ",{"type":40,"tag":62,"props":594,"children":595},{},[596],{"type":46,"value":597},"not",{"type":46,"value":599}," for users debugging the script's bash itself,\n",{"type":40,"tag":62,"props":601,"children":602},{},[603],{"type":46,"value":597},{"type":46,"value":605}," the place to learn how to write a custom PCC\nalgorithm — that audience belongs in\n",{"type":40,"tag":92,"props":607,"children":608},{"href":216},[609],{"type":40,"tag":49,"props":610,"children":612},{"className":611},[],[613],{"type":46,"value":223},{"type":46,"value":615}," — and ",{"type":40,"tag":62,"props":617,"children":618},{},[619],{"type":46,"value":597},{"type":46,"value":621}," the\nplace for users who want to configure the factory firmware PCC\nalgorithm (route via\n",{"type":40,"tag":92,"props":623,"children":624},{"href":235},[625],{"type":40,"tag":49,"props":626,"children":628},{"className":627},[],[629],{"type":46,"value":242},{"type":46,"value":575},{"type":40,"tag":58,"props":632,"children":633},{},[634,639,641,646,648,654,656,662,664,670,672,678,680],{"type":40,"tag":49,"props":635,"children":637},{"className":636},[],[638],{"type":46,"value":54},{"type":46,"value":640}," is shipped as a ",{"type":40,"tag":62,"props":642,"children":643},{},[644],{"type":46,"value":645},"plain bash script",{"type":46,"value":647},"\ninstalled under the DOCA tools directory (per ",{"type":40,"tag":49,"props":649,"children":651},{"className":650},[],[652],{"type":46,"value":653},"install_data",{"type":46,"value":655}," in\n",{"type":40,"tag":49,"props":657,"children":659},{"className":658},[],[660],{"type":46,"value":661},"tools\u002Fpcc_counters\u002Fmeson.build",{"type":46,"value":663},"), not a compiled binary and\nnot a library you link against. The skill uses the bundle's\n",{"type":40,"tag":49,"props":665,"children":667},{"className":666},[],[668],{"type":46,"value":669},"kind: tool",{"type":46,"value":671}," three-file shape (",{"type":40,"tag":49,"props":673,"children":675},{"className":674},[],[676],{"type":46,"value":677},"SKILL.md",{"type":46,"value":679}," + ",{"type":40,"tag":49,"props":681,"children":683},{"className":682},[],[684],{"type":46,"value":174},{"type":40,"tag":279,"props":686,"children":687},{},[688],{"type":40,"tag":283,"props":689,"children":690},{},[691,696,698,704],{"type":40,"tag":49,"props":692,"children":694},{"className":693},[],[695],{"type":46,"value":94},{"type":46,"value":697},") so the agent's task-verb contract\n(",{"type":40,"tag":49,"props":699,"children":701},{"className":700},[],[702],{"type":46,"value":703},"configure \u002F build \u002F modify \u002F run \u002F test \u002F debug",{"type":46,"value":705},") is uniform\nacross the bundle.",{"type":40,"tag":260,"props":707,"children":709},{"id":708},"when-to-load-this-skill",[710],{"type":46,"value":711},"When to load this skill",{"type":40,"tag":58,"props":713,"children":714},{},[715],{"type":46,"value":716},"Load this skill when the user is — or the agent needs to —\narm and read the device PCC diagnostic counters on a host or\nBlueField Arm with the mst tools available and debugfs\nmounted. Concretely:",{"type":40,"tag":279,"props":718,"children":719},{},[720,732,744],{"type":40,"tag":283,"props":721,"children":722},{},[723,725,730],{"type":46,"value":724},"Arming the diagnostic counters with ",{"type":40,"tag":49,"props":726,"children":728},{"className":727},[],[729],{"type":46,"value":120},{"type":46,"value":731}," on a target mst\ndevice.",{"type":40,"tag":283,"props":733,"children":734},{},[735,737,742],{"type":46,"value":736},"Reading the armed counters with ",{"type":40,"tag":49,"props":738,"children":740},{"className":739},[],[741],{"type":46,"value":128},{"type":46,"value":743}," and quoting the\nnamed counter lines verbatim.",{"type":40,"tag":283,"props":745,"children":746},{},[747],{"type":46,"value":748},"Capturing a counter readout as evidence for a\ncongestion-control investigation.",{"type":40,"tag":58,"props":750,"children":751},{},[752,754,758,760,765,767,775,777,785,787,795],{"type":46,"value":753},"Do ",{"type":40,"tag":62,"props":755,"children":756},{},[757],{"type":46,"value":597},{"type":46,"value":759}," load this skill for general DOCA orientation,\ncustom-PCC algorithm design, the host-side ",{"type":40,"tag":49,"props":761,"children":763},{"className":762},[],[764],{"type":46,"value":223},{"type":46,"value":766}," library\nAPI, the factory firmware PCC algorithm, or DOCA \u002F MFT install.\nFor those, route to\n",{"type":40,"tag":92,"props":768,"children":769},{"href":235},[770],{"type":40,"tag":49,"props":771,"children":773},{"className":772},[],[774],{"type":46,"value":242},{"type":46,"value":776},",\n",{"type":40,"tag":92,"props":778,"children":779},{"href":216},[780],{"type":40,"tag":49,"props":781,"children":783},{"className":782},[],[784],{"type":46,"value":223},{"type":46,"value":786},", or\n",{"type":40,"tag":92,"props":788,"children":789},{"href":192},[790],{"type":40,"tag":49,"props":791,"children":793},{"className":792},[],[794],{"type":46,"value":199},{"type":46,"value":348},{"type":40,"tag":260,"props":797,"children":799},{"id":798},"what-this-skill-provides",[800],{"type":46,"value":801},"What this skill provides",{"type":40,"tag":58,"props":803,"children":804},{},[805,807,812],{"type":46,"value":806},"This is a ",{"type":40,"tag":62,"props":808,"children":809},{},[810],{"type":46,"value":811},"thin loader",{"type":46,"value":813},". Substantive material lives in two\ncompanion files:",{"type":40,"tag":279,"props":815,"children":816},{},[817,942],{"type":40,"tag":283,"props":818,"children":819},{},[820,825,827,832,834,839,841,846,848,854,856,861,863,869,871,877,879,885,886,892,894,900,902,908,909,915,917,923,925,933,935,940],{"type":40,"tag":49,"props":821,"children":823},{"className":822},[],[824],{"type":46,"value":174},{"type":46,"value":826}," — what ",{"type":40,"tag":49,"props":828,"children":830},{"className":829},[],[831],{"type":46,"value":54},{"type":46,"value":833}," does: the exact\ntwo-operation surface (",{"type":40,"tag":49,"props":835,"children":837},{"className":836},[],[838],{"type":46,"value":120},{"type":46,"value":840}," arms the device's diagnostic\ncounters by writing counter IDs + params to debugfs;\n",{"type":40,"tag":49,"props":842,"children":844},{"className":843},[],[845],{"type":46,"value":128},{"type":46,"value":847}," reads the ",{"type":40,"tag":49,"props":849,"children":851},{"className":850},[],[852],{"type":46,"value":853},"diag_cnt\u002Fdump",{"type":46,"value":855}," and prints the named\ncounters), the FIXED firmware \u002F HW counter set it knows\n(",{"type":40,"tag":49,"props":857,"children":859},{"className":858},[],[860],{"type":46,"value":451},{"type":46,"value":862},", the ",{"type":40,"tag":49,"props":864,"children":866},{"className":865},[],[867],{"type":46,"value":868},"MAD_RTT_PERF_CONT_*",{"type":46,"value":870},", the\n",{"type":40,"tag":49,"props":872,"children":874},{"className":873},[],[875],{"type":46,"value":876},"*_EVENT_WRED_DROP",{"type":46,"value":878}," family, ",{"type":40,"tag":49,"props":880,"children":882},{"className":881},[],[883],{"type":46,"value":884},"HANDLED_*_EVENTS",{"type":46,"value":870},{"type":40,"tag":49,"props":887,"children":889},{"className":888},[],[890],{"type":46,"value":891},"DROP_RTT_PORT*",{"type":46,"value":893},"\u002F",{"type":40,"tag":49,"props":895,"children":897},{"className":896},[],[898],{"type":46,"value":899},"RTT_GEN_PORT*",{"type":46,"value":901}," families), how it resolves\nan mst device to a PCI address (",{"type":40,"tag":49,"props":903,"children":905},{"className":904},[],[906],{"type":46,"value":907},"mst status -v",{"type":46,"value":679},{"type":40,"tag":49,"props":910,"children":912},{"className":911},[],[913],{"type":46,"value":914},"lspci",{"type":46,"value":916},")\nand reaches ",{"type":40,"tag":49,"props":918,"children":920},{"className":919},[],[921],{"type":46,"value":922},"\u002Fsys\u002Fkernel\u002Fdebug\u002Fmlx5\u002F\u003Cpci>\u002Fdiag_cnt\u002F",{"type":46,"value":924},", the\ninstall-availability overlay that redirects to\n",{"type":40,"tag":92,"props":926,"children":927},{"href":518},[928],{"type":40,"tag":49,"props":929,"children":931},{"className":930},[],[932],{"type":46,"value":525},{"type":46,"value":934},", the layered\nerror taxonomy (script-not-present \u002F bad-device \u002F\nnot-armed-before-query \u002F debugfs-or-permission \u002F\ncounter-stuck-at-zero \u002F cross-cutting), and the safety\npolicy that flags ",{"type":40,"tag":49,"props":936,"children":938},{"className":937},[],[939],{"type":46,"value":120},{"type":46,"value":941}," as a privileged debugfs write and\nany CC tuning decision derived from a reading as\nhigh-stakes.",{"type":40,"tag":283,"props":943,"children":944},{},[945,950,952,958,960,966,968,974,976,982,984,989,990,995,997,1003,1005,1011,1013,1019,1021,1027],{"type":40,"tag":49,"props":946,"children":948},{"className":947},[],[949],{"type":46,"value":94},{"type":46,"value":951}," — step-by-step workflows for the in-scope task\nverbs: ",{"type":40,"tag":49,"props":953,"children":955},{"className":954},[],[956],{"type":46,"value":957},"configure",{"type":46,"value":959}," (route to install + confirm mst \u002F\ndebugfs \u002F sudo), ",{"type":40,"tag":49,"props":961,"children":963},{"className":962},[],[964],{"type":46,"value":965},"build",{"type":46,"value":967}," (route to install; nothing to\ncompile — it is a script), ",{"type":40,"tag":49,"props":969,"children":971},{"className":970},[],[972],{"type":46,"value":973},"modify",{"type":46,"value":975}," (refuse — do not patch\nthe shipped script), ",{"type":40,"tag":49,"props":977,"children":979},{"className":978},[],[980],{"type":46,"value":981},"run",{"type":46,"value":983}," (the ",{"type":40,"tag":49,"props":985,"children":987},{"className":986},[],[988],{"type":46,"value":120},{"type":46,"value":122},{"type":40,"tag":49,"props":991,"children":993},{"className":992},[],[994],{"type":46,"value":128},{"type":46,"value":996},"\nsequence), ",{"type":40,"tag":49,"props":998,"children":1000},{"className":999},[],[1001],{"type":46,"value":1002},"test",{"type":46,"value":1004}," (confirm the dump contains the named\ncounters with finite values), ",{"type":40,"tag":49,"props":1006,"children":1008},{"className":1007},[],[1009],{"type":46,"value":1010},"debug",{"type":46,"value":1012}," (the layered\ndiagnosis ladder), plus a ",{"type":40,"tag":49,"props":1014,"children":1016},{"className":1015},[],[1017],{"type":46,"value":1018},"Deferred task verbs",{"type":46,"value":1020}," block and a\n",{"type":40,"tag":49,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":46,"value":1026},"Command appendix",{"type":46,"value":348},{"type":40,"tag":58,"props":1029,"children":1030},{},[1031,1033,1038],{"type":46,"value":1032},"The skill assumes a host or BlueField where DOCA \u002F MFT is\nalready installed (mst tools present, debugfs mounted, sudo\navailable) and the target device is visible to ",{"type":40,"tag":49,"props":1034,"children":1036},{"className":1035},[],[1037],{"type":46,"value":907},{"type":46,"value":348},{"type":40,"tag":260,"props":1040,"children":1042},{"id":1041},"what-this-skill-deliberately-does-not-ship",[1043],{"type":46,"value":1044},"What this skill deliberately does not ship",{"type":40,"tag":58,"props":1046,"children":1047},{},[1048,1050,1055],{"type":46,"value":1049},"This skill is ",{"type":40,"tag":62,"props":1051,"children":1052},{},[1053],{"type":46,"value":1054},"agent guidance",{"type":46,"value":1056},", not a samples or scripts\nbundle. To keep the boundary clean, it deliberately does not\ncontain — and pull requests should not add:",{"type":40,"tag":279,"props":1058,"children":1059},{},[1060,1133,1143,1153,1170],{"type":40,"tag":283,"props":1061,"children":1062},{},[1063,1068,1070,1075,1077,1082,1083,1088,1090,1096,1097,1103,1104,1110,1111,1117,1118,1124,1125,1131],{"type":40,"tag":62,"props":1064,"children":1065},{},[1066],{"type":46,"value":1067},"Invented flags or subcommands.",{"type":46,"value":1069}," ",{"type":40,"tag":49,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":46,"value":54},{"type":46,"value":1076}," has\nexactly two operations (",{"type":40,"tag":49,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":46,"value":120},{"type":46,"value":157},{"type":40,"tag":49,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":46,"value":128},{"type":46,"value":1089},"), takes exactly two\npositional arguments, and has NO ",{"type":40,"tag":49,"props":1091,"children":1093},{"className":1092},[],[1094],{"type":46,"value":1095},"--help",{"type":46,"value":157},{"type":40,"tag":49,"props":1098,"children":1100},{"className":1099},[],[1101],{"type":46,"value":1102},"--version",{"type":46,"value":776},{"type":40,"tag":49,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":46,"value":1109},"list",{"type":46,"value":157},{"type":40,"tag":49,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":46,"value":1116},"snapshot",{"type":46,"value":157},{"type":40,"tag":49,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":46,"value":1123},"watch",{"type":46,"value":164},{"type":40,"tag":49,"props":1126,"children":1128},{"className":1127},[],[1129],{"type":46,"value":1130},"diff",{"type":46,"value":1132},". Do not invent any.",{"type":40,"tag":283,"props":1134,"children":1135},{},[1136,1141],{"type":40,"tag":62,"props":1137,"children":1138},{},[1139],{"type":46,"value":1140},"Pre-baked example counter values.",{"type":46,"value":1142}," Counter values are\ndevice-, firmware-, and traffic-state-specific; a captured\nvalue will mislead an operator on a different device.",{"type":40,"tag":283,"props":1144,"children":1145},{},[1146,1151],{"type":40,"tag":62,"props":1147,"children":1148},{},[1149],{"type":46,"value":1150},"Wrappers, parsers, or rewritten copies of the script.",{"type":46,"value":1152},"\nThe script is the contract; modifying or re-implementing it\nis out of scope.",{"type":40,"tag":283,"props":1154,"children":1155},{},[1156,1161,1163,1168],{"type":40,"tag":62,"props":1157,"children":1158},{},[1159],{"type":46,"value":1160},"A specific congestion-control tuning recommendation\nderived from a counter reading.",{"type":46,"value":1162}," That is a high-stakes\ndomain question — the skill prescribes how to ",{"type":40,"tag":144,"props":1164,"children":1165},{},[1166],{"type":46,"value":1167},"capture",{"type":46,"value":1169}," the\ncounters; it refuses to translate a delta into a CC\nparameter change without the user's own domain analysis.",{"type":40,"tag":283,"props":1171,"children":1172},{},[1173,1194],{"type":40,"tag":62,"props":1174,"children":1175},{},[1176,1178,1184,1186,1192],{"type":46,"value":1177},"A ",{"type":40,"tag":49,"props":1179,"children":1181},{"className":1180},[],[1182],{"type":46,"value":1183},"samples\u002F",{"type":46,"value":1185}," or ",{"type":40,"tag":49,"props":1187,"children":1189},{"className":1188},[],[1190],{"type":46,"value":1191},"reference\u002F",{"type":46,"value":1193}," subtree.",{"type":46,"value":1195}," This is a thin\nloader for a documented script; substantive material lives\nin the script and the public PCC documentation.",{"type":40,"tag":260,"props":1197,"children":1199},{"id":1198},"loading-order",[1200],{"type":46,"value":1201},"Loading order",{"type":40,"tag":1203,"props":1204,"children":1205},"ol",{},[1206,1218,1231],{"type":40,"tag":283,"props":1207,"children":1208},{},[1209,1211,1216],{"type":46,"value":1210},"Read this ",{"type":40,"tag":49,"props":1212,"children":1214},{"className":1213},[],[1215],{"type":46,"value":677},{"type":46,"value":1217}," first to confirm the user's question\nis in scope (reading the device's firmware PCC diagnostic\ncounters; not designing or loading a custom algorithm).",{"type":40,"tag":283,"props":1219,"children":1220},{},[1221],{"type":40,"tag":62,"props":1222,"children":1223},{},[1224,1226,1230],{"type":46,"value":1225},"For what the script does, the fixed counter set, the\ndebugfs mechanism, the install-availability overlay, the\nlayered error surface, and the safety posture, see\n",{"type":40,"tag":92,"props":1227,"children":1228},{"href":174},[1229],{"type":46,"value":174},{"type":46,"value":348},{"type":40,"tag":283,"props":1232,"children":1233},{},[1234],{"type":40,"tag":62,"props":1235,"children":1236},{},[1237,1239,1244,1245,1250,1251,1256,1257,1262,1263,1268,1269,1274,1276,1281,1283,1287],{"type":46,"value":1238},"For the documented invocations — ",{"type":40,"tag":49,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":46,"value":957},{"type":46,"value":157},{"type":40,"tag":49,"props":1246,"children":1248},{"className":1247},[],[1249],{"type":46,"value":965},{"type":46,"value":776},{"type":40,"tag":49,"props":1252,"children":1254},{"className":1253},[],[1255],{"type":46,"value":973},{"type":46,"value":157},{"type":40,"tag":49,"props":1258,"children":1260},{"className":1259},[],[1261],{"type":46,"value":981},{"type":46,"value":157},{"type":40,"tag":49,"props":1264,"children":1266},{"className":1265},[],[1267],{"type":46,"value":1002},{"type":46,"value":157},{"type":40,"tag":49,"props":1270,"children":1272},{"className":1271},[],[1273],{"type":46,"value":1010},{"type":46,"value":1275},", plus the ",{"type":40,"tag":49,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":46,"value":1026},{"type":46,"value":1282}," — see ",{"type":40,"tag":92,"props":1284,"children":1285},{"href":94},[1286],{"type":46,"value":94},{"type":46,"value":348},{"type":40,"tag":260,"props":1289,"children":1291},{"id":1290},"related-skills",[1292],{"type":46,"value":1293},"Related skills",{"type":40,"tag":279,"props":1295,"children":1296},{},[1297,1324,1337,1368,1388,1403],{"type":40,"tag":283,"props":1298,"children":1299},{},[1300,1308,1310,1315,1317,1322],{"type":40,"tag":92,"props":1301,"children":1302},{"href":216},[1303],{"type":40,"tag":49,"props":1304,"children":1306},{"className":1305},[],[1307],{"type":46,"value":223},{"type":46,"value":1309}," — the host-side\nlibrary for writing and loading custom congestion-control\nkernels onto the DPA. It is a SEPARATE surface: the\nfirmware PCC diagnostic counters ",{"type":40,"tag":49,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":46,"value":54},{"type":46,"value":1316}," reads\nexist independently of any custom ",{"type":40,"tag":49,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":46,"value":223},{"type":46,"value":1323}," kernel, but an\noperator tuning a custom algorithm may read these counters\nto observe device-level CC behaviour. Conflating the script\n(firmware counter readout) with the library (custom\nalgorithm load\u002Fcontrol) is the most common PCC first-touch\nerror.",{"type":40,"tag":283,"props":1325,"children":1326},{},[1327,1335],{"type":40,"tag":92,"props":1328,"children":1329},{"href":235},[1330],{"type":40,"tag":49,"props":1331,"children":1333},{"className":1332},[],[1334],{"type":46,"value":242},{"type":46,"value":1336},"\n— routing to the public DOCA \u002F PCC documentation set,\nincluding the firmware PCC algorithm configuration.",{"type":40,"tag":283,"props":1338,"children":1339},{},[1340,1348,1350,1356,1358,1366],{"type":40,"tag":92,"props":1341,"children":1342},{"href":518},[1343],{"type":40,"tag":49,"props":1344,"children":1346},{"className":1345},[],[1347],{"type":46,"value":525},{"type":46,"value":1349}," — canonical\nDOCA version-handling rules. The ",{"type":40,"tag":49,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":46,"value":1355},"## Version compatibility",{"type":46,"value":1357},"\nsection in ",{"type":40,"tag":92,"props":1359,"children":1360},{"href":174},[1361],{"type":40,"tag":49,"props":1362,"children":1364},{"className":1363},[],[1365],{"type":46,"value":174},{"type":46,"value":1367}," is a concise\noverlay that redirects here.",{"type":40,"tag":283,"props":1369,"children":1370},{},[1371,1379,1381,1386],{"type":40,"tag":92,"props":1372,"children":1373},{"href":192},[1374],{"type":40,"tag":49,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":46,"value":199},{"type":46,"value":1380}," — env preparation,\ninstall verification, mst tools, debugfs, and the\n",{"type":40,"tag":144,"props":1382,"children":1383},{},[1384],{"type":46,"value":1385},"I have no install yet",{"type":46,"value":1387}," path with the public NGC DOCA\ncontainer. This skill assumes its preconditions are\nsatisfied.",{"type":40,"tag":283,"props":1389,"children":1390},{},[1391,1401],{"type":40,"tag":92,"props":1392,"children":1394},{"href":1393},"..\u002F..\u002Fdoca-debug\u002FSKILL.md",[1395],{"type":40,"tag":49,"props":1396,"children":1398},{"className":1397},[],[1399],{"type":46,"value":1400},"doca-debug",{"type":46,"value":1402}," — the\ncross-cutting debug ladder. The PCC counter readout slots\nin as a read-only device-state evidence source before any\ncongestion-control tuning recommendation is made.",{"type":40,"tag":283,"props":1404,"children":1405},{},[1406,1416],{"type":40,"tag":92,"props":1407,"children":1409},{"href":1408},"..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md",[1410],{"type":40,"tag":49,"props":1411,"children":1413},{"className":1412},[],[1414],{"type":46,"value":1415},"doca-programming-guide",{"type":46,"value":1417},"\n— general DOCA programming patterns shared across the\nbundle.",{"items":1419,"total":1578},[1420,1438,1456,1467,1479,1493,1506,1520,1533,1544,1558,1567],{"slug":1421,"name":1421,"fn":1422,"description":1423,"org":1424,"tags":1425,"stars":1435,"repoUrl":1436,"updatedAt":1437},"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},[1426,1429,1432],{"name":1427,"slug":1428,"type":15},"Documentation","documentation",{"name":1430,"slug":1431,"type":15},"MCP","mcp",{"name":1433,"slug":1434,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1439,"name":1439,"fn":1440,"description":1441,"org":1442,"tags":1443,"stars":1453,"repoUrl":1454,"updatedAt":1455},"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},[1444,1447,1450],{"name":1445,"slug":1446,"type":15},"Containers","containers",{"name":1448,"slug":1449,"type":15},"Deployment","deployment",{"name":1451,"slug":1452,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1457,"name":1457,"fn":1458,"description":1459,"org":1460,"tags":1461,"stars":1453,"repoUrl":1454,"updatedAt":1466},"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},[1462,1465],{"name":1463,"slug":1464,"type":15},"CI\u002FCD","ci-cd",{"name":1448,"slug":1449,"type":15},"2026-07-14T05:25:59.97109",{"slug":1468,"name":1468,"fn":1469,"description":1470,"org":1471,"tags":1472,"stars":1453,"repoUrl":1454,"updatedAt":1478},"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},[1473,1474,1475],{"name":1463,"slug":1464,"type":15},{"name":1448,"slug":1449,"type":15},{"name":1476,"slug":1477,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1480,"name":1480,"fn":1481,"description":1482,"org":1483,"tags":1484,"stars":1453,"repoUrl":1454,"updatedAt":1492},"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},[1485,1488,1489],{"name":1486,"slug":1487,"type":15},"Debugging","debugging",{"name":1476,"slug":1477,"type":15},{"name":1490,"slug":1491,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1494,"name":1494,"fn":1495,"description":1496,"org":1497,"tags":1498,"stars":1453,"repoUrl":1454,"updatedAt":1505},"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},[1499,1502],{"name":1500,"slug":1501,"type":15},"Best Practices","best-practices",{"name":1503,"slug":1504,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1507,"name":1507,"fn":1508,"description":1509,"org":1510,"tags":1511,"stars":1453,"repoUrl":1454,"updatedAt":1519},"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},[1512,1515,1518],{"name":1513,"slug":1514,"type":15},"Machine Learning","machine-learning",{"name":1516,"slug":1517,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1521,"name":1521,"fn":1522,"description":1523,"org":1524,"tags":1525,"stars":1453,"repoUrl":1454,"updatedAt":1532},"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},[1526,1529],{"name":1527,"slug":1528,"type":15},"QA","qa",{"name":1530,"slug":1531,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":1534,"name":1534,"fn":1535,"description":1536,"org":1537,"tags":1538,"stars":1453,"repoUrl":1454,"updatedAt":1543},"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},[1539,1540],{"name":1448,"slug":1449,"type":15},{"name":1541,"slug":1542,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1545,"name":1545,"fn":1546,"description":1547,"org":1548,"tags":1549,"stars":1453,"repoUrl":1454,"updatedAt":1557},"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},[1550,1553,1554],{"name":1551,"slug":1552,"type":15},"Code Review","code-review",{"name":1476,"slug":1477,"type":15},{"name":1555,"slug":1556,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1559,"name":1559,"fn":1560,"description":1561,"org":1562,"tags":1563,"stars":1453,"repoUrl":1454,"updatedAt":1566},"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},[1564,1565],{"name":1527,"slug":1528,"type":15},{"name":1530,"slug":1531,"type":15},"2026-07-14T05:25:54.928983",{"slug":1568,"name":1568,"fn":1569,"description":1570,"org":1571,"tags":1572,"stars":1453,"repoUrl":1454,"updatedAt":1577},"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},[1573,1576],{"name":1574,"slug":1575,"type":15},"Automation","automation",{"name":1463,"slug":1464,"type":15},"2026-07-30T05:29:03.275638",496,{"items":1580,"total":1676},[1581,1598,1608,1622,1632,1647,1662],{"slug":1582,"name":1582,"fn":1583,"description":1584,"org":1585,"tags":1586,"stars":20,"repoUrl":21,"updatedAt":1597},"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},[1587,1590,1593,1594],{"name":1588,"slug":1589,"type":15},"Data Analysis","data-analysis",{"name":1591,"slug":1592,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":1595,"slug":1596,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1599,"name":1599,"fn":1600,"description":1601,"org":1602,"tags":1603,"stars":20,"repoUrl":21,"updatedAt":1607},"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},[1604,1605,1606],{"name":1448,"slug":1449,"type":15},{"name":1541,"slug":1542,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":1609,"name":1609,"fn":1610,"description":1611,"org":1612,"tags":1613,"stars":20,"repoUrl":21,"updatedAt":1621},"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},[1614,1617,1618],{"name":1615,"slug":1616,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1619,"slug":1620,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":1623,"name":1623,"fn":1624,"description":1625,"org":1626,"tags":1627,"stars":20,"repoUrl":21,"updatedAt":1631},"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},[1628,1629,1630],{"name":1588,"slug":1589,"type":15},{"name":9,"slug":8,"type":15},{"name":1530,"slug":1531,"type":15},"2026-07-17T05:29:03.913266",{"slug":1633,"name":1633,"fn":1634,"description":1635,"org":1636,"tags":1637,"stars":20,"repoUrl":21,"updatedAt":1646},"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},[1638,1639,1642,1643],{"name":1574,"slug":1575,"type":15},{"name":1640,"slug":1641,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":1644,"slug":1645,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":1648,"name":1648,"fn":1649,"description":1650,"org":1651,"tags":1652,"stars":20,"repoUrl":21,"updatedAt":1661},"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},[1653,1654,1657,1658],{"name":1448,"slug":1449,"type":15},{"name":1655,"slug":1656,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":1659,"slug":1660,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1663,"name":1663,"fn":1664,"description":1665,"org":1666,"tags":1667,"stars":20,"repoUrl":21,"updatedAt":1675},"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},[1668,1669,1672],{"name":9,"slug":8,"type":15},{"name":1670,"slug":1671,"type":15},"Quantum Computing","quantum-computing",{"name":1673,"slug":1674,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305]