Actualizar Indicadores
Usar
- Activar este skill cuando el usuario entregue un archivo base de indicadores y pida actualizar una semana o recalcular metricas financieras.
- Tomar como modo principal: archivo existente + datos nuevos en lenguaje natural.
- Si el usuario nombra un archivo especifico, actualizar ese mismo archivo por defecto.
- Si el usuario no nombra un archivo, usar
./assets/Datos_Financieros_Semanales.xlsx como semilla y trabajar sobre ./output/Datos_Financieros_Semanales.xlsx.
- Preferir
./scripts/update_indicators.py para hacer la actualizacion de forma determinista.
- Leer
./references/input-format.md solo si hace falta confirmar columnas, alias o formulas.
Flujo Principal
- Esperar un archivo base existente, por ejemplo
indicadores.xlsx o ./output/indicadores.csv.
- Si no se indica archivo, crear o reutilizar el archivo vivo
./output/Datos_Financieros_Semanales.xlsx a partir de ./assets/Datos_Financieros_Semanales.xlsx.
- Tomar del prompt los nuevos datos semanales, por ejemplo semana, ingresos, perdidas y clientes.
- Buscar la fila de esa semana en el archivo:
- Si existe, sobrescribir sus valores con los nuevos datos.
- Si no existe, agregar una nueva fila al final.
- Recalcular las metricas del archivo.
- Actualizar el mismo archivo por defecto.
- Guardar una copia de respaldo o resumen en
./output/ cuando ayude a trazabilidad o recuperacion.
Ejemplos de prompts esperados:
Actualiza el archivo indicadores.xlsx con la semana 2026-W12, revenue 125000, losses 9300 y customers 1820.
Actualiza indicadores-base.csv con estos datos: semana 2026-W12, ingresos 125000, perdidas 9300, clientes 1820.
En el archivo output/indicadores.xlsx reemplaza la semana 2026-W12 con estos valores y recalcula metricas.
Actualiza los indicadores de esta semana con ingresos 125000, perdidas 9300 y clientes 1820 usando el archivo por defecto.
Esperar Entrada
- Aceptar archivos
csv, xlsx o xlsm.
- Esperar una tabla plana con encabezados en la primera fila y una fila por semana.
- Requerir una columna de semana con alguno de estos encabezados o equivalentes:
week, semana, period, periodo.
- Requerir columnas base para ingresos, perdidas y clientes con encabezados compatibles con:
revenue o ingresos
losses o perdidas
customers o clientes
- Aceptar columnas opcionales:
previous_customers
retained_customers
retention_rate
loss_percentage
margin
- Mantener el archivo ordenado cronologicamente cuando la retencion dependa de la fila anterior.
Contrato JSON Opcional
Usar este payload como contrato interno del script cuando haga falta estructurar la llamada. No pedirlo al usuario salvo que la automatizacion lo requiera.
{
"file_path": "Datos_Financieros_Semanales.xlsx",
"sheet_name": "Indicadores",
"week": "2026-W12",
"summary_path": "indicadores-W12-summary.json",
"updates": {
"revenue": 125000,
"losses": 9300,
"customers": 1820,
"previous_customers": 1885,
"retained_customers": 1790
}
}
- Tratar
file_path, sheet_name, summary_path, previous_customers y retained_customers como opcionales.
- Si
file_path no llega, usar ./assets/Datos_Financieros_Semanales.xlsx como base y ./output/Datos_Financieros_Semanales.xlsx como archivo de trabajo.
- Resolver
summary_path siempre dentro de ./output/ cuando se pase como ruta relativa.
- Requerir
week y updates.revenue, updates.losses, updates.customers.
Flujo
- Cargar el archivo base.
- Resolver la ruta del archivo nombrado por el usuario.
- Si no se especifica archivo, sembrar el archivo vivo dentro de
./output/ usando el Excel de ./assets/.
- Detectar columnas existentes con alias compatibles en ingles o espanol.
- Crear las columnas calculadas faltantes sin romper el resto de la tabla.
- Materializar tambien
previous_customers y retained_customers cuando se infieran para que la retencion quede visible en el archivo.
- Aplicar los valores de la semana solicitada.
- Actualizar la fila si la semana ya existe.
- Agregar una fila nueva si la semana no existe.
- Validar campos requeridos, valores negativos, duplicados de semana y datos no numericos en columnas financieras.
- Recalcular para todas las filas:
retention_rate
loss_percentage
margin
- Actualizar siempre el mismo archivo de trabajo.
- Guardar la copia de respaldo en
./output/.
Formulas
- Calcular
retention_rate como retained_customers / previous_customers.
- Si
retained_customers no existe, derivarlo como min(customers, previous_customers).
- Si
previous_customers no existe, usar los clientes de la fila anterior como base.
- Materializar
previous_customers y retained_customers en el archivo cuando hayan sido inferidos.
- Calcular
loss_percentage como losses / revenue.
- Calcular
margin como (revenue - losses) / revenue.
- Guardar las metricas como ratios decimales entre
0 y 1.
Comandos
python ./.codex/skills/actualizar-indicadores/scripts/update_indicators.py --input-json payload.json
- Ejecutar con JSON desde stdin:
Get-Content payload.json | python ./.codex/skills/actualizar-indicadores/scripts/update_indicators.py --input-json -
python ./.codex/skills/actualizar-indicadores/scripts/update_indicators.py ^
--week 2026-W12 ^
--revenue 125000 ^
--losses 9300 ^
--customers 1820 ^
--previous-customers 1885 ^
--summary-output indicadores-W12-summary.json
Salida
- Actualizar el archivo original por defecto.
- Si se usa el archivo por defecto, mantener el archivo vivo en
./output/Datos_Financieros_Semanales.xlsx.
- Guardar una copia de respaldo en
./output/.
- Entregar opcionalmente un resumen JSON con cambios, advertencias y metricas recalculadas.
- Imprimir tambien un resumen JSON en stdout para facilitar automatizacion.
Validaciones
- Rechazar archivos sin columna de semana.
- Rechazar semanas duplicadas en el archivo base.
- Rechazar formatos no soportados como
.xls.
- Rechazar valores negativos o no numericos en ingresos, perdidas y clientes.
- No asumir formulas de Excel en columnas gestionadas; esperar valores ya materializados.
- En Excel, esperar una hoja plana con encabezados en la fila 1 y sin celdas combinadas en las columnas gestionadas.
- Si el entorno restringe escrituras dentro de
.codex/skills, pedir permiso antes de escribir en ./output/.
Triggers
actualiza el archivo indicadores.xlsx con estos datos
actualiza indicadores de esta semana
carga datos semanales y recalcula metricas
actualiza el archivo base de indicadores financieros
recalcula retencion, perdidas y margen del corte semanal
1---2name: actualizar-indicadores3description: Update a named base CSV or Excel financial indicators file with weekly data. Use when Codex receives an existing spreadsheet path or uploaded file plus weekly values in natural language, and must update that same file by replacing the row for the requested week or appending it if the week does not exist, then recalculate retention_rate, loss_percentage, and margin. If the user does not specify a file, use `assets/Datos_Financieros_Semanales.xlsx` as the base and keep the working file inside `actualizar-indicadores/output/`. Trigger on requests such as "actualiza el archivo indicadores.xlsx con estos datos", "actualiza indicadores de esta semana" or "carga datos semanales y recalcula metricas".4---56# Actualizar Indicadores78## Usar910- Activar este skill cuando el usuario entregue un archivo base de indicadores y pida actualizar una semana o recalcular metricas financieras.11- Tomar como modo principal: archivo existente + datos nuevos en lenguaje natural.12- Si el usuario nombra un archivo especifico, actualizar ese mismo archivo por defecto.13- Si el usuario no nombra un archivo, usar `./assets/Datos_Financieros_Semanales.xlsx` como semilla y trabajar sobre `./output/Datos_Financieros_Semanales.xlsx`.14- Preferir `./scripts/update_indicators.py` para hacer la actualizacion de forma determinista.15- Leer `./references/input-format.md` solo si hace falta confirmar columnas, alias o formulas.1617## Flujo Principal1819- Esperar un archivo base existente, por ejemplo `indicadores.xlsx` o `./output/indicadores.csv`.20- Si no se indica archivo, crear o reutilizar el archivo vivo `./output/Datos_Financieros_Semanales.xlsx` a partir de `./assets/Datos_Financieros_Semanales.xlsx`.21- Tomar del prompt los nuevos datos semanales, por ejemplo semana, ingresos, perdidas y clientes.22- Buscar la fila de esa semana en el archivo:23 - Si existe, sobrescribir sus valores con los nuevos datos.24 - Si no existe, agregar una nueva fila al final.25- Recalcular las metricas del archivo.26- Actualizar el mismo archivo por defecto.27- Guardar una copia de respaldo o resumen en `./output/` cuando ayude a trazabilidad o recuperacion.2829Ejemplos de prompts esperados:3031- `Actualiza el archivo indicadores.xlsx con la semana 2026-W12, revenue 125000, losses 9300 y customers 1820.`32- `Actualiza indicadores-base.csv con estos datos: semana 2026-W12, ingresos 125000, perdidas 9300, clientes 1820.`33- `En el archivo output/indicadores.xlsx reemplaza la semana 2026-W12 con estos valores y recalcula metricas.`34- `Actualiza los indicadores de esta semana con ingresos 125000, perdidas 9300 y clientes 1820 usando el archivo por defecto.`3536## Esperar Entrada3738- Aceptar archivos `csv`, `xlsx` o `xlsm`.39- Esperar una tabla plana con encabezados en la primera fila y una fila por semana.40- Requerir una columna de semana con alguno de estos encabezados o equivalentes: `week`, `semana`, `period`, `periodo`.41- Requerir columnas base para ingresos, perdidas y clientes con encabezados compatibles con:42 - `revenue` o `ingresos`43 - `losses` o `perdidas`44 - `customers` o `clientes`45- Aceptar columnas opcionales:46 - `previous_customers`47 - `retained_customers`48 - `retention_rate`49 - `loss_percentage`50 - `margin`51- Mantener el archivo ordenado cronologicamente cuando la retencion dependa de la fila anterior.5253## Contrato JSON Opcional5455Usar este payload como contrato interno del script cuando haga falta estructurar la llamada. No pedirlo al usuario salvo que la automatizacion lo requiera.5657```json58{59 "file_path": "Datos_Financieros_Semanales.xlsx",60 "sheet_name": "Indicadores",61 "week": "2026-W12",62 "summary_path": "indicadores-W12-summary.json",63 "updates": {64 "revenue": 125000,65 "losses": 9300,66 "customers": 1820,67 "previous_customers": 1885,68 "retained_customers": 179069 }70}71```7273- Tratar `file_path`, `sheet_name`, `summary_path`, `previous_customers` y `retained_customers` como opcionales.74- Si `file_path` no llega, usar `./assets/Datos_Financieros_Semanales.xlsx` como base y `./output/Datos_Financieros_Semanales.xlsx` como archivo de trabajo.75- Resolver `summary_path` siempre dentro de `./output/` cuando se pase como ruta relativa.76- Requerir `week` y `updates.revenue`, `updates.losses`, `updates.customers`.7778## Flujo7980- Cargar el archivo base.81- Resolver la ruta del archivo nombrado por el usuario.82- Si no se especifica archivo, sembrar el archivo vivo dentro de `./output/` usando el Excel de `./assets/`.83- Detectar columnas existentes con alias compatibles en ingles o espanol.84- Crear las columnas calculadas faltantes sin romper el resto de la tabla.85- Materializar tambien `previous_customers` y `retained_customers` cuando se infieran para que la retencion quede visible en el archivo.86- Aplicar los valores de la semana solicitada.87- Actualizar la fila si la semana ya existe.88- Agregar una fila nueva si la semana no existe.89- Validar campos requeridos, valores negativos, duplicados de semana y datos no numericos en columnas financieras.90- Recalcular para todas las filas:91 - `retention_rate`92 - `loss_percentage`93 - `margin`94- Actualizar siempre el mismo archivo de trabajo.95- Guardar la copia de respaldo en `./output/`.9697## Formulas9899- Calcular `retention_rate` como `retained_customers / previous_customers`.100- Si `retained_customers` no existe, derivarlo como `min(customers, previous_customers)`.101- Si `previous_customers` no existe, usar los clientes de la fila anterior como base.102- Materializar `previous_customers` y `retained_customers` en el archivo cuando hayan sido inferidos.103- Calcular `loss_percentage` como `losses / revenue`.104- Calcular `margin` como `(revenue - losses) / revenue`.105- Guardar las metricas como ratios decimales entre `0` y `1`.106107## Comandos108109- Ejecutar con JSON:110111```bash112python ./.codex/skills/actualizar-indicadores/scripts/update_indicators.py --input-json payload.json113```114115- Ejecutar con JSON desde stdin:116117```bash118Get-Content payload.json | python ./.codex/skills/actualizar-indicadores/scripts/update_indicators.py --input-json -119```120121- Ejecutar con argumentos:122123```bash124python ./.codex/skills/actualizar-indicadores/scripts/update_indicators.py ^125 --week 2026-W12 ^126 --revenue 125000 ^127 --losses 9300 ^128 --customers 1820 ^129 --previous-customers 1885 ^130 --summary-output indicadores-W12-summary.json131```132133## Salida134135- Actualizar el archivo original por defecto.136- Si se usa el archivo por defecto, mantener el archivo vivo en `./output/Datos_Financieros_Semanales.xlsx`.137- Guardar una copia de respaldo en `./output/`.138- Entregar opcionalmente un resumen JSON con cambios, advertencias y metricas recalculadas.139- Imprimir tambien un resumen JSON en stdout para facilitar automatizacion.140141## Validaciones142143- Rechazar archivos sin columna de semana.144- Rechazar semanas duplicadas en el archivo base.145- Rechazar formatos no soportados como `.xls`.146- Rechazar valores negativos o no numericos en ingresos, perdidas y clientes.147- No asumir formulas de Excel en columnas gestionadas; esperar valores ya materializados.148- En Excel, esperar una hoja plana con encabezados en la fila 1 y sin celdas combinadas en las columnas gestionadas.149- Si el entorno restringe escrituras dentro de `.codex/skills`, pedir permiso antes de escribir en `./output/`.150151## Triggers152153- `actualiza el archivo indicadores.xlsx con estos datos`154- `actualiza indicadores de esta semana`155- `carga datos semanales y recalcula metricas`156- `actualiza el archivo base de indicadores financieros`157- `recalcula retencion, perdidas y margen del corte semanal`