About rust
rust is a routing skill for Rust development that directs tasks to relevant subsystem references and applies workspace-specific systems programming conventions. It is for contributors working on Rust code who need focused guidance and verification steps.
Key features
- 01Routes tasks by Rust subsystem
- 02Loads only relevant reference files
- 03Sets safe Rust and error-handling rules
- 04Guides async, testing, and verification
Use cases
- 01Implementing a change in a Rust subsystem
- 02Reviewing unsafe code and error design
- 03Adding property or integration tests
- 04Selecting focused Cargo verification commands
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ ulpi-io/ skills --skill rustAfter installing, type/rustin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/arena-graph.mdasync-concurrency.mdbinary-formats.mddatafusion-arrow.mderror-unsafe.mdgeo-rtree.mdsearch-vector.mdstack.mdstorage-engine.mdtesting.mdtype-system.mdwire-protocols.mdDetails
From the project READMENon-negotiable rules:
- Identify the subsystem before coding. Load only the relevant references.
- Safe Rust by default.
unsafeonly when justified — everyunsafeblock gets a// SAFETY:comment. - Zero-copy where possible. mmap'd segments,
&str/&[u8]references into pages. Never copy data without reason. - Error types per crate.
thiserrorenums in library crates. Neveranyhowin libraries — only in binaries/tests. - Async with tokio. All I/O is async. CPU-bound work on
spawn_blocking. Never block the tokio runtime. - Workspace crate structure. One crate per subsystem. Depend downward — never circular.
- Property tests for invariants.
proptestfor round-trips, type coercion, binary parsing.
rust
Inputs
$request: The crate, subsystem, bug, feature, or review target
Goal
Route Rust work through the right subsystem conventions so changes follow the workspace’s systems-programming patterns instead of generic Rust defaults.
Step 0: Identify the subsystem
Decide which part of the Rust surface the task touches:
- storage engine
- binary formats
- type system
- Arrow or DataFusion
- wire protocols
- search or vectors
- arena or graph code
- geo indexing
- async or concurrency
- testing
- unsafe or error design
Success criteria: The task is mapped to the right subsystem before references are loaded.
Step 1: Load only the relevant references
Use the routing table to pick the matching files. Do not bulk-load the full reference tree.
| Task / Area | Read |
|---|---|
| Toolchain, workspace layout, key crates, Cargo conventions | references/stack.md |
| WAL, mmap, segments, MVCC, compaction, io_uring, backends | references/storage-engine.md |
| Custom on-disk formats, zero-copy parsing, packed structs | references/binary-formats.md |
| Database type system, disk/exec types, Arrow interop | references/type-system.md |
| DataFusion table providers, UDFs, Arrow RecordBatch, planning | references/datafusion-arrow.md |
| pgwire server, MySQL protocol, dialect mapping, ORM compat | references/wire-protocols.md |
| tantivy FTS, HNSW vectors, SIMD distance, hybrid search | references/search-vector.md |
| bumpalo arenas, graph adjacency, traversal algorithms | references/arena-graph.md |
| R-tree spatial index, geo predicates, WGS84 distance | references/geo-rtree.md |
| tokio async, io_uring, crossbeam, lock-free structures, MVCC | references/async-concurrency.md |
| proptest, deterministic testing, integration test patterns | references/testing.md |
| thiserror hierarchies, unsafe patterns, safety invariants | references/error-unsafe.md |
Multiple tasks? Read multiple files.
Success criteria: Only the subsystem-relevant Rust guidance is active.
Step 2: Implement with the core Rust guardrails
Keep these rules active:
- safe Rust by default;
unsafeonly when justified with// SAFETY: - error types match crate boundaries (
thiserrorin libs,anyhowonly in bins/tests) - async code does not block the runtime; CPU work on
spawn_blocking - owned vs borrowed data choices are deliberate; prefer
&[u8]overVec<u8>in signatures - explicit
useimports — no glob imports except in test modules #[must_use]on functions returningResultor computed values#[inline]only on small functions in hot loops — never on public APISend + Syncbounds on trait objects crossing async boundaries#[derive(Debug)]on all public types;#[derive(Clone)]only when cheap- feature flags for optional crate deps —
#[cfg(feature = "...")] - tests match the risk: unit, integration, property, snapshot, or domain-specific verification
Success criteria: The implementation fits the workspace’s systems-level quality bar.
Step 3: Verify the change
Use the narrowest relevant verification loop:
cargo fmtcargo clippy -- -D warnings- focused crate tests
- subsystem-specific tests such as proptest or snapshots when appropriate
Success criteria: The Rust surface is validated the way this workspace expects.
Guardrails
- Do not inline the whole Rust handbook in
SKILL.md. - Do not skip subsystem identification.
- Do not use
anyhowin library crates unless the project specifically allows it there. - Do not add
disable-model-invocation; this is a normal domain skill. - Do not leave unsafe invariants undocumented.
When To Load References
-
references/stack.mdUse for workspace/toolchain context. -
then only the task-relevant subsystem files under
references/
Output Contract
Report:
- which Rust references were loaded
- the subsystem pattern applied
- the change made
- the verification run