---
name: swl:dashboard
description: Lanza el dashboard web interactivo de uso histórico de Claude Code (claude-usage). Muestra métricas multi-sesión: tokens, costos por modelo, proyectos top y tabla de sesiones. También disponible en modo terminal con subcomandos `today` y `stats`. Activar cuando el usuario quiera ver el historial de consumo, comparar sesiones o analizar costos por proyecto.
allowed_tools: ["Bash", "Read"]
---

# /swl:dashboard — Dashboard histórico de uso

Lanza el análisis histórico de Claude Code usando `claude-usage` (vendored en
`scripts/vendor/claude-usage/`). Complementa `/swl:metricas` que muestra la
sesión actual — este comando agrega perspectiva multi-sesión y gráficos interactivos.

## Subcomandos

```
/swl:dashboard                   — Abre dashboard web (auto-detecta puerto libre: 8888, 9090, 9191…)
/swl:dashboard --port 9090       — Fuerza un puerto específico
/swl:dashboard today             — Resumen de consumo del día en terminal
/swl:dashboard stats             — Estadísticas históricas completas (all-time)
/swl:dashboard scan              — Solo sincroniza JSONL → SQLite sin abrir dashboard
```

---

Cargar y ejecutar el skill correspondiente:

```skill
swl-dashboard
```

Invocar `Skill("swl-dashboard")` con el subcomando indicado por el usuario
(vacío = dashboard, today, stats o scan).

---

## Integración con Mission Control (opt-in)

Mission Control es un dashboard web externo para orquestación de flotas de
agentes de IA. Esta integración es **completamente opcional** — el dashboard
local sigue funcionando igual sin configurarla.

### Variables de entorno

| Variable | Descripción | Ejemplo |
|----------|-------------|---------|
| `SWL_MC_URL` | URL base de la instancia de MC | `http://localhost:3000` |
| `SWL_MC_TOKEN` | API key de MC (si está habilitada la autenticación) | `mc-key-abc123` |

### Comportamiento

- **Cuando `SWL_MC_URL` está definida**: el comando detecta MC y ofrece al
  usuario redirigir al panel web para una vista richer. El helper
  `scripts/lib/mc-client.js` verifica que MC responde antes de redirigir.
- **Cuando `SWL_MC_URL` NO está definida**: dashboard local actual sin cambios.
  Zero-config por defecto.
- **Fallback graceful**: si MC no responde en 2 segundos, se usa el dashboard
  local con un mensaje informativo. No hay crash ni degradación silenciosa.

### Instalación de Mission Control

```bash
# Opción 1: Docker (recomendada — zero-config)
git clone https://github.com/builderzlabs/mission-control
cd mission-control
docker compose up

# Opción 2: desarrollo local
pnpm install
pnpm dev
# → abre http://localhost:3000/setup para crear la cuenta admin
```

Requisitos: Node >= 22, pnpm. La instancia genera su API key automáticamente
en el primer arranque (visible en Settings > API Key).

### Variables de entorno que consume Mission Control internamente

| Variable MC | Descripción | Default |
|-------------|-------------|---------|
| `API_KEY` | API key para autenticación de agentes y scripts | auto-generada |
| `AUTH_USER` / `AUTH_PASS` | Semilla headless del admin | — |
| `MISSION_CONTROL_DATA_DIR` | Directorio de datos y SQLite | `.data/` |
| `OPENCLAW_GATEWAY_HOST` | Host del gateway OpenClaw | `127.0.0.1` |
| `OPENCLAW_GATEWAY_PORT` | Puerto del gateway OpenClaw | `18789` |
| `MC_CLAUDE_HOME` | Directorio de Claude Code | `~/.claude` |
| `NEXT_PUBLIC_GATEWAY_OPTIONAL` | Modo sin gateway | `false` |

---

## MCP server de MC (opt-in)

Mission Control expone un servidor MCP con **49 tools** para agents, tareas,
sesiones, memoria, skills, cron y evaluaciones.

### Categorías de tools

| Categoría | Tools |
|-----------|-------|
| Agentes | `mc_list_agents`, `mc_get_agent`, `mc_heartbeat`, `mc_wake_agent`, `mc_agent_diagnostics`, `mc_agent_attribution` |
| Memoria y conocimiento | `mc_read_memory`, `mc_write_memory`, `mc_clear_memory`, `mc_search_knowledge`, `mc_read_knowledge_file`, `mc_write_knowledge_file`, `mc_knowledge_health`, `mc_rebuild_search_index`, `mc_knowledge_gaps`, `mc_knowledge_consolidate` |
| Soul (personalidades) | `mc_read_soul`, `mc_write_soul`, `mc_list_soul_templates` |
| Tareas | `mc_list_tasks`, `mc_get_task`, `mc_create_task`, `mc_update_task`, `mc_poll_task_queue`, `mc_broadcast_task` |
| Comentarios | `mc_list_comments`, `mc_add_comment` |
| Sesiones | `mc_list_sessions`, `mc_control_session`, `mc_continue_session`, `mc_session_transcript` |
| Conexiones | `mc_list_connections`, `mc_register_connection` |
| Tokens y costos | `mc_token_stats`, `mc_agent_costs`, `mc_costs_by_agent` |
| Skills | `mc_list_skills`, `mc_read_skill` |
| Cron | `mc_list_cron` |
| Estado y salud | `mc_health`, `mc_dashboard`, `mc_status` |
| Runs y evals | `mc_list_runs`, `mc_get_run`, `mc_create_run`, `mc_update_run`, `mc_run_provenance`, `mc_attach_eval`, `mc_eval_leaderboard` |

### Cómo registrar el MCP (manual del usuario)

swl-ses **NO modifica `.claude/settings.json` automáticamente**. Si quieres
activar el MCP de MC, agrega esto manualmente:

```json
{
  "mcpServers": {
    "mission-control": {
      "command": "node",
      "args": ["/ruta/absoluta/a/mission-control/scripts/mc-mcp-server.cjs"],
      "env": {
        "MC_URL": "http://localhost:3000",
        "MC_API_KEY": "tu-api-key-aqui"
      }
    }
  }
}
```

Ruta de `.claude/settings.json`: `~/.claude/settings.json` (global) o
`.claude/settings.json` dentro del proyecto.

### Consideraciones de seguridad (IMPORTANTE)

El MCP de Mission Control incluye tools de **escritura** (`mc_create_task`,
`mc_write_memory`, `mc_write_soul`, etc.) que modifican el estado de la
instancia MC. Evalúa antes de activarlo:

- ¿La instancia MC está en red local o expuesta a internet?
- ¿El API key tiene el mínimo de permisos necesarios?
- ¿Confías en que los agentes que invocarán el MCP no harán escrituras no deseadas?

La regla `seguridad-agentes.md` del sistema recomienda documentar este servidor
en `.planning/MCP_REGISTRY.md` antes de activarlo.
