Skip to content
Development
Skill

/design-patterns

Suggest design patterns and evaluate SOLID principles. Trigger with "suggest design patterns", "which patterns apply?", "check SOLID principles", "detect anti-patterns", "evaluate code design".

From plugin
claude-code-cookbook
1.1k39 skills9 agents39 commands8 MCP

Claude Code

$ npx -y skills add wasabeef/claude-code-cookbook --skill design-patterns --agent claude-code

SKILL.md

design-patterns.SKILL.md
description: 'Suggest design patterns and evaluate SOLID principles. Trigger with "suggest design patterns", "which patterns apply?", "check SOLID principles", "detect anti-patterns", "evaluate code design".'
allowed-tools:
  - Read
  - Grep
  - Glob

Suggest design patterns and evaluate SOLID principles

Suggests design patterns for your code and checks if it follows SOLID principles.

Usage

/design-patterns [analysis_target] [options]

Options

  • `--suggest`: Suggest applicable patterns (default)
  • `--analyze`: Analyze existing pattern usage
  • `--refactor`: Generate refactoring proposals
  • `--solid`: Check compliance with SOLID principles
  • `--anti-patterns`: Detect anti-patterns

Basic Examples

# Analyze patterns for entire project
/design-patterns

# Suggest patterns for specific file
/design-patterns src/services/user.js --suggest

# Check SOLID principles
/design-patterns --solid

# Detect anti-patterns
/design-patterns --anti-patterns

Pattern Categories

1. Creational Patterns

  • **Factory Pattern**: Abstracts object creation
  • **Builder Pattern**: Step-by-step construction of complex objects
  • **Singleton Pattern**: Ensures only one instance exists
  • **Prototype Pattern**: Creates object clones

2. Structural Patterns

  • **Adapter Pattern**: Converts interfaces
  • **Decorator Pattern**: Dynamically adds functionality
  • **Facade Pattern**: Simplifies complex subsystems
  • **Proxy Pattern**: Controls access to objects

3. Behavioral Patterns

  • **Observer Pattern**: Implements event notifications
  • **Strategy Pattern**: Switches algorithms
  • **Command Pattern**: Encapsulates operations
  • **Iterator Pattern**: Traverses collections

SOLID Principles We Check

S - Single Responsibility (one class, one job)
O - Open/Closed (open for extension, closed for modification)
L - Liskov Substitution (subtypes should be replaceable)
I - Interface Segregation (don't force unused methods)
D - Dependency Inversion (depend on abstractions, not details)

Output Example

Design Pattern Analysis Report
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Currently Used Patterns
├─ Observer Pattern: EventEmitter (12 instances)
├─ Factory Pattern: UserFactory (3 instances)
├─ Singleton Pattern: DatabaseConnection (1 instance)
└─ Strategy Pattern: PaymentProcessor (5 instances)

Recommended Patterns
├─ [HIGH] Repository Pattern
│  └─ Where: src/models/*.js
│  └─ Why: Separate data access from business logic
│  └─ Example:
│      class UserRepository {
│        async findById(id) { ... }
│        async save(user) { ... }
│      }
│
├─ [MED] Command Pattern
│  └─ Where: src/api/handlers/*.js
│  └─ Why: Standardize how requests are handled
│
└─ [LOW] Decorator Pattern
   └─ Where: src/middleware/*.js
   └─ Why: Better way to combine features

SOLID Violations Found
├─ [S] UserService: Does too much (auth AND authorization)
├─ [O] PaymentGateway: Must change code to add payment types
├─ [D] EmailService: Depends on specific classes, not interfaces
└─ [I] IDataStore: Has methods nobody uses

How to Fix
1. Split UserService into AuthService and AuthorizationService
2. Add a PaymentStrategy interface for new payment types
3. Create an EmailService interface
4. Break up IDataStore into smaller interfaces

Advanced Usage Examples

# See what happens if you use a pattern
/design-patterns --impact-analysis Repository

# Get example code for a pattern
/design-patterns --generate Factory --for src/models/Product.js

# Find patterns that work well together
/design-patterns --combine --context "API with caching"

# Check your architecture
/design-patterns --architecture MVC

Example: Before and After

Before (Problem Code)

class OrderService {
  processOrder(order, paymentType) {
    if (paymentType === "credit") {
      // Credit card processing
    } else if (paymentType === "paypal") {
      // PayPal processing
    }
    // Other payment methods...
  }
}

After (Applying Strategy Pattern)

// Strategy interface
class PaymentStrategy {
  process(amount) {
    throw new Error("Must implement process method");
  }
}

// Concrete strategies
class CreditCardPayment extends PaymentStrategy {
  process(amount) {
    /* Implementation */
  }
}

// Context
class OrderService {
  constructor(paymentStrategy) {
    this.paymentStrategy = paymentStrategy;
  }

  processOrder(order) {
    this.paymentStrategy.process(order.total);
  }
}

Anti-Patterns We Find

  • **God Object**: Classes that do everything
  • **Spaghetti Code**: Tangled mess of control flow
  • **Copy-Paste Programming**: Same code everywhere
  • **Magic Numbers**: Random numbers with no explanation
  • **Callback Hell**: Callbacks inside callbacks inside callbacks

Best Practices

1. **Go slow**: Add patterns one at a time 2. **Need first**: Only use patterns to solve real problems 3. **Talk it out**: Get team buy-in before big changes 4. **Write it down**: Document why you chose each pattern

Read more
@wasabeef
Ships withclaude-code-cookbook

A collection of commands, roles, and automation scripts for Claude Code. Automate your workflow without unnecessary confirmations, allowing you to focus on what matters.

1.1k39 skills9 agents8 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.1k
Star history of wasabeef/claude-code-cookbook on GitHub, a chart by star-history.com

Other skills on claude-code-cookbook.

check-fact

check-fact

Verify information accuracy against codebase and documentation. Trigger with "is this correct?", "fact check", "verify this", "is…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about design-patterns.

Which coding agents can use design-patterns?
design-patterns installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.