mcpField
R
rust

rust

github.com/ulpi-io開発5133 回インストール10 週間前に更新
リポジトリ

rust について

rustは、Rust開発タスクを該当するサブシステムの資料へ振り分け、ワークスペース固有のシステムプログラミング規約を適用するスキルです。必要な指針と検証手順を求めるRust開発者向けです。

主な機能

  1. 01Rustサブシステム別のタスク振り分け
  2. 02関連資料のみを読み込み
  3. 03安全なRustとエラー処理の規則
  4. 04非同期処理、テスト、検証の指針

活用シーン

  1. 01Rustサブシステムの変更実装
  2. 02unsafeコードとエラー設計のレビュー
  3. 03プロパティテストや統合テストの追加
  4. 04対象を絞ったCargo検証コマンドの選択

インストール

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

$npx skills add https://github.com/ulpi-io/skills --skill rust

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

同梱ファイル

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

references/
arena-graph.md
async-concurrency.md
binary-formats.md
datafusion-arrow.md
error-unsafe.md
geo-rtree.md
search-vector.md
stack.md
storage-engine.md
testing.md
type-system.md
wire-protocols.md

詳細

このスキルは Rust リファレンス群を案内するルーティング用シェルであり、システム全体のハンドブックではありません。

譲れないルール:

  1. コーディングの前にサブシステムを特定してください。関連するリファレンスのみを読み込んでください。
  2. デフォルトでは安全な Rust を使用してください。 unsafe は正当な理由がある場合に限ります。すべての unsafe ブロックに // SAFETY: コメントを付けてください。
  3. 可能な限りゼロコピーにしてください。 mmap されたセグメント、ページ内を参照する &str/&[u8] を使用してください。理由なくデータをコピーしないでください。
  4. クレートごとにエラー型を定義してください。 ライブラリークレートでは thiserror の enum を使用してください。ライブラリーで anyhow を使わないでください。バイナリーやテストでのみ使用してください。
  5. 非同期処理には tokio を使用してください。 すべての I/O は非同期にします。CPU 負荷の高い処理は spawn_blocking で実行してください。tokio ランタイムをブロックしないでください。
  6. ワークスペースのクレート構成に従ってください。 サブシステムごとに 1 つのクレートを使用します。依存関係は下位方向に限定し、循環依存を避けてください。
  7. 不変条件にはプロパティテストを使用してください。 ラウンドトリップ、型強制、バイナリー解析には proptest を使用してください。

rust

入力

  • $request:対象となるクレート、サブシステム、バグ、機能、またはレビュー対象

目標

Rust の作業を適切なサブシステムの規約に沿って進め、汎用的な Rust の既定値ではなく、ワークスペースのシステムプログラミングのパターンに従って変更を行えるようにします。

ステップ 0:サブシステムを特定する

Rust のどの領域がタスクに関係するか判断してください。

  • ストレージエンジン
  • バイナリー形式
  • 型システム
  • Arrow または DataFusion
  • ワイヤープロトコル
  • 検索またはベクトル
  • アリーナまたはグラフのコード
  • 地理空間インデックス
  • 非同期処理または並行処理
  • テスト
  • unsafe またはエラー設計

成功基準:リファレンスを読み込む前に、タスクが適切なサブシステムに割り当てられていること。

ステップ 1:関連するリファレンスのみを読み込む

ルーティングテーブルから、一致するファイルを選んでください。リファレンスツリー全体をまとめて読み込まないでください。

タスク/領域読むファイル
ツールチェーン、ワークスペースの構成、主要クレート、Cargo の規約references/stack.md
WAL、mmap、セグメント、MVCC、コンパクション、io_uring、バックエンドreferences/storage-engine.md
カスタムのディスク上の形式、ゼロコピー解析、パック構造体references/binary-formats.md
データベースの型システム、ディスク/実行時の型、Arrow 連携references/type-system.md
DataFusion のテーブルプロバイダー、UDF、Arrow RecordBatch、プランニングreferences/datafusion-arrow.md
pgwire サーバー、MySQL プロトコル、方言のマッピング、ORM 互換性references/wire-protocols.md
tantivy FTS、HNSW ベクトル、SIMD 距離、ハイブリッド検索references/search-vector.md
bumpalo アリーナ、グラフ隣接関係、走査アルゴリズムreferences/arena-graph.md
R-tree 空間インデックス、地理空間述語、WGS84 距離references/geo-rtree.md
tokio 非同期処理、io_uring、crossbeam、ロックフリー構造、MVCCreferences/async-concurrency.md
proptest、決定論的テスト、統合テストのパターンreferences/testing.md
thiserror の階層、unsafe のパターン、安全性の不変条件references/error-unsafe.md

複数のタスクがある場合は、複数のファイルを読んでください。

成功基準:関連するサブシステムの Rust ガイダンスのみが有効になっていること。

ステップ 2:Rust の基本的なガードレールに従って実装する

以下のルールを常に適用してください。

  • デフォルトでは安全な Rust を使用し、unsafe は // SAFETY: で正当化できる場合に限る
  • エラー型はクレートの境界に合わせる(ライブラリーでは thiserror、anyhow はバイナリー/テストでのみ使用)
  • 非同期コードでランタイムをブロックしない。CPU 処理には spawn_blocking を使用する
  • 所有データと借用データを意図的に選択し、シグネチャでは Vec<u8> より &[u8] を優先する
  • 明示的な use インポートを使用する。テストモジュール以外での glob インポートは禁止
  • Result または計算値を返す関数には #[must_use] を付ける
  • #[inline] はホットループ内の小さな関数にのみ使用し、公開 API には使用しない
  • 非同期境界をまたぐトレイトオブジェクトには Send + Sync の境界を付ける
  • すべての公開型に #[derive(Debug)] を付ける。#[derive(Clone)] は安価な場合にのみ付ける
  • 任意のクレート依存関係にはフィーチャーフラグを使用する(#[cfg(feature = "...")])
  • リスクに応じたテストを選択する:ユニット、統合、プロパティ、スナップショット、またはドメイン固有の検証

成功基準:実装がワークスペースのシステムレベルの品質基準を満たしていること。

ステップ 3:変更を検証する

関連性が最も高い、必要最小限の検証ループを使用します。

  • cargo fmt
  • cargo clippy -- -D warnings
  • 対象を絞ったクレートのテスト
  • 必要に応じて、proptest やスナップショットなど、サブシステム固有のテスト

成功基準:このワークスペースで想定されている方法で、Rust のサーフェスが検証されています。

ガードレール

  • SKILL.md に Rust ハンドブック全体を埋め込まないでください。
  • サブシステムの特定を省略しないでください。
  • プロジェクトで特に許可されている場合を除き、ライブラリクレートで anyhow を使用しないでください。
  • 通常のドメインスキルであるため、disable-model-invocation を追加しないでください。
  • unsafe の不変条件に関する説明を残さないままにしないでください。

参照を読み込むタイミング

  • references/stack.md ワークスペースやツールチェーンのコンテキストを確認するために使用します。

  • その後は、references/ 内のタスクに関連するサブシステムファイルのみを読み込みます。

出力要件

次の内容を報告してください。

  1. 読み込んだ Rust の参照資料
  2. 適用したサブシステムのパターン
  3. 行った変更
  4. 実行した検証

コメント