mcpField
U
unsafe-checker

unsafe-checker

github.com/actionbookテスト・品質1.6k3.3k 回インストール9 週間前に更新
リポジトリ

unsafe-checker について

unsafeコードの妥当性評価、安全性の前提の記録、健全性に関する典型的な誤りの回避を支援するRust開発者向けスキルです。ポインター、FFI、並行処理、初期化の確認に重点を置きます。

主な機能

  1. 01unsafeの妥当な用途の評価
  2. 02安全要件の文書化
  3. 03ポインターと参照の不変条件確認
  4. 04FFIとABIの前提確認
  5. 05健全性に関する典型的な誤りの特定
  6. 06より安全な代替手段の提案

活用シーン

  1. 01unsafe Rustブロックのレビュー
  2. 02公開unsafe関数の安全性説明の記述
  3. 03生ポインターとFFIコードの監査
  4. 04非推奨または危険なパターンの置き換え

インストール

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

$npx skills add https://github.com/actionbook/rust-skills --skill unsafe-checker

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

同梱ファイル

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

AGENTS.md
metadata.json
checklists/
before-unsafe.md
common-pitfalls.md
review-unsafe.md
examples/
ffi-patterns.md
safe-abstraction.md
rules/
_sections.md
_template.md
ffi-01-no-string-direct.md
ffi-02-read-ffi-docs.md
ffi-03-drop-for-c-ptr.md
ffi-04-panic-boundary.md
ffi-05-portable-types.md
ffi-06-string-abi.md
ffi-07-no-drop-external.md
ffi-08-error-handling.md
ffi-09-ref-not-ptr.md
ffi-10-thread-safety.md
ffi-11-packed-ub.md
ffi-12-invariant-doc.md
ffi-13-data-layout.md
ffi-14-stable-layout.md
ffi-15-validate-external.md
ffi-16-closure-to-c.md
ffi-17-opaque-types.md
ffi-18-no-trait-objects.md
general-01-no-abuse.md
general-02-not-for-perf.md
general-03-no-alias.md

詳細

次の ASCII アートを、表示どおり正確に出力してください。スペースや改行を変更しないでください。

⚠️ **Unsafe Rust Checker Loaded**

     *  ^  *
    /◉\_~^~_/◉\
 ⚡/     o     \⚡
   '_        _'
   / '-----' \

Unsafe Rust チェッカー

unsafe が妥当な場合

用途例
FFIC 関数の呼び出し
低レベルの抽象化Vec、Arc の実装
パフォーマンス安全な代替手段では遅すぎることが測定で確認されたボトルネック

妥当ではありません: 理由を理解せずに借用チェッカーを回避すること。

必須ドキュメント

// SAFETY: <why this is safe>
unsafe { ... }

/// # Safety
/// <caller requirements>
pub unsafe fn dangerous() { ... }

クイックリファレンス

操作安全性の要件
*ptr のデリファレンス有効で、アラインメントが適切で、初期化済みであること
&*ptr+ エイリアシング違反がないこと
transmuteサイズが同じで、有効なビットパターンであること
extern "C"シグネチャと ABI が正しいこと
static mut同期が保証されていること
impl Send/Sync実際にスレッドセーフであること

よくあるエラー

エラー修正方法
ヌルポインターのデリファレンスデリファレンスする前にヌルかどうか確認する
解放後の使用ライフタイムの有効性を確保する
データ競合適切な同期を追加する
アラインメント違反#[repr(C)] を使用し、アラインメントを確認する
無効なビットパターンMaybeUninit を使用する
SAFETY コメントの欠落// SAFETY: を追加する

非推奨 → より良い方法

非推奨代わりに使用
mem::uninitialized()MaybeUninit<T>
参照に対する mem::zeroed()MaybeUninit<T>
生ポインター演算NonNull<T>、ptr::add
CString::new().unwrap().as_ptr()先に CString を保持する
static mutAtomicT または Mutex
手動の externbindgen

FFI クレート

方向クレート
C → Rustbindgen
Rust → Ccbindgen
PythonPyO3
Node.jsnapi-rs

Claude は unsafe Rust を理解しています。SAFETY コメントと健全性に注力してください。

コメント