mcpField
R
rust-review

rust-review

github.com/atholaテスト・品質343115 回インストール3 日前に更新
リポジトリ

rust-review について

rust-reviewは、Rustプロジェクトの安全性、正確性、慣用的な書き方を調べるコード監査スキルです。レビュー範囲に応じてモジュールを読み込み、証拠の記録と指摘事項の検証を求めます。

主な機能

  1. 01所有権とエラー処理の確認
  2. 02並行処理パターンのレビュー
  3. 03unsafeとFFIの安全性監査
  4. 04依存関係の脆弱性チェック
  5. 05数値変換とメモリ安全性の確認
  6. 06証拠の記録と指摘事項の検証

活用シーン

  1. 01Rustコード変更のレビュー
  2. 02unsafeブロックとFFI境界の監査
  3. 03非同期・同期の並行処理の確認
  4. 04Cargo依存関係のセキュリティレビュー

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/athola/claude-night-market --skill rust-review

インストール後、Claude Code で/rust-reviewを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

modules/
async-slop.md
builtin-preference.md
cargo-dependencies.md
cfg-test-misuse.md
coercion-params.md
collection-types.md
concurrency-patterns.md
conversion-traits.md
duplicate-validators.md
error-handling.md
error-messages.md
float-equality.md
idiomatic-elision.md
iterator-and-allocation-slop.md
match-wildcard.md
mem-forget-audit.md
model-specific-tells.md
mutable-static-audit.md
native-type-modeling.md
numeric-cast-safety.md
ownership-analysis.md
repr-packed-audit.md
silent-returns.md
sql-injection.md
test-slop.md
transmute-audit.md
unsafe-audit.md

詳細

Rust レビューワークフロー

安全性、正確性、慣用的なパターンに重点を置いた、エキスパートレベルの Rust コード監査です。

クイックスタート

/rust-review

確認: --help フラグを付けてコマンドを実行し、利用可能かどうかを確認してください。

使用する場面

  • Rust のコード変更をレビューするとき
  • unsafe ブロックを監査するとき
  • 並行処理のパターンを分析するとき
  • 依存関係のセキュリティをレビューするとき
  • パフォーマンス最適化をレビューするとき

使用しない場面

  • Rust 以外の一般的なコードレビューには、unified-review を使用してください
  • パフォーマンスのプロファイリングには、parseltongue:python-performance パターンを使用してください

必須の TodoWrite 項目

  1. rust-review:ownership-analysis
  2. rust-review:error-handling
  3. rust-review:concurrency
  4. rust-review:unsafe-audit
  5. rust-review:cargo-deps
  6. rust-review:native-modeling
  7. rust-review:idiomatic-elision
  8. rust-review:coercion-params
  9. rust-review:conversion-traits
  10. rust-review:numeric-cast-safety
  11. rust-review:mutable-static-audit
  12. rust-review:match-wildcard
  13. rust-review:transmute-audit
  14. rust-review:float-equality
  15. rust-review:mem-forget-audit
  16. rust-review:repr-packed-audit
  17. rust-review:evidence-log
  18. rust-review:findings-verified

段階的な読み込み

レビューの範囲に応じて、必要なモジュールを読み込みます。

クイックレビュー(所有権とエラー):

  • 借用とライフタイムの分析については、modules/ownership-analysis.md を参照してください
  • Result/Option のパターンについては、modules/error-handling.md を参照してください

並行処理に重点を置く場合:

  • 非同期・同期プリミティブについては、modules/concurrency-patterns.md を参照してください

安全性監査:

  • unsafe ブロックのドキュメント化については、modules/unsafe-audit.md を参照してください
  • static mut グローバル変数と、それに代わるスレッドセーフな方法については、 modules/mutable-static-audit.md を参照してください
  • 切り詰めや精度の損失を伴う as キャストについては、modules/numeric-cast-safety.md を参照してください
  • 列挙型の網羅性を損なうすべてに一致するアームについては、modules/match-wildcard.md を参照してください
  • レイアウトチェックなしでバイトを再解釈する mem::transmute/transmute_copy 呼び出しについては、modules/transmute-audit.md を参照してください
  • フィールドの借用がアラインメントされていない参照になる #[repr(packed)] レイアウトについては、 modules/repr-packed-audit.md を参照してください

正確性監査:

  • 浮動小数点リテラルとの ==/!= については、modules/float-equality.md を参照してください
  • mem::forget によるリークや、参照に対する何もしない drop(&x) については、 modules/mem-forget-audit.md を参照してください

依存関係のレビュー:

  • 脆弱性のスキャンについては、modules/cargo-dependencies.md を参照してください

慣用的なパターン:

  • 変換トレイトと組み込み機能の優先については、modules/builtin-preference.md を参照してください
  • プリミティブより列挙型を優先する方法、newtype、型状態、派生順序付けについては、 modules/native-type-modeling.md を参照してください
  • ライフタイムの省略、式指向の戻り値、明示的な -> () のユニット戻り値については、 modules/idiomatic-elision.md を参照してください
  • Deref 強制を妨げる &String/&Vec<T>/&PathBuf の引数(&str/&[T]/&Path を推奨)については、 modules/coercion-params.md を参照してください
  • impl From にすべき impl Into と、破棄される try_into().unwrap() の変換エラーについては、 modules/conversion-traits.md を参照してください

