rust-best-practices
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
Skill by apollographql
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/stolinski-rust-best-practices
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/rust-best-practices
Tools it pre-approves 9
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(cargo:*)Bash(rustc:*)Bash(rustfmt:*)Bash(clippy:*)ReadWriteEditGlobGrep
What's inside
- Skill name
rust-best-practices- Description
- Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook. Use this skill when: (1) writing new Rust code or functions, (2) reviewing or refactoring existing Rust code, (3) deciding between borrowing vs cloning or ownership patterns, (4) implementing error handling with Result types, (5) optimizing Rust code for performance, (6) writing tests or documentation for Rust projects.
- License
- MIT
- Compatibility
- Rust 1.70+, Cargo
- Allowed tools
- Bash(cargo:*), Bash(rustc:*), Bash(rustfmt:*), Bash(clippy:*), Read, Write, Edit, Glob, Grep
- Metadata
- author: apollographql · version: 1.1.0
- Instructions
- 78 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Files (10)
- SKILL.md
- chapter_01.md · references/
- chapter_02.md · references/
- chapter_03.md · references/
- chapter_04.md · references/
- chapter_05.md · references/
- chapter_06.md · references/
- chapter_07.md · references/
- chapter_08.md · references/
- chapter_09.md · references/
SKILL.md (first lines)
# Rust Best Practices
Apply these guidelines when writing or reviewing Rust code. Based on Apollo GraphQL's [Rust Best Practices Handbook](https://github.com/apollographql/rust-best-practices).
## Best Practices Reference
Before reviewing, familiarize yourself with Apollo's Rust best practices. Read ALL relevant chapters in the same turn in parallel. Reference these files when providing feedback:
- [Chapter 1 - Coding Styles and Idioms](references/chapter_01.md): Borrowing vs cloning, Copy trait, Option/Result handling, iterators, comments
- [Chapter 2 - Clippy and Linting](references/chapter_02.md): Clippy configuration, important lints, workspace lint setup
- [Chapter 3 - Performance Mindset](references/chapter_03.md): Profiling, avoiding redundant clones, stack vs heap, zero-cost abstractions
- [Chapter 4 - Error Handling](references/chapter_04.md): Result vs panic, thiserror vs anyhow, error hierarchies
- [Chapter 5 - Automated Testing](references/chapter_05.md): Test naming, one assertion per test, snapshot testing
- [Chapter 6 - Generics and Dispatch](references/chapter_06.md): Static vs dynamic dispatch, trait objects
- [Chapter 7 - Type State Pattern](references/chapter_07.md): Compile-time state safety, when to use it
- [Chapter 8 - Comments vs Documentation](references/chapter_08.md): When to comment, doc comments, rustdoc
- [Chapter 9 - Understanding Pointers](references/chapter_09.md): Thread safety, Send/Sync, pointer types
## Quick Reference
### Borrowing & Ownership
- Prefer `&T` over `.clone()` unless ownership transfer is required
- Use `&str` over `String`, `&[T]` over `Vec<T>` in function parameters
- Small `Copy` types (≤24 bytes) can be passed by value
- Use `Cow<'_, T>` when ownership is ambiguous
### Error Handling
- Return `Result<T, E>` for fallible operations; avoid `panic!` in production
- Never use `unwrap()`/`expect()` outside tests
- Use `thiserror` for library errors, `anyhow` for binaries only
- Prefer `?` operator over match chains for error propagation
### Performance
- Always benchmark with `--release` flag
- Run `cargo clippy -- -D clippy::perf` for performance hints
- Avoid cloning in loops; use `.iter()` instead of `.into_iter()` for Copy types
- Prefer iterators over manual loops; avoid intermediate `.collect()` calls
### Linting
Run regularly: `cargo clippy --all-targets --all-features --locked -- -D warnings`
Key lints to watch:
- `redundant_clone` - unnecessary cloning
- `large_enum_variant` - oversized variants (consider boxing)
- `needless_collect` - premature collection
Use `#[expect(clippy::lint)]` over `#[allow(...)]` with justification comment.
### Testing
- Name tests descriptively: `process_should_return_error_when_input_empty()`
- One assertion per test when possible
- Use doc tests (`///`) for public API examples
- Consider `cargo insta` for snapshot testing generated output
### Generics & Dispatch
- Prefer generics (static dispatch) for performance-critical code
- Use `dyn Trait` only when heterogeneous collections are needed
- Box at API boundaries, not internally
### Type State Pattern
Encode valid states in the type system to catch invalid operations at compile time:
```rust
struct Connection<State> { /* ... */ _state: PhantomData<State> }
struct Disconnected;
struct Connected;
impl Connection<Connected> {
fn send(&self, data: &[u8]) { /* only connected can send */ }
}
```
### Documentation
- `//` comments explain *why* (safety, workarounds, design rationale)
- `///` doc comments explain *what* and *how* for public APIs
- Every `TODO` needs a linked issue: `// TODO(#42): ...`
- Enable `#![deny(missing_docs)]` for librariesFrom stolinski/s-stack, MIT.
More from stolinski/s-stack
- 0.587score
fallow
Bart Waardenburg
Codebase analyzer for JavaScript/TypeScript projects.
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
ui-design-critique
stolinski
Design critique for user interfaces that produces a prioritized, strict report of design issues.
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
critique-to-dex
stolinski
Convert a prioritized critique or findings report into a Dex epic with tasks.
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
ux-critique
stolinski
UX critique for interfaces and flows that produces a prioritized, strict report of experience issues.
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
dex
stolinski
Use when tracking complex multi-step tasks, creating task hierarchies, maintaining persistent task state across sessions, building backlogs, or when the user…
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
critique-loop
stolinski
Drive a subject to convergence by repeatedly completing its critique-generated Dex epic, re-running the same critique, and reporting what changed — until it's…
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
ux-interface-design
stolinski
Designs or reviews user interfaces that are self-evident, low-friction, and easy to understand with minimal explanation.
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
graffiti-best-practices
stolinski
Use when generating or refactoring Graffiti UI markup so output is class-first, semantic, accessible, responsive, and aligned with current Graffiti…
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
grill-design
stolinski
Interview the user to create a unique DESIGN.md that defines an app's look.
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
grill-users
stolinski
Interview the user to define who an app's users actually are.
SkillCFreshness: C★ 85Claude Code +9 - 0.582score
grill-with-docs
stolinski
Grilling session that challenges a plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as…
SkillCFreshness: C★ 85Claude Code +9 - 0.579score
svelte-code-writer
stolinski
CLI tools for Svelte 5 documentation lookup and code analysis.
SkillCFreshness: C★ 85Claude Code +9
Signals
- Stars
- 85
- Forks
- 3
- Open issues
- 0
- Last commit (this folder)
- Mar 23, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.1.0
- License
- MIT
- Repository
- github.com/stolinski/s-stack
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
- 0.355score
rust-best-practices
apollographql
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
SkillBFreshness: B★ 13Claude Code +9 - 0.314score
rust-best-practices
apollographql
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
SkillCFreshness: C★ 4Claude Code +9 - 0.262score
rust-best-practices
apollographql
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
SkillDFreshness: D★ 1Claude Code +9
More from apollographql
- 0.740score
rust-best-practices
apollographql
Idiomatic Rust guide based on Apollo GraphQL's best practices handbook.
SkillBFreshness: B★ 125Claude Code +9 - 0.725score
Apollo MCP Server
apollographql
MCP server that exposes GraphQL operations as tools for AI models.
ConnectorAFreshness: ALocal★ 317Claude Code +5 - 0.689score
CLAUDE.md · apollographql/apollo-client
apollographql
CLAUDE.md from apollographql/apollo-client: 140 lines covering Apollo Client Overview, Common Development Commands, High-Level Architecture, Additional…
TemplateAFreshness: A★ 19.8KClaude Code - 0.520score
GraphOS MCP Server
apollographql
Search Apollo docs, specs, and best practices
ConnectorBFreshness: BRemoteClaude Code +3 - 0.479score
apollo-mcp-server
apollographql
Guide for using Apollo MCP Server to connect AI agents with GraphQL APIs.
SkillCFreshness: CClaude Code +9 - 0.479score
apollo-server
apollographql
Guide for building GraphQL servers with Apollo Server 5.x.
SkillCFreshness: CClaude Code +9
Cite this page
rust-best-practices skill. Agent Mart. https://agentmart.dev/skills/stolinski-rust-best-practices (last updated 2026-10-24)