Guide for writing ast-grep rules to perform structural code search and analysis. Use when users need to search codebases using Abstract Syntax Tree (AST) patterns, find specific code structures, or perform complex code queries that go beyond simple text search. This skill should be used when users ask to search for…
A set of design rules for building command-line tools, which are programs operated from a terminal. It covers command options, configuration, errors, output, exit codes, interruption, and shell completion.
A guide to design constraints for cloud-native applications, which run in containers or distributed services and may be moved or restarted automatically.
A set of development guidance for web services, which are programs that receive and respond to requests over the internet. It covers HTTP APIs, real-time connections, authentication, routing, and shared application state.
Guidance for managing ownership and shared access to data in Rust, including smart pointers such as Box, Rc, Arc, Weak, RefCell, and Cell. Rust uses ownership rules to control when memory can be used and released.
A Rust coding guide for handling data that must change while respecting Rust’s borrowing rules. It covers mutable references, shared references, and single- or multi-threaded mutation tools.
A Rust guide to generics and traits, which let code work with multiple types, and to choosing whether type decisions happen during compilation or at runtime.
A software-design approach that uses a programming language’s type system to prevent invalid states. It includes patterns such as new types, marker types and staged builders, where the compiler checks rules before the program runs.
A guide to handling failures and missing values in Rust with types such as Result and Option. It explains when to return an error, propagate it, handle it locally, or stop because the situation is a programming bug.
A guide to domain modeling, the practice of representing a business problem in code. It explains concepts such as entities, value objects, aggregates, repositories, domain events, services, and business rules in Rust.
A guide to making Rust programs use less time or memory. It explains how to measure slow code and choose changes such as fewer allocations, better data layout, parallel work, or fewer copies.
Use when designing resource lifecycles. Keywords: RAII, Drop, resource lifecycle, connection pool, lazy initialization, connection pool design, resource cleanup patterns, cleanup, scope, OnceCell, Lazy, oncecell, OnceLock, transaction, session management, when is Drop called, cleanup on error, guard pattern, scope…
Use when learning Rust concepts. Keywords: mental model, how to think about ownership, understanding borrow checker, visualizing memory layout, analogy, misconception, explaining ownership, why does Rust, help me understand, confused about, learning Rust, explain like I'm, ELI5, intuition for, coming from Java, coming…
Use when reviewing code for anti-patterns. Keywords: anti-pattern, common mistake, pitfall, code smell, bad practice, code review, is this an anti-pattern, better way to do this, common mistake to avoid, why is this bad, idiomatic way, beginner mistake, fighting borrow checker, clone everywhere, unwrap in production…
A tool that maps which Rust functions call a chosen function and which functions it calls. The map can show incoming calls, outgoing calls, or both across a selected number of levels.
A Rust code navigation tool that uses the Language Server Protocol, the system behind editor features such as “go to definition.” It can locate definitions, find references, and show type or documentation details.
A Rust code refactoring tool that uses language-server analysis to find affected code before changing it. It supports renaming symbols, extracting or inlining functions, and moving symbols between modules.
A Rust project-structure guide that uses LSP, the language tools that understand source code, to list symbols such as structs, traits, functions, and modules.
At most 3 mods per repository are shown here, and a mod shipped inside a plugin is left to that plugin's page — the rest are on their repository pages: