solid-generic について
solid-genericは、フレームワークを使わないTypeScript、Bun、Node.jsのCLIツール、ライブラリ、スクリプト、hooks向けの設計ガイドスキルです。モジュール構成やファイル長、JSDoc、再利用のルールに加え、SOLIDの資料とコードテンプレートを提供します。
主な機能
- 01モジュール設計ルール
- 02SOLID原則のリファレンス
- 03ファイル長とJSDocの制約
- 04実装前のDRYチェック
- 05モジュールとテストのテンプレート
活用シーン
- 01TypeScriptプロジェクトのモジュール構成設計
- 02実装追加前の共有コード確認
- 03共通ルールに沿ったサービスやバリデーターの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fusengine/ agents --skill solid-genericインストール後、Claude Code で/solid-genericを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/architecture-patterns.mddependency-inversion.mdinterface-segregation.mdliskov-substitution.mdopen-closed.mdsingle-responsibility.mdsolid-principles.mdreferences/templates/error.mdfactory.mdinterface.mdmodule.mdservice.mdtest.mdvalidator.md詳細
新しいコードを書く前に、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 回ずつ行います。
- 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. ファイルは 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.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 モジュール | 80 |
| service.md | DI を伴うサービス | 60 |
| interface.md | TypeScript インターフェース | - |
| validator.md | Zod バリデーションスキーマ | 40 |
| factory.md | ファクトリパターン | 60 |
| error.md | カスタムエラークラス | 40 |
| test.md | Bun test / Vitest | - |
禁止事項
- 100 行を超えるファイル
- 実装ファイル内のインターフェース
- エントリポイント内のビジネスロジック
- エクスポートにおける JSDoc の欠落
any型- バレルエクスポート(index.ts による再エクスポート)
- 先に Grep 検索せずに既存ユーティリティを重複させること
- 共有関数を抽出せずにロジックブロックをコピー&ペーストすること
- インターフェースによる抽象化を伴わない具象依存