DOCA Flow Tune (doca_flow_tune)
Subcommand surface correction (Run-12, verified Run-13
against doca/tools/flow_tune/src/tune/common/tune_config.cpp).
doca_flow_tune is a single binary whose role on a given
invocation is determined by which of five top-level
subcommands the user picks — dump, monitor, web,
analyze, visualize (case-insensitive on the CLI;
uppercased in this skill for readability). All five names
are registered via doca_argp_cmd_set_name(...) in
tune_config.cpp (lines 1799 / 1860 / 1896 / 2074 / 2111);
analyze further accepts import / export / packet_trace
/ sim_timing sub-subcommands. The dump / monitor / web
subcommands run the binary in server-attached online mode
against a live doca-flow application reached over a Unix-
domain socket whose path lives in network.server_uds of the
shipped flow_tune_cfg*.json; the analyze / visualize
subcommands run in offline / captured-snapshot mode against
JSON / CSV files the online modes previously dropped into the
configured outputs_directory. The rest of this skill (and
CAPABILITIES.md / TASKS.md)
uses the legacy "server role / online mode / offline mode"
framing — that framing is internally consistent with the
subcommand surface here: server role = a server-attached
online subcommand (dump/monitor/web); online mode =
any of dump/monitor/web; offline mode =
analyze/visualize. Treat the subcommand name as the
primary handle; treat server/online/offline as the
downstream behavioral consequence of the subcommand pick.
Where to start: This is a tool skill for invoking doca_flow_tune,
the unified DOCA Flow tuning tool. Open TASKS.md and
start at ## configure to commit to the
three-axis decision (target Flow pipeline × tuning axis ×
measurement) and pick offline vs online vs server-attach mode, then
## run for the snapshot → analyze → visualize
loop, then ## test for the smoke-before-bulk
overlay that gates any state-changing application of a tuning
recommendation back into the Flow application's code. Open
CAPABILITIES.md when the question is what
state doca_flow_tune can observe and recommend on, how its
server / client roles fit inside the single artifact, which DOCA
version the tool ships in, or how to interpret the dumper / monitor
/ analyze / visualize outputs without fooling yourself. If DOCA is
not installed, route to
doca-setup first; if the user has
no running doca-flow application yet, route to
doca-flow — flow-tune does not
create pipes, it observes and recommends on top of pipes the
library already created.
Example questions this skill answers well
The CLASSES of doca_flow_tune questions this skill is built to
answer, each with one worked example. The class is the load-bearing
piece; the worked example is one instance.
- "Should I reach for
doca-flow-tune or doca-flow-perf for
this question?" — worked example: "my doca-flow service runs
on a BlueField-3 and I think the rule-install rate is below what
the device can sustain; do I measure first or tune first?".
Answered by the tune vs perf boundary in
CAPABILITIES.md ## Capabilities and modes
and the routing into
doca-flow-perf for baselines vs
this skill for optimization on top of a measured baseline.
- "Capture a snapshot of a live
doca-flow pipeline's hardware
and software counters without touching the dataplane." — worked
example: "I want a side-effect-free dumper / monitor run against
the running Flow ports for an operations-rate profile". Answered
by the snapshot flow in
TASKS.md ## run plus the read-only-by-default
posture in
CAPABILITIES.md ## Safety policy.
- "Pick the right tuning axis — rule placement, resource hints,
or hardware-offload mode — for the question I actually have."
— worked example: "my Flow pipe's rule-install rate is low; is
this a placement question or a table-sizing question?". Answered
by the three-axis configuration in
CAPABILITIES.md ## Capabilities and modes
- the configure walk in
TASKS.md ## configure.
- "How do
doca_flow_tune's server role and client / consumer
role fit together inside the single artifact?" — worked
example: "I keep reading about a Flow Tune server and a Flow
Tune client; which binary am I running?". Answered by the
one binary, two roles breakdown in
CAPABILITIES.md ## Capabilities and modes
and the corresponding routing in
TASKS.md ## configure.
- "How do I take a recommended parameter change from flow-tune
back into my doca-flow application without breaking the
dataplane?" — worked example: "the analyze step suggests a
different table sizing for my pipe; how do I apply it?".
Answered by the recommendation → minimum-diff modification of
the Flow program loop in
TASKS.md ## modify and the
smoke-before-bulk rule in
TASKS.md ## test.
- "
doca_flow_tune reports nothing / disagrees with the Flow
app / cannot attach — what does that mean?" — worked example:
"the tool runs but the visualize step produces an empty
mermaid diagram". Answered by the layered error taxonomy in
CAPABILITIES.md ## Error taxonomy
Audience
This skill serves external operators, performance engineers,
DOCA Flow application developers, and AI agents who need to
understand, characterize, or improve a running doca-flow
pipeline's behavior on the user's actual install and device.
Concretely:
- A platform operator running a
doca-flow service on BlueField
who wants a read-only snapshot of which pipes exist and how
their hardware / software counters are progressing before
recommending any change.
- A performance engineer who already has a
doca-flow-perf
baseline number and wants to turn the measurement into an
optimization — pick a tuning axis and identify which knob in
the doca-flow program is the lever for it.
- A DOCA Flow application developer who wants the offline analyze
- visualize loop to understand a pipe layout without
re-instrumenting the Flow program.
- An AI agent driving the "is this Flow pipeline behaving as
expected, and would a non-mutating tuning hint help" triage
step before recommending any code change to the Flow program.
It is not for users debugging the doca_flow_tune source code,
not a substitute for the live public DOCA Flow Tune guide on
docs.nvidia.com, not the right place to learn the
doca-flow API (that audience belongs in
doca-flow), and not the
right place for baseline measurement methodology — that belongs
to doca-flow-perf.
doca_flow_tune is shipped as a single tool (one binary plus
its companion analyzer / visualizer scripts and JSON config
templates) — the historical server and client roles live
inside this one artifact, not in two separate executables. The
skill uses the same kind: tool three-file shape as the rest
of the bundle so the agent's task-verb contract
(configure / build / modify / run / test / debug) is uniform
across libraries, services, and tools.
Language scope
This skill governs invocation, output interpretation, and
recommendation-to-code-change routing for the C / C++ DOCA Flow
application that doca_flow_tune observes. The tool itself is
not a programming target — there is no public API the agent is
supposed to link against; what the agent and the user do with the
tool is configure JSON, run, read the outputs, propose minimum-
diff changes to the surrounding doca-flow program in the
program's own language. For the doca-flow API the
recommendations route back into, see
doca-flow CAPABILITIES.md;
for cross-language application patterns, see
doca-programming-guide.
When to load this skill
Load this skill when the user is — or the agent needs to — invoke
doca_flow_tune against a running or planned doca-flow
application (on host or BlueField Arm, or inside the public NGC
DOCA container with the matching Flow trace-build flavor) to
characterize, dump, visualize, analyze, or tune that pipeline.
Concretely:
- Picking which role of
doca_flow_tune to engage (offline
analyze / visualize on a captured config + state, online
dumper / monitor against the live Flow app, or attach-to-app
server-role usage when the Flow application links the
documented tune server entry points).
- Picking which tuning axis to ask about (rule placement,
resource hints / table sizing, or hardware-offload-mode) for a
candidate workload.
- Picking which measurement axis to compare against (rule-install
rate, lookup latency, hardware-counter delta) — the three are
not interchangeable and the chosen axis should be the same one a
prior
doca-flow-perf baseline named.
- Capturing a documented before / after pair around a proposed
Flow-program change (the documented JSON config file path, the
command line, the DOCA version, the device, the as-deployed
environment, the full unredacted dumper / analyzer / visualizer
output).
- Diagnosing why a tune session produced empty output, a
visualize step rendered a degenerate diagram, or an analyze
recommendation does not match what the live counters say.
Do not load this skill for general DOCA orientation, Flow
program API work, install, or pure measurement methodology.
For those, route to
doca-public-knowledge-map,
doca-flow,
doca-setup, or
doca-flow-perf.
What this skill provides
This is a thin loader. Substantive material lives in two
companion files:
CAPABILITIES.md — what doca_flow_tune observes and
recommends on: the unified-artifact decomposition (server role
- client / consumer role inside one binary), the three-axis
configuration model (tuning axis × measurement × scope: which
pipe / port / app), the documented offline / online / attach
modes, the JSON configuration-file shape (the publicly-shipped
flow_tune_cfg_public.json template plus its hardware-only and
software-only variants), the dumper / monitor / analyze /
visualize output surfaces, the version overlay (this tool rides
the doca-flow library version it observes; the canonical
rules live in doca-version),
the layered error taxonomy
(config-syntax / attach-failed / pipe-not-found /
measurement-unsound / recommendation-unactionable / version /
cross-cutting), the observability posture (the tool is an
observability primitive for the Flow pipeline), and the safety
policy that makes any mutating application of a recommendation
high-stakes because the recommendation lands in live Flow state.
TASKS.md — step-by-step workflows for the in-scope task verbs:
install (route to setup; the binary is shipped),
configure (the three-axis decision + JSON config + mode pick),
build (route to install; the binary is shipped), modify
(apply a recommendation back to the Flow program via minimum-
diff), run (the snapshot → analyze → visualize flow), test
(the eval loop — warm-up, steady-state, before / after pair,
client / server / Flow version match), debug (walk the error
taxonomy layer by layer), use (the agent-side workflow for
consuming flow-tune output), plus a Deferred task verbs block
and a Command appendix.
The skill assumes a host where DOCA is already installed (or the
public NGC DOCA container is running) and a doca-flow
application is already created and validated per the
doca-flow skill. Without those
preconditions, the tune session has nothing to observe.
What this skill deliberately does not ship
This skill is agent guidance, not a samples or scripts bundle.
To keep the boundary clean, it deliberately does not contain —
and pull requests should not add:
- Verbatim flag inventories, subcommand names, JSON config field
names, or default endpoint paths quoted as the contract. The
public DOCA Flow Tune guide on
docs.nvidia.com (reached via
doca-public-knowledge-map ## DOCA tools)
and the installed --help on the user's version are the joint
source of truth; the shipped flow_tune_cfg*.json templates on
the user's install are the second source for the JSON schema.
Copying them here pins the skill to one release and silently
rots when the tool evolves.
- Pre-baked example output (dumper CSV columns, analyzer JSON
field names, visualizer mermaid output). Output is install-,
device-, firmware-, NUMA-, Flow-pipe-, and DOCA-version-specific;
a captured example pinned to one platform misleads operators on
a different platform / version.
- Wrappers, parsers, or scripts in any language that consume
flow-tune output. The output formats are documented and the
shipped
scripts/ directory on the user's install contains
vendor-provided helpers (e.g. flow_json_diff.py,
flow_mermaid_diff.py, hw_counters_csv_analyzer.py); if a
user wants to script against the outputs, the right answer is
"read the shipped scripts on your installed version".
- Pre-baked tuning recommendations. Recommendations from this
tool are install-, device-, firmware-, and workload-specific;
shipping one for "hairpin pipes" or "NAT pipes" misleads
operators applying it to a different pipe. The agent always
re-derives the recommendation from the user's actual session.
- A
samples/, templates/, or reference/ subtree. Mock or
incomplete tuning recipes in this skill's tree are misleading;
operators read them as production-grade.
Loading order
- Read this
SKILL.md first to confirm the user's question is
in scope (the user actually wants to invoke doca_flow_tune
against a doca-flow pipeline, not measure baseline perf or
learn the Flow API).
- For what
doca_flow_tune observes, the one-binary / two-role
decomposition, the three-axis model, the version overlay, the
error taxonomy, observability surface, and safety posture,
see CAPABILITIES.md.
- For the documented invocations and the snapshot → analyze →
visualize → propose → smoke workflow —
install, configure,
build, modify, run, test, debug, use — see
TASKS.md.
Related skills
doca-flow — the base
library whose pipeline this tool observes and tunes. The
pipe / entry / rule surface flow-tune reports on is created by
doca-flow program code; recommendations route back into that
program via the universal modify-a-sample workflow.
doca-flow-perf — the sibling
measurement tool. The rule is: doca-flow-perf measures
baselines; doca-flow-tune recommends optimizations on top.
An agent that reaches for tune without a baseline number from
perf is optimizing in the dark; an agent that reaches for perf
without a question is benchmarking for the sake of it.
doca-flow-dpa-perf — the
DPA-offloaded variant of Flow perf. Relevant when the Flow
pipeline the user is tuning runs through a DPA-offload path;
the baseline comes from there, not from host-side
doca-flow-perf.
doca-flow-grpc-server —
the remote-control gRPC surface for doca-flow. Programmatic
Flow rule management lives there; flow-tune's recommendations
may be applied through that surface when the operator's
control plane is remote.
doca-public-knowledge-map
— routing to the public DOCA Flow Tune page on docs.nvidia.com
and the rest of the public DOCA documentation set.
doca-version — the canonical
version-detection chain, four-way match, NGC semantics, and
headers-win-over-docs rule. The
## Version compatibility
overlay in this skill is a thin extension on top.
doca-debug — the cross-cutting
debug ladder. Flow-tune surfaces its own error taxonomy; when
the cause turns out to be below DOCA (driver, firmware, NUMA),
the tune taxonomy hands off to doca-debug.
doca-structured-tools-contract
— the bundle's detect → prefer → fall back → report contract.
The Command appendix in TASKS.md honors it.
doca-setup — env preparation,
install verification, hugepages, NUMA, and the I have no
install yet path with the public NGC DOCA container.
doca-hardware-safety —
the cross-cutting hardware-safety meta-policy this skill's
## Safety policy overlays.
1---2name: doca-flow-tune3description: Use this skill when the user is tuning a live or captured `doca-flow` pipeline with `doca_flow_tune` — snapshotting pipe / counter / KPI state, picking a tuning axis (rule placement, resource hints / table sizing, HW-offload mode) and a matching measurement (rule-install rate, lookup latency, hardware-counter delta), running offline or online (read-only or state-changing) modes, reading the dumper CSV / analyze JSON / visualize mermaid, or applying a recommendation back into the Flow program. Trigger even when the user does not explicitly mention "doca_flow_tune" — typical implicit phrasings include "Flow rule-install rate is low on BlueField", "table sizing looks wrong for this pipe", "tune visualize step is empty", "before/after counters don't move", or "which doca-flow knob does this recommendation hit". Refuse and route elsewhere for measuring baseline numbers (doca-flow-perf, doca-flow-dpa-perf), writing the doca-flow application, DOCA install, or streaming Flow telemetry — those belong to other skills.4license: Apache-2.05---67# DOCA Flow Tune (`doca_flow_tune`)89> **Subcommand surface correction (Run-12, verified Run-1310> against doca/tools/flow_tune/src/tune/common/tune_config.cpp).**11> `doca_flow_tune` is a single binary whose **role on a given12> invocation is determined by which of five top-level13> subcommands** the user picks — `dump`, `monitor`, `web`,14> `analyze`, `visualize` (case-insensitive on the CLI;15> uppercased in this skill for readability). All five names16> are registered via `doca_argp_cmd_set_name(...)` in17> `tune_config.cpp` (lines 1799 / 1860 / 1896 / 2074 / 2111);18> `analyze` further accepts `import` / `export` / `packet_trace`19> / `sim_timing` sub-subcommands. The `dump` / `monitor` / `web`20> subcommands run the binary in **server-attached online mode**21> against a live `doca-flow` application reached over a Unix-22> domain socket whose path lives in `network.server_uds` of the23> shipped `flow_tune_cfg*.json`; the `analyze` / `visualize`24> subcommands run in **offline / captured-snapshot mode** against25> JSON / CSV files the online modes previously dropped into the26> configured `outputs_directory`. The rest of this skill (and27> [`CAPABILITIES.md`](CAPABILITIES.md) / [`TASKS.md`](TASKS.md))28> uses the legacy *"server role / online mode / offline mode"*29> framing — that framing is internally consistent with the30> subcommand surface here: *server role* = a server-attached31> online subcommand (`dump`/`monitor`/`web`); *online mode* =32> any of `dump`/`monitor`/`web`; *offline mode* =33> `analyze`/`visualize`. Treat the subcommand name as the34> primary handle; treat *server/online/offline* as the35> downstream behavioral consequence of the subcommand pick.3637**Where to start:** This is a tool skill for invoking `doca_flow_tune`,38the unified DOCA Flow tuning tool. Open [`TASKS.md`](TASKS.md) and39start at [`## configure`](TASKS.md#configure) to commit to the40three-axis decision (target Flow pipeline × tuning axis ×41measurement) and pick offline vs online vs server-attach mode, then42[`## run`](TASKS.md#run) for the snapshot → analyze → visualize43loop, then [`## test`](TASKS.md#test) for the smoke-before-bulk44overlay that gates any state-changing application of a tuning45recommendation back into the Flow application's code. Open46[`CAPABILITIES.md`](CAPABILITIES.md) when the question is *what47state `doca_flow_tune` can observe and recommend on*, *how its48server / client roles fit inside the single artifact*, *which DOCA49version the tool ships in*, or *how to interpret the dumper / monitor50/ analyze / visualize outputs without fooling yourself*. If DOCA is51not installed, route to52[`doca-setup`](../../doca-setup/SKILL.md) first; if the user has53no running `doca-flow` application yet, route to54[`doca-flow`](../../libs/doca-flow/SKILL.md) — flow-tune does not55create pipes, it observes and recommends on top of pipes the56library already created.5758## Example questions this skill answers well5960The CLASSES of `doca_flow_tune` questions this skill is built to61answer, each with one worked example. The class is the load-bearing62piece; the worked example is one instance.6364- **"Should I reach for `doca-flow-tune` or `doca-flow-perf` for65 this question?"** — worked example: *"my doca-flow service runs66 on a BlueField-3 and I think the rule-install rate is below what67 the device can sustain; do I measure first or tune first?"*.68 Answered by the *tune vs perf* boundary in69 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)70 and the routing into71 [`doca-flow-perf`](../doca-flow-perf/SKILL.md) for baselines vs72 this skill for optimization on top of a measured baseline.73- **"Capture a snapshot of a live `doca-flow` pipeline's hardware74 and software counters without touching the dataplane."** — worked75 example: *"I want a side-effect-free dumper / monitor run against76 the running Flow ports for an operations-rate profile"*. Answered77 by the snapshot flow in78 [`TASKS.md ## run`](TASKS.md#run) plus the read-only-by-default79 posture in80 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy).81- **"Pick the right tuning axis — rule placement, resource hints,82 or hardware-offload mode — for the question I actually have."**83 — worked example: *"my Flow pipe's rule-install rate is low; is84 this a placement question or a table-sizing question?"*. Answered85 by the three-axis configuration in86 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)87 + the configure walk in88 [`TASKS.md ## configure`](TASKS.md#configure).89- **"How do `doca_flow_tune`'s server role and client / consumer90 role fit together inside the single artifact?"** — worked91 example: *"I keep reading about a Flow Tune server and a Flow92 Tune client; which binary am I running?"*. Answered by the93 *one binary, two roles* breakdown in94 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)95 and the corresponding routing in96 [`TASKS.md ## configure`](TASKS.md#configure).97- **"How do I take a recommended parameter change from flow-tune98 back into my doca-flow application without breaking the99 dataplane?"** — worked example: *"the analyze step suggests a100 different table sizing for my pipe; how do I apply it?"*.101 Answered by the *recommendation → minimum-diff modification of102 the Flow program* loop in103 [`TASKS.md ## modify`](TASKS.md#modify) and the104 smoke-before-bulk rule in105 [`TASKS.md ## test`](TASKS.md#test).106- **"`doca_flow_tune` reports nothing / disagrees with the Flow107 app / cannot attach — what does that mean?"** — worked example:108 *"the tool runs but the visualize step produces an empty109 mermaid diagram"*. Answered by the layered error taxonomy in110 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)111 + [`TASKS.md ## debug`](TASKS.md#debug).112113## Audience114115This skill serves **external operators, performance engineers,116DOCA Flow application developers, and AI agents who need to117understand, characterize, or improve a running `doca-flow`118pipeline's behavior on the user's actual install and device**.119Concretely:120121- A platform operator running a `doca-flow` service on BlueField122 who wants a read-only snapshot of which pipes exist and how123 their hardware / software counters are progressing before124 recommending any change.125- A performance engineer who already has a `doca-flow-perf`126 baseline number and wants to turn the *measurement* into an127 *optimization* — pick a tuning axis and identify which knob in128 the doca-flow program is the lever for it.129- A DOCA Flow application developer who wants the offline analyze130 + visualize loop to understand a pipe layout without131 re-instrumenting the Flow program.132- An AI agent driving the *"is this Flow pipeline behaving as133 expected, and would a non-mutating tuning hint help"* triage134 step before recommending any code change to the Flow program.135136It is **not** for users debugging the `doca_flow_tune` source code,137**not** a substitute for the live public DOCA Flow Tune guide on138`docs.nvidia.com`, **not** the right place to learn the139`doca-flow` API (that audience belongs in140[`doca-flow`](../../libs/doca-flow/SKILL.md)), and **not** the141right place for baseline *measurement* methodology — that belongs142to [`doca-flow-perf`](../doca-flow-perf/SKILL.md).143144`doca_flow_tune` is shipped as a **single tool** (one binary plus145its companion analyzer / visualizer scripts and JSON config146templates) — the historical *server* and *client* roles live147inside this one artifact, not in two separate executables. The148skill uses the same `kind: tool` three-file shape as the rest149of the bundle so the agent's task-verb contract150(`configure / build / modify / run / test / debug`) is uniform151across libraries, services, and tools.152153## Language scope154155This skill governs invocation, output interpretation, and156recommendation-to-code-change routing for the C / C++ DOCA Flow157application that `doca_flow_tune` observes. The tool itself is158not a programming target — there is no public API the agent is159supposed to link against; what the agent and the user do with the160tool is *configure JSON, run, read the outputs, propose minimum-161diff changes to the surrounding `doca-flow` program in the162program's own language*. For the `doca-flow` API the163recommendations route back into, see164[`doca-flow CAPABILITIES.md`](../../libs/doca-flow/CAPABILITIES.md);165for cross-language application patterns, see166[`doca-programming-guide`](../../doca-programming-guide/SKILL.md).167168## When to load this skill169170Load this skill when the user is — or the agent needs to — invoke171`doca_flow_tune` against a running or planned `doca-flow`172application (on host or BlueField Arm, or inside the public NGC173DOCA container with the matching Flow trace-build flavor) to174characterize, dump, visualize, analyze, or tune that pipeline.175Concretely:176177- Picking *which* role of `doca_flow_tune` to engage (offline178 analyze / visualize on a captured config + state, online179 dumper / monitor against the live Flow app, or attach-to-app180 server-role usage when the Flow application links the181 documented tune server entry points).182- Picking *which* tuning axis to ask about (rule placement,183 resource hints / table sizing, or hardware-offload-mode) for a184 candidate workload.185- Picking *which* measurement axis to compare against (rule-install186 rate, lookup latency, hardware-counter delta) — the three are187 not interchangeable and the chosen axis should be the same one a188 prior `doca-flow-perf` baseline named.189- Capturing a documented before / after pair around a proposed190 Flow-program change (the documented JSON config file path, the191 command line, the DOCA version, the device, the as-deployed192 environment, the full unredacted dumper / analyzer / visualizer193 output).194- Diagnosing why a tune session produced empty output, a195 visualize step rendered a degenerate diagram, or an analyze196 recommendation does not match what the live counters say.197198Do **not** load this skill for general DOCA orientation, Flow199program API work, install, or pure measurement methodology.200For those, route to201[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md),202[`doca-flow`](../../libs/doca-flow/SKILL.md),203[`doca-setup`](../../doca-setup/SKILL.md), or204[`doca-flow-perf`](../doca-flow-perf/SKILL.md).205206## What this skill provides207208This is a **thin loader**. Substantive material lives in two209companion files:210211- `CAPABILITIES.md` — what `doca_flow_tune` observes and212 recommends on: the unified-artifact decomposition (server role213 + client / consumer role inside one binary), the three-axis214 configuration model (tuning axis × measurement × scope: which215 pipe / port / app), the documented offline / online / attach216 modes, the JSON configuration-file shape (the publicly-shipped217 `flow_tune_cfg_public.json` template plus its hardware-only and218 software-only variants), the dumper / monitor / analyze /219 visualize output surfaces, the version overlay (this tool rides220 the `doca-flow` library version it observes; the canonical221 rules live in [`doca-version`](../../doca-version/SKILL.md)),222 the layered error taxonomy223 (config-syntax / attach-failed / pipe-not-found /224 measurement-unsound / recommendation-unactionable / version /225 cross-cutting), the observability posture (the tool *is* an226 observability primitive for the Flow pipeline), and the safety227 policy that makes any mutating application of a recommendation228 high-stakes because the recommendation lands in live Flow state.229- `TASKS.md` — step-by-step workflows for the in-scope task verbs:230 `install` (route to setup; the binary is shipped),231 `configure` (the three-axis decision + JSON config + mode pick),232 `build` (route to install; the binary is shipped), `modify`233 (apply a recommendation back to the Flow program via minimum-234 diff), `run` (the snapshot → analyze → visualize flow), `test`235 (the eval loop — warm-up, steady-state, before / after pair,236 client / server / Flow version match), `debug` (walk the error237 taxonomy layer by layer), `use` (the agent-side workflow for238 consuming flow-tune output), plus a `Deferred task verbs` block239 and a `Command appendix`.240241The skill assumes a host where DOCA is already installed (or the242public NGC DOCA container is running) and a `doca-flow`243application is already created and validated per the244[`doca-flow`](../../libs/doca-flow/SKILL.md) skill. Without those245preconditions, the tune session has nothing to observe.246247## What this skill deliberately does not ship248249This skill is **agent guidance**, not a samples or scripts bundle.250To keep the boundary clean, it deliberately does not contain —251and pull requests should not add:252253- **Verbatim flag inventories, subcommand names, JSON config field254 names, or default endpoint paths quoted as the contract.** The255 public DOCA Flow Tune guide on `docs.nvidia.com` (reached via256 [`doca-public-knowledge-map ## DOCA tools`](../../doca-public-knowledge-map/SKILL.md#doca-tools))257 and the installed `--help` on the user's version are the joint258 source of truth; the shipped `flow_tune_cfg*.json` templates on259 the user's install are the second source for the JSON schema.260 Copying them here pins the skill to one release and silently261 rots when the tool evolves.262- **Pre-baked example output (dumper CSV columns, analyzer JSON263 field names, visualizer mermaid output).** Output is install-,264 device-, firmware-, NUMA-, Flow-pipe-, and DOCA-version-specific;265 a captured example pinned to one platform misleads operators on266 a different platform / version.267- **Wrappers, parsers, or scripts** in any language that consume268 flow-tune output. The output formats are documented and the269 shipped `scripts/` directory on the user's install contains270 vendor-provided helpers (e.g. `flow_json_diff.py`,271 `flow_mermaid_diff.py`, `hw_counters_csv_analyzer.py`); if a272 user wants to script against the outputs, the right answer is273 *"read the shipped scripts on your installed version"*.274- **Pre-baked tuning recommendations.** Recommendations from this275 tool are install-, device-, firmware-, and workload-specific;276 shipping one for *"hairpin pipes"* or *"NAT pipes"* misleads277 operators applying it to a different pipe. The agent always278 re-derives the recommendation from the user's actual session.279- **A `samples/`, `templates/`, or `reference/` subtree.** Mock or280 incomplete tuning recipes in this skill's tree are misleading;281 operators read them as production-grade.282283## Loading order2842851. Read this `SKILL.md` first to confirm the user's question is286 in scope (the user actually wants to invoke `doca_flow_tune`287 against a `doca-flow` pipeline, not measure baseline perf or288 learn the Flow API).2892. **For what `doca_flow_tune` observes, the one-binary / two-role290 decomposition, the three-axis model, the version overlay, the291 error taxonomy, observability surface, and safety posture,292 see [CAPABILITIES.md](CAPABILITIES.md).**2933. **For the documented invocations and the snapshot → analyze →294 visualize → propose → smoke workflow — `install`, `configure`,295 `build`, `modify`, `run`, `test`, `debug`, `use` — see296 [TASKS.md](TASKS.md).**297298## Related skills299300- [`doca-flow`](../../libs/doca-flow/SKILL.md) — the **base301 library** whose pipeline this tool observes and tunes. The302 pipe / entry / rule surface flow-tune reports on is created by303 `doca-flow` program code; recommendations route back into that304 program via the universal modify-a-sample workflow.305- [`doca-flow-perf`](../doca-flow-perf/SKILL.md) — the sibling306 *measurement* tool. The rule is: `doca-flow-perf` measures307 baselines; `doca-flow-tune` recommends optimizations on top.308 An agent that reaches for tune without a baseline number from309 perf is optimizing in the dark; an agent that reaches for perf310 without a question is benchmarking for the sake of it.311- [`doca-flow-dpa-perf`](../doca-flow-dpa-perf/SKILL.md) — the312 DPA-offloaded variant of Flow perf. Relevant when the Flow313 pipeline the user is tuning runs through a DPA-offload path;314 the baseline comes from there, not from host-side315 `doca-flow-perf`.316- [`doca-flow-grpc-server`](../doca-flow-grpc-server/SKILL.md) —317 the remote-control gRPC surface for `doca-flow`. Programmatic318 Flow rule management lives there; flow-tune's recommendations319 may be applied through that surface when the operator's320 control plane is remote.321- [`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md)322 — routing to the public DOCA Flow Tune page on `docs.nvidia.com`323 and the rest of the public DOCA documentation set.324- [`doca-version`](../../doca-version/SKILL.md) — the canonical325 version-detection chain, four-way match, NGC semantics, and326 headers-win-over-docs rule. The327 [`## Version compatibility`](CAPABILITIES.md#version-compatibility)328 overlay in this skill is a thin extension on top.329- [`doca-debug`](../../doca-debug/SKILL.md) — the cross-cutting330 debug ladder. Flow-tune surfaces *its own* error taxonomy; when331 the cause turns out to be below DOCA (driver, firmware, NUMA),332 the tune taxonomy hands off to `doca-debug`.333- [`doca-structured-tools-contract`](../../doca-structured-tools-contract/SKILL.md)334 — the bundle's detect → prefer → fall back → report contract.335 The Command appendix in [`TASKS.md`](TASKS.md) honors it.336- [`doca-setup`](../../doca-setup/SKILL.md) — env preparation,337 install verification, hugepages, NUMA, and the *I have no338 install yet* path with the public NGC DOCA container.339- [`doca-hardware-safety`](../../doca-hardware-safety/SKILL.md) —340 the cross-cutting hardware-safety meta-policy this skill's341 `## Safety policy` overlays.