[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-doca-argp":3,"mdc-yg0x7b-key":31,"related-repo-nvidia-doca-argp":1324,"related-org-nvidia-doca-argp":1430},{"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-argp","implement DOCA Arg Parser CLI interfaces","Use this skill for hands-on DOCA Arg Parser CLI work on a shipped sample or new DOCA-using app — adding \u002F removing \u002F renaming flags; wiring `doca_argp_init` → register params → `doca_argp_start` → `doca_argp_destroy` in order; picking a parameter type from the full public enum (`DOCA_ARGP_TYPE_STRING`, `_INT`, `_BOOLEAN`, `_DEVICE`, `_DEVICE_REP`, `_DOUBLE` — six values, not three); preserving the standard `--device` \u002F `--representor` \u002F `--json` (`-j`; real flag is `--json`, NOT `--json-config`) \u002F `--sdk-log-level` surface; or debugging `DOCA_ERROR_BAD_STATE` \u002F `INVALID_VALUE` \u002F `NOT_SUPPORTED` \u002F `IO_FAILED` from `doca_argp_*`. Trigger on implicit phrasings: \"add a custom flag to a DOCA sample\", \"should I use getopt here\", \"BAD_STATE registering a new param\", \"my JSON config key is rejected\", or \"my sample's --json is ignored\". Refuse and route elsewhere for variadic-flag \u002F subcommand \u002F shell-completion features, DOCA Core context, or DOCA Log internals.\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},"CLI","cli","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:31.398119","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-argp","---\nlicense: Apache-2.0\nname: doca-argp\ndescription: >\n  Use this skill for hands-on DOCA Arg Parser CLI work on a\n  shipped sample or new DOCA-using app — adding \u002F removing \u002F\n  renaming flags; wiring `doca_argp_init` → register params →\n  `doca_argp_start` → `doca_argp_destroy` in order; picking a\n  parameter type from the full public enum\n  (`DOCA_ARGP_TYPE_STRING`, `_INT`, `_BOOLEAN`, `_DEVICE`,\n  `_DEVICE_REP`, `_DOUBLE` — six values, not three);\n  preserving the standard `--device` \u002F `--representor` \u002F\n  `--json` (`-j`; real flag is `--json`, NOT `--json-config`) \u002F\n  `--sdk-log-level` surface; or debugging\n  `DOCA_ERROR_BAD_STATE` \u002F `INVALID_VALUE` \u002F `NOT_SUPPORTED` \u002F\n  `IO_FAILED` from `doca_argp_*`. Trigger on implicit\n  phrasings: \"add a custom flag to a DOCA sample\", \"should I\n  use getopt here\", \"BAD_STATE registering a new param\", \"my\n  JSON config key is rejected\", or \"my sample's --json is\n  ignored\". Refuse and route elsewhere for variadic-flag \u002F\n  subcommand \u002F shell-completion features, DOCA Core context,\n  or DOCA Log internals.\nmetadata:\n  kind: library\ncompatibility: >\n  Requires DOCA SDK installed at \u002Fopt\u002Fmellanox\u002Fdoca on Linux\n  (Ubuntu 22.04\u002F24.04 or RHEL\u002FSLES) with a BlueField DPU or\n  ConnectX NIC attached. Reads the user's local install via\n  `pkg-config doca-argp` and inspects\n  \u002Fopt\u002Fmellanox\u002Fdoca\u002F{lib,include,samples,applications}.\n---\n\n# DOCA Arg Parser\n\n**Where to start:** This skill assumes DOCA is already installed\nand the user is doing **hands-on CLI work** on a DOCA sample or\nnew DOCA-using app. Open [`TASKS.md`](TASKS.md) if the user wants\nto *do* something (configure \u002F build \u002F modify \u002F run \u002F test \u002F\ndebug); open [`CAPABILITIES.md`](CAPABILITIES.md) when the\nquestion is *what can the Arg Parser express* on this version. If\nthe user has not installed DOCA yet, route to\n[`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) first. If the user is\nabout to rewrite a sample's CLI with `getopt` \u002F `argparse` \u002F\ncustom parsing instead of reusing the Arg Parser, read the\nload-bearing rule in\n[`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\nbefore any code change.\n\n## Example questions this skill answers well\n\nThe CLASSES of Arg Parser questions this skill is built to\nanswer, each with one worked example. The agent should treat the\n*class* as the load-bearing piece — the worked example is a\nsingle instance.\n\n- **\"How do I add a new flag to a DOCA sample without breaking\n  the standard CLI?\"** — worked example: *\"add `--my-flag` to\n  `\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_dma\u002Fdma_local_copy\u002F` so the\n  sample still accepts `--device \u003CPCI>` and `--sdk-log-level\n  \u003Clevel>` the same way it did before\"*. Answered by the\n  reuse-the-Arg-Parser rule in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the register-before-start workflow in\n  [`TASKS.md ## modify`](TASKS.md#modify).\n- **\"Why does `doca_argp_param_set_*` return `BAD_STATE` on my\n  second call?\"** — worked example: *\"registering a new param\n  after `doca_argp_start` has already parsed argv\"*. Answered by\n  the lifecycle order in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the error-taxonomy row in\n  [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)\n  for `DOCA_ERROR_BAD_STATE`.\n- **\"Can I drive a sample from a JSON file instead of a long\n  command line?\"** — worked example: *\"point a sample at\n  `.\u002Fmy-config.json` so the operator does not have to type out\n  ten flags every time\"*. Answered by the `--json \u003Cpath>`\n  integration in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the JSON-config-file workflow in\n  [`TASKS.md ## modify`](TASKS.md#modify) and\n  [`TASKS.md ## run`](TASKS.md#run).\n- **\"My `--my-flag X` value is rejected as `INVALID_VALUE` — why?\"** —\n  worked example: *\"declared the param as `int` but passed\n  `--my-flag 0x40`\"*. Answered by the parameter-type table in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the type-mismatch row in\n  [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy).\n- **\"Is `doca-argp` even on my installed DOCA?\"** — worked\n  example: *\"a colleague's sample mentions doca-argp but I want\n  to confirm before I depend on it\"*. Answered by the presence\n  + version-detection rule in\n  [`CAPABILITIES.md ## Version compatibility`](CAPABILITIES.md#version-compatibility),\n  which cross-links the canonical detection chain in\n  [`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md).\n- **\"Should I use doca-argp here, or is this case actually\n  outside its scope?\"** — worked example: *\"writing a host-side\n  CLI tool that never calls a `doca_*` symbol\"*. Answered by the\n  path-selection rule in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  *Use doca-argp when … \u002F Do not use doca-argp when …* bullets.\n\n## Audience\n\nThis skill serves **external developers building or modifying\nDOCA-using applications** — i.e., users whose code already calls\n`doca_*` (directly in C\u002FC++, or through FFI\u002Fbindings from\nanother language) and who need the standard DOCA CLI surface so\noperators of the resulting binary do not have to relearn how to\ninvoke each sample. It is *not* for NVIDIA developers\ncontributing to the Arg Parser library itself.\n\n**Language scope.** DOCA Arg Parser ships as a C library with\n`pkg-config` module name `doca-argp`. The shipped samples are\nwritten in C. C and C++ consumers are the canonical case; the\nworked examples in `TASKS.md` assume that path. Other-language\nconsumers (Rust, Go, Python, …) consume the same `*.so` through\nFFI or language-specific bindings; the skill's contribution in\nthat case is to keep the lifecycle, parameter-type, JSON-config,\nstandard-flag-surface, and error-taxonomy guidance\nlanguage-neutral, and to route the agent to the public C ABI as\nthe authoritative surface that any wrapper will eventually call.\n\n## When to load this skill\n\nLoad this skill when the user is doing hands-on DOCA Arg Parser\nwork, in any language. Concretely:\n\n- Adding, removing, or renaming a CLI flag on a shipped DOCA\n  sample or on a new app that wants to share the standard DOCA\n  CLI surface (`--device \u003CPCI>`, `--representor \u003Cname>`,\n  `--rep-list`, `--json \u003Cpath>`, `--sdk-log-level\n  \u003Clevel>`).\n- Wiring `doca_argp_init` \u002F `doca_argp_start` \u002F\n  `doca_argp_destroy` into a `main()`, including the\n  register-before-start lifecycle and the cleanup-on-exit\n  contract.\n- Registering a `doca_argp_param` (short name, long name, value\n  callback, description for `--help`) with a parameter type\n  drawn from the six-value public enum: string, int, boolean,\n  device, device representor, or double. A JSON config file is an\n  input surface for those parameters, not a parameter type.\n- Reading complex configurations from a JSON file via the shared\n  `--json \u003Cpath>` flag instead of expanding the command\n  line.\n- Confirming the build- and runtime-side Arg Parser version on\n  the user's install (`pkg-config --exists doca-argp`,\n  `pkg-config --modversion doca-argp`) before depending on it.\n- Debugging a `DOCA_ERROR_*` returned from a `doca_argp_*` call\n  (lifecycle vs. type-mismatch vs. unknown JSON key vs.\n  unreadable file).\n- Designing or extending non-C bindings (Rust, Go, Python, …)\n  that wrap the Arg Parser C ABI — for the lifecycle,\n  parameter-type, JSON-config, and standard-flag rules the\n  wrapper must honor.\n\nDo **not** load this skill for general DOCA orientation, install\nof DOCA itself, or non-Arg-Parser library questions. For those,\nuse\n[`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md).\n\n## What this skill provides\n\nThis is a **thin loader**. The body keeps only the orientation\nneeded to pick the right next file. The substantive\nArg-Parser-specific material lives in two companion files:\n\n- `CAPABILITIES.md` — what the Arg Parser can express on this\n  version: the param-registration model, the small set of\n  public parameter types, the standard DOCA CLI surface every\n  sample shares, the `--json \u003Cpath>` file integration,\n  the register-before-start lifecycle, the Arg Parser error\n  taxonomy (mapped onto the cross-library `DOCA_ERROR_*` set),\n  the observability surface (the `--help` output and the\n  DOCA Log channel), and the safety \u002F path-selection policy\n  (when reusing doca-argp is mandatory; when a language-native\n  parser is the right answer).\n- `TASKS.md` — step-by-step workflows for the six in-scope Arg\n  Parser verbs: `configure`, `build`, `modify`, `run`, `test`,\n  `debug`. Plus a `Deferred task verbs` block that points\n  out-of-scope questions at the right next skill.\n\nThe skill assumes a host or BlueField where DOCA is already\ninstalled at the standard location. It does not cover installing\nDOCA — that path goes through\n[`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md).\n\n## What this skill deliberately does not ship\n\nThis skill is **agent guidance**, not a samples or templates\nbundle. To keep the boundary clean, it deliberately does not\ncontain — and pull requests should not add:\n\n- **Pre-written DOCA Arg Parser usage code, in any language.**\n  The verified Arg Parser usage is the `*_main.c` file in every\n  shipped DOCA sample at\n  `\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002F\u003Clibrary>\u002F\u003Csample>\u002F`. The agent's\n  job is to route the user to that file and prescribe a\n  minimum-diff modification on it via the universal\n  modify-a-sample workflow in\n  [`doca-programming-guide`](..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md),\n  layered with the Arg-Parser-specific overrides in\n  [`TASKS.md ## modify`](TASKS.md#modify).\n- **Standalone build manifests** (`meson.build`,\n  `CMakeLists.txt`, `Cargo.toml`, …) parked inside the skill.\n  The agent constructs the build manifest *in the user's\n  project directory* against the user's installed DOCA, where\n  `pkg-config --modversion doca-argp` is the source of truth.\n- **A `samples\u002F`, `bindings\u002F`, or `reference\u002F` subtree** of any\n  kind. A mock or incomplete artifact in this skill's tree,\n  even one labeled \"reference\", is misleading: users will read\n  it as buildable.\n\n## Loading order\n\n1. Read this `SKILL.md` first to confirm the user's question is\n   in scope.\n2. **For the param-registration model, parameter types, the\n   standard DOCA CLI surface, the `--json \u003Cpath>` rule,\n   the register-before-start lifecycle, error taxonomy,\n   observability, and the path-selection \u002F safety policy, see\n   [CAPABILITIES.md](CAPABILITIES.md).**\n3. **For step-by-step workflows — configure, build, modify, run,\n   test, debug — see [TASKS.md](TASKS.md).**\n\nBoth companion files cross-link to each other,\n[`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md) for the canonical\nversion-handling rules, and\n[`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md)\nwhenever the right answer is \"look it up in the public docs or\nthe installed package layout\" rather than \"Arg-Parser-specific\nguidance\".\n\n## Related skills\n\n- [`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md) —\n  the routing table for every public DOCA documentation source\n  and the on-disk layout of an installed DOCA package. The Arg\n  Parser URL is\n  `https:\u002F\u002Fdocs.nvidia.com\u002Fdoca\u002Fsdk\u002FDOCA-Arg-Parser\u002Findex.html`;\n  the canonical on-disk usage example is any sample's\n  `*_main.c` under `\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002F`.\n- [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) — env preparation,\n  install verification, and the *I have no install yet* path\n  with the public NGC DOCA container. This skill assumes its\n  preconditions are satisfied.\n- [`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md) — canonical\n  DOCA version-handling rules. This skill's `## Version\n  compatibility` cross-links the four-way match rule and adds\n  the Arg-Parser-specific presence-check overlay.\n- [`doca-structured-tools-contract`](..\u002F..\u002Fdoca-structured-tools-contract\u002FSKILL.md) —\n  the bundle's structured-tools precedence rule (detect \u002F prefer\n  \u002F fall back \u002F report). The Command appendix in\n  [TASKS.md](TASKS.md) honors this contract.\n- [`doca-programming-guide`](..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md) —\n  general DOCA programming patterns shared by every library:\n  the canonical `pkg-config` + meson build pattern, the\n  universal modify-a-shipped-sample first-app workflow, the\n  universal lifecycle, the cross-library `DOCA_ERROR_*`\n  taxonomy, and the program-side debug order. This skill layers\n  Arg-Parser specifics on top.\n- [`doca-debug`](..\u002F..\u002Fdoca-debug\u002FSKILL.md) — the cross-cutting\n  debug ladder (install \u002F version \u002F build \u002F link \u002F runtime \u002F\n  program \u002F driver). Arg-Parser-specific debug (lifecycle\n  violations, type-mismatch on a registered param, unknown JSON\n  key) overlays on top of that ladder.\n",{"data":32,"body":36},{"license":23,"name":4,"description":6,"metadata":33,"compatibility":35},{"kind":34},"library","Requires DOCA SDK installed at \u002Fopt\u002Fmellanox\u002Fdoca on Linux (Ubuntu 22.04\u002F24.04 or RHEL\u002FSLES) with a BlueField DPU or ConnectX NIC attached. Reads the user's local install via `pkg-config doca-argp` and inspects \u002Fopt\u002Fmellanox\u002Fdoca\u002F{lib,include,samples,applications}.\n",{"type":37,"children":38},"root",[39,48,146,153,165,559,565,591,631,637,642,799,821,827,839,934,948,954,966,1095,1101,1151,1176,1182],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"doca-arg-parser",[45],{"type":46,"value":47},"text","DOCA Arg Parser",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52,58,60,65,67,78,80,86,88,97,99,104,106,116,118,124,126,132,134,144],{"type":40,"tag":53,"props":54,"children":55},"strong",{},[56],{"type":46,"value":57},"Where to start:",{"type":46,"value":59}," This skill assumes DOCA is already installed\nand the user is doing ",{"type":40,"tag":53,"props":61,"children":62},{},[63],{"type":46,"value":64},"hands-on CLI work",{"type":46,"value":66}," on a DOCA sample or\nnew DOCA-using app. Open ",{"type":40,"tag":68,"props":69,"children":71},"a",{"href":70},"TASKS.md",[72],{"type":40,"tag":73,"props":74,"children":76},"code",{"className":75},[],[77],{"type":46,"value":70},{"type":46,"value":79}," if the user wants\nto ",{"type":40,"tag":81,"props":82,"children":83},"em",{},[84],{"type":46,"value":85},"do",{"type":46,"value":87}," something (configure \u002F build \u002F modify \u002F run \u002F test \u002F\ndebug); open ",{"type":40,"tag":68,"props":89,"children":91},{"href":90},"CAPABILITIES.md",[92],{"type":40,"tag":73,"props":93,"children":95},{"className":94},[],[96],{"type":46,"value":90},{"type":46,"value":98}," when the\nquestion is ",{"type":40,"tag":81,"props":100,"children":101},{},[102],{"type":46,"value":103},"what can the Arg Parser express",{"type":46,"value":105}," on this version. If\nthe user has not installed DOCA yet, route to\n",{"type":40,"tag":68,"props":107,"children":109},{"href":108},"..\u002F..\u002Fdoca-setup\u002FSKILL.md",[110],{"type":40,"tag":73,"props":111,"children":113},{"className":112},[],[114],{"type":46,"value":115},"doca-setup",{"type":46,"value":117}," first. If the user is\nabout to rewrite a sample's CLI with ",{"type":40,"tag":73,"props":119,"children":121},{"className":120},[],[122],{"type":46,"value":123},"getopt",{"type":46,"value":125}," \u002F ",{"type":40,"tag":73,"props":127,"children":129},{"className":128},[],[130],{"type":46,"value":131},"argparse",{"type":46,"value":133}," \u002F\ncustom parsing instead of reusing the Arg Parser, read the\nload-bearing rule in\n",{"type":40,"tag":68,"props":135,"children":137},{"href":136},"CAPABILITIES.md#capabilities-and-modes",[138],{"type":40,"tag":73,"props":139,"children":141},{"className":140},[],[142],{"type":46,"value":143},"CAPABILITIES.md ## Capabilities and modes",{"type":46,"value":145},"\nbefore any code change.",{"type":40,"tag":147,"props":148,"children":150},"h2",{"id":149},"example-questions-this-skill-answers-well",[151],{"type":46,"value":152},"Example questions this skill answers well",{"type":40,"tag":49,"props":154,"children":155},{},[156,158,163],{"type":46,"value":157},"The CLASSES of Arg Parser questions this skill is built to\nanswer, each with one worked example. The agent should treat the\n",{"type":40,"tag":81,"props":159,"children":160},{},[161],{"type":46,"value":162},"class",{"type":46,"value":164}," as the load-bearing piece — the worked example is a\nsingle instance.",{"type":40,"tag":166,"props":167,"children":168},"ul",{},[169,247,322,391,465,520],{"type":40,"tag":170,"props":171,"children":172},"li",{},[173,178,180,217,219,227],{"type":40,"tag":53,"props":174,"children":175},{},[176],{"type":46,"value":177},"\"How do I add a new flag to a DOCA sample without breaking\nthe standard CLI?\"",{"type":46,"value":179}," — worked example: ",{"type":40,"tag":81,"props":181,"children":182},{},[183,185,191,193,199,201,207,209,215],{"type":46,"value":184},"\"add ",{"type":40,"tag":73,"props":186,"children":188},{"className":187},[],[189],{"type":46,"value":190},"--my-flag",{"type":46,"value":192}," to\n",{"type":40,"tag":73,"props":194,"children":196},{"className":195},[],[197],{"type":46,"value":198},"\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_dma\u002Fdma_local_copy\u002F",{"type":46,"value":200}," so the\nsample still accepts ",{"type":40,"tag":73,"props":202,"children":204},{"className":203},[],[205],{"type":46,"value":206},"--device \u003CPCI>",{"type":46,"value":208}," and ",{"type":40,"tag":73,"props":210,"children":212},{"className":211},[],[213],{"type":46,"value":214},"--sdk-log-level \u003Clevel>",{"type":46,"value":216}," the same way it did before\"",{"type":46,"value":218},". Answered by the\nreuse-the-Arg-Parser rule in\n",{"type":40,"tag":68,"props":220,"children":221},{"href":136},[222],{"type":40,"tag":73,"props":223,"children":225},{"className":224},[],[226],{"type":46,"value":143},{"type":40,"tag":166,"props":228,"children":229},{},[230],{"type":40,"tag":170,"props":231,"children":232},{},[233,235,245],{"type":46,"value":234},"the register-before-start workflow in\n",{"type":40,"tag":68,"props":236,"children":238},{"href":237},"TASKS.md#modify",[239],{"type":40,"tag":73,"props":240,"children":242},{"className":241},[],[243],{"type":46,"value":244},"TASKS.md ## modify",{"type":46,"value":246},".",{"type":40,"tag":170,"props":248,"children":249},{},[250,271,272,285,287,295],{"type":40,"tag":53,"props":251,"children":252},{},[253,255,261,263,269],{"type":46,"value":254},"\"Why does ",{"type":40,"tag":73,"props":256,"children":258},{"className":257},[],[259],{"type":46,"value":260},"doca_argp_param_set_*",{"type":46,"value":262}," return ",{"type":40,"tag":73,"props":264,"children":266},{"className":265},[],[267],{"type":46,"value":268},"BAD_STATE",{"type":46,"value":270}," on my\nsecond call?\"",{"type":46,"value":179},{"type":40,"tag":81,"props":273,"children":274},{},[275,277,283],{"type":46,"value":276},"\"registering a new param\nafter ",{"type":40,"tag":73,"props":278,"children":280},{"className":279},[],[281],{"type":46,"value":282},"doca_argp_start",{"type":46,"value":284}," has already parsed argv\"",{"type":46,"value":286},". Answered by\nthe lifecycle order in\n",{"type":40,"tag":68,"props":288,"children":289},{"href":136},[290],{"type":40,"tag":73,"props":291,"children":293},{"className":292},[],[294],{"type":46,"value":143},{"type":40,"tag":166,"props":296,"children":297},{},[298],{"type":40,"tag":170,"props":299,"children":300},{},[301,303,313,315,321],{"type":46,"value":302},"the error-taxonomy row in\n",{"type":40,"tag":68,"props":304,"children":306},{"href":305},"CAPABILITIES.md#error-taxonomy",[307],{"type":40,"tag":73,"props":308,"children":310},{"className":309},[],[311],{"type":46,"value":312},"CAPABILITIES.md ## Error taxonomy",{"type":46,"value":314},"\nfor ",{"type":40,"tag":73,"props":316,"children":318},{"className":317},[],[319],{"type":46,"value":320},"DOCA_ERROR_BAD_STATE",{"type":46,"value":246},{"type":40,"tag":170,"props":323,"children":324},{},[325,330,331,344,346,352,354,362],{"type":40,"tag":53,"props":326,"children":327},{},[328],{"type":46,"value":329},"\"Can I drive a sample from a JSON file instead of a long\ncommand line?\"",{"type":46,"value":179},{"type":40,"tag":81,"props":332,"children":333},{},[334,336,342],{"type":46,"value":335},"\"point a sample at\n",{"type":40,"tag":73,"props":337,"children":339},{"className":338},[],[340],{"type":46,"value":341},".\u002Fmy-config.json",{"type":46,"value":343}," so the operator does not have to type out\nten flags every time\"",{"type":46,"value":345},". Answered by the ",{"type":40,"tag":73,"props":347,"children":349},{"className":348},[],[350],{"type":46,"value":351},"--json \u003Cpath>",{"type":46,"value":353},"\nintegration in\n",{"type":40,"tag":68,"props":355,"children":356},{"href":136},[357],{"type":40,"tag":73,"props":358,"children":360},{"className":359},[],[361],{"type":46,"value":143},{"type":40,"tag":166,"props":363,"children":364},{},[365],{"type":40,"tag":170,"props":366,"children":367},{},[368,370,378,380,390],{"type":46,"value":369},"the JSON-config-file workflow in\n",{"type":40,"tag":68,"props":371,"children":372},{"href":237},[373],{"type":40,"tag":73,"props":374,"children":376},{"className":375},[],[377],{"type":46,"value":244},{"type":46,"value":379}," and\n",{"type":40,"tag":68,"props":381,"children":383},{"href":382},"TASKS.md#run",[384],{"type":40,"tag":73,"props":385,"children":387},{"className":386},[],[388],{"type":46,"value":389},"TASKS.md ## run",{"type":46,"value":246},{"type":40,"tag":170,"props":392,"children":393},{},[394,415,417,438,440,448],{"type":40,"tag":53,"props":395,"children":396},{},[397,399,405,407,413],{"type":46,"value":398},"\"My ",{"type":40,"tag":73,"props":400,"children":402},{"className":401},[],[403],{"type":46,"value":404},"--my-flag X",{"type":46,"value":406}," value is rejected as ",{"type":40,"tag":73,"props":408,"children":410},{"className":409},[],[411],{"type":46,"value":412},"INVALID_VALUE",{"type":46,"value":414}," — why?\"",{"type":46,"value":416}," —\nworked example: ",{"type":40,"tag":81,"props":418,"children":419},{},[420,422,428,430,436],{"type":46,"value":421},"\"declared the param as ",{"type":40,"tag":73,"props":423,"children":425},{"className":424},[],[426],{"type":46,"value":427},"int",{"type":46,"value":429}," but passed\n",{"type":40,"tag":73,"props":431,"children":433},{"className":432},[],[434],{"type":46,"value":435},"--my-flag 0x40",{"type":46,"value":437},"\"",{"type":46,"value":439},". Answered by the parameter-type table in\n",{"type":40,"tag":68,"props":441,"children":442},{"href":136},[443],{"type":40,"tag":73,"props":444,"children":446},{"className":445},[],[447],{"type":46,"value":143},{"type":40,"tag":166,"props":449,"children":450},{},[451],{"type":40,"tag":170,"props":452,"children":453},{},[454,456,464],{"type":46,"value":455},"the type-mismatch row in\n",{"type":40,"tag":68,"props":457,"children":458},{"href":305},[459],{"type":40,"tag":73,"props":460,"children":462},{"className":461},[],[463],{"type":46,"value":312},{"type":46,"value":246},{"type":40,"tag":170,"props":466,"children":467},{},[468,480,482,487,489],{"type":40,"tag":53,"props":469,"children":470},{},[471,473,478],{"type":46,"value":472},"\"Is ",{"type":40,"tag":73,"props":474,"children":476},{"className":475},[],[477],{"type":46,"value":4},{"type":46,"value":479}," even on my installed DOCA?\"",{"type":46,"value":481}," — worked\nexample: ",{"type":40,"tag":81,"props":483,"children":484},{},[485],{"type":46,"value":486},"\"a colleague's sample mentions doca-argp but I want\nto confirm before I depend on it\"",{"type":46,"value":488},". Answered by the presence\n",{"type":40,"tag":166,"props":490,"children":491},{},[492],{"type":40,"tag":170,"props":493,"children":494},{},[495,497,507,509,519],{"type":46,"value":496},"version-detection rule in\n",{"type":40,"tag":68,"props":498,"children":500},{"href":499},"CAPABILITIES.md#version-compatibility",[501],{"type":40,"tag":73,"props":502,"children":504},{"className":503},[],[505],{"type":46,"value":506},"CAPABILITIES.md ## Version compatibility",{"type":46,"value":508},",\nwhich cross-links the canonical detection chain in\n",{"type":40,"tag":68,"props":510,"children":512},{"href":511},"..\u002F..\u002Fdoca-version\u002FSKILL.md",[513],{"type":40,"tag":73,"props":514,"children":516},{"className":515},[],[517],{"type":46,"value":518},"doca-version",{"type":46,"value":246},{"type":40,"tag":170,"props":521,"children":522},{},[523,528,529,542,544,552,557],{"type":40,"tag":53,"props":524,"children":525},{},[526],{"type":46,"value":527},"\"Should I use doca-argp here, or is this case actually\noutside its scope?\"",{"type":46,"value":179},{"type":40,"tag":81,"props":530,"children":531},{},[532,534,540],{"type":46,"value":533},"\"writing a host-side\nCLI tool that never calls a ",{"type":40,"tag":73,"props":535,"children":537},{"className":536},[],[538],{"type":46,"value":539},"doca_*",{"type":46,"value":541}," symbol\"",{"type":46,"value":543},". Answered by the\npath-selection rule in\n",{"type":40,"tag":68,"props":545,"children":546},{"href":136},[547],{"type":40,"tag":73,"props":548,"children":550},{"className":549},[],[551],{"type":46,"value":143},{"type":40,"tag":81,"props":553,"children":554},{},[555],{"type":46,"value":556},"Use doca-argp when … \u002F Do not use doca-argp when …",{"type":46,"value":558}," bullets.",{"type":40,"tag":147,"props":560,"children":562},{"id":561},"audience",[563],{"type":46,"value":564},"Audience",{"type":40,"tag":49,"props":566,"children":567},{},[568,570,575,577,582,584,589],{"type":46,"value":569},"This skill serves ",{"type":40,"tag":53,"props":571,"children":572},{},[573],{"type":46,"value":574},"external developers building or modifying\nDOCA-using applications",{"type":46,"value":576}," — i.e., users whose code already calls\n",{"type":40,"tag":73,"props":578,"children":580},{"className":579},[],[581],{"type":46,"value":539},{"type":46,"value":583}," (directly in C\u002FC++, or through FFI\u002Fbindings from\nanother language) and who need the standard DOCA CLI surface so\noperators of the resulting binary do not have to relearn how to\ninvoke each sample. It is ",{"type":40,"tag":81,"props":585,"children":586},{},[587],{"type":46,"value":588},"not",{"type":46,"value":590}," for NVIDIA developers\ncontributing to the Arg Parser library itself.",{"type":40,"tag":49,"props":592,"children":593},{},[594,599,601,607,609,614,616,621,623,629],{"type":40,"tag":53,"props":595,"children":596},{},[597],{"type":46,"value":598},"Language scope.",{"type":46,"value":600}," DOCA Arg Parser ships as a C library with\n",{"type":40,"tag":73,"props":602,"children":604},{"className":603},[],[605],{"type":46,"value":606},"pkg-config",{"type":46,"value":608}," module name ",{"type":40,"tag":73,"props":610,"children":612},{"className":611},[],[613],{"type":46,"value":4},{"type":46,"value":615},". The shipped samples are\nwritten in C. C and C++ consumers are the canonical case; the\nworked examples in ",{"type":40,"tag":73,"props":617,"children":619},{"className":618},[],[620],{"type":46,"value":70},{"type":46,"value":622}," assume that path. Other-language\nconsumers (Rust, Go, Python, …) consume the same ",{"type":40,"tag":73,"props":624,"children":626},{"className":625},[],[627],{"type":46,"value":628},"*.so",{"type":46,"value":630}," through\nFFI or language-specific bindings; the skill's contribution in\nthat case is to keep the lifecycle, parameter-type, JSON-config,\nstandard-flag-surface, and error-taxonomy guidance\nlanguage-neutral, and to route the agent to the public C ABI as\nthe authoritative surface that any wrapper will eventually call.",{"type":40,"tag":147,"props":632,"children":634},{"id":633},"when-to-load-this-skill",[635],{"type":46,"value":636},"When to load this skill",{"type":40,"tag":49,"props":638,"children":639},{},[640],{"type":46,"value":641},"Load this skill when the user is doing hands-on DOCA Arg Parser\nwork, in any language. Concretely:",{"type":40,"tag":166,"props":643,"children":644},{},[645,685,720,741,753,773,794],{"type":40,"tag":170,"props":646,"children":647},{},[648,650,655,657,663,665,671,672,677,678,683],{"type":46,"value":649},"Adding, removing, or renaming a CLI flag on a shipped DOCA\nsample or on a new app that wants to share the standard DOCA\nCLI surface (",{"type":40,"tag":73,"props":651,"children":653},{"className":652},[],[654],{"type":46,"value":206},{"type":46,"value":656},", ",{"type":40,"tag":73,"props":658,"children":660},{"className":659},[],[661],{"type":46,"value":662},"--representor \u003Cname>",{"type":46,"value":664},",\n",{"type":40,"tag":73,"props":666,"children":668},{"className":667},[],[669],{"type":46,"value":670},"--rep-list",{"type":46,"value":656},{"type":40,"tag":73,"props":673,"children":675},{"className":674},[],[676],{"type":46,"value":351},{"type":46,"value":656},{"type":40,"tag":73,"props":679,"children":681},{"className":680},[],[682],{"type":46,"value":214},{"type":46,"value":684},").",{"type":40,"tag":170,"props":686,"children":687},{},[688,690,696,697,702,704,710,712,718],{"type":46,"value":689},"Wiring ",{"type":40,"tag":73,"props":691,"children":693},{"className":692},[],[694],{"type":46,"value":695},"doca_argp_init",{"type":46,"value":125},{"type":40,"tag":73,"props":698,"children":700},{"className":699},[],[701],{"type":46,"value":282},{"type":46,"value":703}," \u002F\n",{"type":40,"tag":73,"props":705,"children":707},{"className":706},[],[708],{"type":46,"value":709},"doca_argp_destroy",{"type":46,"value":711}," into a ",{"type":40,"tag":73,"props":713,"children":715},{"className":714},[],[716],{"type":46,"value":717},"main()",{"type":46,"value":719},", including the\nregister-before-start lifecycle and the cleanup-on-exit\ncontract.",{"type":40,"tag":170,"props":721,"children":722},{},[723,725,731,733,739],{"type":46,"value":724},"Registering a ",{"type":40,"tag":73,"props":726,"children":728},{"className":727},[],[729],{"type":46,"value":730},"doca_argp_param",{"type":46,"value":732}," (short name, long name, value\ncallback, description for ",{"type":40,"tag":73,"props":734,"children":736},{"className":735},[],[737],{"type":46,"value":738},"--help",{"type":46,"value":740},") with a parameter type\ndrawn from the six-value public enum: string, int, boolean,\ndevice, device representor, or double. A JSON config file is an\ninput surface for those parameters, not a parameter type.",{"type":40,"tag":170,"props":742,"children":743},{},[744,746,751],{"type":46,"value":745},"Reading complex configurations from a JSON file via the shared\n",{"type":40,"tag":73,"props":747,"children":749},{"className":748},[],[750],{"type":46,"value":351},{"type":46,"value":752}," flag instead of expanding the command\nline.",{"type":40,"tag":170,"props":754,"children":755},{},[756,758,764,765,771],{"type":46,"value":757},"Confirming the build- and runtime-side Arg Parser version on\nthe user's install (",{"type":40,"tag":73,"props":759,"children":761},{"className":760},[],[762],{"type":46,"value":763},"pkg-config --exists doca-argp",{"type":46,"value":664},{"type":40,"tag":73,"props":766,"children":768},{"className":767},[],[769],{"type":46,"value":770},"pkg-config --modversion doca-argp",{"type":46,"value":772},") before depending on it.",{"type":40,"tag":170,"props":774,"children":775},{},[776,778,784,786,792],{"type":46,"value":777},"Debugging a ",{"type":40,"tag":73,"props":779,"children":781},{"className":780},[],[782],{"type":46,"value":783},"DOCA_ERROR_*",{"type":46,"value":785}," returned from a ",{"type":40,"tag":73,"props":787,"children":789},{"className":788},[],[790],{"type":46,"value":791},"doca_argp_*",{"type":46,"value":793}," call\n(lifecycle vs. type-mismatch vs. unknown JSON key vs.\nunreadable file).",{"type":40,"tag":170,"props":795,"children":796},{},[797],{"type":46,"value":798},"Designing or extending non-C bindings (Rust, Go, Python, …)\nthat wrap the Arg Parser C ABI — for the lifecycle,\nparameter-type, JSON-config, and standard-flag rules the\nwrapper must honor.",{"type":40,"tag":49,"props":800,"children":801},{},[802,804,808,810,820],{"type":46,"value":803},"Do ",{"type":40,"tag":53,"props":805,"children":806},{},[807],{"type":46,"value":588},{"type":46,"value":809}," load this skill for general DOCA orientation, install\nof DOCA itself, or non-Arg-Parser library questions. For those,\nuse\n",{"type":40,"tag":68,"props":811,"children":813},{"href":812},"..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md",[814],{"type":40,"tag":73,"props":815,"children":817},{"className":816},[],[818],{"type":46,"value":819},"doca-public-knowledge-map",{"type":46,"value":246},{"type":40,"tag":147,"props":822,"children":824},{"id":823},"what-this-skill-provides",[825],{"type":46,"value":826},"What this skill provides",{"type":40,"tag":49,"props":828,"children":829},{},[830,832,837],{"type":46,"value":831},"This is a ",{"type":40,"tag":53,"props":833,"children":834},{},[835],{"type":46,"value":836},"thin loader",{"type":46,"value":838},". The body keeps only the orientation\nneeded to pick the right next file. The substantive\nArg-Parser-specific material lives in two companion files:",{"type":40,"tag":166,"props":840,"children":841},{},[842,873],{"type":40,"tag":170,"props":843,"children":844},{},[845,850,852,857,859,864,866,871],{"type":40,"tag":73,"props":846,"children":848},{"className":847},[],[849],{"type":46,"value":90},{"type":46,"value":851}," — what the Arg Parser can express on this\nversion: the param-registration model, the small set of\npublic parameter types, the standard DOCA CLI surface every\nsample shares, the ",{"type":40,"tag":73,"props":853,"children":855},{"className":854},[],[856],{"type":46,"value":351},{"type":46,"value":858}," file integration,\nthe register-before-start lifecycle, the Arg Parser error\ntaxonomy (mapped onto the cross-library ",{"type":40,"tag":73,"props":860,"children":862},{"className":861},[],[863],{"type":46,"value":783},{"type":46,"value":865}," set),\nthe observability surface (the ",{"type":40,"tag":73,"props":867,"children":869},{"className":868},[],[870],{"type":46,"value":738},{"type":46,"value":872}," output and the\nDOCA Log channel), and the safety \u002F path-selection policy\n(when reusing doca-argp is mandatory; when a language-native\nparser is the right answer).",{"type":40,"tag":170,"props":874,"children":875},{},[876,881,883,889,890,896,897,903,904,910,911,917,918,924,926,932],{"type":40,"tag":73,"props":877,"children":879},{"className":878},[],[880],{"type":46,"value":70},{"type":46,"value":882}," — step-by-step workflows for the six in-scope Arg\nParser verbs: ",{"type":40,"tag":73,"props":884,"children":886},{"className":885},[],[887],{"type":46,"value":888},"configure",{"type":46,"value":656},{"type":40,"tag":73,"props":891,"children":893},{"className":892},[],[894],{"type":46,"value":895},"build",{"type":46,"value":656},{"type":40,"tag":73,"props":898,"children":900},{"className":899},[],[901],{"type":46,"value":902},"modify",{"type":46,"value":656},{"type":40,"tag":73,"props":905,"children":907},{"className":906},[],[908],{"type":46,"value":909},"run",{"type":46,"value":656},{"type":40,"tag":73,"props":912,"children":914},{"className":913},[],[915],{"type":46,"value":916},"test",{"type":46,"value":664},{"type":40,"tag":73,"props":919,"children":921},{"className":920},[],[922],{"type":46,"value":923},"debug",{"type":46,"value":925},". Plus a ",{"type":40,"tag":73,"props":927,"children":929},{"className":928},[],[930],{"type":46,"value":931},"Deferred task verbs",{"type":46,"value":933}," block that points\nout-of-scope questions at the right next skill.",{"type":40,"tag":49,"props":935,"children":936},{},[937,939,947],{"type":46,"value":938},"The skill assumes a host or BlueField where DOCA is already\ninstalled at the standard location. It does not cover installing\nDOCA — that path goes through\n",{"type":40,"tag":68,"props":940,"children":941},{"href":108},[942],{"type":40,"tag":73,"props":943,"children":945},{"className":944},[],[946],{"type":46,"value":115},{"type":46,"value":246},{"type":40,"tag":147,"props":949,"children":951},{"id":950},"what-this-skill-deliberately-does-not-ship",[952],{"type":46,"value":953},"What this skill deliberately does not ship",{"type":40,"tag":49,"props":955,"children":956},{},[957,959,964],{"type":46,"value":958},"This skill is ",{"type":40,"tag":53,"props":960,"children":961},{},[962],{"type":46,"value":963},"agent guidance",{"type":46,"value":965},", not a samples or templates\nbundle. To keep the boundary clean, it deliberately does not\ncontain — and pull requests should not add:",{"type":40,"tag":166,"props":967,"children":968},{},[969,1016,1062],{"type":40,"tag":170,"props":970,"children":971},{},[972,977,979,985,987,993,995,1005,1007,1015],{"type":40,"tag":53,"props":973,"children":974},{},[975],{"type":46,"value":976},"Pre-written DOCA Arg Parser usage code, in any language.",{"type":46,"value":978},"\nThe verified Arg Parser usage is the ",{"type":40,"tag":73,"props":980,"children":982},{"className":981},[],[983],{"type":46,"value":984},"*_main.c",{"type":46,"value":986}," file in every\nshipped DOCA sample at\n",{"type":40,"tag":73,"props":988,"children":990},{"className":989},[],[991],{"type":46,"value":992},"\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002F\u003Clibrary>\u002F\u003Csample>\u002F",{"type":46,"value":994},". The agent's\njob is to route the user to that file and prescribe a\nminimum-diff modification on it via the universal\nmodify-a-sample workflow in\n",{"type":40,"tag":68,"props":996,"children":998},{"href":997},"..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md",[999],{"type":40,"tag":73,"props":1000,"children":1002},{"className":1001},[],[1003],{"type":46,"value":1004},"doca-programming-guide",{"type":46,"value":1006},",\nlayered with the Arg-Parser-specific overrides in\n",{"type":40,"tag":68,"props":1008,"children":1009},{"href":237},[1010],{"type":40,"tag":73,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":46,"value":244},{"type":46,"value":246},{"type":40,"tag":170,"props":1017,"children":1018},{},[1019,1024,1026,1032,1033,1039,1040,1046,1048,1053,1055,1060],{"type":40,"tag":53,"props":1020,"children":1021},{},[1022],{"type":46,"value":1023},"Standalone build manifests",{"type":46,"value":1025}," (",{"type":40,"tag":73,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":46,"value":1031},"meson.build",{"type":46,"value":664},{"type":40,"tag":73,"props":1034,"children":1036},{"className":1035},[],[1037],{"type":46,"value":1038},"CMakeLists.txt",{"type":46,"value":656},{"type":40,"tag":73,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":46,"value":1045},"Cargo.toml",{"type":46,"value":1047},", …) parked inside the skill.\nThe agent constructs the build manifest ",{"type":40,"tag":81,"props":1049,"children":1050},{},[1051],{"type":46,"value":1052},"in the user's\nproject directory",{"type":46,"value":1054}," against the user's installed DOCA, where\n",{"type":40,"tag":73,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":46,"value":770},{"type":46,"value":1061}," is the source of truth.",{"type":40,"tag":170,"props":1063,"children":1064},{},[1065,1093],{"type":40,"tag":53,"props":1066,"children":1067},{},[1068,1070,1076,1077,1083,1085,1091],{"type":46,"value":1069},"A ",{"type":40,"tag":73,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":46,"value":1075},"samples\u002F",{"type":46,"value":656},{"type":40,"tag":73,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":46,"value":1082},"bindings\u002F",{"type":46,"value":1084},", or ",{"type":40,"tag":73,"props":1086,"children":1088},{"className":1087},[],[1089],{"type":46,"value":1090},"reference\u002F",{"type":46,"value":1092}," subtree",{"type":46,"value":1094}," of any\nkind. A mock or incomplete artifact in this skill's tree,\neven one labeled \"reference\", is misleading: users will read\nit as buildable.",{"type":40,"tag":147,"props":1096,"children":1098},{"id":1097},"loading-order",[1099],{"type":46,"value":1100},"Loading order",{"type":40,"tag":1102,"props":1103,"children":1104},"ol",{},[1105,1118,1138],{"type":40,"tag":170,"props":1106,"children":1107},{},[1108,1110,1116],{"type":46,"value":1109},"Read this ",{"type":40,"tag":73,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":46,"value":1115},"SKILL.md",{"type":46,"value":1117}," first to confirm the user's question is\nin scope.",{"type":40,"tag":170,"props":1119,"children":1120},{},[1121],{"type":40,"tag":53,"props":1122,"children":1123},{},[1124,1126,1131,1133,1137],{"type":46,"value":1125},"For the param-registration model, parameter types, the\nstandard DOCA CLI surface, the ",{"type":40,"tag":73,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":46,"value":351},{"type":46,"value":1132}," rule,\nthe register-before-start lifecycle, error taxonomy,\nobservability, and the path-selection \u002F safety policy, see\n",{"type":40,"tag":68,"props":1134,"children":1135},{"href":90},[1136],{"type":46,"value":90},{"type":46,"value":246},{"type":40,"tag":170,"props":1139,"children":1140},{},[1141],{"type":40,"tag":53,"props":1142,"children":1143},{},[1144,1146,1150],{"type":46,"value":1145},"For step-by-step workflows — configure, build, modify, run,\ntest, debug — see ",{"type":40,"tag":68,"props":1147,"children":1148},{"href":70},[1149],{"type":46,"value":70},{"type":46,"value":246},{"type":40,"tag":49,"props":1152,"children":1153},{},[1154,1156,1164,1166,1174],{"type":46,"value":1155},"Both companion files cross-link to each other,\n",{"type":40,"tag":68,"props":1157,"children":1158},{"href":511},[1159],{"type":40,"tag":73,"props":1160,"children":1162},{"className":1161},[],[1163],{"type":46,"value":518},{"type":46,"value":1165}," for the canonical\nversion-handling rules, and\n",{"type":40,"tag":68,"props":1167,"children":1168},{"href":812},[1169],{"type":40,"tag":73,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":46,"value":819},{"type":46,"value":1175},"\nwhenever the right answer is \"look it up in the public docs or\nthe installed package layout\" rather than \"Arg-Parser-specific\nguidance\".",{"type":40,"tag":147,"props":1177,"children":1179},{"id":1178},"related-skills",[1180],{"type":46,"value":1181},"Related skills",{"type":40,"tag":166,"props":1183,"children":1184},{},[1185,1220,1240,1261,1282,1309],{"type":40,"tag":170,"props":1186,"children":1187},{},[1188,1196,1198,1204,1206,1211,1213,1219],{"type":40,"tag":68,"props":1189,"children":1190},{"href":812},[1191],{"type":40,"tag":73,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":46,"value":819},{"type":46,"value":1197}," —\nthe routing table for every public DOCA documentation source\nand the on-disk layout of an installed DOCA package. The Arg\nParser URL is\n",{"type":40,"tag":73,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":46,"value":1203},"https:\u002F\u002Fdocs.nvidia.com\u002Fdoca\u002Fsdk\u002FDOCA-Arg-Parser\u002Findex.html",{"type":46,"value":1205},";\nthe canonical on-disk usage example is any sample's\n",{"type":40,"tag":73,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":46,"value":984},{"type":46,"value":1212}," under ",{"type":40,"tag":73,"props":1214,"children":1216},{"className":1215},[],[1217],{"type":46,"value":1218},"\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002F",{"type":46,"value":246},{"type":40,"tag":170,"props":1221,"children":1222},{},[1223,1231,1233,1238],{"type":40,"tag":68,"props":1224,"children":1225},{"href":108},[1226],{"type":40,"tag":73,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":46,"value":115},{"type":46,"value":1232}," — env preparation,\ninstall verification, and the ",{"type":40,"tag":81,"props":1234,"children":1235},{},[1236],{"type":46,"value":1237},"I have no install yet",{"type":46,"value":1239}," path\nwith the public NGC DOCA container. This skill assumes its\npreconditions are satisfied.",{"type":40,"tag":170,"props":1241,"children":1242},{},[1243,1251,1253,1259],{"type":40,"tag":68,"props":1244,"children":1245},{"href":511},[1246],{"type":40,"tag":73,"props":1247,"children":1249},{"className":1248},[],[1250],{"type":46,"value":518},{"type":46,"value":1252}," — canonical\nDOCA version-handling rules. This skill's ",{"type":40,"tag":73,"props":1254,"children":1256},{"className":1255},[],[1257],{"type":46,"value":1258},"## Version compatibility",{"type":46,"value":1260}," cross-links the four-way match rule and adds\nthe Arg-Parser-specific presence-check overlay.",{"type":40,"tag":170,"props":1262,"children":1263},{},[1264,1274,1276,1280],{"type":40,"tag":68,"props":1265,"children":1267},{"href":1266},"..\u002F..\u002Fdoca-structured-tools-contract\u002FSKILL.md",[1268],{"type":40,"tag":73,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":46,"value":1273},"doca-structured-tools-contract",{"type":46,"value":1275}," —\nthe bundle's structured-tools precedence rule (detect \u002F prefer\n\u002F fall back \u002F report). The Command appendix in\n",{"type":40,"tag":68,"props":1277,"children":1278},{"href":70},[1279],{"type":46,"value":70},{"type":46,"value":1281}," honors this contract.",{"type":40,"tag":170,"props":1283,"children":1284},{},[1285,1293,1295,1300,1302,1307],{"type":40,"tag":68,"props":1286,"children":1287},{"href":997},[1288],{"type":40,"tag":73,"props":1289,"children":1291},{"className":1290},[],[1292],{"type":46,"value":1004},{"type":46,"value":1294}," —\ngeneral DOCA programming patterns shared by every library:\nthe canonical ",{"type":40,"tag":73,"props":1296,"children":1298},{"className":1297},[],[1299],{"type":46,"value":606},{"type":46,"value":1301}," + meson build pattern, the\nuniversal modify-a-shipped-sample first-app workflow, the\nuniversal lifecycle, the cross-library ",{"type":40,"tag":73,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":46,"value":783},{"type":46,"value":1308},"\ntaxonomy, and the program-side debug order. This skill layers\nArg-Parser specifics on top.",{"type":40,"tag":170,"props":1310,"children":1311},{},[1312,1322],{"type":40,"tag":68,"props":1313,"children":1315},{"href":1314},"..\u002F..\u002Fdoca-debug\u002FSKILL.md",[1316],{"type":40,"tag":73,"props":1317,"children":1319},{"className":1318},[],[1320],{"type":46,"value":1321},"doca-debug",{"type":46,"value":1323}," — the cross-cutting\ndebug ladder (install \u002F version \u002F build \u002F link \u002F runtime \u002F\nprogram \u002F driver). Arg-Parser-specific debug (lifecycle\nviolations, type-mismatch on a registered param, unknown JSON\nkey) overlays on top of that ladder.",{"items":1325,"total":1429},[1326,1343,1357,1371,1383,1400,1415],{"slug":1327,"name":1327,"fn":1328,"description":1329,"org":1330,"tags":1331,"stars":20,"repoUrl":21,"updatedAt":1342},"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},[1332,1335,1338,1339],{"name":1333,"slug":1334,"type":15},"Data Analysis","data-analysis",{"name":1336,"slug":1337,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":1340,"slug":1341,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1344,"name":1344,"fn":1345,"description":1346,"org":1347,"tags":1348,"stars":20,"repoUrl":21,"updatedAt":1356},"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},[1349,1352,1355],{"name":1350,"slug":1351,"type":15},"Deployment","deployment",{"name":1353,"slug":1354,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":1358,"name":1358,"fn":1359,"description":1360,"org":1361,"tags":1362,"stars":20,"repoUrl":21,"updatedAt":1370},"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},[1363,1366,1367],{"name":1364,"slug":1365,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1368,"slug":1369,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":1372,"name":1372,"fn":1373,"description":1374,"org":1375,"tags":1376,"stars":20,"repoUrl":21,"updatedAt":1382},"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},[1377,1378,1379],{"name":1333,"slug":1334,"type":15},{"name":9,"slug":8,"type":15},{"name":1380,"slug":1381,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":1384,"name":1384,"fn":1385,"description":1386,"org":1387,"tags":1388,"stars":20,"repoUrl":21,"updatedAt":1399},"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},[1389,1392,1395,1396],{"name":1390,"slug":1391,"type":15},"Automation","automation",{"name":1393,"slug":1394,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":1397,"slug":1398,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":1401,"name":1401,"fn":1402,"description":1403,"org":1404,"tags":1405,"stars":20,"repoUrl":21,"updatedAt":1414},"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},[1406,1407,1410,1411],{"name":1350,"slug":1351,"type":15},{"name":1408,"slug":1409,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":1412,"slug":1413,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1416,"name":1416,"fn":1417,"description":1418,"org":1419,"tags":1420,"stars":20,"repoUrl":21,"updatedAt":1428},"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},[1421,1422,1425],{"name":9,"slug":8,"type":15},{"name":1423,"slug":1424,"type":15},"Quantum Computing","quantum-computing",{"name":1426,"slug":1427,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":1431,"total":1582},[1432,1450,1466,1477,1489,1503,1516,1530,1541,1550,1564,1573],{"slug":1433,"name":1433,"fn":1434,"description":1435,"org":1436,"tags":1437,"stars":1447,"repoUrl":1448,"updatedAt":1449},"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},[1438,1441,1444],{"name":1439,"slug":1440,"type":15},"Documentation","documentation",{"name":1442,"slug":1443,"type":15},"MCP","mcp",{"name":1445,"slug":1446,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1451,"name":1451,"fn":1452,"description":1453,"org":1454,"tags":1455,"stars":1463,"repoUrl":1464,"updatedAt":1465},"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},[1456,1459,1460],{"name":1457,"slug":1458,"type":15},"Containers","containers",{"name":1350,"slug":1351,"type":15},{"name":1461,"slug":1462,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1467,"name":1467,"fn":1468,"description":1469,"org":1470,"tags":1471,"stars":1463,"repoUrl":1464,"updatedAt":1476},"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},[1472,1475],{"name":1473,"slug":1474,"type":15},"CI\u002FCD","ci-cd",{"name":1350,"slug":1351,"type":15},"2026-07-14T05:25:59.97109",{"slug":1478,"name":1478,"fn":1479,"description":1480,"org":1481,"tags":1482,"stars":1463,"repoUrl":1464,"updatedAt":1488},"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},[1483,1484,1485],{"name":1473,"slug":1474,"type":15},{"name":1350,"slug":1351,"type":15},{"name":1486,"slug":1487,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1490,"name":1490,"fn":1491,"description":1492,"org":1493,"tags":1494,"stars":1463,"repoUrl":1464,"updatedAt":1502},"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},[1495,1498,1499],{"name":1496,"slug":1497,"type":15},"Debugging","debugging",{"name":1486,"slug":1487,"type":15},{"name":1500,"slug":1501,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1504,"name":1504,"fn":1505,"description":1506,"org":1507,"tags":1508,"stars":1463,"repoUrl":1464,"updatedAt":1515},"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},[1509,1512],{"name":1510,"slug":1511,"type":15},"Best Practices","best-practices",{"name":1513,"slug":1514,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1517,"name":1517,"fn":1518,"description":1519,"org":1520,"tags":1521,"stars":1463,"repoUrl":1464,"updatedAt":1529},"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},[1522,1525,1528],{"name":1523,"slug":1524,"type":15},"Machine Learning","machine-learning",{"name":1526,"slug":1527,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1531,"name":1531,"fn":1532,"description":1533,"org":1534,"tags":1535,"stars":1463,"repoUrl":1464,"updatedAt":1540},"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},[1536,1539],{"name":1537,"slug":1538,"type":15},"QA","qa",{"name":1380,"slug":1381,"type":15},"2026-07-14T05:25:53.673039",{"slug":1542,"name":1542,"fn":1543,"description":1544,"org":1545,"tags":1546,"stars":1463,"repoUrl":1464,"updatedAt":1549},"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},[1547,1548],{"name":1350,"slug":1351,"type":15},{"name":1353,"slug":1354,"type":15},"2026-07-14T05:25:49.362534",{"slug":1551,"name":1551,"fn":1552,"description":1553,"org":1554,"tags":1555,"stars":1463,"repoUrl":1464,"updatedAt":1563},"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},[1556,1559,1560],{"name":1557,"slug":1558,"type":15},"Code Review","code-review",{"name":1486,"slug":1487,"type":15},{"name":1561,"slug":1562,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1565,"name":1565,"fn":1566,"description":1567,"org":1568,"tags":1569,"stars":1463,"repoUrl":1464,"updatedAt":1572},"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},[1570,1571],{"name":1537,"slug":1538,"type":15},{"name":1380,"slug":1381,"type":15},"2026-07-14T05:25:54.928983",{"slug":1574,"name":1574,"fn":1575,"description":1576,"org":1577,"tags":1578,"stars":1463,"repoUrl":1464,"updatedAt":1581},"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},[1579,1580],{"name":1390,"slug":1391,"type":15},{"name":1473,"slug":1474,"type":15},"2026-07-30T05:29:03.275638",496]