¿Qué hace pattern_principal?
Habilidades de agente de IA para escribir código de producción limpio y basado en principios — GoF, SOLID, YAGNI, DRY.
Descripción general
Este conjunto de habilidades guía al agente de IA para aplicar principios fundamentales de ingeniería de software al generar código. Incluye:
- Patrones GoF (Gang of Four): Estrategia, Observador, Fábrica, Decorador, etc.
- Principios SOLID: Responsabilidad única, Abierto/Cerrado, Sustitución de Liskov, Segregación de interfaces, Inversión de dependencias.
- YAGNI (You Ain't Gonna Need It): No agregues funcionalidad hasta que sea necesaria.
- DRY (Don't Repeat Yourself): Evita la duplicación de lógica.
Plataformas compatibles
- Claude Code
- Cursor
- Codex
- Otros asistentes de IA que admitan definiciones de habilidades basadas en YAML o Markdown.
Cómo usar
- Agrega el archivo SKILL.md a tu proyecto.
- El asistente de IA leerá automáticamente las instrucciones.
- Al solicitar código, el agente aplicará los principios especificados.
Ejemplo de uso
Solicitud:
Crea un sistema de notificaciones usando el patrón Observador.
Respuesta del agente:
from abc import ABC, abstractmethod
from typing import List
# Patrón Observador (GoF)
class Observer(ABC):
@abstractmethod
def update(self, message: str) -> None:
pass
class Subject:
def __init__(self):
self._observers: List[Observer] = []
def attach(self, observer: Observer) -> None:
self._observers.append(observer)
def detach(self, observer: Observer) -> None:
self._observers.remove(observer)
def notify(self, message: str) -> None:
for observer in self._observers:
observer.update(message)
# Implementaciones concretas
class EmailObserver(Observer):
def update(self, message: str) -> None:
print(f"Enviando correo: {message}")
class SMSObserver(Observer):
def update(self, message: str) -> None:
print(f"Enviando SMS: {message}")
Principios aplicados
SOLID
- Responsabilidad única: Cada clase tiene una sola responsabilidad.
- Abierto/Cerrado: Las clases están abiertas para extensión, pero cerradas para modificación.
- Sustitución de Liskov: Las subclases pueden reemplazar a sus clases base.
- Segregación de interfaces: Interfaces pequeñas y específicas.
- Inversión de dependencias: Depender de abstracciones, no de implementaciones concretas.
YAGNI
- No agregues código para casos de uso futuros hipotéticos.
- Mantén el código base mínimo y enfocado.
DRY
- Extrae lógica repetida en funciones o clases reutilizables.
- Evita la duplicación de reglas de negocio.
Contribución
Si encuentras errores o deseas sugerir mejoras, abre un issue o envía un pull request al repositorio.
Licencia
MIT