mcpField
S
solid-generic

solid-generic

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

solid-generic について

solid-genericは、フレームワークを使わないTypeScript、Bun、Node.jsのCLIツール、ライブラリ、スクリプト、hooks向けの設計ガイドスキルです。モジュール構成やファイル長、JSDoc、再利用のルールに加え、SOLIDの資料とコードテンプレートを提供します。

主な機能

  1. 01モジュール設計ルール
  2. 02SOLID原則のリファレンス
  3. 03ファイル長とJSDocの制約
  4. 04実装前のDRYチェック
  5. 05モジュールとテストのテンプレート

活用シーン

  1. 01TypeScriptプロジェクトのモジュール構成設計
  2. 02実装追加前の共有コード確認
  3. 03共通ルールに沿ったサービスやバリデーターの作成

インストール

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

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

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

同梱ファイル

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
factory.md
interface.md
module.md
service.md
test.md
validator.md

詳細

SOLID Generic は、フレームワークを使わない素の TypeScript/Bun/Node.js コード(CLI ツール、ライブラリ、スクリプト、フック)に対してモジュール式アーキテクチャを強制します。インターフェースは `modules/[feature]/src/interfaces/` に、共有型の場合は `modules/cores/interfaces/` に置き、実装ファイルには決して置きません。ファイルは 100 行未満に保ち(モジュールは 80 行未満、サービスは 60 行未満、バリデータは 40 行未満)、すべてのエクスポートに JSDoc を付けます。

新しいコードを書く前に、modules/cores/lib、modules/cores/interfaces、modules/cores/errors を横断した DRY チェックを必須とし、3 回以上繰り返されているものは共有ヘルパーに抽出します。5 つの SOLID 原則にはそれぞれ詳細なリファレンス(single-responsibility.md から dependency-inversion.md まで)があり、さらにモジュール、サービス、インターフェース、バリデータ、ファクトリ、エラー、テスト向けのコピー&ペースト可能なテンプレートも用意されています。

SOLID Generic - TypeScript / Bun / Node.js

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

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

  1. fuse-ai-pilot:explore-codebase - プロジェクト構造と既存のパターンを分析する
  2. fuse-ai-pilot:research-expert - Context7 経由で最新の TypeScript/Bun ドキュメントを確認する
  3. mcp__context7__query-docs - 統合の互換性を確認する

実装後は、検証のために fuse-ai-pilot:sniper を実行します。


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

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

  1. 類似する関数名、パターン、ロジックがないかコードベースを Grep する
  2. 共有の場所を確認する: modules/cores/lib/、modules/cores/interfaces/、modules/cores/errors/
  3. 類似のコードが存在する場合 -> 重複させず、拡張または再利用する
  4. コードが 2 つ以上のモジュールで使われる場合 -> modules/cores/ に作成する
  5. 繰り返されるロジック(3 回以上の出現)を共有ヘルパーに抽出する

絶対ルール(必須)

1. ファイルは 100 行未満
  • 90 行で分割する - 100 行を決して超えない
  • モジュールは 80 行未満
  • サービスは 60 行未満
  • バリデータは 40 行未満
2. インターフェースの分離(モジュール化は必須)
modules/[feature]/src/interfaces/   # Feature types
  |- user.interface.ts
  \- service.interface.ts
modules/cores/interfaces/            # Shared types
  \- shared.interface.ts

インターフェースを実装ファイルに置いてはいけません。 フラットな src/ 構造を使ってはいけません - 常に modules/ を使います。

3. JSDoc は必須
/**
 * Parse configuration from file path.
 *
 * @param filePath - Absolute path to config file
 * @returns Parsed configuration object
 * @throws ConfigError if file is invalid
 */
export function parseConfig(filePath: string): Config

SOLID 原則(詳細ガイド)

#原則リファレンス主要ルール
S単一責任single-responsibility.md1 ファイル = 変更理由が 1 つ
Oオープン/クローズドopen-closed.md変更ではなく合成で拡張する
Lリスコフの置換liskov-substitution.md実装はインターフェースの契約を守る
Iインターフェース分離interface-segregation.md多くの焦点を絞ったインターフェース > 1 つの肥大なインターフェース
D依存性逆転dependency-inversion.md抽象に依存し、依存性を注入する

概要については solid-principles.md を、プロジェクト構造については architecture-patterns.md を参照してください。


コードテンプレート

テンプレート用途最大行数
module.mdTypeScript/Bun モジュール80
service.mdDI を伴うサービス60
interface.mdTypeScript インターフェース-
validator.mdZod バリデーションスキーマ40
factory.mdファクトリパターン60
error.mdカスタムエラークラス40
test.mdBun test / Vitest-

禁止事項

  • 100 行を超えるファイル
  • 実装ファイル内のインターフェース
  • エントリポイント内のビジネスロジック
  • エクスポートにおける JSDoc の欠落
  • any 型
  • バレルエクスポート(index.ts による再エクスポート)
  • 先に Grep 検索せずに既存ユーティリティを重複させること
  • 共有関数を抽出せずにロジックブロックをコピー&ペーストすること
  • インターフェースによる抽象化を伴わない具象依存

コメント