Agent Skills by ALSEL
汎用ソフトウェア開発⭐ リポ 0品質スコア 65/100

rust-skills

Rustコーディングの包括的なガイドラインで、14カテゴリー across 179ルールを提供します。Rustコードの作成、レビュー、リファクタリング時に活用できます。所有権、エラーハンドリング、非同期パターン、API設計、メモリ最適化、パフォーマンス、テスト、一般的なアンチパターンをカバーしています。/rust-skillsコマンドで呼び出します。

description の原文を見る

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.

SKILL.md 本文

Rustのベストプラクティス

高品質で慣例的、かつ高度に最適化されたRustコードを書くための包括的なガイドです。14のカテゴリーにわたる179のルールを含んでおり、LLMのコード生成とリファクタリングを導くための優先度付けがされています。

適用時期

以下の場合にこれらのガイドラインを参照してください:

  • 新しいRustの関数、構造体、またはモジュールを書く
  • エラーハンドリングまたは非同期コードを実装する
  • ライブラリ用の公開APIを設計する
  • オーナーシップ/借用の問題についてコードをレビューする
  • メモリ使用量を最適化するか、割り当てを削減する
  • ホットパスのパフォーマンスをチューニングする
  • 既存のRustコードをリファクタリングする

ルールカテゴリー(優先度順)

優先度カテゴリー影響度プレフィックスルール数
1オーナーシップと借用CRITICALown-12
2エラーハンドリングCRITICALerr-12
3メモリ最適化CRITICALmem-15
4API設計HIGHapi-15
5非同期/awaitHIGHasync-15
6コンパイラ最適化HIGHopt-12
7命名規則MEDIUMname-16
8型安全性MEDIUMtype-10
9テストMEDIUMtest-13
10ドキュメントMEDIUMdoc-11
11パフォーマンスパターンMEDIUMperf-11
12プロジェクト構造LOWproj-11
13Clippy & リントLOWlint-11
14アンチパターンREFERENCEanti-15

クイックリファレンス

1. オーナーシップと借用 (CRITICAL)

  • own-borrow-over-clone - .clone() より &T 借用を推奨
  • own-slice-over-vec - &Vec<T> ではなく &[T]&String ではなく &str を受け付ける
  • own-cow-conditional - 条件付きオーナーシップには Cow<'a, T> を使用
  • own-arc-shared - スレッドセーフな共有オーナーシップには Arc<T> を使用
  • own-rc-single-thread - シングルスレッド共有には Rc<T> を使用
  • own-refcell-interior - シングルスレッド内部可変性には RefCell<T> を使用
  • own-mutex-interior - マルチスレッド内部可変性には Mutex<T> を使用
  • own-rwlock-readers - 読み取りが書き込みを上回る場合は RwLock<T> を使用
  • own-copy-small - 小さな自明な型には Copy を導出
  • own-clone-explicit - Clone を明示的にし、暗黙的なコピーを避ける
  • own-move-large - 大きなデータはクローンではなく移動
  • own-lifetime-elision - 可能な限りライフタイム省略に頼る

2. エラーハンドリング (CRITICAL)

  • err-thiserror-lib - ライブラリのエラー型には thiserror を使用
  • err-anyhow-app - アプリケーションのエラーハンドリングには anyhow を使用
  • err-result-over-panic - 予想されるエラーではパニックせず Result を返す
  • err-context-chain - .context() または .with_context() でコンテキストを追加
  • err-no-unwrap-prod - 本番コードで .unwrap() を使用しない
  • err-expect-bugs-only - .expect() はプログラミングエラーのみに使用
  • err-question-mark - クリーンな伝播には ? オペレータを使用
  • err-from-impl - 自動エラー変換には #[from] を使用
  • err-source-chain - 根底にあるエラーをチェーンするには #[source] を使用
  • err-lowercase-msg - エラーメッセージ:小文字、末尾に句読点なし
  • err-doc-errors - # Errors セクションでエラーをドキュメント化
  • err-custom-type - Box<dyn Error> ではなくカスタムエラー型を作成

3. メモリ最適化 (CRITICAL)

  • mem-with-capacity - サイズが既知の場合は with_capacity() を使用
  • mem-smallvec - 通常は小さいコレクションには SmallVec を使用
  • mem-arrayvec - 境界のあるサイズのコレクションには ArrayVec を使用
  • mem-box-large-variant - 大きなenumバリアントをボックス化して型サイズを削減
  • mem-boxed-slice - 固定の場合は Vec<T> ではなく Box<[T]> を使用
  • mem-thinvec - 空であることが多いベクトルには ThinVec を使用
  • mem-clone-from - 割り当てを再利用するには clone_from() を使用
  • mem-reuse-collections - ループ内で clear() を使用してコレクションを再利用
  • mem-avoid-format - 文字列リテラルで十分な場合は format!() を避ける
  • mem-write-over-format - format!() の代わりに write!() を使用
  • mem-arena-allocator - バッチ割り当てにはアリーナアロケータを使用
  • mem-zero-copy - スライスと Bytes でゼロコピーパターンを使用
  • mem-compact-string - 小文字列最適化には CompactString を使用
  • mem-smaller-integers - 適合する最小の整数型を使用
  • mem-assert-type-size - ホット型のサイズをアサートして回帰を防止

