| name | cerrar-mi-mes |
| title | Cerrar mi mes |
| description | Ejecuto un cierre mensual completo de principio a fin: concilio cada cuenta registrada, actualizo el registro de devengos, redacto cada asiento contable estándar pendiente (reversión, devengo, prepago, nómina, reconocimiento de ingresos, depreciación, compensación en acciones, ajuste), realizo una verificación de corte para transacciones registradas en el período equivocado, genero el estado de resultados, el balance general y el flujo de efectivo, realizo un análisis de variaciones, y armo un paquete de cierre con las cuatro alertas de pendientes (diferencias de conciliación > $100, sin categorizar > 10%, devengos vencidos > 90 días, asientos contables aún en borrador) en la parte superior. La subinvocación `step=cutoff-check` ejecuta el paso de corte de forma independiente. Solo borradores, nunca publico asientos contables, nunca presento nada, nunca muevo dinero. |
| version | 1 |
| category | Contabilidad |
| featured | yes |
| image | ledger |
| integrations | ["quickbooks","xero"] |
Cerrar Mi Mes
El orquestador del cierre de fin de mes. Tu mes cierra cuando cada cuenta concilia, cada asiento contable pendiente está redactado, el corte está verificado, los estados financieros cuadran, la variación está explicada, y el paquete tiene el visto bueno. Encadeno las habilidades dueñas de cada paso; nunca hago su trabajo en línea.
Invariantes que preservo en cada ejecución: cada código de cuenta existe en tu plan de cuentas bloqueado, cada asiento contable cuadra dentro de 1 centavo, las diferencias de conciliación nunca se tapan en silencio, el paquete permanece en status: "draft" hasta que tú das el visto bueno. Nunca publico asientos contables, nunca muevo dinero, nunca presento nada.
Cuándo usarlo
- "cierra los libros de marzo" / "ejecuta el cierre de fin de mes" / "cierra el último mes del Q1".
- "¿podemos entregar el cierre de {YYYY-MM}?", ejecuta la cadena completa.
- "verificación de corte" / "¿algo registrado en el período equivocado?" / "¿qué se registró en el período equivocado?", invocar con
step=cutoff-check para el subpaso independiente.
step=cutoff-check, subpaso de corte independiente, sin recorrer el resto de la orquestación. Útil cuando ya se ejecutaron otros pasos y solo se necesita actualizar el corte.
Conexiones que necesito
Ejecuto el trabajo externo a través de Composio. Antes de que esta habilidad se ejecute, verifico que las categorías siguientes estén conectadas. Si falta alguna, nombro la categoría, te pido que la conectes desde la pestaña de Integraciones, me detengo.
- QuickBooks Online o Xero (contabilidad) - preferido para los registros del libro mayor y las verificaciones de corte de antigüedad de cuentas por pagar. Requerido si quieres que extraiga la actividad del libro mayor directamente.
- Feed bancario (banca respaldada por Plaid) - fuente preferida para conciliar cada cuenta de efectivo. Opcional, también puedes soltar los PDF de los estados de cuenta.
- Proveedor de nómina (Gusto, Rippling, Justworks) - necesario solo cuando hay un asiento contable de nómina pendiente para el período. Opcional, pega un resumen como respaldo.
- Stripe (facturación) - necesario solo al conciliar Stripe o al extraer el ingreso mensual actual para el reconocimiento de ingresos. Opcional.
Orquesto habilidades hijas (conciliación, devengos, asientos contables, estados de cuenta, variación) y cada una aplica su propia verificación de conexión; si alguna se detiene, te muestro ese bloqueo.
Información que necesito
Leo primero tu contexto contable. Por cada campo requerido que falte, hago UNA pregunta en lenguaje sencillo (mejor modalidad: aplicación conectada > archivo > URL > texto pegado) y espero.
- El período a cerrar - Requerido. Por qué: me dice el rango de fechas para las conciliaciones, devengos y estados financieros. Si falta, pregunto: "¿Qué mes estamos cerrando?"
- Un contexto contable terminado - Requerido. Por qué: necesito tu método contable, código de suspenso y cuentas registradas antes de orquestar el cierre. Si falta, pregunto: "¿Ya configuramos los libros? Si no, ejecuta la configuración primero."
- Un plan de cuentas - Requerido. Por qué: cada asiento contable y estado financiero depende de él. Si falta, pregunto: "¿Ya tenemos un plan de cuentas? Si no, redactemos uno primero."
- Un balance de comprobación de apertura - Requerido si este es tu primer cierre en este sistema. Por qué: cada número del balance general se ancla aquí. Si falta, pregunto: "¿Tienes un balance de comprobación de cierre de tus libros anteriores? Suelta la hoja de cálculo para que cargue los saldos de apertura."
- Un presupuesto actual - Opcional. Por qué: el análisis de variación corre contra el presupuesto si está disponible, si no, contra el período anterior. Si no tienes uno, sigo adelante y solo ejecuto la variación contra el período anterior.
Pasos
-
Analizar las entradas y leer el contexto.
- Requerido:
period (YYYY-MM). Analizar a {periodStart, periodEnd}.
- Cargar
context/bookkeeping-context.md, detenerme si falta, pedir al usuario que ejecute set-up-my-books primero.
- Cargar
config/context-ledger.json, config/chart-of-accounts.json (bloqueado durante la ejecución, detenerme si está ausente, pedir build-my-chart-of-accounts), config/prior-categorizations.json, config/opening-trial-balance.json (si existe), config/budget.json (si existe).
- Crear la carpeta de cierre:
mkdir -p closes/{YYYY-MM}/.
-
Capturar una instantánea del estado del período anterior. Antes de cualquier escritura, copiar las filas relevantes de outputs.json del período en closes/{YYYY-MM}/_snapshot.json para que el cierre sea reproducible si el usuario vuelve a ejecutarlo.
-
Rama step=cutoff-check. Si se activa, saltar al Paso 7.
-
Conciliar cada cuenta (recorrer reconcile-my-accounts). Para cada cuenta en context-ledger.domains.banks.accounts[], invocar la habilidad reconcile-my-accounts para {accountLast4, period}. Recopilar la ruta del resultado + el estado de la diferencia. Luego ejecutar reconcile-my-accounts mode=transfer-detect una vez a través de todas las cuentas para el período, etiquetar las transferencias entre cuentas con el código de cuenta 9000 para que queden fuera de las fórmulas SUMIFS del estado de resultados. NO avanzar al Paso 5 si alguna cuenta devolvió status: "unresolved-break" Y la diferencia es > $100, mostrar esas primero, esperar la decisión del usuario ("tapar con un asiento de ajuste" frente a "investigar más").
-
Actualizar el registro de devengos (review-my-accruals). Invocar review-my-accruals para el período. Reescribe accruals/register.md, hace leer-fusionar-escribir en accruals.json con el conjunto actual de devengos activos. Capturar la lista de devengos marcados reversing=true que deben revertirse al abrir el período, se vuelven entradas del Paso 6 para el asiento de reversión.
-
Redactar cada asiento contable estándar pendiente (recorrer draft-a-journal-entry). En este orden, invocar draft-a-journal-entry una vez por cada entrada pendiente; cada llamada añade un asiento contable balanceado a journal-entries.json. Recopilar rutas + ids para el paquete.
- Asientos de reversión,
type=accrual mode=reversing, revierte automáticamente cada devengo activo marcado reversing=true.
- Devengos nuevos,
type=accrual, según el resultado de review-my-accruals (ingresos no facturados, nómina devengada, intereses devengados).
- Prepagos,
type=prepaid, amortiza renta / SaaS / seguro.
- Nómina,
type=payroll, extraer de Gusto / Rippling / Justworks vía composio search payroll; recurrir a texto pegado si es necesario.
- Reconocimiento de ingresos,
type=revrec, ingresos reconocidos según los calendarios ASC 606 en revrec/.
- Depreciación,
type=depreciation, desde config/fixed-assets.json.
- Compensación en acciones,
type=stock-comp, compensación en acciones según el calendario de adquisición de derechos.
- Ajustes, asientos contables
type=adjustment sugeridos por las conciliaciones (comisiones no registradas, redondeo cambiario).
Cada asiento contable queda en status: "draft". Nunca cambiar a posted aquí, requiere confirmación explícita del usuario.
-
Subpaso de verificación de corte. Construir closes/{YYYY-MM}/cutoff-check.md con estas verificaciones:
- Gastos con fecha anterior, registrados en el actual, escanear los asientos contables del período en busca de fechas de recibo / origen en el período anterior. Sugerir "devengar en el período anterior, revertir en este período".
- Gastos con fecha actual, aún no registrados, extraer la antigüedad de cuentas por pagar vía
composio search accounting. Cualquier factura abierta con fecha ≤ periodEnd ausente de los asientos contables de este período es candidata a pasivo no registrado.
- Corte de ingresos, facturas con fecha posterior a
periodEnd con fechas de entrega anteriores a periodEnd (verificación cruzada ASC 606).
- Sensatez en base de efectivo, pagos
> 1% de los gastos operativos del período dentro de ±3 días de periodEnd.
- Encuesta de suspenso, saldo actual de
suspense.json; marcar partidas con antigüedad > 90 días.
Estructura del documento: encabezado de resumen con conteos + totales en dólares por categoría, una tabla por verificación con {fecha, descripción, monto, acciónSugerida}. Añadir una fila en outputs.json con type: "books-audit", domain: "close". Si se invoca como step=cutoff-check, detenerse aquí; omitir el Paso 8 en adelante.
-
Generar los tres estados financieros (prepare-my-financials × 3). En secuencia para que los estados posteriores puedan leer los anteriores:
statement=pnl, escribe financials/{YYYY-MM}/pnl.md.
statement=balance-sheet, escribe financials/{YYYY-MM}/balance-sheet.md. Verifica cruzadamente las Utilidades Retenidas contra el Ingreso Neto del estado de resultados calculado en el paso 8.1.
statement=cash-flow, escribe financials/{YYYY-MM}/cash-flow.md. Concilia la línea de efectivo final con la suma de los saldos finales de context-ledger.domains.banks (de las conciliaciones del Paso 4).
Si algún estado falla su verificación cruzada interna, mostrar la diferencia y NO avanzar a la variación. El usuario decide.
-
Ejecutar el análisis de variación (explain-my-variance). Invocar una vez por período. Si config/budget.json existe, la habilidad ejecuta reales contra presupuesto; si no, ejecuta contra el período anterior. Captura la descomposición de factores + la narrativa en lenguaje sencillo. Escribe variance-analyses/{YYYY-MM}.md.
-
Calcular las alertas de pendientes para el encabezado del paquete.
- Diferencias de conciliación > $100, conteo en
recon-breaks.json con abs(amount) > 100 Y status: "unresolved".
- Sin categorizar > 10% del volumen, dólares absolutos de Suspenso ÷ volumen absoluto total del período. Marcar si
> 0.10.
- Devengos vencidos > 90 días, entradas en
accruals.json con active=true Y now - createdAt > 90 días.
- Asientos contables aún en borrador, conteo de
journal-entries.json para el período con status: "draft" (se espera un valor distinto de cero en la primera ejecución, marca la acción "publicar estos N asientos contables en QuickBooks Online / Xero").
-
Armar closes/{YYYY-MM}/package.md. Secciones:
- Encabezado, período, estado (
draft), marca de tiempo, las cuatro alertas del Paso 10 presentadas de forma prominente como pendientes del usuario.
- Conciliaciones, resumen de una línea por cuenta con el resultado de la prueba de tres vías y enlace a la conciliación completa; los pares de transferencia interna señalados.
- Asientos contables, tabla
{id, fecha, tipo, memo, totalDébitos, estado} ordenada por tipo y luego por fecha; cada fila enlaza a journal-entries/{YYYY-MM}/{slug}.md.
- Verificación de corte, conteos por categoría + enlace a
cutoff-check.md.
- Estados financieros, enlaces al estado de resultados, balance general, flujo de efectivo con números titulares en línea (Ingreso Neto, Efectivo Final, Activos Totales).
- Análisis de variación, enlace + narrativa de 3 puntos tomada textualmente de
variance-analyses/{YYYY-MM}.md.
- Instantánea de devengos, conteos (activos / revertidos / vencidos) + enlace a
accruals/register.md.
- Preguntas abiertas para el fundador, cualquier cosa que las habilidades hijas hayan señalado y que necesite intervención humana antes de cambiar a
ready.
-
Actualizar los índices (atómico .tmp + renombrar, leer-fusionar-escribir):
outputs.json, {type: "close-package", title: "Cierre {YYYY-MM}", summary, path, status: "draft", domain: "close"}. Las habilidades hijas ya añadieron sus propias filas.
run-index.json, {id, period, status: "draft", accountsIncluded[], suspenseTotal, pnlNetIncome}. pnlNetIncome leído textualmente del estado de resultados.
-
Resumir al usuario. Estado del cierre + ruta del paquete (con enlace), las cuatro alertas del Paso 10 con elementos de acción ("publicar {N} asientos contables en borrador", "resolver {M} diferencias de conciliación"), números titulares (Ingreso Neto, Efectivo Final, Runway), siguiente paso ("aprueba los asientos contables en borrador y cambio el paquete a ready").
Contrato de invocación de subhabilidades
Cada habilidad hija (reconcile-account, review-accruals, prep-journal-entry, generate-financial-statements, run-variance-analysis) se invoca con period, es dueña de su propio artefacto + filas de índice, nunca se rehace en línea. Si una habilidad hija se detiene por un bloqueo (configuración / conexión faltante), mostrarlo textualmente y pausar.
Resultados
closes/{YYYY-MM}/package.md, narrativa principal del cierre con las cuatro alertas de pendientes en la parte superior.
closes/{YYYY-MM}/cutoff-check.md, problemas de corte + pasivos no registrados.
closes/{YYYY-MM}/_snapshot.json, instantánea del estado del período anterior para reproducibilidad.
- Todos los artefactos de las habilidades hijas,
reconciliations/{account_last4}/{YYYY-MM}.md × N, journal-entries/{YYYY-MM}/*.md × M, financials/{YYYY-MM}/*.md × 3, variance-analyses/{YYYY-MM}.md, accruals/register.md (reescrito).
outputs.json, una fila para el paquete de cierre + filas de cada habilidad hija.
run-index.json, una fila añadida, status: "draft".