solid-generic について
solid-genericは、フレームワークを使わないTypeScript、Bun、Node.jsプロジェクト向けの開発スキルです。SOLID原則に沿ったモジュール構成、再利用、エクスポートの文書化を促し、ガイドとテンプレートを備えています。
主な機能
- 01SOLID原則のガイド
- 02モジュールとインターフェースの規則
- 03DRYの再利用チェック
- 04エクスポートへのJSDoc要件
- 05モジュールとテストのテンプレート
活用シーン
- 01新しいTypeScriptモジュールの設計
- 02コード内の重複ロジックの確認
- 03インターフェースと実装の分離
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fusengine/ claude-plugins --skill solid-genericインストール後、Claude Code で/solid-genericを入力して読み込まれたか確認します。
詳細
新しいコードを書く前には、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 つのエージェントを起動してください。それぞれ 1 回の Agent 呼び出しで、name を指定します。
- fuse-ai-pilot:explore-codebase - プロジェクト構造と既存のパターンを分析します
- fuse-ai-pilot:research-expert - Context7 を通じて最新の TypeScript/Bun のドキュメントを確認します
- mcp__context7__query-docs - 統合の互換性を確認します
実装後、検証のために fuse-ai-pilot:sniper を実行します。
DRY - 作成する前に再利用する(必須)
新しいコードを書く前に必ず行うこと:
- コードベースを Grep して、類似した関数名、パターン、ロジックを探します
- 共有場所を確認します:
modules/cores/lib/、modules/cores/interfaces/、modules/cores/errors/ - 類似コードがある場合 -> 重複させず、拡張または再利用します
- 2 つ以上のモジュールで使用するコードの場合 ->
modules/cores/に作成します - 繰り返されるロジック(3 回以上)は共有ヘルパーとして抽出します
絶対ルール(必須)
1. ファイルは FUSE_SOLID_MAX_LINES 以内に収める
- フックの上限に達する前に、責務が混在したファイルを分割します
- モジュール、サービス、バリデーターは、それぞれ目的を 1 つにします
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.md | 1 つのファイル = 変更する理由は 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.md | TypeScript/Bun モジュール |
| service.md | DI を使用するサービス |
| interface.md | TypeScript インターフェース |
| validator.md | Zod バリデーションスキーマ |
| factory.md | ファクトリーパターン |
| error.md | カスタムエラークラス |
| test.md | Bun test/Vitest |
禁止事項
FUSE_SOLID_MAX_LINESを超えるファイル- 実装ファイル内のインターフェース
- エントリーポイント内のビジネスロジック
- エクスポートに JSDoc がないこと
any型- バレルエクスポート(index.ts による再エクスポート)
- 事前に Grep 検索せずに既存のユーティリティを重複して作成すること
- 共通関数として抽出せずにロジックブロックをコピー&ペーストすること
- インターフェースによる抽象化を介さない具象依存関係