mcpField
S
solid-go

solid-go

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

solid-go について

solid-goは、Goプロジェクトでモジュール型アーキテクチャとSOLID原則を適用するためのコーディングスキルです。コード配置、再利用の確認、インターフェース規約、実装手順を定めています。

主な機能

  1. 01機能別のinternalモジュール
  2. 02共有コード用のcore
  3. 03実装前の再利用チェック
  4. 04ports内の小さなインターフェース
  5. 05モジュールとテストのテンプレート

活用シーン

  1. 01新しいGo機能の構成
  2. 02実装前の再利用可能なサービス確認
  3. 03ハンドラー、サービス、テストのひな形作成

インストール

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

$npx skills add https://github.com/fusengine/claude-plugins --skill solid-go

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

詳細

SOLID Go では、Go 1.27 以降に向けたモジュール型アーキテクチャを徹底します。各機能は `internal/modules/[feature]/`(ハンドラー、サービス、リポジトリ、ポート、モデル)配下に配置し、共有コードは `internal/core/` に配置します。インターフェース(ポート)は `ports/` ディレクトリのみに置き、小規模(1~3 メソッド。Go の慣用的な形式)に保ちます。関数はインターフェースを受け取り、構造体を返します。また、エクスポートされるすべての関数に godoc コメントを付けます。

新しいコードを書く前に、internal/core/services と internal/core/ports を対象に DRY チェックを行う必要があります。概要については solid-principles.md を、各原則(SRP/OCP/LSP/ISP/DIP)の詳細については原則ごとのリファレンスを、ヘキサゴナル/モジュール型の構成については architecture-patterns.md を参照してください。また、モジュール/サービス/インターフェース/ハンドラー/エラー/テストのひな形にはテンプレートを参照してください。

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

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

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

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

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

新しいコードを書く前に必ず行うこと:

  1. 類似したインターフェース、サービス、ロジックがないかコードベースを Grep で検索します
  2. 共有コードの配置場所を確認します:internal/core/services/、internal/core/ports/
  3. 類似コードがある場合 -> 複製せず、拡張または再利用します
  4. 2 つ以上の機能で使用するコードの場合 -> internal/core/ に作成します

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

レイヤー配置場所
ハンドラーinternal/modules/[feature]/handlers/
サービスinternal/modules/[feature]/services/
リポジトリinternal/modules/[feature]/repositories/
ポート(インターフェース)internal/modules/[feature]/ports/
モデルinternal/modules/[feature]/models/
共有internal/core/{services,ports,models}/

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


重要なルール(必須)

ルール値
ファイルの上限行数FUSE_SOLID_MAX_LINES
ハンドラー薄く保ち、サービスに処理を委譲します
インターフェースports/ ディレクトリのみに配置
Godocエクスポートされるすべての関数にドキュメントを付けます
インターフェースを受け取る構造体を返す
小規模なインターフェース最大 1~3 メソッド(Go の慣用的な形式)

リファレンスガイド

概念
トピックリファレンス参照するタイミング
SOLID の概要solid-principles.mdクイックリファレンス
SRPsingle-responsibility.md肥大化した構造体
OCPopen-closed.mdプロバイダーの追加
LSPliskov-substitution.md契約
ISPinterface-segregation.md肥大化したインターフェース
DIPdependency-inversion.md依存性の注入
アーキテクチャarchitecture-patterns.mdヘキサゴナル/モジュール型
テンプレート
テンプレート使用するタイミング
module.md機能モジュールの構成
service.mdビジネスロジックサービス
interface.mdポートの定義
handler.mdHTTP ハンドラー
error.mdカスタムエラー
test.mdテーブル駆動テスト

禁止事項

アンチパターン修正方法
FUSE_SOLID_MAX_LINES を超えるファイル責務ごとに分割します
実装ファイル内のインターフェースports/ ディレクトリに移動します
肥大化したインターフェース(4 つ以上のメソッド)小規模なインターフェースに分割します
フラットな internal/ 構成internal/modules/[feature]/ を使用します
依存関係の接続に init() を使うコンストラクターインジェクションを使用します

コメント