---
name: swl:modelo
description: Sugiere o consulta el modelo óptimo (haiku/sonnet/opus) para la tarea actual según complejidad detectada. Muestra costo relativo y justificación. Útil antes de delegar a un subagente o antes de iniciar una tarea larga.
allowed_tools: ["Read", "Bash"]
---

# /swl:modelo — Sugerencia de modelo por complejidad de tarea

Analiza la descripción de una tarea y sugiere el modelo Claude óptimo según
su complejidad. No fuerza el modelo — Claude Code lo decide — pero proporciona
una recomendación fundamentada con costo relativo para que el usuario elija
conscientemente.

## Cuándo usar

- Antes de iniciar una tarea larga o costosa para optimizar el uso de tokens
- Antes de delegar a un subagente y querer indicar qué modelo usar
- Cuando se tiene duda entre sonnet y opus para una tarea ambigua
- Como parte del flujo del orquestador al asignar trabajo a agentes especializados

## Uso

```
/swl:modelo               — Muestra modelo sugerido para el contexto actual
/swl:modelo "descripción" — Sugiere modelo para la tarea descrita
```

## Paso 1 — Obtener descripción

Si el usuario invocó el comando sin argumentos, inferir la tarea del contexto
de la conversación activa: último mensaje del usuario, archivos abiertos, o
el plan activo en `.planning/ESTADO.md`.

Si el usuario pasó una descripción entre comillas, usar esa descripción directamente.

## Paso 2 — Evaluar complejidad

Cargar la lógica de evaluación usando el módulo `hooks/lib/model-router.js`.

```bash
node -e "
const { sugerirModelo } = require('./hooks/lib/model-router.js');
const desc = process.argv[1] || '';
const result = sugerirModelo(desc);
console.log(JSON.stringify(result, null, 2));
" "DESCRIPCIÓN_DE_LA_TAREA"
```

Si el script falla (el módulo no existe o hay error de Node), aplicar la
tabla de routing manualmente (ver Paso 3).

## Paso 3 — Tabla de routing manual (fallback)

Aplicar este criterio si el script no está disponible:

| Condición | Modelo | Complejidad |
|-----------|--------|-------------|
| > 20 archivos afectados o > 2 lenguajes | opus | compleja |
| Descripción contiene: arquitectura, migración, seguridad, performance, diseñar, planificar, debugging profundo, sistema completo | opus | compleja |
| Descripción contiene: formateo, typo, renombrar, import, lint fix, comment — Y <= 3 archivos | haiku | trivial |
| Cualquier otro caso | sonnet | estándar |

## Paso 4 — Presentar resultado

Presentar la sugerencia con este formato exacto:

```
Modelo sugerido: [MODELO] ([costo relativo])

Complejidad detectada: [trivial | estándar | compleja]
Razón: [justificación de una oración]

Tabla de routing:
  Trivial  → haiku  ($)    Formateo, typos, lint fixes, imports
  Estándar → sonnet ($$)   Implementación, tests, reviews, refactors
  Compleja → opus   ($$$)  Arquitectura, migraciones, seguridad, sistemas

Nota: Esta es una sugerencia. Claude Code usa el modelo configurado en la sesión.
Para tareas complejas, considera iniciar una sesión nueva con opus activo.
```

## Tabla de routing completa

| Complejidad | Modelo | Costo | Indicadores de detección |
|-------------|--------|-------|--------------------------|
| Trivial | haiku | $ | formateo, typo, renombrar, import, lint fix, comment |
| Estándar | sonnet | $$ | implementar, test, review, refactor, endpoint, componente, fix bug |
| Compleja | opus | $$$ | arquitectura, migración, seguridad, performance, diseñar, planificar, debugging profundo, sistema completo |

**Escalado automático por contexto**:
- > 20 archivos afectados → opus independiente de los indicadores de texto
- > 2 lenguajes involucrados → opus independiente de los indicadores de texto

## Reglas de comportamiento

- NUNCA modificar archivos como parte de este comando — es de solo lectura.
- Si no hay descripción ni contexto inferable, pedir al usuario una descripción
  de 1 oración antes de evaluar.
- La sugerencia es informativa. No bloquear ni generar error si el usuario elige
  un modelo distinto al sugerido.
- Si el usuario pide explicación de la fórmula, explicar pass@k no aplica aquí —
  ese concepto está en `evaluacion-agentes`. Este comando usa heurísticas de texto.
