# Cost Counterfactual > Análisis contrafactual de costo con múltiples baselines. Compara el gasto real contra baselines hipotéticos de usar siempre haiku, sonnet u opus, para saber si el enrutamiento vale la pena. Fuente: https://skillsagentes.com/skills/ruvnet/ruflo/cost-counterfactual Markdown: https://skillsagentes.com/skills/ruvnet/ruflo/cost-counterfactual.md Repositorio: https://github.com/ruvnet/ruflo Autor: ruvnet Licencia: MIT Actualizado: hace 2 meses Coste de contexto: 70 tok instalada, 792 tok al activarse, 792 tok con todos los archivos del bundle Bundle: 1 archivo, 3 KB Permisos que pide: bash ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add ruvnet/ruflo --skill cost-counterfactual --agent claude-code # Cursor npx -y skills add ruvnet/ruflo --skill cost-counterfactual --agent cursor # Codex npx -y skills add ruvnet/ruflo --skill cost-counterfactual --agent codex # Gemini CLI npx -y skills add ruvnet/ruflo --skill cost-counterfactual --agent gemini # Windsurf npx -y skills add ruvnet/ruflo --skill cost-counterfactual --agent windsurf # Cline npx -y skills add ruvnet/ruflo --skill cost-counterfactual --agent cline ``` ## Qué hace - Compara el gasto real de las sesiones contra líneas base hipotéticas: siempre-haiku, siempre-sonnet o siempre-opus. - Calcula el ahorro (o sobrecosto) frente a cada baseline y su porcentaje. - Un ahorro negativo frente a siempre-haiku indica que el enrutador escaló a modelos más caros de lo necesario. ## Cuándo usarla - En revisiones trimestrales de costo, para demostrar cuánto se ahorró frente a usar siempre Sonnet. - Como gate de CI que falle si el enrutamiento no ahorra al menos cierto % frente a la baseline sonnet. - Al validar una nueva configuración de calidad o límite de costo, para confirmar que el ahorro no retrocedió. ## Qué la activa - "¿Cuánto ahorramos usando el enrutador frente a usar siempre Sonnet?" - "Compara el gasto real contra la baseline de siempre-opus" - "¿Está el enrutador sobre-escalando a modelos caros?" ## Antes de instalar - Lee los registros `session-*` del namespace `cost-tracking`. - runs shell commands ## Archivos - SKILL.md — 3 KB ## SKILL.md Reproducido tal cual desde ruvnet/ruflo bajo MIT. Esta sección es el documento original y está en inglés. Multi-baseline counterfactual cost analysis. Pairs with the existing observability surface: - **`cost-budget-check`** — "have we crossed a threshold?" (reactive) - **`cost-projection`** — "when will we cross a threshold?" (predictive) - **`cost-counterfactual`** — "is the routing earning its keep?" (comparative) ← this one ## Algorithm 1. Read all `session-*` records from the `cost-tracking` namespace. 2. Apply `--since` window filter (default all-time). 3. Sum tokens across `byModel[*]` entries for each session. 4. For each requested baseline (default: all three): - `counterfactualUsd = (input × tier.input + output × tier.output + cache_write × tier.cache_write + cache_read × tier.cache_read) / 1M` 5. Compute `savings = counterfactualUsd − actualUsd`. 6. Emit per-baseline totals + savings % across the comparison set. ## Smoke transcript (2 sessions: 50K haiku tokens + 50K sonnet tokens) ``` | Sessions considered | 2 | | Total input tokens | 100,000 | | Actual spend | $0.162500 | | Baseline | Hypothetical | Actual | Savings | % | | `always-haiku` | $0.025000 | $0.162500 | -$0.137500 | -550.00% | | `always-sonnet` | $0.300000 | $0.162500 | +$0.137500 | 45.83% | | `always-opus` | $1.500000 | $0.162500 | +$1.337500 | 89.17% | ``` ## How to read negative savings A negative `always-haiku` result means **the router chose more-expensive models than haiku** on tasks haiku could have handled. That's an over-escalation signal: - Maybe qualityBar is set too high - Maybe the sonnet/opus session was warranted by complexity but the baseline doesn't know that - Run `cost optimize` (or inspect specific sessions via `cost conversation`) to investigate Positive savings quantify the router's win against that baseline. The most informative number is usually `always-sonnet` — it's the standard "safe default" baseline most teams would pick if they didn't have routing. ## When to use - **Quarterly cost review**: "We saved $X vs always-Sonnet — here's the proof." - **CI gate**: `cost counterfactual --format json | jq '.baselines[1].savingsPct > 30'` — fail builds if routing isn't saving ≥30% vs sonnet baseline (workload-shift detector). - **Routing-config validation**: When introducing a new qualityBar or cost-ceiling, re-run counterfactual to confirm savings didn't regress. ## Stationarity caveat Like all counterfactual analyses, this assumes the same tokens at the same complexity would have produced the same outcome from the baseline model. That's an upper bound — the baseline might have failed and required retries, which the math doesn't capture. Treat the numbers as a quality-blind ceiling. ## Dónde encaja - Categoría: [Datos y analítica](https://skillsagentes.com/categorias/datos-analitica.md) — Consulta, limpia y visualiza datos sin salir del agente. - Creador: [ruvnet](https://skillsagentes.com/creators/ruvnet.md) — 275 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Harness Gepa](https://skillsagentes.com/skills/ruvnet/ruflo/harness-gepa.md): Inspecciona y audita genomas GEPA: carga y valida un genoma, renderiza el system prompt que compila, o clasifica los modos de fallo de una transcripción de ejecución. - [Deepseek Reason](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-reason.md): Completion en modo razonamiento contra deepseek-reasoner (R1) de DeepSeek. Devuelve el chain-of-thought por separado de la respuesta final. Lee DEEPSEEK_API_KEY y degrada si falta o la API no responde. - [Deepseek Chat](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-chat.md): Completion de un solo turno contra el modelo deepseek-chat de DeepSeek vía /v1/chat/completions. Lee DEEPSEEK_API_KEY y degrada con status:degraded si falta o la API no responde. Para tareas sin razonamiento. - [Adr Index](https://skillsagentes.com/skills/ruvnet/ruflo/adr-index.md): Construye o reconstruye el índice de ADRs y su grafo de dependencias ejecutando scripts/import.mjs, en vez de cientos de llamadas MCP. - [Agntcy Status](https://skillsagentes.com/skills/ruvnet/ruflo/agntcy-status.md): Muestra el estado de la integración AGNTCY/SLIM/CASA: si los paquetes están instalados, qué transporte está activo y si el enforcement de CASA está habilitado. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)