4. API設計 (HIGH)

  • api-builder-pattern - 複雑な構築にはビルダーパターンを使用
  • api-builder-must-use - ビルダー型に #[must_use] を追加
  • api-newtype-safety - 型安全な区別にはnewtypeを使用
  • api-typestate - コンパイル時のステートマシンにはtypestateを使用
  • api-sealed-trait - 外部の実装を防ぐためにトレイトをシール
  • api-extension-trait - 外部型にメソッドを追加するにはエクステンショントレイトを使用
  • api-parse-dont-validate - 検証のために解析し、検証済み型に解析
  • api-impl-into - 柔軟な文字列入力には impl Into<T> を受け付ける
  • api-impl-asref - 借用された入力には impl AsRef<T> を受け付ける
  • api-must-use - Result を返す関数に #[must_use] を追加
  • api-non-exhaustive - 将来証明なenumと構造体には #[non_exhaustive] を使用
  • api-from-not-into - Into ではなく From を実装(自動導出)
  • api-default-impl - 適切なデフォルトには Default を実装
  • api-common-traits - DebugClonePartialEq を早期に実装
  • api-serde-optional - Serialize/Deserialize をフィーチャーフラグの背後に配置

5. 非同期/Await (HIGH)

  • async-tokio-runtime - 本番環境の非同期ランタイムにはTokioを使用
  • async-no-lock-await - .await を跨いで Mutex/RwLock を保持しない
  • async-spawn-blocking - CPU集約的な作業には spawn_blocking を使用
  • async-tokio-fs - 非同期コードでは std::fs ではなく tokio::fs を使用
  • async-cancellation-token - グレースフルシャットダウンには CancellationToken を使用
  • async-join-parallel - 並列操作には tokio::join! を使用
  • async-try-join - フォールイブルな並列操作には tokio::try_join! を使用
  • async-select-racing - レーシング/タイムアウトには tokio::select! を使用
  • async-bounded-channel - バックプレッシャーには境界のあるチャネルを使用
  • async-mpsc-queue - ワークキューには mpsc を使用
  • async-broadcast-pubsub - パブ/サブパターンには broadcast を使用
  • async-watch-latest - 最新値の共有には watch を使用
  • async-oneshot-response - リクエスト/レスポンスには oneshot を使用
  • async-joinset-structured - 動的なタスクグループには JoinSet を使用
  • async-clone-before-await - awaitの前にデータをクローンし、ロックを解放

6. コンパイラ最適化 (HIGH)

  • opt-inline-small - 小さいホット関数には #[inline] を使用
  • opt-inline-always-rare - #[inline(always)] は控えめに使用
  • opt-inline-never-cold - コールドパスには #[inline(never)] を使用
  • opt-cold-unlikely - エラー/起こりにくいパスには #[cold] を使用
  • opt-likely-hint - ブランチヒントには likely()/unlikely() を使用
  • opt-lto-release - リリースビルドでLTOを有効化
  • opt-codegen-units - 最大最適化には codegen-units = 1 を使用
  • opt-pgo-profile - 本番ビルドにはPGOを使用
  • opt-target-cpu - ローカルビルドには target-cpu=native を設定
  • opt-bounds-check - 境界チェックを避けるにはイテレータを使用
  • opt-simd-portable - データ並列操作にはポータブルSIMDを使用
  • opt-cache-friendly - キャッシュフレンドリーなデータレイアウト(SoA)を設計

7. 命名規則 (MEDIUM)

  • name-types-camel - 型、トレイト、enumには UpperCamelCase を使用
  • name-variants-camel - enumバリアントには UpperCamelCase を使用
  • name-funcs-snake - 関数、メソッド、モジュールには snake_case を使用
  • name-consts-screaming - 定数/staticには SCREAMING_SNAKE_CASE を使用
  • name-lifetime-short - 短い小文字のライフタイムを使用:'a'de'src
  • name-type-param-single - 型パラメータに単一大文字を使用:TEKV
  • name-as-free - as_ プレフィックス:フリー参照変換
  • name-to-expensive - to_ プレフィックス:高コストな変換
  • name-into-ownership - into_ プレフィックス:オーナーシップ譲渡
  • name-no-get-prefix - シンプルなゲッターに get_ プレフィックスなし
  • name-is-has-bool - ブール型メソッドには is_has_can_ を使用
  • name-iter-convention - イテレータには iter/iter_mut/into_iter を使用
  • name-iter-method - イテレータメソッドを一貫性を持って命名
  • name-iter-type-match - イテレータ型名とメソッドを対応させる
  • name-acronym-word - アクロニムを単語として扱う:UUID ではなく Uuid
  • name-crate-no-rs - クレート名:-rs 接尾辞なし

