Skip to content
Back to skills

Design Patterns

ASecurity

Sugerir patrones de diseño y evaluar principios SOLID. Se activa con "sugerir patrones", "verificar SOLID", "detectar anti-patrones".

  • 1,132 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 7, 2026
developmentjavascriptgojavabashrefactoringapidatabase

Works with

  • api

Security analysis

A100/100

Scanned September 7, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Design Patterns?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Design Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wasabeef-design-patterns-claude-code-cookbook/badge)](https://www.skillsdirectory.com/skills/wasabeef-design-patterns-claude-code-cookbook)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
description: 'Sugerir patrones de diseño y evaluar principios SOLID. Se activa con "sugerir patrones", "verificar SOLID", "detectar anti-patrones".'
allowed-tools:
  - Read
  - Grep
  - Glob
---

# Sugerir patrones de diseño y evaluar principios SOLID

Sugiere patrones de diseño para tu código y verifica si sigue los principios SOLID.

## Uso

```bash
/design-patterns [objetivo_análisis] [opciones]
```

## Opciones

- `--suggest`: Sugerir patrones aplicables (por defecto)
- `--analyze`: Analizar uso de patrones existentes
- `--refactor`: Generar propuestas de refactoring
- `--solid`: Verificar cumplimiento con principios SOLID
- `--anti-patterns`: Detectar anti-patrones

## Ejemplos Básicos

```bash
# Analizar patrones para todo el proyecto
/design-patterns

# Sugerir patrones para archivo específico
/design-patterns src/services/user.js --suggest

# Verificar principios SOLID
/design-patterns --solid

# Detectar anti-patrones
/design-patterns --anti-patterns
```

## Categorías de Patrones

### 1. Patrones Creacionales

- **Patrón Factory**: Abstrae la creación de objetos
- **Patrón Builder**: Construcción paso a paso de objetos complejos
- **Patrón Singleton**: Asegura que solo exista una instancia
- **Patrón Prototype**: Crea clones de objetos

### 2. Patrones Estructurales

- **Patrón Adapter**: Convierte interfaces
- **Patrón Decorator**: Agrega funcionalidad dinámicamente
- **Patrón Facade**: Simplifica subsistemas complejos
- **Patrón Proxy**: Controla acceso a objetos

### 3. Patrones de Comportamiento

- **Patrón Observer**: Implementa notificaciones de eventos
- **Patrón Strategy**: Cambia algoritmos
- **Patrón Command**: Encapsula operaciones
- **Patrón Iterator**: Recorre colecciones

## Principios SOLID Que Verificamos

```text
S - Responsabilidad Única (una clase, un trabajo)
O - Abierto/Cerrado (abierto para extensión, cerrado para modificación)
L - Sustitución de Liskov (los subtipos deben ser reemplazables)
I - Segregación de Interfaces (no forzar métodos no utilizados)
D - Inversión de Dependencias (depender de abstracciones, no detalles)
```

## Ejemplo de Salida

```text
Reporte de Análisis de Patrones de Diseño
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Patrones Actualmente Utilizados
├─ Patrón Observer: EventEmitter (12 instancias)
├─ Patrón Factory: UserFactory (3 instancias)
├─ Patrón Singleton: DatabaseConnection (1 instancia)
└─ Patrón Strategy: PaymentProcessor (5 instancias)

Patrones Recomendados
├─ [ALTO] Patrón Repository
│  └─ Dónde: src/models/*.js
│  └─ Por qué: Separar acceso a datos de lógica de negocio
│  └─ Ejemplo:
│      class UserRepository {
│        async findById(id) { ... }
│        async save(user) { ... }
│      }
│
├─ [MED] Patrón Command
│  └─ Dónde: src/api/handlers/*.js
│  └─ Por qué: Estandarizar cómo se manejan las solicitudes
│
└─ [BAJO] Patrón Decorator
   └─ Dónde: src/middleware/*.js
   └─ Por qué: Mejor manera de combinar características

Violaciones SOLID Encontradas
├─ [S] UserService: Hace demasiado (autenticación Y autorización)
├─ [O] PaymentGateway: Debe cambiar código para agregar tipos de pago
├─ [D] EmailService: Depende de clases específicas, no interfaces
└─ [I] IDataStore: Tiene métodos que nadie usa

Cómo Arreglar
1. Dividir UserService en AuthService y AuthorizationService
2. Agregar una interfaz PaymentStrategy para nuevos tipos de pago
3. Crear una interfaz EmailService
4. Dividir IDataStore en interfaces más pequeñas
```

## Ejemplos de Uso Avanzado

```bash
# Ver qué pasa si usas un patrón
/design-patterns --impact-analysis Repository

# Obtener código de ejemplo para un patrón
/design-patterns --generate Factory --for src/models/Product.js

# Encontrar patrones que funcionan bien juntos
/design-patterns --combine --context "API con caché"

# Verificar tu arquitectura
/design-patterns --architecture MVC
```

## Ejemplo: Antes y Después

### Antes (Código Problemático)

```javascript
class OrderService {
  processOrder(order, paymentType) {
    if (paymentType === "credit") {
      // Procesamiento de tarjeta de crédito
    } else if (paymentType === "paypal") {
      // Procesamiento de PayPal
    }
    // Otros métodos de pago...
  }
}
```

### Después (Aplicando Patrón Strategy)

```javascript
// Interfaz Strategy
class PaymentStrategy {
  process(amount) {
    throw new Error("Debe implementar el método process");
  }
}

// Estrategias concretas
class CreditCardPayment extends PaymentStrategy {
  process(amount) {
    /* Implementación */
  }
}

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

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

## Anti-Patrones Que Encontramos

- **Objeto Dios**: Clases que hacen todo
- **Código Espagueti**: Desorden enredado de flujo de control
- **Programación Copy-Paste**: El mismo código en todas partes
- **Números Mágicos**: Números aleatorios sin explicación
- **Infierno de Callbacks**: Callbacks dentro de callbacks dentro de callbacks

## Mejores Prácticas

1. **Ve despacio**: Agrega patrones de uno en uno
2. **Necesidad primero**: Solo usa patrones para resolver problemas reales
3. **Háblalo**: Obtén el apoyo del equipo antes de grandes cambios
4. **Escríbelo**: Documenta por qué elegiste cada patrón

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…