コアワークフロー

  1. 所有権の分析:借用、ライフタイム、クローンのパターンを確認します
  2. エラー処理:Result/Option の使用とエラー伝播を確認します
  3. 並行処理:非同期パターンと同期プリミティブをレビューします
  4. 安全性監査:不変条件と FFI コントラクトを記録します
  5. 依存関係:脆弱性と更新をスキャンします
  6. 証拠ログ:コマンドと調査結果を記録します

Rust 品質チェックリスト

安全性
  • すべての安全でないブロックに SAFETY コメントが記載されている
  • FFI 境界が適切にラップされている
  • メモリー安全性の不変条件が維持されている
  • static mut グローバル変数を使用していない。共有状態には OnceLock/LazyLock、アトミック、または Mutex/RwLock を使用している
  • mem::transmute/transmute_copy を使用していない。バイト列の変換には from_le_bytes/from_bits/bytemuck、ポインターの変換には .cast() を使用している
  • #[repr(packed)] のフィールドは借用前にコピーしている(アラインメントされていない参照を作成していない)
  • mem::forget によるリークがなく(ManuallyDrop/スコープを使用)、何もしない drop(&x) による参照の破棄もない
  • mlock/munlock の呼び出しでは、RLIMIT を確認し、ページ境界にアラインメントし、ENOMEM を処理している
正確性
  • エラー処理が網羅されている
  • 並行処理のパターンが適切である
  • 情報が失われる as キャスト(長さの切り詰め、as u8/i8、as f32)を TryFrom/From に置き換えている
  • 列挙型のマッチが網羅的であり、_ => unreachable!()/panic!/{} の包括的なフォールスルーがない
  • 浮動小数点数は、浮動小数点リテラルとの完全一致 ==/!= ではなく、許容誤差を用いて比較している
  • 重要な処理経路をテストで網羅している
パフォーマンス
  • 不要なメモリー割り当てがない
  • クローンより借用を優先している
  • 非同期処理が適切にノンブロッキングである
慣用的な書き方
  • 標準トレイトを実装している
  • ヘルパー関数より変換トレイトを優先している
  • 文字列で型付けされた値やブール値のフラグを列挙型で表現している
  • ドメインの不変条件を、newtype(非公開フィールド+検証付きコンストラクター)または必要に応じて typestate で表現している
  • 比較/順序付けのトレイトは手書きせず、derive している
  • 省略規則が適用される箇所ではライフタイムを省略し、パスでは '_ を使用している
  • 末尾の return を削除し、末尾の式を使用している
  • 明示的な -> () のユニット戻り値を省略している(デフォルトでは省略される)
  • パラメーターには &String/&Vec<T>/&PathBuf ではなく、&str/&[T]/&Path を取る(デリファレンス強制変換によりどちらも受け入れられるため、スライスのほうが汎用的)
  • 変換には Into/TryInto ではなく From/TryFrom を実装し、失敗する可能性のある変換のエラーは unwrap() せず伝播させている
  • エラー型が適切に設計されている
  • ドキュメントが網羅されている

出力形式

## Summary
Rust audit findings

## Ownership Analysis
[borrowing and lifetime issues]

## Error Handling
[error patterns and issues]

## Concurrency
[async and sync patterns]

## Unsafe Audit
### [U1] file:line
- Invariants: [documented]
- Anchor: `verbatim source text at file:line`
- Risk: [assessment]
- Recommendation: [action]

## Native Type Modeling
[stringly-typed comparisons, boolean blindness, newtype/type-state notes]

## Idiomatic Elision
[needless lifetimes, trailing returns, explicit `-> ()` unit returns]

## Coercion Params
[`&String`/`&Vec<T>`/`&PathBuf` params that should be borrowed slices]

## Conversion Traits
[`impl Into` over `impl From`; discarded `try_into().unwrap()` errors]

## Numeric Cast Safety
[length-truncating, byte-narrowing, and f32 precision-losing `as` casts]

## Mutable Static Audit
[`static mut` globals and their thread-safe replacements]

## Match Wildcard
[catch-all `_ =>` arms that defeat enum exhaustiveness]

## Transmute Audit
[`mem::transmute`/`transmute_copy` calls and their typed replacements]

## Float Equality
[exact `==`/`!=` comparisons against float literals]

## Mem Forget Audit
[`mem::forget` leaks and no-op `drop(&x)` reference drops]

## Repr Packed Audit
[`#[repr(packed)]` layouts whose field borrows become unaligned]

## Dependencies
[cargo audit results]

## Recommendation
Approve / Approve with actions / Block

検証: --help フラグを付けてコマンドを実行し、利用可能であることを確認してください。

指摘事項が根拠に基づいていることを確認する(rust-review:findings-verified)

.review/findings.json に指摘事項を記録し、引用検証ツール(Skill(imbue:review-core) のステップ 5)を実行します。検証ツールに却下された項目は削除するか、UNVERIFIED のラベルを付けてください。

終了基準

  • すべての安全でないブロックを監査済み
  • 並行処理のパターンを検証済み
  • 依存関係をスキャン済み
  • 根拠を記録済み
  • 対応項目を割り当て済み
  • 報告するすべての指摘事項に Location と、citation_verifier.py によって確認された逐語的な Anchor がある(終了コード 0)。または、未検証の指摘事項が削除されているか、UNVERIFIED のラベルが付いている

コメント