doca-erasure-coding
Use this skill when the user is doing hands-on DOCA Erasure Coding programming on a BlueField DPU, ConnectX NIC, or host — bringing up a doca_ec context, picking among the create / recover / update tasks, choosing matrix type / N / K / block size, querying doca_ec_cap_* before sizing, setting doca_m…
Install / Use
npx skills add NVIDIA/skills --skill doca-erasure-codingInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of doca-erasure-coding
doca-erasure-coding scores 88/100 on our quality scale, 963rd of 3,356 Development & Engineering skills we index (top 29%).
Its SKILL.md is 17 KB long, well organised into 8 sections and no code examples: a thorough specification that gives an agent plenty to work with.
With 3,421 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 5 days ago, so doca-erasure-coding is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
doca-erasure-coding compared with similar skills
All 4 of these similar skills score higher than doca-erasure-coding; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| doca-erasure-coding (this skill)by NVIDIA | 88 | 3.4k | 5d ago | SKILL.md |
| ai-job-searchby MadsLorentzen | 100 | 44.4k | today | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.7k | 2d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 6d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 6d ago | SKILL.md |
Frequently asked questions
- How do I install doca-erasure-coding?
- Run
npx skills add NVIDIA/skills --skill doca-erasure-coding. The install tabs above show the steps for each supported agent. - Which AI agents does doca-erasure-coding work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is doca-erasure-coding safe to use?
- It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is doca-erasure-coding still maintained?
- The repository was last updated 5 days ago, so doca-erasure-coding is actively maintained.
Skill content
View source on GitHublicense: Apache-2.0
name: doca-erasure-coding
description: >
Use this skill when the user is doing hands-on DOCA Erasure Coding
programming on a BlueField DPU, ConnectX NIC, or host — bringing
up a doca_ec context, picking among the create / recover / update
tasks, choosing matrix type / N / K / block size, querying
doca_ec_cap_* before sizing, setting doca_mmap src/dst
permissions, or debugging DOCA_ERROR_* returns from
doca_ec_task_*. Trigger even when the user does not name "DOCA
Erasure Coding" or "Reed-Solomon" — typical implicit phrasings
include "one data block changed, how do I refresh parity without
re-encoding", "a disk failed and 2 parity blocks are gone, can I
rebuild", "RAID-6 resilience across 12 disks", "my
doca_ec_task_create returns NOT_PERMITTED", or "is this N+K layout
still recoverable". Refuse and route elsewhere for non-Reed-Solomon
codes (fountain / LDPC / raptor), pure-replication designs,
network FEC, or other DOCA accelerator libraries (SHA / Compress /
AES-GCM / DMA) — those belong to other skills.
metadata:
kind: library
compatibility: >
Requires DOCA SDK installed at /opt/mellanox/doca on Linux (Ubuntu
22.04/24.04 or RHEL/SLES) with a BlueField DPU or ConnectX NIC
attached. Reads the user's local install via pkg-config doca-erasure-coding and inspects
/opt/mellanox/doca/{lib,include,samples,applications}.
DOCA Erasure Coding
Where to start: This skill assumes DOCA is already installed and
the user is doing hands-on erasure-coding work 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 Erasure Coding 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 use erasure coding here, or just replicate
the data?", the path-selection rule in
CAPABILITIES.md ## Capabilities and modes
is the first stop — erasure coding is a storage-resilience
primitive (RAID-6 / distributed file system parity / object-storage
erasure-coded buckets), not a network primitive and not a
replication substitute.
Example questions this skill answers well
The CLASSES of DOCA Erasure Coding 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 erasure coding to DOCA, or do it on the
CPU — or just replicate the data instead?" — worked example:
"I am writing a distributed object store that wants RAID-6-like
resilience across 12 disks; is doca-erasure-coding the right
primitive, or should I just keep three copies?". Answered by
the path-selection table in
CAPABILITIES.md ## Capabilities and modes- the "when NOT to use doca-erasure-coding" bullets in
CAPABILITIES.md ## Safety policy.
- the "when NOT to use doca-erasure-coding" bullets in
- "Does my device support the EC task type, block size, N+K
layout, and matrix type I want?" — worked example: "is
doca_ec_task_createon this BlueField, what is the maximum block size, what is the cap on N+K, and does the device advertise a Vandermonde Reed-Solomon matrix?". Answered by the per-task + matrix + size capability-query rule (doca_ec_cap_task_create_is_supported,_task_recover_is_supported,_task_update_is_supported,_task_galois_mul_is_supported— the 4th public task on the EC accelerator,doca_ec_cap_get_max_block_size,doca_ec_cap_get_max_buf_list_len, and per-variantdoca_ec_matrix_create()constructor success — the public header does NOT ship adoca_ec_cap_get_matrix_*family) inCAPABILITIES.md ## Capabilities and modes- the discovery step in
TASKS.md ## configure.
- the discovery step in
- "One source block changed — do I have to recompute all the
parity from scratch?" — worked example: "I have 8 data + 4
parity blocks on disk; one data block was just rewritten. How
do I express the parity update without re-running the full
encode?". Answered by the
doca_ec_task_updaterow in the task-type table inCAPABILITIES.md ## Capabilities and modes- the update-vs-re-encode rule in
CAPABILITIES.md ## Safety policy - the modify-from-sample slot for switching between create and
update tasks in
TASKS.md ## modify.
- the update-vs-re-encode rule in
- "K of my N+K blocks went missing — how do I reconstruct
them?" — worked example: "a disk failed; the 8 data blocks
are intact but 2 of the 4 parity blocks are gone; can DOCA
recover them?". Answered by the
doca_ec_task_recoverrow in the task-type table inCAPABILITIES.md ## Capabilities and modes- the recover smoke (encode → drop a block → recover → bit-compare)
in
TASKS.md ## test.
- the recover smoke (encode → drop a block → recover → bit-compare)
in
- "What permissions does the source / destination mmap need?" —
worked example: "my
doca_ec_task_createreturnsDOCA_ERROR_NOT_PERMITTED". Answered by the permission matrix inCAPABILITIES.md ## Safety policy- the mmap-set-permissions checklist in
TASKS.md ## test.
- the mmap-set-permissions checklist in
- "Is this DOCA Erasure Coding API available on my installed
DOCA version?" — worked example: "is
doca_ec_task_updatein the DOCA I have installed, or do I have to recompute parity from scratch?". Answered by the version-compatibility overlay inCAPABILITIES.md ## Version compatibility, which cross-links the canonical detection chain indoca-versionand adds the EC-specific "discover per-task support + matrix type via cap query" bullets. - "What does this
DOCA_ERROR_*from an EC call mean and which layer caused it?" — worked example: "DOCA_ERROR_INVALID_VALUEondoca_ec_task_create_allocate_initwith block_size = 4 MiB". Answered by the EC overlay on the cross-library taxonomy inCAPABILITIES.md ## Error taxonomy- the layered ladder in
TASKS.md ## debugthat escalates todoca-debug.
- the layered ladder in
Audience
This skill serves external developers building applications that
consume the DOCA Erasure Coding library — i.e., users whose code
calls doca_ec_* (directly in C/C++, or through FFI/bindings from
another language) to offload Reed-Solomon erasure coding onto a
BlueField DPU or ConnectX accelerator. It is not for NVIDIA
developers contributing to DOCA Erasure Coding itself.
The canonical fit is distributed storage: RAID-6-style block layouts, distributed file system parity, object-storage erasure-coded buckets, and any data-durability workload where the N data + K redundancy block model lets the system tolerate K simultaneous block losses without data loss. The skill keeps the agent oriented to that domain: erasure coding is operationally distinct from pure replication (which keeps M whole copies) and from RAID-6 the disk layout (which is one specific instance of the N=k, K=2 case); confusing them produces wrong recommendations.
Language scope. DOCA Erasure Coding ships as a C library with
pkg-config module name doca-erasure-coding. 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 create-vs-recover-vs-update
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 Erasure Coding work, in any language. Concretely:
- Initializing a
doca_eccontext on adoca_devand configuring at least one task type (doca_ec_task_create,doca_ec_task_recover, and/ordoca_ec_task_update) beforedoca_ctx_start(). - Choosing between the create task (encode N data blocks into K redundancy blocks), the recover task (reconstruct up to K missing blocks given the surviving subset), and the update task (incrementally update redundancy blocks when one source block changes — much cheaper than re-encoding from scratch).
- Picking the coding parameters: matrix type / coding scheme (typically Vandermonde or Cauchy for Reed-Solomon), N (number of data blocks), K (number of redundancy blocks), and block size (all blocks the same size).
- Setting permissions on
doca_mmapcorrectly for the source buffers — data blocks for create, data + parity for recover — (DOCA_ACCESS_FLAG_LOCAL_READ_ONLYat minimum) and the destination buffers — redundancy blocks for create, recovered blocks for recover, updated parity for update — (DOCA_ACCESS_FLAG_LOCAL_READ_WRITE). - Sizing blocks against
doca_ec_cap_get_max_block_size(devinfo)and N+K againstdoca_ec_cap_get_max_buf_list_len(devinfo, &max_buf_list_len). - Checking which task types and matrix schemes this device's
accelerator advertises via the
doca_ec_cap_task_*_is_supported(including the 4th task_task_galois_mul_is_supported) and per-variantdoca_ec_matrix_create()constructor success — the public header does NOT ship adoca_ec_cap_get_matrix_*families against the activedoca_devinfo. - Validating against a known-vector recover smoke (encode a small N + K layout, simulate one block loss, recover, bit-compare against the original block) before pushing bulk storage data through the accelerator.
- Recognising when update is the right task (single source
block changed in an existing N + K layout —
doca_ec_task_updateis far cheaper than recomputing all K parity blocks via a freshdoca_ec_task_create). - Debugging a
DOCA_ERROR_*returned from an EC call (lifecycle vs. block-size vs. N+K vs. matrix-type vs. permission vs. queue pressure) and the task-completion event on the progress engine. - Designing or extending non-C bindings (Rust, Go, Python, …) that wrap the EC C ABI — for the lifecycle, permission, capability, and create-vs-recover-vs-update rules the wrapper must honor.
Do not load this skill for general DOCA orientation, install
of DOCA itself, non-Reed-Solomon erasure codes (fountain codes,
LDPC — those belong on a CPU library, not the DOCA accelerator),
pure replication / mirroring designs (erasure coding is the wrong
primitive when one extra copy is the right answer), 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 EC-specific material lives in two companion files:
CAPABILITIES.md— what DOCA Erasure Coding can express on this version: the three task types (create / recover / update, each independently capability-gated), the matrix-type + N + K + block-size configuration surface, the capability-query family (doca_ec_cap_*for task support, max block size, max N+K, supported matrix types), the EC error taxonomy (mapped onto the cross-libraryDOCA_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 path-selection ru
Truncated for display — read the full file on GitHub.
Related Skills
ai-job-search
44.4kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
