Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Sugerir patrones de diseño y evaluar principios SOLID. Se activa con "sugerir patrones", "verificar SOLID", "detectar anti-patrones".
.claude/skills/wasabeef-sugerir-patrones-de-disen-o-y-evaluar-principios-solid/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -6% | 0% |
Sugiere patrones de diseño para tu código y verifica si sigue los principios SOLID.
bash/design-patterns [objetivo_análisis] [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-patronesbash# 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
textS - 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)
textReporte 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
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
javascriptclass 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... } }
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); } }
Other measured skills in the registry, with their headline benchmark lift.