From cook
Suggests applicable design patterns for the codebase, analyzes current usage, checks SOLID principles, detects anti-patterns, and proposes refactorings with code examples.
npx claudepluginhub wasabeef/claude-code-cookbook --plugin cook## Design Patterns コードベースに適用可能なデザインパターンを提案し、SOLID 原則の遵守状況を評価します。 ### 使い方 ### オプション - `--suggest` : 適用可能なパターンを提案 (デフォルト) - `--analyze` : 既存パターンの使用状況を分析 - `--refactor` : リファクタリング案を生成 - `--solid` : SOLID 原則の遵守状況をチェック - `--anti-patterns` : アンチパターンを検出 ### 基本例 ### 分析カテゴリ #### 1. 生成に関するパターン - **Factory Pattern**: オブジェクト生成の抽象化 - **Builder Pattern**: 複雑なオブジェクトの段階的構築 - **Singleton Pattern**: インスタンスの一意性保証 - **Prototype Pattern**: オブジェクトのクローン生成 #### 2. 構造に関するパターン - **Adapter Pattern**: インターフェースの変換 - **Decorator Pattern**: 機能の動的追加 - **Facade Pattern**: 複雑なサブシステムの簡略化 - **Proxy Pattern**: オブ...
/design-patternsSuggests applicable design patterns for the codebase, analyzes usage, checks SOLID compliance, detects anti-patterns, and proposes refactorings via options.
/design-patternsAnalyzes code for design patterns usage and SOLID compliance, suggests applicable patterns with examples, detects anti-patterns, and proposes refactors via options like --suggest and --solid.
/design-patternsSuggests applicable design patterns for the codebase or targets, analyzes usage, checks SOLID compliance, detects anti-patterns, and proposes refactorings via options.
/design-patternsSuggests design patterns for code, analyzes existing usage, proposes refactors, verifies SOLID principles, and detects anti-patterns. Supports --suggest, --analyze, --refactor, --solid, --anti-patterns flags.
/design-patternsSuggests design patterns for codebase or target file, analyzes usage, evaluates SOLID compliance, detects anti-patterns, and suggests refactors. Supports --suggest, --analyze, --solid flags.
/design-patternsSuggests applicable design patterns, analyzes existing usage, proposes refactors, verifies SOLID principles, and detects anti-patterns in code targets via optional flags.
Share bugs, ideas, or general feedback.
コードベースに適用可能なデザインパターンを提案し、SOLID 原則の遵守状況を評価します。
/design-patterns [分析対象] [オプション]
--suggest : 適用可能なパターンを提案 (デフォルト)--analyze : 既存パターンの使用状況を分析--refactor : リファクタリング案を生成--solid : SOLID 原則の遵守状況をチェック--anti-patterns : アンチパターンを検出# プロジェクト全体のパターン分析
/design-patterns
# 特定ファイルへのパターン提案
/design-patterns src/services/user.js --suggest
# SOLID 原則チェック
/design-patterns --solid
# アンチパターン検出
/design-patterns --anti-patterns
S - Single Responsibility Principle (単一責任の原則)
O - Open/Closed Principle (開放閉鎖の原則)
L - Liskov Substitution Principle (リスコフの置換原則)
I - Interface Segregation Principle (インターフェース分離の原則)
D - Dependency Inversion Principle (依存性逆転の原則)
デザインパターン分析レポート
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
現在使用中のパターン
├─ Observer Pattern: EventEmitter (12 箇所)
├─ Factory Pattern: UserFactory (3 箇所)
├─ Singleton Pattern: DatabaseConnection (1 箇所)
└─ Strategy Pattern: PaymentProcessor (5 箇所)
推奨パターン
├─ [HIGH] Repository Pattern
│ └─ 対象: src/models/*.js
│ └─ 理由: データアクセスロジックの分離
│ └─ 例:
│ class UserRepository {
│ async findById(id) { ... }
│ async save(user) { ... }
│ }
│
├─ [MED] Command Pattern
│ └─ 対象: src/api/handlers/*.js
│ └─ 理由: リクエスト処理の統一化
│
└─ [LOW] Decorator Pattern
└─ 対象: src/middleware/*.js
└─ 理由: 機能の組み合わせ改善
SOLID 原則違反
├─ [S] UserService: 認証と権限管理の両方を担当
├─ [O] PaymentGateway: 新決済手段追加時に修正必要
├─ [D] EmailService: 具象クラスに直接依存
└─ [I] IDataStore: 使用されないメソッドを含む
リファクタリング提案
1. UserService を認証と権限管理に分割
2. PaymentStrategy インターフェースの導入
3. EmailService インターフェースの定義
4. IDataStore を用途別に分離
# パターン適用の影響分析
/design-patterns --impact-analysis Repository
# 特定パターンの実装例生成
/design-patterns --generate Factory --for src/models/Product.js
# パターンの組み合わせ提案
/design-patterns --combine --context "API with caching"
# アーキテクチャパターンの評価
/design-patterns --architecture MVC
class OrderService {
processOrder(order, paymentType) {
if (paymentType === "credit") {
// クレジットカード処理
} else if (paymentType === "paypal") {
// PayPal 処理
}
// 他の決済方法...
}
}
// 戦略インターフェース
class PaymentStrategy {
process(amount) {
throw new Error("Must implement process method");
}
}
// 具象戦略
class CreditCardPayment extends PaymentStrategy {
process(amount) {
/* 実装 */
}
}
// コンテキスト
class OrderService {
constructor(paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
processOrder(order) {
this.paymentStrategy.process(order.total);
}
}