Rust Skills
JMBeresford/retrom
Comprehensive Rust coding guidelines with 265 rules across 26 categories.
Comprehensive Rust coding guidelines with 179 rules across 14 categories.
$ npx skills add noh-rs/nohrs --skill rust-skills -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install noh-rs/nohrs rust-skills --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/rust-skills .claude/skills/rust-skills && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "rust-skills" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.codex/skills/rust-skills into .claude/skills/rust-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-skills", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/noh-rs/nohrs/tree/develop/.codex/skills/rust-skillsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add noh-rs/nohrs --skill rust-skills -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install noh-rs/nohrs rust-skills --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/rust-skills .agents/skills/rust-skills && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rust-skills" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.codex/skills/rust-skills into .agents/skills/rust-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-skills", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add noh-rs/nohrs --skill rust-skills -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install noh-rs/nohrs rust-skills --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/rust-skills .cursor/skills/rust-skills && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "rust-skills" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.codex/skills/rust-skills into .cursor/skills/rust-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-skills", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/noh-rs/nohrs.git --path .codex/skills/rust-skills--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add noh-rs/nohrs --skill rust-skills -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install noh-rs/nohrs rust-skills --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/rust-skills .gemini/skills/rust-skills && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "rust-skills" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.codex/skills/rust-skills into .gemini/skills/rust-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-skills", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install noh-rs/nohrs rust-skillsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add noh-rs/nohrs --skill rust-skills -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/rust-skills .github/skills/rust-skills && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "rust-skills" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.codex/skills/rust-skills into .github/skills/rust-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-skills", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add noh-rs/nohrs --skill rust-skills -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install noh-rs/nohrs rust-skills --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/rust-skills .opencode/skills/rust-skills && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "rust-skills" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.codex/skills/rust-skills into .opencode/skills/rust-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-skills", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
rust-skillsComprehensive Rust coding guidelines with 179 rules across 14 categories.
Rust Skills is an agent skill from noh-rs/nohrs. Comprehensive Rust coding guidelines with 179 rules across 14 categories. Use when writing, reviewing, or refactoring Rust code. Covers ownership, error handling, async patterns, API design, memory optimization, performance, testing, and common anti-patterns. Invoke with /rust-skills.
Its SKILL.md is about 5.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 184 other files (for example `AGENTS.md`, `CLAUDE.md` and `README.md`).
It sits in Development, covering API design, Load testing and Refactoring. It works with Rust. The repository describes itself as: Launcher × Explorer - a fast, keyboard-driven Finder alternative, extensible with sandboxed WASM plugins. Built in Rust. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 42b90ff. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
cargoFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
rust-lang.github.ionnethercote.github.iorust-unofficial.github.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Rust Skills loads about 5.3k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 1,466 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from noh-rs/nohrs at commit 42b90ff, republished under its MIT licence (© noh-rs). 1,466 words, ~5,258 tokens.
.claude/skills/rust-skills/SKILL.md (or your agent's skills folder). This skill also uses 183 other files; get the full folder from GitHub.Comprehensive guide for writing high-quality, idiomatic, and highly optimized Rust code. Contains 179 rules across 14 categories, prioritized by impact to guide LLMs in code generation and refactoring.
Reference these guidelines when:
| Priority | Category | Impact | Prefix | Rules |
|---|---|---|---|---|
| 1 | Ownership & Borrowing | CRITICAL | own- | 12 |
| 2 | Error Handling | CRITICAL | err- | 12 |
| 3 | Memory Optimization | CRITICAL | mem- | 15 |
| 4 | API Design | HIGH | api- | 15 |
| 5 | Async/Await | HIGH | async- | 15 |
| 6 | Compiler Optimization | HIGH | opt- | 12 |
| 7 | Naming Conventions | MEDIUM | name- | 16 |
| 8 | Type Safety | MEDIUM | type- | 10 |
| 9 | Testing | MEDIUM | test- | 13 |
| 10 | Documentation | MEDIUM | doc- | 11 |
| 11 | Performance Patterns | MEDIUM | perf- | 11 |
| 12 | Project Structure | LOW | proj- | 11 |
| 13 | Clippy & Linting | LOW | lint- | 11 |
| 14 | Anti-patterns | REFERENCE | anti- | 15 |
own-borrow-over-clone - Prefer &T borrowing over .clone()own-slice-over-vec - Accept &[T] not &Vec<T>, &str not &Stringown-cow-conditional - Use Cow<'a, T> for conditional ownershipown-arc-shared - Use Arc<T> for thread-safe shared ownershipown-rc-single-thread - Use Rc<T> for single-threaded sharingown-refcell-interior - Use RefCell<T> for interior mutability (single-thread)own-mutex-interior - Use Mutex<T> for interior mutability (multi-thread)own-rwlock-readers - Use RwLock<T> when reads dominate writesown-copy-small - Derive Copy for small, trivial typesown-clone-explicit - Make Clone explicit, avoid implicit copiesown-move-large - Move large data instead of cloningown-lifetime-elision - Rely on lifetime elision when possibleerr-thiserror-lib - Use thiserror for library error typeserr-anyhow-app - Use anyhow for application error handlingerr-result-over-panic - Return Result, don't panic on expected errorserr-context-chain - Add context with .context() or .with_context()err-no-unwrap-prod - Never use .unwrap() in production codeerr-expect-bugs-only - Use .expect() only for programming errorserr-question-mark - Use ? operator for clean propagationerr-from-impl - Use #[from] for automatic error conversionerr-source-chain - Use #[source] to chain underlying errorserr-lowercase-msg - Error messages: lowercase, no trailing punctuationerr-doc-errors - Document errors with # Errors sectionerr-custom-type - Create custom error types, not Box<dyn Error>mem-with-capacity - Use with_capacity() when size is knownmem-smallvec - Use SmallVec for usually-small collectionsmem-arrayvec - Use ArrayVec for bounded-size collectionsmem-box-large-variant - Box large enum variants to reduce type sizemem-boxed-slice - Use Box<[T]> instead of Vec<T> when fixedmem-thinvec - Use ThinVec for often-empty vectorsmem-clone-from - Use clone_from() to reuse allocationsmem-reuse-collections - Reuse collections with clear() in loopsmem-avoid-format - Avoid format!() when string literals workmem-write-over-format - Use write!() instead of format!() mem-arena-allocator - Use arena allocators for batch allocationsmem-zero-copy - Use zero-copy patterns with slices and Bytesmem-compact-string - Use CompactString for small string optimizationmem-smaller-integers - Use smallest integer type that fitsmem-assert-type-size - Assert hot type sizes to prevent regressionsapi-builder-pattern - Use Builder pattern for complex constructionapi-builder-must-use - Add #[must_use] to builder typesapi-newtype-safety - Use newtypes for type-safe distinctionsapi-typestate - Use typestate for compile-time state machinesapi-sealed-trait - Seal traits to prevent external implementationsapi-extension-trait - Use extension traits to add methods to foreign typesapi-parse-dont-validate - Parse into validated types at boundariesapi-impl-into - Accept impl Into<T> for flexible string inputsapi-impl-asref - Accept impl AsRef<T> for borrowed inputsapi-must-use - Add #[must_use] to Result returning functionsapi-non-exhaustive - Use #[non_exhaustive] for future-proof enums/structsapi-from-not-into - Implement From, not Into (auto-derived)api-default-impl - Implement Default for sensible defaultsapi-common-traits - Implement Debug, Clone, PartialEq eagerlyapi-serde-optional - Gate Serialize/Deserialize behind feature flagasync-tokio-runtime - Use Tokio for production async runtimeasync-no-lock-await - Never hold Mutex/RwLock across .awaitasync-spawn-blocking - Use spawn_blocking for CPU-intensive workasync-tokio-fs - Use tokio::fs not std::fs in async codeasync-cancellation-token - Use CancellationToken for graceful shutdownasync-join-parallel - Use tokio::join! for parallel operationsasync-try-join - Use tokio::try_join! for fallible parallel opsasync-select-racing - Use tokio::select! for racing/timeoutsasync-bounded-channel - Use bounded channels for backpressureasync-mpsc-queue - Use mpsc for work queuesasync-broadcast-pubsub - Use broadcast for pub/sub patternsasync-watch-latest - Use watch for latest-value sharingasync-oneshot-response - Use oneshot for request/responseasync-joinset-structured - Use JoinSet for dynamic task groupsasync-clone-before-await - Clone data before await, release locksopt-inline-small - Use #[inline] for small hot functionsopt-inline-always-rare - Use #[inline(always)] sparinglyopt-inline-never-cold - Use #[inline(never)] for cold pathsopt-cold-unlikely - Use #[cold] for error/unlikely pathsopt-likely-hint - Use likely()/unlikely() for branch hintsopt-lto-release - Enable LTO in release buildsopt-codegen-units - Use codegen-units = 1 for max optimizationopt-pgo-profile - Use PGO for production buildsopt-target-cpu - Set target-cpu=native for local buildsopt-bounds-check - Use iterators to avoid bounds checksopt-simd-portable - Use portable SIMD for data-parallel opsopt-cache-friendly - Design cache-friendly data layouts (SoA)name-types-camel - Use UpperCamelCase for types, traits, enumsname-variants-camel - Use UpperCamelCase for enum variantsname-funcs-snake - Use snake_case for functions, methods, modulesname-consts-screaming - Use SCREAMING_SNAKE_CASE for constants/staticsname-lifetime-short - Use short lowercase lifetimes: 'a, 'de, 'srcname-type-param-single - Use single uppercase for type params: T, E, K, Vname-as-free - as_ prefix: free reference conversionname-to-expensive - to_ prefix: expensive conversionname-into-ownership - into_ prefix: ownership transfername-no-get-prefix - No get_ prefix for simple gettersname-is-has-bool - Use is_, has_, can_ for boolean methodsname-iter-convention - Use iter/iter_mut/into_iter for iteratorsname-iter-method - Name iterator methods consistentlyname-iter-type-match - Iterator type names match methodname-acronym-word - Treat acronyms as words: Uuid not UUIDname-crate-no-rs - Crate names: no -rs suffixtype-newtype-ids - Wrap IDs in newtypes: UserId(u64)type-newtype-validated - Newtypes for validated data: Email, Urltype-enum-states - Use enums for mutually exclusive statestype-option-nullable - Use Option<T> for nullable valuestype-result-fallible - Use Result<T, E> for fallible operationstype-phantom-marker - Use PhantomData<T> for type-level markerstype-never-diverge - Use ! type for functions that never returntype-generic-bounds - Add trait bounds only where neededtype-no-stringly - Avoid stringly-typed APIs, use enums/newtypestype-repr-transparent - Use #[repr(transparent)] for FFI newtypestest-cfg-test-module - Use #[cfg(test)] mod tests { }test-use-super - Use use super::*; in test modulestest-integration-dir - Put integration tests in tests/ directorytest-descriptive-names - Use descriptive test namestest-arrange-act-assert - Structure tests as arrange/act/asserttest-proptest-properties - Use proptest for property-based testingtest-mockall-mocking - Use mockall for trait mockingtest-mock-traits - Use traits for dependencies to enable mockingtest-fixture-raii - Use RAII pattern (Drop) for test cleanuptest-tokio-async - Use #[tokio::test] for async teststest-should-panic - Use #[should_panic] for panic teststest-criterion-bench - Use criterion for benchmarkingtest-doctest-examples - Keep doc examples as executable testsdoc-all-public - Document all public items with ///doc-module-inner - Use //! for module-level documentationdoc-examples-section - Include # Examples with runnable codedoc-errors-section - Include # Errors for fallible functionsdoc-panics-section - Include # Panics for panicking functionsdoc-safety-section - Include # Safety for unsafe functionsdoc-question-mark - Use ? in examples, not .unwrap()doc-hidden-setup - Use # prefix to hide example setup codedoc-intra-links - Use intra-doc links: [Vec]doc-link-types - Link related types and functions in docsdoc-cargo-metadata - Fill Cargo.toml metadataperf-iter-over-index - Prefer iterators over manual indexingperf-iter-lazy - Keep iterators lazy, collect() only when neededperf-collect-once - Don't collect() intermediate iteratorsperf-entry-api - Use entry() API for map insert-or-updateperf-drain-reuse - Use drain() to reuse allocationsperf-extend-batch - Use extend() for batch insertionsperf-chain-avoid - Avoid chain() in hot loopsperf-collect-into - Use collect_into() for reusing containersperf-black-box-bench - Use black_box() in benchmarksperf-release-profile - Optimize release profile settingsperf-profile-first - Profile before optimizingproj-lib-main-split - Keep main.rs minimal, logic in lib.rsproj-mod-by-feature - Organize modules by feature, not typeproj-flat-small - Keep small projects flatproj-mod-rs-dir - Use mod.rs for multi-file modulesproj-pub-crate-internal - Use pub(crate) for internal APIsproj-pub-super-parent - Use pub(super) for parent-only visibilityproj-pub-use-reexport - Use pub use for clean public APIproj-prelude-module - Create prelude module for common importsproj-bin-dir - Put multiple binaries in src/bin/proj-workspace-large - Use workspaces for large projectsproj-workspace-deps - Use workspace dependency inheritancelint-deny-correctness - #![deny(clippy::correctness)]lint-warn-suspicious - #![warn(clippy::suspicious)]lint-warn-style - #![warn(clippy::style)]lint-warn-complexity - #![warn(clippy::complexity)]lint-warn-perf - #![warn(clippy::perf)]lint-pedantic-selective - Enable clippy::pedantic selectivelylint-missing-docs - #![warn(missing_docs)]lint-unsafe-doc - #![warn(clippy::undocumented_unsafe_blocks)]lint-cargo-metadata - #![warn(clippy::cargo)] for published crateslint-rustfmt-check - Run cargo fmt --check in CIlint-workspace-lints - Configure lints at workspace levelanti-unwrap-abuse - Don't use .unwrap() in production codeanti-expect-lazy - Don't use .expect() for recoverable errorsanti-clone-excessive - Don't clone when borrowing worksanti-lock-across-await - Don't hold locks across .awaitanti-string-for-str - Don't accept &String when &str worksanti-vec-for-slice - Don't accept &Vec<T> when &[T] worksanti-index-over-iter - Don't use indexing when iterators workanti-panic-expected - Don't panic on expected/recoverable errorsanti-empty-catch - Don't use empty if let Err(_) = ... blocksanti-over-abstraction - Don't over-abstract with excessive genericsanti-premature-optimize - Don't optimize before profilinganti-type-erasure - Don't use Box<dyn Trait> when impl Trait worksanti-format-hot-path - Don't use format!() in hot pathsanti-collect-intermediate - Don't collect() intermediate iteratorsanti-stringly-typed - Don't use strings for structured data[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
panic = "abort"
strip = true
[profile.bench]
inherits = "release"
debug = true
strip = false
[profile.dev]
opt-level = 0
debug = true
[profile.dev.package."*"]
opt-level = 3 # Optimize dependencies in devThis skill provides rule identifiers for quick reference. When generating or reviewing Rust code:
rules/ for detailed examples| Task | Primary Categories |
|---|---|
| New function | own-, err-, name- |
| New struct/API | api-, type-, doc- |
| Async code | async-, own- |
| Error handling | err-, api- |
| Memory optimization | mem-, own-, perf- |
| Performance tuning | opt-, mem-, perf- |
| Code review | anti-, lint- |
This skill synthesizes best practices from:
© noh-rs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 183 other files in .codex/skills/rust-skills of noh-rs/nohrs.
Open the folder on GitHubat commit 42b90ff
Rust Skills next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Rust Skills this skillnoh-rs/nohrs | 156 | — | ~5.3k | Automated safety check: Pass | MIT | |
| Rust SkillsJMBeresford/retrom | 2.1k | 1 repos | ~9.5k | Automated safety check: Pass | MIT | |
| Rust Best Practicesfarm-fe/farm | 5.6k | 3 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Code Qualitystatic-web-server/static-web-server | 2.4k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Rust Best Practicesscott-fryxell/brayness | 125 | — | ~888 | Automated safety check: Pass | MIT | |
| Rust Trait API Designhashgraph-online/awesome-codex-plugins | 1.3k | — | ~929 | Automated safety check: Pass | MIT |
JMBeresford/retrom
Comprehensive Rust coding guidelines with 265 rules across 26 categories.
farm-fe/farm
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
static-web-server/static-web-server
Review or self-check a change to the Static Web Server (SWS) project before it is called done — correctness, invariants, API design, concurrency, maintainability, and an SWS-specific review checklist.
scott-fryxell/brayness
Idiomatic Rust guide based on Apollo GraphQL's best practices handbook.
hashgraph-online/awesome-codex-plugins
Design and review Rust trait APIs, generic bounds, dispatch models, and conversion contracts for clear public interfaces.
AtomUI/AtomUI
A skill your agent uses when optimizing, refactoring, reviewing, or fixing AtomUI controls, including control API contracts, member layout, file splitting, lifecycle, AXAML structure, correctness…
noh-rs/nohrs
Take a change from working tree to a merge-ready pull request, then keep iterating until the CI checks and AI reviewers (CodeRabbit, cubic) all pass.
Works with
Categories
Comprehensive Rust coding guidelines with 179 rules across 14 categories. Rust Skills is an agent skill from noh-rs/nohrs. Comprehensive Rust coding guidelines with 179 rules across 14 categories.
Rust Skills fits situations like: refactoring Rust code; tasks that involve API design; tasks that involve Load testing.
Run `npx skills add noh-rs/nohrs --skill rust-skills -a claude-code`. Or copy the skill folder (.codex/skills/rust-skills in noh-rs/nohrs) into .claude/skills/rust-skills in your project. Claude Code loads it when a task matches its description.
Run `npx skills add noh-rs/nohrs --skill rust-skills -a codex`. Or copy the skill folder (.codex/skills/rust-skills in noh-rs/nohrs) into .agents/skills/rust-skills in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add noh-rs/nohrs --skill rust-skills -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rust-skills, .gemini/skills/rust-skills, .github/skills/rust-skills and .opencode/skills/rust-skills in your project.
Going by SKILL.md and its folder, Rust Skills needs the command-line tools its instructions call (cargo).
SKILL.md names 3 domains. As links in the text: rust-lang.github.io, nnethercote.github.io and rust-unofficial.github.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Rust Skills is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.3k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Rust Skills: Rust Skills (JMBeresford/retrom, 2.1k stars), Rust Best Practices (farm-fe/farm, 5.6k stars), Code Quality (static-web-server/static-web-server, 2.4k stars) and Rust Best Practices (scott-fryxell/brayness, 125 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
noh-rs (a GitHub organization) maintains it in noh-rs/nohrs, which has 156 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 2, 2026.
Source: noh-rs/nohrs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.