smithery/attunehq

rust-programming

Rust programming style guide and conventions. Use this skill when writing, reviewing, or modifying Rust code. Covers string creation, type annotations, control flow, naming conventions, imports, error handling, and Rust-specific best practices.

Installation

$ npx skills add smithery/attunehq --skill rust-programming

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/attunehq.

npx skills add smithery/attunehq

Browse all from smithery/attunehq

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,852 B
  • docs SUMMARY.md 268 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Rust Programming Style Guide

Quick reference for project-specific Rust conventions. Load reference files for detailed examples.

Code Style Quick Reference

String Creation

  • Use String::from("...") instead of "...".to_string()
  • Use String::new() instead of "".to_string()

Type Annotations

  • Always use postfix types (turbofish syntax)
  • ❌ let foo: Vec<_> = items.collect()
  • ✅ let foo = items.collect::<Vec<_>>()

Control Flow

Prefer let Some(value) = option else { ... } over .is_none() + .unwrap()

Array Indexing

Avoid array indexing. Use iterator methods: .enumerate(), .iter().map()

See references/indexing-patterns.md for detailed examples

Naming Conventions Quick Reference

Type Names: Avoid Stuttering

When a type is namespaced by its module, don't repeat context:

  • ❌ storage::CasStorage or storage::DiskStorage — stutters "storage"
  • ✅ storage::Disk — describes implementation (see courier/src/storage.rs:54)
  • ❌ db::PostgresDatabase — stutters "database"
  • ✅ db::Postgres — describes implementation (see courier/src/db.rs:29)

Enum Variants

Use single canonical variant with alias functions instead of separate variants for the same concept

See references/naming.md for complete guidelines

Function and Variable Names

  • Don't prefix test functions with test_
  • Don't use hungarian notation; prefer shadowing
  • ❌: formats_str → ✅: formats

Import and Module Style

Imports

Prefer direct imports over fully qualified paths unless ambiguous:

// ✅ Prefer
use client::courier::v1::{Key, cache::ArtifactFile};
let key = Key::from_hex(&hex_string)?;

// ❌ Avoid
let key = client::courier::v1::Key::from_hex(&hex_string)?;

Module Structure

  • Do not use mod.rs. Always prefer mymodule.rs + mymodule/other_file.rs

String Formatting

Inline rust variables in format strings if possible:

  • ✅ format!("Hello, {name}")
  • Use expressions when needed: format!("Hello, {}", user.name())

Development Workflow

Dependency Management

  • Use cargo add instead of manual Cargo.toml edits
  • Run cargo autoinherit after adding packages (if workspace uses inheritance)

Code Quality

  • Format code: make format (uses nightly rustfmt)
  • Run linter: make check
  • Auto-fix lints: make check-fix
  • Pre-commit checks: make precommit (runs machete-fix, autoinherit, check-fix, format, sqlx-prepare)
  • Prefer Itertools::sorted over Vec::sort for iterator chains

I/O Operations

Prefer streaming over buffered by default. Use traits: AsyncRead, AsyncWrite, Read, Write

Error Handling

  • Use color-eyre for errors and reporting
  • Only panic for invariant violations or in tests
  • Prefer returning Result for recoverable errors

Documentation

Don't bold bullet points in markdown:

  • ❌ - Hook: message
  • ✅ - Hook: message

Avoid "space dash space" pattern in prose, use colon instead:

  • ❌ "All commands work the same way - do x then y"
  • ✅ "All commands work the same way: do x then y"

Reference Files

Load these for detailed examples and patterns:

  • references/indexing-patterns.md - Array indexing alternatives with iterator methods
  • references/naming.md - Complete naming conventions with examples
  • references/control-flow.md - Control flow patterns and examples

When to Use This Skill

Invoke when:

  • Writing new Rust code
  • Reviewing code for style violations
  • Refactoring existing Rust code
  • Onboarding to project conventions