Agent skill · NVIDIA

doca-programming-guide

Use this skill when the user is writing their first DOCA app or asking a library-agnostic programming question — picking a shipped sample to copy and modify, wiring the canonical pkg-config doca-{library} + meson build (or FFI from Rust / Go / Python against the public C ABI), walking the cfg-create → init → start → use → stop → destroy lifecycle, validating a spec before commit, or decoding a DOCA_ERROR_* return with doca_error_get_descr(). Trigger even when the user does not say "DOCA programming guide" — implicit phrasings: "write my first DOCA program", "meson line for doca_rdma_*", "got DOCA_ERROR_BAD_STATE on my first call", "call DOCA from Rust without writing C", "built clean but nothing on the wire", "what order do doca_*_pipe calls go in". Refuse and route for install / hugepages / pkg-config not resolving doca-{library} (doca-setup), docs or version lookup (doca-public-knowledge-map), and library-internal API construction like Flow pipe topology or RDMA QP setup (matching library skill).

What it needs

About 8k tokens when loaded.

What this skill does

DOCA programming guide Where to start: Read ## Audience to confirm the user is consuming DOCA, not contributing to it. Then jump to the H2 that matches the verb (## modify for first-app derivation, build for the canonical build pattern, ## test for the test loop, ## debug for the program-class debug ladder). Example questions this skill answers well These are the CLASSES of program-class questions the skill is built to answer, each with one worked example. Library-specific overlays (Flow / DMS / Caps / …) live in the matching library skill; this skill answers the library-agnostic shape. "How do I write my first DOCA program for &lt;any library&gt;?" — worked example: "I want to write my first DOCA Flow application." Answered by the modify-a-shipped-sample workflow in TASKS.md ## modify plus the canonical build pattern in TASKS.md ## build. "What's the right build line for any DOCA library?" — worked example: "How do I compile a program that calls docardma?" Answered by the pkg-config doca-<library> pattern in TASKS.md ## build (C/C++ Track 1) and the FFI/bindings pattern in Track 2. "What's the lifecycle every DOCA object follows?" — worked example: "What's the right order of docaflowpipe calls in my program?" Answered by the cfg-create / init / start / use / stop / destroy template in CAPABILITIES.md ## Capabilities and modes. "DOCAERROR came back — what does it mean and what do I do?" — worked example: "My code got DOCAERRORBADSTATE." Answered by the cross-library docaerrorgetdescr() rule in CAPABILITIES.md ## Error taxonomy the program-class debug order in TASKS.md ## debug. "My program built and started, but does nothing on the wire." — worked example: "My Flow program runs cleanly but no traffic is matched." Answered by the validate-before-commit rule in CAPABILITIES.md ## Safety policy and the layered program-class debug ladder in TASKS.md ## debug. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills NVIDIA/doca-programming-guide

View the source on GitHub

Browse the @skills marketplace