DOCA Compress
Where to start: This skill assumes DOCA is already installed and
the user is doing hands-on Compress work (bulk DEFLATE
compression or decompression) on a BlueField / ConnectX / host
with DOCA. Open TASKS.md if the user wants to do
something (configure / build / modify / run / test / debug); open
CAPABILITIES.md when the question is what can
DOCA Compress express on this version. If the user has not
installed DOCA yet, route to
doca-setup first. If the user is
asking "should I even offload this compression to the
accelerator?", the size-threshold path-selection rule in
CAPABILITIES.md ## Capabilities and modes
is the first stop — bulk compress is the canonical fit, tiny
one-shot is not.
Example questions this skill answers well
The CLASSES of DOCA Compress questions this skill is built to
answer, each with one worked example. The agent should treat the
class as the load-bearing piece — the worked example is a single
instance.
- "Should I offload this compression to DOCA Compress, or just
zlib/zstd on the CPU?" — worked example: "I am compressing a
4 MiB log buffer before writing it to storage; is doca-compress
worth the setup vs zlib on the CPU?". Answered by the
size-threshold path-selection rule in
CAPABILITIES.md ## Capabilities and modes
- the "when NOT to use doca-compress" bullets in
CAPABILITIES.md ## Safety policy.
- "Does my device support the compress (or decompress) task I
want, and how big a buffer can it move per submission?" —
worked example: "is
doca_compress_task_compress_deflate on
this BlueField, and what is the max source size per task?".
Answered by the per-task capability-query rule
(doca_compress_cap_task_compress_deflate_is_supported,
_decompress_deflate_is_supported, the matching
_get_max_buf_size queries) in
CAPABILITIES.md ## Capabilities and modes
- the discovery step in
TASKS.md ## configure.
- "I just need to decompress incoming network data — is that a
valid standalone use of doca-compress?" — worked example:
"my client receives DEFLATE-compressed payloads and never
produces any compressed output of its own". Answered by the
"decompression-only" note in
CAPABILITIES.md ## Capabilities and modes
task-type table + the per-task configuration matrix in
TASKS.md ## configure step 5.
- "What permissions does the source / destination mmap need?" —
worked example: "my
doca_compress_task_compress_deflate
returns DOCA_ERROR_NOT_PERMITTED". Answered by the permission
matrix in
CAPABILITIES.md ## Safety policy
- the mmap-set-permissions checklist in
TASKS.md ## test.
- "Is this DOCA Compress API available on my installed DOCA
version?" — worked example: "is
doca_compress_task_decompress_deflate in the DOCA I have
installed?". Answered by the version-compatibility overlay in
CAPABILITIES.md ## Version compatibility,
which cross-links the canonical detection chain in
doca-version and adds the
Compress-specific "discover per-task support, do not assume"
bullets.
- "What does this
DOCA_ERROR_* from a Compress call mean and
which layer caused it?" — worked example: "DOCA_ERROR_INVALID_VALUE
on doca_compress_task_compress_deflate_alloc_init". Answered
by the Compress overlay on the cross-library taxonomy in
CAPABILITIES.md ## Error taxonomy
- the layered ladder in
TASKS.md ## debug that escalates to
doca-debug.
Audience
This skill serves external developers building applications that
consume the DOCA Compress library — i.e., users whose code calls
doca_compress_* (directly in C/C++, or through FFI/bindings from
another language) to offload bulk DEFLATE compression or
decompression onto a BlueField DPU or ConnectX accelerator. It is
not for NVIDIA developers contributing to DOCA Compress itself.
Language scope. DOCA Compress ships as a C library with
pkg-config module name doca-compress. The shipped samples are
written in C. C and C++ consumers are the canonical case and the
worked examples in TASKS.md assume that path. Other-language
consumers (Rust, Go, Python, …) consume the same *.so through
FFI or language-specific bindings; the skill's contribution in
that case is to keep the lifecycle, capability-discovery,
permission, error-taxonomy, and compress-vs-decompress guidance
language-neutral, and to route the agent to the public 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 Compress
work, in any language. Concretely:
- Initializing a
doca_compress context on a doca_dev and
configuring at least one task type
(doca_compress_task_compress_deflate and/or
doca_compress_task_decompress_deflate) before
doca_ctx_start().
- Choosing between the compress task and the decompress
task for the user's data flow. The two task types are
independent: a consumer that only decompresses inbound DEFLATE
payloads is a valid shape and does not need to enable the
compress task.
- Setting permissions on
doca_mmap correctly for the source
buffer (DOCA_ACCESS_FLAG_LOCAL_READ_ONLY at minimum) and the
destination buffer (DOCA_ACCESS_FLAG_LOCAL_READ_WRITE).
- Sizing the source buffer against the per-task
doca_compress_cap_task_*_get_max_buf_size(devinfo) ceiling
and the destination buffer against the worst-case output size
the algorithm can produce on this input.
- Checking which task types this device's accelerator advertises
via
doca_compress_cap_task_compress_deflate_is_supported and
doca_compress_cap_task_decompress_deflate_is_supported
against the active doca_devinfo.
- Validating against a round-trip (compress → decompress, or
decompress → compare against a known DEFLATE-encoded fixture)
before pushing bulk input through the accelerator.
- Deciding whether to offload at all — the size-threshold rule
in
CAPABILITIES.md ## Capabilities and modes
says doca-compress is the right answer only for bulk inputs
(rule of thumb: ≥ a few KiB); below that, CPU compression beats
the DMA-to-accelerator round-trip.
- Debugging a
DOCA_ERROR_* returned from a Compress call
(lifecycle vs. buffer-sizing vs. permission vs.
unsupported-task) and the task-completion event on the progress
engine.
- Designing or extending non-C bindings (Rust, Go, Python, …)
that wrap the Compress C ABI — for the lifecycle, permission,
capability, and compress-vs-decompress rules the wrapper must
honor.
Do not load this skill for general DOCA orientation, install
of DOCA itself, non-DEFLATE compression libraries on CPU (use
zlib / zstd / similar), or other DOCA libraries. 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
Compress-specific material lives in two companion files:
CAPABILITIES.md — what DOCA Compress can express on this
version: the four task types (compress-deflate,
decompress-deflate, decompress-lz4-stream, and
decompress-lz4-block, each independently capability-gated), the
per-task capability-query surface (doca_compress_cap_* for
task support and per-submission max buffer size), the Compress
error taxonomy (mapped onto the cross-library DOCA_ERROR_*
set), the observability surface (per-task completion events on
the progress engine), the safety policy that gates source /
destination mmap permission decisions, and the size-threshold
path-selection rule (when to use doca-compress versus CPU
compression or doca-dma for the no-compression copy case).
TASKS.md — step-by-step workflows for the six in-scope
Compress verbs: configure, build, modify, run, test,
debug. Plus a ## rollback overlay (Compress-specific
five-step teardown that drains in-flight tasks before
doca_ctx_stop, unregisters mmap regions in reverse-register
order, and re-verifies the device path with the round-trip
smoke) and the 5-phase universal debug-loop instantiation
appended to ## debug. Plus a Deferred task verbs block
that points out-of-scope questions at the right next skill.
The skill assumes a host or BlueField where DOCA is already
installed at the standard location and the user has the
privileges their public install profile expects. It does not
cover installing DOCA — that path goes through
doca-setup.
What this skill deliberately does not ship
This skill is agent guidance, not a samples or templates
bundle. To keep the boundary clean, it deliberately does not
contain — and pull requests should not add:
- Pre-written DOCA Compress application source code, in any
language. The verified Compress source code is the shipped C
samples at
/opt/mellanox/doca/samples/doca_compress/, plus
the File Compression reference application linked from the
public DOCA Compress guide. The agent's job is to route the
user to those files and prescribe a minimum-diff modification
on them via the universal modify-a-sample workflow in
doca-programming-guide,
layered with the Compress-specific overrides in
TASKS.md ## modify.
- Pre-encoded DEFLATE fixtures for arbitrary inputs. The
skill tells the agent to use a round-trip validation
(compress → decompress and compare to the original, or
decompress a known DEFLATE blob produced by a published CPU
encoder like
zlib) as the known-good smoke; it does not ship
a fixture bank of its own.
- Standalone build manifests (
meson.build, CMakeLists.txt,
Cargo.toml, …) parked inside the skill. The agent constructs
the build manifest in the user's project directory against
the user's installed DOCA, where pkg-config --modversion doca-compress is the source of truth.
- A
samples/, bindings/, or reference/ subtree of any
kind. A mock or incomplete artifact in this skill's tree, even
one labeled "reference", is misleading: users will read it as
buildable.
Loading order
- Read this
SKILL.md first to confirm the user's question is in
scope.
- For the Compress capability matrix, the compress / decompress
task split (including decompression-only as a standalone
shape), per-task capability-query rules, permission matrix,
error taxonomy, observability, and safety / path-selection
policy, 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 "Compress-specific
guidance".
Related skills
doca-public-knowledge-map —
the routing table for every public DOCA documentation source
and the on-disk layout of an installed DOCA package. The DOCA
Compress page lives at
docs.nvidia.com/doca/sdk/DOCA-Compress/; the File Compression
reference application is the canonical worked example.
doca-setup — env preparation,
install verification, and the I have no install yet path
with the public NGC DOCA container. This skill assumes its
preconditions are satisfied.
doca-version — canonical DOCA
version-handling rules. This skill's
## Version compatibility
cross-links the four-way match rule and adds only the
Compress-specific "discover per-task support + per-task max
buffer size via cap query" overlay.
doca-structured-tools-contract —
the bundle's structured-tools precedence rule (detect / prefer
/ fall back / report). The Command appendix in
TASKS.md honors this contract.
doca-programming-guide —
general DOCA programming patterns shared by every library: the
canonical pkg-config + meson build pattern, the universal
modify-a-shipped-sample first-app workflow, the universal
lifecycle, the cross-library DOCA_ERROR_* taxonomy, and the
program-side debug order. This skill layers Compress specifics
on top.
doca-dma — the right library when
the data flow is a pure mmap-to-mmap copy with no compression
required. This skill's path-selection rule routes to DMA when
Compress is not the answer (e.g. the user only wants to move
bytes, not encode them).
doca-debug — the cross-cutting
debug ladder (install / version / build / link / runtime /
program / driver). Compress-specific debug (task-not-supported,
source-buffer-too-large, destination-buffer-too-small) overlays
on top of that ladder.
1---2name: doca-compress3description: Use this skill for hands-on DOCA Compress programming on a BlueField DPU, ConnectX NIC, or host with DOCA — enabling compress-deflate, decompress-deflate, decompress-lz4-stream, or decompress-lz4-block tasks on a doca_compress context (the hardware supports DEFLATE both directions plus LZ4 decompress; LZ4 encode is NOT supported), sizing source / destination doca_buf against the per-task cap query, setting mmap permissions, deciding offload vs CPU zlib / zstd, validating with a round-trip smoke, or debugging DOCA_ERROR_* from a Compress call. Trigger on phrasings like "offload this gzip", "decompress incoming network data", "compress task returns INVALID_VALUE on alloc_init", "submitted a task but no completion arrives", or "decompress LZ4 on the BlueField." Refuse and route elsewhere for non-DEFLATE / non-LZ4 algorithms (zstd / Snappy / brotli), LZ4 encode (route to a CPU LZ4 library), pure mmap-to-mmap copies (doca-dma), or DOCA Core lifecycle internals.4license: Apache-2.05---67# DOCA Compress89**Where to start:** This skill assumes DOCA is already installed and10the user is doing **hands-on Compress work** (bulk DEFLATE11compression or decompression) on a BlueField / ConnectX / host12with DOCA. Open [`TASKS.md`](TASKS.md) if the user wants to *do*13something (configure / build / modify / run / test / debug); open14[`CAPABILITIES.md`](CAPABILITIES.md) when the question is *what can15DOCA Compress express* on this version. If the user has not16installed DOCA yet, route to17[`doca-setup`](../../doca-setup/SKILL.md) first. If the user is18asking *"should I even offload this compression to the19accelerator?"*, the size-threshold path-selection rule in20[`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)21is the first stop — bulk compress is the canonical fit, tiny22one-shot is not.2324## Example questions this skill answers well2526The CLASSES of DOCA Compress questions this skill is built to27answer, each with one worked example. The agent should treat the28*class* as the load-bearing piece — the worked example is a single29instance.3031- **"Should I offload this compression to DOCA Compress, or just32 zlib/zstd on the CPU?"** — worked example: *"I am compressing a33 4 MiB log buffer before writing it to storage; is doca-compress34 worth the setup vs zlib on the CPU?"*. Answered by the35 size-threshold path-selection rule in36 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)37 + the *"when NOT to use doca-compress"* bullets in38 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy).39- **"Does my device support the compress (or decompress) task I40 want, and how big a buffer can it move per submission?"** —41 worked example: *"is `doca_compress_task_compress_deflate` on42 this BlueField, and what is the max source size per task?"*.43 Answered by the per-task capability-query rule44 (`doca_compress_cap_task_compress_deflate_is_supported`,45 `_decompress_deflate_is_supported`, the matching46 `_get_max_buf_size` queries) in47 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)48 + the discovery step in49 [`TASKS.md ## configure`](TASKS.md#configure).50- **"I just need to decompress incoming network data — is that a51 valid standalone use of doca-compress?"** — worked example:52 *"my client receives DEFLATE-compressed payloads and never53 produces any compressed output of its own"*. Answered by the54 *"decompression-only"* note in55 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)56 task-type table + the per-task configuration matrix in57 [`TASKS.md ## configure`](TASKS.md#configure) step 5.58- **"What permissions does the source / destination mmap need?"** —59 worked example: *"my `doca_compress_task_compress_deflate`60 returns `DOCA_ERROR_NOT_PERMITTED`"*. Answered by the permission61 matrix in62 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)63 + the mmap-set-permissions checklist in64 [`TASKS.md ## test`](TASKS.md#test).65- **"Is this DOCA Compress API available on my installed DOCA66 version?"** — worked example: *"is67 `doca_compress_task_decompress_deflate` in the DOCA I have68 installed?"*. Answered by the version-compatibility overlay in69 [`CAPABILITIES.md ## Version compatibility`](CAPABILITIES.md#version-compatibility),70 which cross-links the canonical detection chain in71 [`doca-version`](../../doca-version/SKILL.md) and adds the72 Compress-specific *"discover per-task support, do not assume"*73 bullets.74- **"What does this `DOCA_ERROR_*` from a Compress call mean and75 which layer caused it?"** — worked example: *"`DOCA_ERROR_INVALID_VALUE`76 on `doca_compress_task_compress_deflate_alloc_init`"*. Answered77 by the Compress overlay on the cross-library taxonomy in78 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)79 + the layered ladder in80 [`TASKS.md ## debug`](TASKS.md#debug) that escalates to81 [`doca-debug`](../../doca-debug/SKILL.md).8283## Audience8485This skill serves **external developers building applications that86consume the DOCA Compress library** — i.e., users whose code calls87`doca_compress_*` (directly in C/C++, or through FFI/bindings from88another language) to offload bulk DEFLATE compression or89decompression onto a BlueField DPU or ConnectX accelerator. It is90*not* for NVIDIA developers contributing to DOCA Compress itself.9192**Language scope.** DOCA Compress ships as a C library with93`pkg-config` module name `doca-compress`. The shipped samples are94written in C. C and C++ consumers are the canonical case and the95worked examples in `TASKS.md` assume that path. Other-language96consumers (Rust, Go, Python, …) consume the same `*.so` through97FFI or language-specific bindings; the skill's contribution in98that case is to keep the lifecycle, capability-discovery,99permission, error-taxonomy, and compress-vs-decompress guidance100language-neutral, and to route the agent to the public C ABI as101the authoritative surface that any wrapper will eventually call.102103## When to load this skill104105Load this skill when the user is doing hands-on DOCA Compress106work, in any language. Concretely:107108- Initializing a `doca_compress` context on a `doca_dev` and109 configuring at least one task type110 (`doca_compress_task_compress_deflate` and/or111 `doca_compress_task_decompress_deflate`) before112 `doca_ctx_start()`.113- Choosing between the **compress** task and the **decompress**114 task for the user's data flow. The two task types are115 independent: a consumer that only decompresses inbound DEFLATE116 payloads is a valid shape and does not need to enable the117 compress task.118- Setting permissions on `doca_mmap` correctly for the source119 buffer (`DOCA_ACCESS_FLAG_LOCAL_READ_ONLY` at minimum) and the120 destination buffer (`DOCA_ACCESS_FLAG_LOCAL_READ_WRITE`).121- Sizing the source buffer against the per-task122 `doca_compress_cap_task_*_get_max_buf_size(devinfo)` ceiling123 and the destination buffer against the worst-case output size124 the algorithm can produce on this input.125- Checking which task types this device's accelerator advertises126 via `doca_compress_cap_task_compress_deflate_is_supported` and127 `doca_compress_cap_task_decompress_deflate_is_supported`128 against the active `doca_devinfo`.129- Validating against a round-trip (compress → decompress, or130 decompress → compare against a known DEFLATE-encoded fixture)131 before pushing bulk input through the accelerator.132- Deciding *whether to offload at all* — the size-threshold rule133 in [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)134 says doca-compress is the right answer only for bulk inputs135 (rule of thumb: ≥ a few KiB); below that, CPU compression beats136 the DMA-to-accelerator round-trip.137- Debugging a `DOCA_ERROR_*` returned from a Compress call138 (lifecycle vs. buffer-sizing vs. permission vs.139 unsupported-task) and the task-completion event on the progress140 engine.141- Designing or extending non-C bindings (Rust, Go, Python, …)142 that wrap the Compress C ABI — for the lifecycle, permission,143 capability, and compress-vs-decompress rules the wrapper must144 honor.145146Do **not** load this skill for general DOCA orientation, install147of DOCA itself, non-DEFLATE compression libraries on CPU (use148zlib / zstd / similar), or other DOCA libraries. For those, use149[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md).150151## What this skill provides152153This is a **thin loader**. The body keeps only the orientation154needed to pick the right next file. The substantive155Compress-specific material lives in two companion files:156157- `CAPABILITIES.md` — what DOCA Compress can express on this158 version: the four task types (compress-deflate,159 decompress-deflate, decompress-lz4-stream, and160 decompress-lz4-block, each independently capability-gated), the161 per-task capability-query surface (`doca_compress_cap_*` for162 task support and per-submission max buffer size), the Compress163 error taxonomy (mapped onto the cross-library `DOCA_ERROR_*`164 set), the observability surface (per-task completion events on165 the progress engine), the safety policy that gates source /166 destination mmap permission decisions, and the size-threshold167 path-selection rule (when to use doca-compress versus CPU168 compression or `doca-dma` for the no-compression copy case).169- `TASKS.md` — step-by-step workflows for the six in-scope170 Compress verbs: `configure`, `build`, `modify`, `run`, `test`,171 `debug`. Plus a `## rollback` overlay (Compress-specific172 five-step teardown that drains in-flight tasks before173 `doca_ctx_stop`, unregisters mmap regions in reverse-register174 order, and re-verifies the device path with the round-trip175 smoke) and the 5-phase universal debug-loop instantiation176 appended to `## debug`. Plus a `Deferred task verbs` block177 that points out-of-scope questions at the right next skill.178179The skill assumes a host or BlueField where DOCA is already180installed at the standard location and the user has the181privileges their public install profile expects. It does not182cover installing DOCA — that path goes through183[`doca-setup`](../../doca-setup/SKILL.md).184185## What this skill deliberately does not ship186187This skill is **agent guidance**, not a samples or templates188bundle. To keep the boundary clean, it deliberately does not189contain — and pull requests should not add:190191- **Pre-written DOCA Compress application source code, in any192 language.** The verified Compress source code is the shipped C193 samples at `/opt/mellanox/doca/samples/doca_compress/`, plus194 the File Compression reference application linked from the195 public DOCA Compress guide. The agent's job is to route the196 user to those files and prescribe a minimum-diff modification197 on them via the universal modify-a-sample workflow in198 [`doca-programming-guide`](../../doca-programming-guide/SKILL.md),199 layered with the Compress-specific overrides in200 [`TASKS.md ## modify`](TASKS.md#modify).201- **Pre-encoded DEFLATE fixtures for arbitrary inputs.** The202 skill tells the agent to use a *round-trip* validation203 (compress → decompress and compare to the original, or204 decompress a known DEFLATE blob produced by a published CPU205 encoder like `zlib`) as the known-good smoke; it does not ship206 a fixture bank of its own.207- **Standalone build manifests** (`meson.build`, `CMakeLists.txt`,208 `Cargo.toml`, …) parked inside the skill. The agent constructs209 the build manifest *in the user's project directory* against210 the user's installed DOCA, where `pkg-config --modversion211 doca-compress` is the source of truth.212- **A `samples/`, `bindings/`, or `reference/` subtree** of any213 kind. A mock or incomplete artifact in this skill's tree, even214 one labeled "reference", is misleading: users will read it as215 buildable.216217## Loading order2182191. Read this `SKILL.md` first to confirm the user's question is in220 scope.2212. **For the Compress capability matrix, the compress / decompress222 task split (including decompression-only as a standalone223 shape), per-task capability-query rules, permission matrix,224 error taxonomy, observability, and safety / path-selection225 policy, see [CAPABILITIES.md](CAPABILITIES.md).**2263. **For step-by-step workflows — configure, build, modify, run,227 test, debug — see [TASKS.md](TASKS.md).**228229Both companion files cross-link to each other,230[`doca-version`](../../doca-version/SKILL.md) for the canonical231version-handling rules, and232[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md)233whenever the right answer is "look it up in the public docs or234the installed package layout" rather than "Compress-specific235guidance".236237## Related skills238239- [`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md) —240 the routing table for every public DOCA documentation source241 and the on-disk layout of an installed DOCA package. The DOCA242 Compress page lives at243 `docs.nvidia.com/doca/sdk/DOCA-Compress/`; the File Compression244 reference application is the canonical worked example.245- [`doca-setup`](../../doca-setup/SKILL.md) — env preparation,246 install verification, and the *I have no install yet* path247 with the public NGC DOCA container. This skill assumes its248 preconditions are satisfied.249- [`doca-version`](../../doca-version/SKILL.md) — canonical DOCA250 version-handling rules. This skill's251 [`## Version compatibility`](CAPABILITIES.md#version-compatibility)252 cross-links the four-way match rule and adds only the253 Compress-specific *"discover per-task support + per-task max254 buffer size via cap query"* overlay.255- [`doca-structured-tools-contract`](../../doca-structured-tools-contract/SKILL.md) —256 the bundle's structured-tools precedence rule (detect / prefer257 / fall back / report). The Command appendix in258 [TASKS.md](TASKS.md) honors this contract.259- [`doca-programming-guide`](../../doca-programming-guide/SKILL.md) —260 general DOCA programming patterns shared by every library: the261 canonical `pkg-config` + meson build pattern, the universal262 modify-a-shipped-sample first-app workflow, the universal263 lifecycle, the cross-library `DOCA_ERROR_*` taxonomy, and the264 program-side debug order. This skill layers Compress specifics265 on top.266- [`doca-dma`](../doca-dma/SKILL.md) — the right library when267 the data flow is a pure mmap-to-mmap copy with no compression268 required. This skill's path-selection rule routes to DMA when269 Compress is *not* the answer (e.g. the user only wants to move270 bytes, not encode them).271- [`doca-debug`](../../doca-debug/SKILL.md) — the cross-cutting272 debug ladder (install / version / build / link / runtime /273 program / driver). Compress-specific debug (task-not-supported,274 source-buffer-too-large, destination-buffer-too-small) overlays275 on top of that ladder.