8. 型安全性 (MEDIUM)

  • type-newtype-ids - IDをnewtypeでラップ:UserId(u64)
  • type-newtype-validated - 検証済みデータ用newtype:EmailUrl
  • type-enum-states - 相互に排他的な状態にはenumを使用
  • type-option-nullable - nullable値には Option<T> を使用
  • type-result-fallible - フォールイブルな操作には Result<T, E> を使用
  • type-phantom-marker - 型レベルのマーカーには PhantomData<T> を使用
  • type-never-diverge - 戻らない関数には ! 型を使用
  • type-generic-bounds - 必要な場所にのみトレイト境界を追加
  • type-no-stringly - stringly型のAPIを避け、enumやnewtypeを使用
  • type-repr-transparent - FFI newtypeには #[repr(transparent)] を使用

9. テスト (MEDIUM)

  • test-cfg-test-module - #[cfg(test)] mod tests { } を使用
  • test-use-super - テストモジュールでは use super::*; を使用
  • test-integration-dir - 統合テストを tests/ ディレクトリに配置
  • test-descriptive-names - わかりやすいテスト名を使用
  • test-arrange-act-assert - テストをarrange/act/assertで構造化
  • test-proptest-properties - プロパティベーステストに proptest を使用
  • test-mockall-mocking - トレイトのモックには mockall を使用
  • test-mock-traits - モッキング可能にするために依存をトレイト化
  • test-fixture-raii - テストのクリーンアップにはRAIIパターン(Drop)を使用
  • test-tokio-async - 非同期テストには #[tokio::test] を使用
  • test-should-panic - パニックテストに #[should_panic] を使用
  • test-criterion-bench - ベンチマークには criterion を使用
  • test-doctest-examples - docの例を実行可能なテストとして保持

10. ドキュメント (MEDIUM)

  • doc-all-public - すべての公開項目を /// でドキュメント化
  • doc-module-inner - モジュールレベルのドキュメントには //! を使用
  • doc-examples-section - 実行可能なコード付き # Examples を含める
  • doc-errors-section - フォールイブルな関数に # Errors を含める
  • doc-panics-section - パニックする関数に # Panics を含める
  • doc-safety-section - unsafeな関数に # Safety を含める
  • doc-question-mark - 例では .unwrap() ではなく ? を使用
  • doc-hidden-setup - 例のセットアップコードを # プレフィックスで隠す
  • doc-intra-links - イントラドックリンクを使用:[Vec]
  • doc-link-types - ドキュメント内で関連する型と関数をリンク
  • doc-cargo-metadata - Cargo.toml メタデータを記入

11. パフォーマンスパターン (MEDIUM)

  • perf-iter-over-index - 手動インデックスよりイテレータを推奨
  • perf-iter-lazy - イテレータを遅延のままに、collect() は必要な時だけ
  • perf-collect-once - 中間イテレータで collect() をしない
  • perf-entry-api - マップの挿入または更新には entry() APIを使用
  • perf-drain-reuse - 割り当て再利用には drain() を使用
  • perf-extend-batch - バッチ挿入には extend() を使用
  • perf-chain-avoid - ホットループでの chain() を避ける
  • perf-collect-into - コンテナを再利用するには collect_into() を使用
  • perf-black-box-bench - ベンチマークで black_box() を使用
  • perf-release-profile - リリースプロファイル設定を最適化
  • perf-profile-first - 最適化の前にプロファイリングを実施

12. プロジェクト構造 (LOW)

  • proj-lib-main-split - main.rs は最小限にし、ロジックは lib.rs
  • proj-mod-by-feature - 型ではなく機能でモジュールを整理
  • proj-flat-small - 小さいプロジェクトはフラットに保つ
  • proj-mod-rs-dir - 複数ファイルモジュールに mod.rs を使用
  • proj-pub-crate-internal - 内部APIには pub(crate) を使用
  • proj-pub-super-parent - 親のみの可視性には pub(super) を使用
  • proj-pub-use-reexport - クリーンな公開APIには pub use を使用
  • proj-prelude-module - 一般的なインポート用に prelude モジュールを作成
  • proj-bin-dir - 複数のバイナリを src/bin/ に配置
  • proj-workspace-large - 大規模プロジェクトにはワークスペースを使用
  • proj-workspace-deps - ワークスペース依存の継承を使用

13. Clippy & リント (LOW)

  • lint-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 - clippy::pedantic を選別的に有効化
  • lint-missing-docs - #![warn(missing_docs)]
  • lint-unsafe-doc - #![warn(clippy::undocumented_unsafe_blocks)]
  • lint-cargo-metadata - 公開クレート用に #![warn(clippy::cargo)]
  • lint-rustfmt-check - CIで cargo fmt --check を実行
  • lint-workspace-lints - ワークスペースレベルでリントを設定

14. アンチパターン (REFERENCE)

  • anti-unwrap-abuse - 本番コードで .unwrap() を使用しない
  • anti-expect-lazy - 回復可能なエラーに .expect() を使用しない
  • anti-clone-excessive -

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
curtisault
リポジトリ
curtisault/rust-skills
ライセンス
MIT
最終更新
2026/2/16

Source: https://github.com/curtisault/rust-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: curtisault · curtisault/rust-skills · ライセンス: MIT