
DOCA Telemetry
OfficialFreeRead DOCA hardware counters from your devices.
Free · Opens the source repo
What DOCA Telemetry does
DOCA Telemetry is a specialized skill designed for developers who need to interact with DOCA hardware-counter events through a doca_dev. This skill allows users to leverage the per-domain Telemetry reader libraries, such as doca_telemetry_pcc, _dpa, _diag, _adp_retx, _phy, and _pci, to perform capability checks, create contexts, and read hardware-counter snapshots efficiently. It is essential for anyone involved in hands-on telemetry work, providing a structured approach to accessing and managing hardware counter data.
The skill is not intended for general DOCA orientation or for those looking to publish or export telemetry data, as it focuses solely on the reading aspect. Users will find it particularly useful when they need to open a per-domain context on a doca_dev, configure sampling windows, and handle the specific lifecycle of the telemetry reader. This includes understanding the nuances of each domain's capabilities and managing errors that may arise during counter reads.
For developers working in C or C++ and those utilizing foreign function interfaces (FFI) from other languages, this skill provides a clear path to accessing DOCA telemetry features. It emphasizes the importance of distinguishing between the reader and exporter roles, ensuring that users do not mix functionalities that could lead to application failures. The documentation includes detailed guidance on how to navigate the various capabilities and handle specific scenarios, making it a valuable resource for effective DOCA telemetry management.
When to use it
Use this skill when you need to read hardware counter data from a DOCA device and require access to specific telemetry domains.
When not to use it
This skill is not suitable for users looking to publish telemetry data or those unfamiliar with the DOCA framework.
What you can build with it
Reading PCC Counters
Use this skill to access Programmable Congestion Control counters by opening the appropriate context and reading the latest snapshots.
Configuring Sample Windows
Configure the sample window for a specific telemetry domain to ensure accurate readings of hardware counters.
Handling Errors in Reads
Manage and interpret errors that may occur during hardware counter reads, ensuring robust application behavior.
How to install DOCA Telemetry
View source1. Install with the skills CLI
npx skills add nvidia/skills/doca-telemetry --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by nvidiaDOCA Telemetry
Where to start: This skill assumes DOCA is already installed
and the user is doing hands-on hardware-counter-reader work —
opening a per-domain doca_telemetry_<domain> context against a
doca_dev and reading the latest hardware-counter snapshot for
that domain. The library is the counter-READER half of DOCA
telemetry; it is NOT a NetFlow / IPFIX collector and NOT a
generic schema-event consumer (the bundle previously framed it
that way and that framing was wrong — there is no NetFlow /
IPFIX / local-socket transport surface in the public header).
Open TASKS.md if the user wants to do something
(configure / build / modify / run / test / debug); open
CAPABILITIES.md when the question is which
hardware-counter domains can this device read on this install
(PCC, DPA, DIAG, ADP_RETX, PHY, PCI). If the user has not
installed DOCA yet, route to
doca-setup first. If the user is
confused about whether they want this library (HW-counter
reader on a doca_dev) or
doca-telemetry-exporter
(the publisher / export side, which is a separate library and
publishes structured telemetry / labeled metrics / OTLP logs),
read the reader-vs-exporter role split in
CAPABILITIES.md ## Capabilities and modes
BEFORE configuring anything; mixing the two is the load-bearing
first-app failure for this skill. If the user is asking about
DOCA Telemetry Service (DTS) as deployed, route to
doca-public-knowledge-map
non-goals — DTS is out of scope for this bundle.
Audience
This skill serves external developers building applications
that READ DOCA hardware counters from a doca_dev through one
or more of the six per-domain DOCA Telemetry reader libraries
(doca_telemetry_pcc / _dpa / _diag / _adp_retx / _phy /
_pci) — i.e., users whose application code calls
doca_telemetry_<domain>_* (directly in C/C++, or through FFI /
bindings from another language) to open a per-domain context on
a doca_dev, configure the per-domain sample window, and read
the hardware-counter snapshot for that domain. It is not for
NVIDIA developers contributing to DOCA Telemetry itself, and it
is not for users writing the publishing / export side —
that is
doca-telemetry-exporter,
a separate library and a separate skill.
Language scope. DOCA Telemetry's per-domain reader libraries
ship as a C surface with pkg-config module name
doca-telemetry. The shipped samples are written in C. C and
C++ readers are the canonical case; the worked examples in
TASKS.md assume that path. Other-language readers (Rust, Go,
Python, …) consume the same *.so through FFI or
language-specific bindings; the skill's contribution in that
case is to keep the reader-vs-exporter distinction, the per-
domain cap-query-first discipline, the per-domain DOCA Core
lifecycle on the doca_dev, the sample-window discipline, and
the error-taxonomy guidance language-neutral, and to route the
agent to the public per-domain C ABI as the authoritative
surface that any wrapper will eventually call.
When to load this skill
Load this skill when the user is doing hands-on DOCA Telemetry hardware-counter-reader work, in any language. Concretely:
- Picking the right per-domain header for the counters the user
wants (
doca_telemetry_pcc.hfor Programmable Congestion Control counters,_dpa.hfor DPA counters,_diag.hfor generic device diagnostic counters,_adp_retx.hfor ADP retransmit counters,_phy.hfor physical-layer counters,_pci.hfor PCI / PCIe counters) and confirming the device supports it via the per-domain_cap_is_supported(devinfo)query — except_pci, which has no single_cap_is_supportedand instead exposes per-feature caps likedoca_telemetry_pci_cap_management_info_is_supported/_cap_perf_counters_1_is_supported. - Opening a per-domain
doca_telemetry_<domain>context on adoca_dev, walking the per-domain lifecycle (doca_telemetry_<domain>_create(dev)→ per-domain setters →doca_telemetry_<domain>_start), configuring the per-domain sample window, and reading the hardware-counter snapshot for that domain. Note this is a per-domain_create/_startsurface, not the genericdoca_ctx_*progress-engine lifecycle. - Reading the device + library capability surface before assuming
a counter family is available: use
doca_telemetry_<domain>_cap_is_supportedonly forpcc,dpa,diag,adp_retx, andphy; use the matching per-featuredoca_telemetry_pci_cap_*_is_supportedquery for PCI. - Handling per-domain
DOCA_ERROR_*returns from a counter read (lifecycle vs. device-doesn't-support-this-domain vs. per-domainAGAIN-means-snapshot-not-ready vs. permission / driver) and the per-read status reported back to the application. - Choosing between DOCA Telemetry (hardware-counter READER) and
an adjacent option:
doca-telemetry-exporterwhen the user actually wants to PUBLISH / EXPORT the counter values (OTLP / Prometheus / labeled metrics);doca-logwhen plain structured stdout logging is enough; a generic Prometheus / OpenTelemetry client library when the counter source is a non-DOCA program; the externally- productized DOCA Telemetry Service (DTS, out of scope) when the user wants a turnkey aggregator. - Designing or extending non-C bindings (Rust, Go, Python, …)
that wrap the per-domain reader C ABI — for the reader-vs-
exporter distinction, the per-domain cap-query-first rule,
the per-domain
doca_devlifecycle, the sample-window discipline, and the error rules the wrapper must honor.
Do not load this skill for general DOCA orientation, install
of DOCA itself, the publishing / export side
(doca-telemetry-exporter
has its own skill), the externally-productized DOCA Telemetry
Service (DTS — out of scope), or non-reader library questions.
For those, use
doca-public-knowledge-map.
What this skill provides
This is a thin loader. The body keeps only the orientation needed to pick the right next file. The substantive hardware-counter-reader material lives in two companion files:
CAPABILITIES.md— what the per-domain readers can express on this install: the reader-vs-exporter role-split rule, the six shipped sub-libraries (doca_telemetry_pcc/_dpa/_diag/_adp_retx/_phy/_pci) and which counter family each one exposes, the per-domain DOCA Core lifecycle on adoca_dev, the domain-level capability query for PCC / DPA / DIAG / ADP_RETX / PHY and the per-feature capability queries for PCI, the reader error taxonomy (mapped onto the cross-libraryDOCA_ERROR_*set, with theNOT_SUPPORTED-means-domain- not-exposed-on-this-device rule and theAGAIN-means- snapshot-not-ready rule called out explicitly), the observability surface (per-read status + per-domain cap- query snapshot at configure time), the safety policy that gates per-domain reads behind the cap-query result, and the path-selection rule againstdoca-telemetry-exporter,doca-log, and standalone Prometheus / OpenTelemetry / DTS.TASKS.md— step-by-step workflows for the six in-scope reader verbs:configure,build,modify,run,test,debug. Plus aDeferred task verbsblock that points out-of-scope questions at the right next skill.
The skill assumes a host where DOCA is already installed at
the standard location and a target BlueField DPU or ConnectX NIC
is available. The TASKS.md ## run workflow
opens the corresponding doca_dev and requires the per-domain
cap-query to return DOCA_SUCCESS. It does not cover installing
DOCA — that path goes through
doca-setup — and it does not
cover writing the publishing / export side, which is
doca-telemetry-exporter.
Loading order
- Read this
SKILL.mdfirst to confirm the user's question is in scope (specifically, that the user wants to READ a per-domain hardware counter via the per-domain reader API on adoca_dev— not PUBLISH counters, which isdoca-telemetry-exporter; not deploy DTS, which is out of scope; and not stand up a NetFlow / IPFIX collector, which this library does not expose a surface for). - For the reader-vs-exporter rule, the six per-domain
sub-libraries, the per-domain DOCA Core lifecycle on a
doca_dev, the per-domain capability query, the error taxonomy (including theNOT_SUPPORTED-means-domain- not-exposed-on-this-device rule and theAGAIN-means- snapshot-not-ready rule), observability, the safety policy, and the path-selection rule, see CAPABILITIES.md. - For step-by-step workflows — configure, build, modify, run, test, debug — see TASKS.md.
Both companion files cross-link to each other,
doca-version for the canonical
version-handling rules, and
doca-public-knowledge-map
whenever the right answer is "look it up in the public docs or
the installed package layout" rather than "reader-specific
guidance".
Example questions this skill answers well
What this skill deliberately does not ship
Related skills
Frequently asked questions about DOCA Telemetry
Similar skills
WinMD API Search
Easily find and explore Windows desktop APIs.
WebMCPify
Transform any web app into an agent-ready platform.
Phoenix Tracing
Instrument LLM applications with OpenInference tracing.
Foundry Hosted Agent CopilotKit
Guidance for developing agentic web apps on Azure.
Power Automate Foundation
Connect AI agents to Power Automate seamlessly.
Power Automate Flow Builder
Efficiently build and deploy Power Automate flows programmatically.
