mcpField
S
solid-rust

solid-rust

github.com/fusengine開発3441 回インストール2 週間前に更新
リポジトリ

solid-rust について

solid-rustは、Rust 2024プロジェクトでモジュラーアーキテクチャとSOLID原則を適用するスキルです。モジュール配置、ファイル長、ドキュメントの規則を定め、実装前に再利用可能なコードを確認します。

主な機能

  1. 01src/modules/配下の機能別モジュール
  2. 02src/core/への共有コード配置
  3. 03Traitの配置とジェネリック境界の規則
  4. 04thiserrorとrustdocの要件
  5. 05実装前のDRY・再利用確認

活用シーン

  1. 01Rustの機能モジュールの構成
  2. 02SOLIDアーキテクチャ規則に沿ったコードレビュー
  3. 03サービス、Trait、ハンドラー、テストのひな型作成

インストール

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

$npx skills add https://github.com/fusengine/agents --skill solid-rust

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

同梱ファイル

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

references/
architecture-patterns.md
dependency-inversion.md
interface-segregation.md
liskov-substitution.md
open-closed.md
single-responsibility.md
solid-principles.md
references/templates/
error.md
handler.md
module.md
service.md
test.md
trait-def.md

詳細

SOLID Rust は Rust 2024 エディション向けのモジュラーアーキテクチャを強制します。すべての機能は `src/modules/[feature]/`(handlers.rs、services.rs、repository.rs、traits.rs、models.rs)の下に配置し、共有コードは `src/core/` に置き、トレイトは `traits.rs` または `src/core/traits/` にのみ配置し、ジェネリクスは具象型ではなくトレイト境界を使用し、`thiserror` でカスタムエラーを処理し、すべての公開アイテムに rustdoc の `///` コメントを付けます。

新しいコードを書く前に、src/core/services と src/core/traits に対する DRY チェックを必須とします。概要については solid-principles.md を、SRP/OCP/LSP/ISP/DIP の詳細については各原則のリファレンスを、モジュール/サービス/トレイト/ハンドラー/エラー/テストの雛形についてはテンプレートを参照してください。

SOLID Rust - モジュラーアーキテクチャ

エージェントワークフロー(必須)

実装の前に、必ず 3 つのエージェントを並列で起動してください。それぞれ name を指定した Agent 呼び出しを 1 回ずつ行います。

  1. fuse-ai-pilot:explore-codebase - 既存のアーキテクチャを分析する
  2. fuse-ai-pilot:research-expert - Context7 経由で Rust ドキュメントを検証する
  3. fuse-ai-pilot:sniper - 実装後の検証を行う

DRY - 作成する前に再利用する(必須)

新しいコードを書く前に:

  1. 類似するトレイト、サービス、ロジックがないかコードベースを grep する
  2. 共有の場所を確認する: src/core/services/、src/core/traits/
  3. 類似のコードが存在する場合 -> 重複させるのではなく拡張/再利用する
  4. コードが 2 つ以上の機能で使用される場合 -> src/core/ に作成する

アーキテクチャ(モジュールは必須)

レイヤー場所最大行数
ハンドラーsrc/modules/[feature]/handlers.rs50
サービスsrc/modules/[feature]/services.rs100
リポジトリsrc/modules/[feature]/repository.rs100
トレイトsrc/modules/[feature]/traits.rs30
モデルsrc/modules/[feature]/models.rs50
共有src/core/{services,traits,models}/-

フラットな src/ 構造を決して使用しないでください - 常に src/modules/[feature]/ を使用します


重要なルール(必須)

ルール値
ファイル制限100 行(90 行で分割)
ハンドラー50 行未満、サービスに委譲する
トレイトtraits.rs または src/core/traits/ のみ
Rustdocすべての公開アイテムに ///
エラー処理カスタムエラーには thiserror を使用する
ジェネリクス具象型ではなくトレイト境界を使用する

リファレンスガイド

概念
トピックリファレンス参照するタイミング
SOLID 概要solid-principles.mdクイックリファレンス
SRPsingle-responsibility.md肥大化した構造体
OCPopen-closed.mdimpl の追加
LSPliskov-substitution.mdトレイトの契約
ISPinterface-segregation.md肥大化したトレイト
DIPdependency-inversion.mdジェネリクス/DI
アーキテクチャarchitecture-patterns.mdモジュラークレート
テンプレート
テンプレート使用するタイミング
module.md機能モジュールの構造
service.mdビジネスロジックサービス
trait-def.mdトレイト定義
handler.mdHTTP ハンドラー(Axum)
error.mdカスタムエラー(thiserror)
test.md単体テスト + 統合テスト

禁止事項

アンチパターン修正
100 行を超えるファイル90 行で分割する
impl ファイル内のトレイトtraits.rs に移動する
Box<dyn Any>適切なトレイト境界を使用する
フラットな src/ 構造src/modules/[feature]/ を使用する
ライブラリコードでの unwrapResult<T, E> を使用する

コメント