DOCA Flow Perf (doca_flow_perf)
Where to start: This is a tool skill for invoking
doca_flow_perf, the host-side / DPU-CPU-side DOCA Flow
performance measurement tool. Open TASKS.md and
start at ## configure to commit to
the three-axis decision (target Flow pipeline shape × traffic
class × measurement axis) and pick the JSON policy file that
expresses the workload, then ## run for the
single-iteration smoke, then ## test for
the iterative eval loop that produces a defensible
Kops/sec-class number. Open CAPABILITIES.md
when the question is what doca_flow_perf measures and what
it deliberately does not measure, how its DPDK and DOCA
backends differ behind the same JSON contract, how to
interpret the per-iteration CPU-cycle output, or how it
differs from doca-flow-tune (measurement vs. optimization)
and doca-flow-dpa-perf (host / DPU-CPU vs. DPA-offloaded
path). If DOCA is not installed, route to
doca-setup first; if the
target measurement is the DPA-offloaded path, route to
doca-flow-dpa-perf
instead; if the goal is to optimize an already-deployed Flow
pipeline rather than measure a synthetic one, route to
doca-flow-tune — flow-perf
is a synthetic-driver microbenchmark, not a tuner of a live
Flow application.
Example questions this skill answers well
- "I want a defensible host-side baseline number for how
many
doca-flow rules per second a single BlueField-3 can
insert for a 5-tuple match-and-hairpin workload. Which
policy JSON do I start from, how do I make the result
reproducible, and what do I have to capture alongside the
number for it to be defensible?" — class-shaped flow-perf
baseline question; the agent walks the configs/ library,
the JSON contract, and the four-tuple capture rule.
- "What is the difference between
doca-flow-perf,
doca-flow-dpa-perf, and doca-flow-tune? They all
mention doca-flow and perf in their names — when do I
reach for each?" — measurement-vs-optimization plus
host-vs-DPA-path; the agent surfaces the boundaries.
- "My policy JSON looks like the example, but the reported
Kops/sec is dramatically lower than the published numbers I
see in NVIDIA's release notes. What variables do I have to
control before I can trust the comparison?" — methodology
question; the agent walks the controllable axes (number of
workers, queue depth, burst size, fixed-vs-incremented match
fields, DPDK vs DOCA backend, BlueField mode, driver /
firmware).
- "I have a workload that does not match any of the shipped
policy JSONs in
configs/. How do I author a new policy
JSON, what is the JSON schema in broad strokes, and what
changes when I switch a match field from mode: fixed to
mode: increase?" — JSON authoring question; the agent
walks the shipped configs as exemplars and refuses to
invent schema fields not present in the source tree.
- "What does the tool actually NOT measure? I am trying to
understand whether a flow-perf number tells me anything
about end-to-end traffic latency or just about the
rule-programming control-plane rate." — methodology
perimeter question; the agent draws a hard line: this tool
measures rule install / delete (control-plane) rate plus
optional query rate, NOT dataplane latency, NOT dataplane
throughput, NOT end-to-end application performance.
- "I see two backends — DPDK and DOCA — behind the same
JSON. When do I pick which, and what does the choice mean
for the result I report?" — backend choice question; the
agent walks the DPDK-backend vs. DOCA-backend trade-off and
insists the operator REPORT which one they used.
Audience
Experienced AI agents and platform / network engineers who
are comfortable with the doca-flow programming model and
the DPDK control-plane, who want a defensible number for
the host-side / DPU-CPU-side Flow rule-install / rule-delete
rate. Readers are expected to know that the published
numbers in NVIDIA release notes are run with very specific
preconditions (specific DOCA version, specific BlueField
firmware, specific traffic class) and that any number they
produce locally must explicitly state those preconditions.
This skill is NOT for:
- operators who want to optimize an already-deployed
doca-flow application — that is
doca-flow-tune;
- operators measuring the DPA-offloaded Flow path — that is
doca-flow-dpa-perf;
- operators measuring end-to-end dataplane throughput or
latency — that is the application's responsibility,
layered on
doca-flow;
- contributors authoring or modifying the tool itself.
Language scope
User interaction with doca_flow_perf is via:
- The shipped binary's command-line flags (documented by
doca_flow_perf --help and the public DOCA Flow Perf
guide on docs.nvidia.com).
- A JSON policy file describing the pipeline (ports, pipes,
matchers, actions, forwarding). The shipped
configs/
directory contains canned policies for the most common
traffic classes; new policies are authored by copying and
editing one of those.
- The tool's per-iteration output (CPU cycles per iteration,
number-processed, number-failed; reported via the tool's
stdout — the exact format is the public guide and the
binary's runtime output, NOT this skill's invention).
The skill itself is Markdown. There is no programmatic API on
top of doca_flow_perf; consumers of its results read its
stdout / captured logs.
When to load this skill
Load doca-flow-perf when ANY of the following is true:
- the user mentions
doca_flow_perf, doca-flow-perf, the
configs/ JSON library, or asks for a "host-side flow
rules per second" number;
- the user wants to baseline an underlying Flow path (not
optimize a live application);
- the user is comparing host-side / DPU-CPU-side Flow
performance across DOCA releases, BlueField generations,
or firmware versions;
- the user wants to design a new traffic class JSON and
needs to know which canned
configs/ JSON to start from
and which fields they can change.
Co-load this skill with:
doca-flow (the
underlying library; flow-perf programs the same
matchers / actions / pipes the library exposes);
doca-flow-tune (the
measurement-vs-optimization distinction is the most
common confusion);
doca-flow-dpa-perf
(the host-vs-DPA-path distinction is the second most
common confusion);
doca-version (the
four-way version match every reported flow-perf number
must carry);
doca-debug and
doca-setup for the
env-side debug ladder.
Do NOT load this skill when the user wants to optimize a live
Flow application (route to
doca-flow-tune) or measure
the DPA-offloaded path (route to
doca-flow-dpa-perf).
What this skill provides
Three companion files in this directory, each owning a
different question shape:
SKILL.md — this file. Audience, scope,
loading order, related skills. Routes everything else.
CAPABILITIES.md — what
doca_flow_perf is, what it measures, what it
deliberately doesn't measure, the DPDK-vs-DOCA backend
duality, the JSON contract surface, the per-iteration
output interpretation, version compatibility (versioned
with doca-flow and doca-version), the layered error
taxonomy, observability, and the safety policy overlay.
TASKS.md — the procedural verbs (configure,
run, test, debug, etc.) plus a doca_flow_perf-
specific command appendix and the agent-side use
workflow that consumes the captured per-iteration output.
The combined skill teaches an AI agent to drive the
measurement-class of doca_flow_perf questions: pick a
shipped or author-new policy JSON, run the single-iteration
smoke, run the iterative eval loop, capture the four-tuple
that makes the resulting number defensible, interpret the
output, and route every adjacent question (tune the live
app, measure the DPA path, optimize the firmware) to the
right neighbouring skill.
What this skill deliberately does not ship
- End-to-end dataplane throughput or latency
measurement.
doca_flow_perf measures the
control-plane rate of programming rules, plus optional
per-entry query timing. It does NOT measure how fast
packets traverse the resulting rules in the dataplane.
That is the application's responsibility, layered on
doca-flow. The agent
must say this explicitly when the operator asks for "Flow
throughput".
- DPA-offloaded Flow path measurement. Route to
doca-flow-dpa-perf.
- Optimization of a deployed Flow application. Route to
doca-flow-tune. flow-perf
is a synthetic driver of a JSON-described pipeline, not a
tuner of a live one.
- A canonical "right answer" Kops/sec number. The agent
refuses to quote published numbers from memory as
authoritative; the published numbers live in NVIDIA's
release notes per the DOCA version and BlueField
generation, and the operator must reproduce on their own
exact preconditions before comparing.
- Invented JSON schema fields. The agent does NOT invent
policy JSON keys that are not present in the shipped
configs/ exemplars. If a key the operator wants is not
in any shipped exemplar, the agent says so and routes to
the public DOCA Flow Perf guide.
- Library-internal
doca-flow API explanations. The
underlying matchers and actions belong to
doca-flow; this skill
references them but does not duplicate the library's API
documentation.
- Cross-tool benchmarking apples-to-apples claims when
preconditions differ. Two flow-perf numbers from different
DOCA versions / BlueField generations / firmware versions
are NOT directly comparable; the agent insists on the
four-tuple capture so consumers can judge.
Loading order
When a doca_flow_perf question arrives:
- Confirm DOCA is installed and the binary plus the
configs/ JSON library are reachable — if not, route to
doca-setup;
- Confirm the underlying
doca-flow library is healthy on
the device — if not, route to
doca-flow TASKS.md ## test;
- Confirm the user wants to measure, not optimize —
if optimize, route to
doca-flow-tune;
- Confirm the target path is host / DPU-CPU, not DPA — if
DPA, route to
doca-flow-dpa-perf;
- Read
CAPABILITIES.md to commit to
the three-axis decision (pipeline shape × traffic class ×
measurement axis);
- Read
TASKS.md and walk
## configure → ## run → ## test → ## debug in that
order; do NOT start with ## run without the
## configure precondition step.
Related skills
Cross-link conventions follow the bundle's relative path
contract from tools/<X>/:
doca-flow — the
underlying library. flow-perf programs Flow pipes, entries,
matchers, and actions; the library is the source of truth
for the API surface flow-perf exercises.
doca-flow-tune — the
unified Flow tuning tool. Measurement vs. optimization
boundary lives here. Ask: "do I want a number, or do I
want to change the deployed pipeline?"
doca-flow-dpa-perf —
the DPA-offloaded Flow performance tool. Host /
DPU-CPU vs. DPA path boundary lives here. Ask: "am I
measuring the path that executes on the CPU, or the path
that executes on the DPA processor?"
doca-version — every
reported flow-perf number must come with the four-way
match (host package, kernel module, firmware, target
application's linked doca-flow version) and the BlueField
/ ConnectX generation. flow-perf overlays this rule, not
contradicts it.
doca-setup — DOCA install
posture; routing for "is the binary even here?" questions.
doca-debug — the
cross-cutting debug ladder for env-side issues (driver,
firmware, BlueField mode, kernel module).
doca-bench — a peer
benchmarking tool with a broader scope (multiple DOCA
primitives, not just Flow). flow-perf is the Flow-specific
microbenchmark; doca-bench is the broader workload
benchmark.
doca-public-knowledge-map
— routing to the public docs.nvidia.com DOCA Flow Perf
page, release notes, and forums for release-specific
published numbers and reproducibility notes.
doca-structured-tools-contract
— the agent's detect → prefer → fall back → report contract
for the structured helpers (doca-env --json,
doca-capability-snapshot, version-matrix.json)
flow-perf preconditions rely on.
doca-hardware-safety
— the canonical hardware-safety meta-policy that
CAPABILITIES.md ## Safety policy
overlays.
This skill assumes the surrounding doca-flow application is
the operator's existing source artifact; flow-perf does not
ship a sample doca-flow application of its own.
1---2name: doca-flow-perf3description: Use this skill when the user is measuring the host or DPU-CPU control-plane rate of a DOCA Flow pipeline with doca_flow_perf — picking a JSON policy from configs/, choosing the DPDK or DOCA backend, running the single-iteration smoke then the iterative eval loop, interpreting per-iteration CPU cycles and num_pushed / num_failed, or capturing the four-tuple (DOCA version, BlueField/firmware, JSON policy, worker/queue/burst config) that makes a Kops/sec number defensible. Trigger even when the user does not explicitly mention "doca-flow-perf" — typical implicit phrasings include "how many rules per second can my BlueField insert", "5-tuple hairpin rule rate", "Kops/sec for steering", "flow-perf number does not match release notes", "DPDK vs DOCA benchmark", or "rule-install variance too high". Refuse and route elsewhere for optimizing a live Flow app (doca-flow-tune), the DPA-offloaded path (doca-flow-dpa-perf), dataplane throughput or latency, or library-internal pipe semantics — those belong to other skills.4license: Apache-2.05---67# DOCA Flow Perf (`doca_flow_perf`)89**Where to start:** This is a tool skill for invoking10`doca_flow_perf`, the host-side / DPU-CPU-side DOCA Flow11performance measurement tool. Open [`TASKS.md`](TASKS.md) and12start at [`## configure`](TASKS.md#configure) to commit to13the three-axis decision (target Flow pipeline shape × traffic14class × measurement axis) and pick the JSON policy file that15expresses the workload, then [`## run`](TASKS.md#run) for the16single-iteration smoke, then [`## test`](TASKS.md#test) for17the iterative eval loop that produces a defensible18Kops/sec-class number. Open [`CAPABILITIES.md`](CAPABILITIES.md)19when the question is *what `doca_flow_perf` measures and what20it deliberately does not measure*, *how its DPDK and DOCA21backends differ behind the same JSON contract*, *how to22interpret the per-iteration CPU-cycle output*, or *how it23differs from `doca-flow-tune` (measurement vs. optimization)24and `doca-flow-dpa-perf` (host / DPU-CPU vs. DPA-offloaded25path)*. If DOCA is not installed, route to26[`doca-setup`](../../doca-setup/SKILL.md) first; if the27target measurement is the DPA-offloaded path, route to28[`doca-flow-dpa-perf`](../doca-flow-dpa-perf/SKILL.md)29instead; if the goal is to optimize an already-deployed Flow30pipeline rather than measure a synthetic one, route to31[`doca-flow-tune`](../doca-flow-tune/SKILL.md) — `flow-perf`32is a synthetic-driver microbenchmark, not a tuner of a live33Flow application.3435## Example questions this skill answers well3637- *"I want a defensible host-side baseline number for how38 many `doca-flow` rules per second a single BlueField-3 can39 insert for a 5-tuple match-and-hairpin workload. Which40 policy JSON do I start from, how do I make the result41 reproducible, and what do I have to capture alongside the42 number for it to be defensible?"* — class-shaped flow-perf43 baseline question; the agent walks the `configs/` library,44 the JSON contract, and the four-tuple capture rule.45- *"What is the difference between `doca-flow-perf`,46 `doca-flow-dpa-perf`, and `doca-flow-tune`? They all47 mention `doca-flow` and `perf` in their names — when do I48 reach for each?"* — measurement-vs-optimization plus49 host-vs-DPA-path; the agent surfaces the boundaries.50- *"My policy JSON looks like the example, but the reported51 Kops/sec is dramatically lower than the published numbers I52 see in NVIDIA's release notes. What variables do I have to53 control before I can trust the comparison?"* — methodology54 question; the agent walks the controllable axes (number of55 workers, queue depth, burst size, fixed-vs-incremented match56 fields, DPDK vs DOCA backend, BlueField mode, driver /57 firmware).58- *"I have a workload that does not match any of the shipped59 policy JSONs in `configs/`. How do I author a new policy60 JSON, what is the JSON schema in broad strokes, and what61 changes when I switch a match field from `mode: fixed` to62 `mode: increase`?"* — JSON authoring question; the agent63 walks the shipped configs as exemplars and refuses to64 invent schema fields not present in the source tree.65- *"What does the tool actually NOT measure? I am trying to66 understand whether a flow-perf number tells me anything67 about end-to-end traffic latency or just about the68 rule-programming control-plane rate."* — methodology69 perimeter question; the agent draws a hard line: this tool70 measures rule install / delete (control-plane) rate plus71 optional query rate, NOT dataplane latency, NOT dataplane72 throughput, NOT end-to-end application performance.73- *"I see two backends — DPDK and DOCA — behind the same74 JSON. When do I pick which, and what does the choice mean75 for the result I report?"* — backend choice question; the76 agent walks the DPDK-backend vs. DOCA-backend trade-off and77 insists the operator REPORT which one they used.7879## Audience8081Experienced AI agents and platform / network engineers who82are comfortable with the `doca-flow` programming model and83the DPDK control-plane, who want a *defensible* number for84the host-side / DPU-CPU-side Flow rule-install / rule-delete85rate. Readers are expected to know that the published86numbers in NVIDIA release notes are run with very specific87preconditions (specific DOCA version, specific BlueField88firmware, specific traffic class) and that any number they89produce locally must explicitly state those preconditions.9091This skill is NOT for:9293- operators who want to optimize an already-deployed94 `doca-flow` application — that is95 [`doca-flow-tune`](../doca-flow-tune/SKILL.md);96- operators measuring the DPA-offloaded Flow path — that is97 [`doca-flow-dpa-perf`](../doca-flow-dpa-perf/SKILL.md);98- operators measuring end-to-end dataplane throughput or99 latency — that is the application's responsibility,100 layered on101 [`doca-flow`](../../libs/doca-flow/SKILL.md);102- contributors authoring or modifying the tool itself.103104## Language scope105106User interaction with `doca_flow_perf` is via:1071081. The shipped binary's command-line flags (documented by109 `doca_flow_perf --help` and the public DOCA Flow Perf110 guide on `docs.nvidia.com`).1112. A JSON policy file describing the pipeline (ports, pipes,112 matchers, actions, forwarding). The shipped `configs/`113 directory contains canned policies for the most common114 traffic classes; new policies are authored by copying and115 editing one of those.1163. The tool's per-iteration output (CPU cycles per iteration,117 number-processed, number-failed; reported via the tool's118 stdout — the exact format is the public guide and the119 binary's runtime output, NOT this skill's invention).120121The skill itself is Markdown. There is no programmatic API on122top of `doca_flow_perf`; consumers of its results read its123stdout / captured logs.124125## When to load this skill126127Load `doca-flow-perf` when ANY of the following is true:128129- the user mentions `doca_flow_perf`, `doca-flow-perf`, the130 `configs/` JSON library, or asks for a "host-side flow131 rules per second" number;132- the user wants to baseline an underlying Flow path (not133 optimize a live application);134- the user is comparing host-side / DPU-CPU-side Flow135 performance across DOCA releases, BlueField generations,136 or firmware versions;137- the user wants to design a new traffic class JSON and138 needs to know which canned `configs/` JSON to start from139 and which fields they can change.140141Co-load this skill with:142143- [`doca-flow`](../../libs/doca-flow/SKILL.md) (the144 underlying library; flow-perf programs the same145 matchers / actions / pipes the library exposes);146- [`doca-flow-tune`](../doca-flow-tune/SKILL.md) (the147 measurement-vs-optimization distinction is the most148 common confusion);149- [`doca-flow-dpa-perf`](../doca-flow-dpa-perf/SKILL.md)150 (the host-vs-DPA-path distinction is the second most151 common confusion);152- [`doca-version`](../../doca-version/SKILL.md) (the153 four-way version match every reported flow-perf number154 must carry);155- [`doca-debug`](../../doca-debug/SKILL.md) and156 [`doca-setup`](../../doca-setup/SKILL.md) for the157 env-side debug ladder.158159Do NOT load this skill when the user wants to optimize a live160Flow application (route to161[`doca-flow-tune`](../doca-flow-tune/SKILL.md)) or measure162the DPA-offloaded path (route to163[`doca-flow-dpa-perf`](../doca-flow-dpa-perf/SKILL.md)).164165## What this skill provides166167Three companion files in this directory, each owning a168different question shape:169170- [`SKILL.md`](SKILL.md) — this file. Audience, scope,171 loading order, related skills. Routes everything else.172- [`CAPABILITIES.md`](CAPABILITIES.md) — *what173 `doca_flow_perf` is*, what it measures, what it174 deliberately doesn't measure, the DPDK-vs-DOCA backend175 duality, the JSON contract surface, the per-iteration176 output interpretation, version compatibility (versioned177 with `doca-flow` and `doca-version`), the layered error178 taxonomy, observability, and the safety policy overlay.179- [`TASKS.md`](TASKS.md) — the procedural verbs (`configure`,180 `run`, `test`, `debug`, etc.) plus a `doca_flow_perf`-181 specific command appendix and the agent-side `use`182 workflow that consumes the captured per-iteration output.183184The combined skill teaches an AI agent to drive the185*measurement-class* of `doca_flow_perf` questions: pick a186shipped or author-new policy JSON, run the single-iteration187smoke, run the iterative eval loop, capture the four-tuple188that makes the resulting number defensible, interpret the189output, and route every adjacent question (tune the live190app, measure the DPA path, optimize the firmware) to the191right neighbouring skill.192193## What this skill deliberately does not ship194195- **End-to-end dataplane throughput or latency196 measurement.** `doca_flow_perf` measures the197 *control-plane* rate of programming rules, plus optional198 per-entry query timing. It does NOT measure how fast199 packets traverse the resulting rules in the dataplane.200 That is the application's responsibility, layered on201 [`doca-flow`](../../libs/doca-flow/SKILL.md). The agent202 must say this explicitly when the operator asks for "Flow203 throughput".204- **DPA-offloaded Flow path measurement.** Route to205 [`doca-flow-dpa-perf`](../doca-flow-dpa-perf/SKILL.md).206- **Optimization of a deployed Flow application.** Route to207 [`doca-flow-tune`](../doca-flow-tune/SKILL.md). flow-perf208 is a synthetic driver of a JSON-described pipeline, not a209 tuner of a live one.210- **A canonical "right answer" Kops/sec number.** The agent211 refuses to quote published numbers from memory as212 authoritative; the published numbers live in NVIDIA's213 release notes per the DOCA version and BlueField214 generation, and the operator must reproduce on their own215 exact preconditions before comparing.216- **Invented JSON schema fields.** The agent does NOT invent217 policy JSON keys that are not present in the shipped218 `configs/` exemplars. If a key the operator wants is not219 in any shipped exemplar, the agent says so and routes to220 the public DOCA Flow Perf guide.221- **Library-internal `doca-flow` API explanations.** The222 underlying matchers and actions belong to223 [`doca-flow`](../../libs/doca-flow/SKILL.md); this skill224 references them but does not duplicate the library's API225 documentation.226- **Cross-tool benchmarking apples-to-apples claims** when227 preconditions differ. Two flow-perf numbers from different228 DOCA versions / BlueField generations / firmware versions229 are NOT directly comparable; the agent insists on the230 four-tuple capture so consumers can judge.231232## Loading order233234When a `doca_flow_perf` question arrives:2352361. Confirm DOCA is installed and the binary plus the237 `configs/` JSON library are reachable — if not, route to238 [`doca-setup`](../../doca-setup/SKILL.md);2392. Confirm the underlying `doca-flow` library is healthy on240 the device — if not, route to241 [`doca-flow TASKS.md ## test`](../../libs/doca-flow/TASKS.md#test);2423. Confirm the user wants to *measure*, not *optimize* —243 if optimize, route to244 [`doca-flow-tune`](../doca-flow-tune/SKILL.md);2454. Confirm the target path is host / DPU-CPU, not DPA — if246 DPA, route to247 [`doca-flow-dpa-perf`](../doca-flow-dpa-perf/SKILL.md);2485. Read [`CAPABILITIES.md`](CAPABILITIES.md) to commit to249 the three-axis decision (pipeline shape × traffic class ×250 measurement axis);2516. Read [`TASKS.md`](TASKS.md) and walk252 `## configure → ## run → ## test → ## debug` in that253 order; do NOT start with `## run` without the254 `## configure` precondition step.255256## Related skills257258Cross-link conventions follow the bundle's relative path259contract from `tools/<X>/`:260261- [`doca-flow`](../../libs/doca-flow/SKILL.md) — the262 underlying library. flow-perf programs Flow pipes, entries,263 matchers, and actions; the library is the source of truth264 for the API surface flow-perf exercises.265- [`doca-flow-tune`](../doca-flow-tune/SKILL.md) — the266 unified Flow tuning tool. **Measurement vs. optimization267 boundary** lives here. Ask: "do I want a number, or do I268 want to change the deployed pipeline?"269- [`doca-flow-dpa-perf`](../doca-flow-dpa-perf/SKILL.md) —270 the DPA-offloaded Flow performance tool. **Host /271 DPU-CPU vs. DPA path boundary** lives here. Ask: "am I272 measuring the path that executes on the CPU, or the path273 that executes on the DPA processor?"274- [`doca-version`](../../doca-version/SKILL.md) — every275 reported flow-perf number must come with the four-way276 match (host package, kernel module, firmware, target277 application's linked `doca-flow` version) and the BlueField278 / ConnectX generation. flow-perf overlays this rule, not279 contradicts it.280- [`doca-setup`](../../doca-setup/SKILL.md) — DOCA install281 posture; routing for "is the binary even here?" questions.282- [`doca-debug`](../../doca-debug/SKILL.md) — the283 cross-cutting debug ladder for env-side issues (driver,284 firmware, BlueField mode, kernel module).285- [`doca-bench`](../doca-bench/SKILL.md) — a peer286 benchmarking tool with a broader scope (multiple DOCA287 primitives, not just Flow). flow-perf is the Flow-specific288 microbenchmark; doca-bench is the broader workload289 benchmark.290- [`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md)291 — routing to the public `docs.nvidia.com` DOCA Flow Perf292 page, release notes, and forums for release-specific293 published numbers and reproducibility notes.294- [`doca-structured-tools-contract`](../../doca-structured-tools-contract/SKILL.md)295 — the agent's detect → prefer → fall back → report contract296 for the structured helpers (`doca-env --json`,297 `doca-capability-snapshot`, `version-matrix.json`)298 flow-perf preconditions rely on.299- [`doca-hardware-safety`](../../doca-hardware-safety/SKILL.md)300 — the canonical hardware-safety meta-policy that301 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)302 overlays.303304This skill assumes the surrounding doca-flow application is305the operator's existing source artifact; flow-perf does not306ship a sample doca-flow application of its own.