AgentSkillsCN

Runmedia Enhancement

Runmedia 增强

SKILL.md

RunMedia Enhancement - Skill

Descripción

Mejora y extiende las capacidades de la CLI de RunMedia (gestor de media de RunArt). Incluye análisis automático, optimización de imágenes y documentación de cambios.

Cuándo usar

code
"Mejora el CLI de RunMedia"
"Agregar análisis de color dominante"
"Optimizar imágenes para web"
"Analizar paleta de colores"
"¿Qué puede mejorar RunMedia?"

Flujo de Ejecución

Análisis Inicial (Contexto)

bash
# 1. Examinar estructura actual de RunMedia
find /home/pepe/runart-foundry/apps/runmedia -name "*.py" | head -20

# 2. Revisar CLI actual
cat /home/pepe/runart-foundry/apps/runmedia/main.py | head -50

# 3. Ver tests existentes
find /home/pepe/runart-foundry/tests -name "*runmedia*" | head -10

# 4. Revisar dependencias
cat /home/pepe/runart-foundry/apps/runmedia/pyproject.toml

Mejoras Típicas Fase 2

Enhancement 1: Color Dominance Analysis

python
# Objetivo: Análisis automático de color dominante en imágenes
# Ubicación: apps/runmedia/analyzers/color_analyzer.py

# Features:
# • Extraer color dominante (RGB)
# • Generar paleta de colores (5-10 colores)
# • Detectar modo (light/dark)
# • Calcular contraste accesibilidad (WCAG)

# Ejemplo:
from apps.runmedia.analyzers import ColorAnalyzer

analyzer = ColorAnalyzer()
result = analyzer.analyze("image.jpg")
print(result["dominant_color"])  # RGB tuple
print(result["palette"])         # List of 5-10 colors
print(result["accessibility"])   # WCAG contrast score

Enhancement 2: Batch Optimization

python
# Objetivo: Optimización en lote con reporte
# Ubicación: apps/runmedia/cli.py - nueva opción

# Comando:
# $ runmedia optimize --batch /path/to/images --format webp,avif --quality 85

# Features:
# • Procesar múltiples imágenes
# • Salida en múltiples formatos
# • Generar reporte JSON
# • Mostrar ahorros de espacio

# Implementación:
def batch_optimize(
    input_dir: str,
    formats: List[str] = ["webp"],
    quality: int = 82
) -> dict:
    """Optimize images in batch."""
    results = []
    for img in os.listdir(input_dir):
        for fmt in formats:
            result = optimize_image(img, fmt, quality)
            results.append(result)
    return generate_report(results)

Enhancement 3: Integration con WordPress

python
# Objetivo: Sincronización automática con WordPress
# Ubicación: apps/runmedia/integrations/wordpress.py

# Features:
# • Detectar cambios en /wp-content/uploads/
# • Generar variantes automáticas
# • Actualizar metadata en WordPress
# • Generar índice JSON para frontend

# Implementación:
from apps.runmedia.integrations import WordPressSync

wp = WordPressSync()
wp.sync_uploads()  # Detecta nuevas imágenes
wp.generate_variants()  # Crea webp, avif, thumbnails
wp.update_metadata()  # Actualiza en BD de WordPress

Requisitos para Implementar

Testing

bash
# 1. Crear tests
tests/test_color_analyzer.py          # Unit tests
tests/test_batch_optimization.py      # Integration tests
tests/test_wordpress_integration.py   # E2E tests

# 2. Ejecutar tests
pytest tests/test_*analyzer* -v --cov=apps/runmedia

# 3. Verificar cobertura
coverage report | grep runmedia
# Target: 85%+ coverage

Documentation

bash
# 1. Update docstrings
# • Agregar type hints en todas funciones
# • Documentar parámetros y retornos
# • Incluir ejemplos de uso

# 2. Update README
docs/RUNMEDIA_CLI.md
# • Agregar nuevas funcionalidades
# • Incluir ejemplos de uso
# • Documentar cambios

# 3. Update CHANGELOG
# • feat(runmedia): add color analysis capability
# • feat(runmedia): add batch optimization
# • feat(runmedia): add wordpress integration

Decisiones Críticas

Si Feature es MUY GRANDE

code
→ Dividir en múltiples PRs/commits
→ Cada Enhancement = 1 commit separado
→ Facilita review y rollback si es necesario

Si Tests Fallan

bash
# 1. Debug locally
python -m pytest tests/test_feature.py -v -s --pdb

# 2. Check imports
python -c "from apps.runmedia.analyzers import ColorAnalyzer"

# 3. Verify dependencies
pip list | grep -E "Pillow|numpy|scikit"

Integración con Copilot

code
✅ Usar colorama para output colorido
✅ Agregar progress bars (tqdm)
✅ Logs descriptivos (loguru)
✅ Exit codes apropiados

Performance Considerations

Memory Usage

python
# Para batch processing de muchas imágenes:
# • Procesar en chunks (no cargar todo a memoria)
# • Usar generators en lugar de lists
# • Liberar memoria después de cada imagen

def batch_optimize_chunked(images, chunk_size=10):
    for chunk in chunked(images, chunk_size):
        for img in chunk:
            yield optimize_image(img)
        gc.collect()  # Liberar memoria

Speed Optimization

python
# • Usar multiprocessing para CPU-bound tasks
# • Cache resultados de análisis
# • Lazy load dependencias pesadas
from multiprocessing import Pool

with Pool(4) as p:
    results = p.map(analyze_image, images)

Ejemplo Completo: Nuevo Comando

bash
# Comando nuevo: analyze-palette
$ runmedia analyze-palette /home/pepe/runart-foundry/content/media/ --output palette.json

# Output:
{
  "images": [
    {
      "filename": "sculpture-01.jpg",
      "dominant_color": [185, 142, 89],
      "palette": [[185, 142, 89], [220, 180, 140], ...],
      "accessibility": {"wcag_aa": true, "contrast": 7.5},
      "mode": "warm"
    }
  ],
  "summary": {
    "total_images": 42,
    "dominant_mood": "warm",
    "avg_contrast": 6.8
  }
}

Validación Pre-Merge

bash
□ Todos tests pasan
□ Cobertura >= 85%
□ No hay type errors (mypy --strict)
□ No hay linting issues (pylint)
□ Documentación actualizada
□ CHANGELOG.md modificado
□ Ejemplos de uso funcionan
□ Performance acceptable (<2s por imagen)

Documentación

Métricas

  • Tiempo típico: 2-4 horas por enhancement
  • Éxito rate: 90%+ (con tests)
  • Performance impact: < 5% slowdown