mcpField
S
solid-ruby

solid-ruby

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

solid-ruby について

solid-rubyは、Ruby 4.0+およびRails 8のプロジェクトでモジュール型のSOLIDアーキテクチャを適用するエージェントスキルです。配置規則、コードと文書化の要件、再利用確認に加え、原則のガイドと実装テンプレートを提供します。

主な機能

  1. 01機能単位のモジュール構成
  2. 02共有コアサービスとコントラクト
  3. 03YARD文書と凍結文字列の必須化
  4. 04新規コード作成前の再利用確認
  5. 05SOLIDガイドとひな形

活用シーン

  1. 01新しいRails機能モジュールの構成
  2. 02実装前の再利用可能なサービス確認
  3. 03サービス、コントラクト、モデル、テストの作成
  4. 04モジュール型アーキテクチャ規則に沿ったコード確認

インストール

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

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

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

同梱ファイル

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/
contract.md
error.md
model.md
module.md
service.md
test.md

詳細

SOLID Ruby は Ruby 4.0+/Rails 8 向けのモジュール型アーキテクチャを徹底します。すべての機能は `app/modules/[feature]/`(コントローラー、サービス、リポジトリー、コントラクト、モデル)に配置し、共有コードは `app/modules/core/` に置きます。コントラクト(ダックタイピングモジュール)は `contracts/` ディレクトリーにのみ配置し、すべてのファイルに `# frozen_string_literal: true` を記述し、すべての公開メソッドに YARD ドキュメントを付ける必要があります。

新しいコードを書く前に、app/modules/core/services と app/modules/core/contracts を対象に DRY チェックを行う必要があります。概要については solid-principles.md を、SRP/OCP/LSP/ISP/DIP の詳細については各原則のリファレンスを、モジュール/サービス/コントラクト/モデル/エラー/テストのひな形についてはテンプレートを参照してください。

SOLID Ruby - モジュール型アーキテクチャ

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

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

  1. fuse-ai-pilot:explore-codebase - 既存のアーキテクチャを分析します
  2. fuse-ai-pilot:research-expert - Context7 を使用して Ruby/Rails のドキュメントを確認します
  3. fuse-ai-pilot:sniper - 実装後の検証を行います

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

新しいコードを書く前に、必ず以下を行います。

  1. コードベースを Grep して、類似するモジュール、サービス、ロジックを探します
  2. 共有領域を確認します。app/modules/core/services/、app/modules/core/contracts/
  3. 類似コードがある場合は、重複させずに拡張または再利用します
  4. 2 つ以上の機能で使用するコードは、app/modules/core/ に作成します

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

レイヤー配置場所
コントローラーapp/modules/[feature]/controllers/
サービスapp/modules/[feature]/services/
リポジトリーapp/modules/[feature]/repositories/
コントラクトapp/modules/[feature]/contracts/
モデルapp/modules/[feature]/models/
共有app/modules/core/{services,contracts,concerns}/

フラットな app/ 構造は絶対に使わず、常に app/modules/[feature]/ を使用してください。


重要なルール(必須)

ルール値
ファイルの上限FUSE_SOLID_MAX_LINES
コントローラー薄く保ち、サービスに委譲する
コントラクトcontracts/ ディレクトリーのみ(ダックタイピングモジュール)
YARD ドキュメントすべての公開メソッドに記述する
文字列の凍結すべてのファイルに # frozen_string_literal: true を記述する
Concern共有動作(インターフェースなど)に使用する

リファレンスガイド

概念
トピックリファレンス参照するタイミング
SOLID の概要solid-principles.mdクイックリファレンス
SRPsingle-responsibility.md肥大化したクラス
OCPopen-closed.mdストラテジーの追加
LSPliskov-substitution.mdコントラクト
ISPinterface-segregation.md肥大化したモジュール
DIPdependency-inversion.mdインジェクション
アーキテクチャarchitecture-patterns.mdモジュール型 Rails
テンプレート
テンプレート使用するタイミング
module.md機能モジュールの構成
service.mdビジネスロジックのサービス
contract.mdダックタイピングのコントラクト
model.mdActive Record モデル
error.mdカスタム例外
test.mdRSpec テスト

禁止事項

アンチパターン修正方法
FUSE_SOLID_MAX_LINES を超えるファイル責務ごとに分割する
モデル内のビジネスロジックサービスに切り出す
肥大化したコントローラーサービスに委譲する
フラットな app/ 構造app/modules/[feature]/ を使用する
God クラス責務ごとに分割する

コメント