rust-systems

rust-systems

Rust systems programming patterns and style guide for building reliable systems software. This skill should be used when writing Rust code, especially for systems programming, CLI tools, or performance-critical applications. Covers project organization with Cargo workspaces, module structure, naming conventions (RFC 430), type/trait patterns (Option, builders, associated types), and error handling with thiserror/anyhow.

5Star
0Fork
更新于 1/24/2026
SKILL.md
readonly只读
name
rust-systems
description

Rust systems programming patterns and style guide for building reliable systems software. This skill should be used when writing Rust code, especially for systems programming, CLI tools, or performance-critical applications. Covers project organization with Cargo workspaces, module structure, naming conventions (RFC 430), type/trait patterns (Option, builders, associated types), and error handling with thiserror/anyhow.

Rust Systems Programming Best Practices

Comprehensive Rust patterns and style conventions for systems programming, containing 52 rules across 5 categories. Designed for systems programming, CLI tools, and performance-critical applications.

When to Apply

Reference these guidelines when:

  • Writing new Rust code or modules
  • Organizing Rust project structure
  • Defining custom types, traits, or error handling
  • Reviewing Rust code for style consistency
  • Building systems tools, CLIs, or daemon processes

Rule Categories by Priority

Priority Category Impact Prefix
1 Project Organization HIGH org-
2 Module Structure HIGH mod-
3 Naming Conventions HIGH name-
4 Type & Trait Patterns HIGH type-
5 Error Handling HIGH err-

Quick Reference

1. Project Organization (HIGH)

  • org-cargo-workspace - Use Cargo Workspace for Multi-Crate Projects
  • org-directory-naming - Use snake_case for All Directory Names
  • org-binary-library-separation - Separate Binary and Library Crates
  • org-feature-domain-grouping - Group Crates by Feature Domain
  • org-common-crate - Use Dedicated Common Crate for Shared Utilities
  • org-flat-crate-structure - Keep Crate Structure Flat

2. Module Structure (HIGH)

  • mod-explicit-declarations - Use Explicit Module Declarations in lib.rs
  • mod-colocated-tests - Co-locate Tests as test.rs Files
  • mod-submodule-organization - Use mod.rs for Multi-File Modules
  • mod-types-errors-files - Separate Types and Errors into Dedicated Files
  • mod-reexport-pattern - Use pub use for Clean API Re-exports
  • mod-conditional-compilation - Use cfg Attributes for Conditional Modules

3. Naming Conventions (HIGH)

  • name-function-snake-case - Use snake_case for Functions and Methods
  • name-type-pascal-case - Use PascalCase for Types
  • name-constant-screaming - Use SCREAMING_SNAKE_CASE for Constants
  • name-getter-prefix - Prefix Getter Functions with get_
  • name-boolean-predicates - Use is_, has_, should_ for Boolean Predicates
  • name-constructor-new - Use new for Constructors
  • name-conversion-to-from - Use to_ and from_ for Conversions
  • name-type-suffixes - Use Descriptive Suffixes for Type Specialization
  • name-field-unit-suffixes - Include Unit Suffixes in Field Names
  • name-module-snake-case - Use snake_case for Module Names
  • name-generic-parameters - Use Descriptive or Single-Letter Generic Parameters
  • name-lifetime-parameters - Use Single Lowercase Letters for Lifetimes
  • name-test-files - Name Test Files as test.rs

4. Type & Trait Patterns (HIGH)

  • type-option-nullable-fields - Use Option for Nullable Fields
  • type-standard-derives - Use Consistent Derive Order for Data Structs
  • type-builder-pattern - Use Builder Pattern with Method Chaining
  • type-associated-types - Use Associated Types for Related Type Relationships
  • type-phantom-data - Use PhantomData for Unused Generic Parameters
  • type-newtype-pattern - Use Newtype Pattern for Type Safety
  • type-enum-copy-simple - Derive Copy for Simple Enums
  • type-enum-variants - Use Enums for Type-Safe Variants
  • type-trait-impl-grouping - Group Related Trait Implementations Together
  • type-bitflags - Use bitflags! for Type-Safe Bit Flags
  • type-operator-overload - Implement Operator Traits for Domain Types
  • type-public-fields - Use Public Fields for Data Structs
  • type-async-trait - Use async_trait for Async Trait Methods
  • type-boxed-trait-objects - Use Box for Runtime Polymorphism
  • type-type-aliases - Use Type Aliases for Complex Generics

5. Error Handling (HIGH)

  • err-thiserror-enum - Use thiserror for Custom Error Types
  • err-result-alias - Define Module-Local Result Type Alias
  • err-path-context - Include Path Context in IO Errors
  • err-anyhow-context - Use context() and with_context() for Error Messages
  • err-bail-validation - Use bail! for Validation Failures
  • err-graceful-degradation - Use Graceful Degradation for Non-Critical Operations
  • err-panic-unrecoverable - Reserve panic! for Unrecoverable Situations
  • err-expect-message - Use expect() with Descriptive Messages
  • err-source-attribute - Use #[source] for Error Chaining
  • err-ok-or-else - Use ok_or_else for Expensive Error Construction
  • err-two-tier-strategy - Use Two-Tier Error Strategy

How to Use

Read individual reference files for detailed explanations and code examples:

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md

You Might Also Like

Related Skills

coding-agent

coding-agent

179Kdev-codegen

Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.

openclaw avataropenclaw
获取
add-uint-support

add-uint-support

97Kdev-codegen

Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.

pytorch avatarpytorch
获取
at-dispatch-v2

at-dispatch-v2

97Kdev-codegen

Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.

pytorch avatarpytorch
获取
skill-writer

skill-writer

97Kdev-codegen

Guide users through creating Agent Skills for Claude Code. Use when the user wants to create, write, author, or design a new Skill, or needs help with SKILL.md files, frontmatter, or skill structure.

pytorch avatarpytorch
获取

Implements JavaScript classes in C++ using JavaScriptCore. Use when creating new JS classes with C++ bindings, prototypes, or constructors.

oven-sh avataroven-sh
获取

Creates JavaScript classes using Bun's Zig bindings generator (.classes.ts). Use when implementing new JS APIs in Zig with JSC integration.

oven-sh avataroven-sh
获取