Skip to main content

review-accruals

Use when the user says 'list our active accruals' / 'refresh the accruals register' / 'are any accruals stale' / 'what reversing entries are due' - I recompute current balances for every active accrual (prepaid rent, prepaid SaaS, deferred revenue, PTO, accrued payroll, accrued interest), flag stale items, and surface reversing-entry candidates. Reads `accruals.json` + `journal-entries.json` + chart of accounts; rewrites `accruals/register.md` and upserts `accruals.json`.

Ir para a instalação

Informações da origem

Repositório
gethouston/houston
Última atividade na origem
16 de setembro de 2026 às 16:49
Idioma detectado do SKILL.md
inglês
Estrelas
114
Forks
67

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
review-accruals
description
Use when the user says 'list our active accruals' / 'refresh the accruals register' / 'are any accruals stale' / 'what reversing entries are due' - I recompute current balances for every active accrual (prepaid rent, prepaid SaaS, deferred revenue, PTO, accrued payroll, accrued interest), flag stale items, and surface reversing-entry candidates. Reads `accruals.json` + `journal-entries.json` + chart of accounts; rewrites `accruals/register.md` and upserts `accruals.json`.
version
1
category
Bookkeeping
featured
no
image
ledger
x_houston
{"created_by":"houston","skill_schema":1}
# Review Accruals Living register of every accrual books carry. Each run recomputes balances from underlying journal entries, classifies each row (`active` / `reversed` / `stale` / `written-off`), surfaces reversing-entry candidates for current period. Register live doc - rewritten in place, NOT indexed in `outputs.json`. ## When to use - "list our active accruals" / "refresh the accruals register". - "are any accruals stale" / "anything I should reverse". - "what reversing journal entries are due this month". - Called by `run-monthly-close` after reconciliations, before `prep-journal-entry` dispatches reversing batch. ## Connections I need I run external work through Composio. Before this skill runs I check that the categories below are linked. Missing → I name the category, ask you to connect it from the Integrations tab, stop. - **No external connections required.** I work entirely from your existing journal entries, accruals register, and chart of accounts. This skill never blocks on a missing connection. ## Information I need I read your bookkeeping context first. For every required field that's missing I ask ONE plain-language question (best modality: connected app > file drop > URL > paste) and wait. - **A chart of accounts with prepaid, deferred, accrued, and PTO sections** — Required. Why: I auto-discover new accruals by scanning these statement sections in the chart of accounts. If missing I ask: "Do we have a chart of accounts yet? If not, let's draft one first so accrual lines have a home." - **A finished bookkeeping context** — Required. Why: I need your accounting method and current period to compute balances and reversals. If missing I ask: "Have we set up the books yet? If not, run the setup first." - **A current journal-entry history** — Required. Why: I recompute every accrual's balance from journal entries hitting its account code. If missing I ask: "Have we processed any periods yet? If not, let's run a close first so there are journal entries to compute against." ## Steps <!-- houston-workflow:v1 --> 1. **Read context.** Load `context/bookkeeping-context.md`, `config/context-ledger.json`, `config/chart-of-accounts.json`. Chart of accounts missing → stop, ask user run `build-chart-of-accounts` first. Note today's date + current accounting period (`YYYY-MM`). 2. **Read current accruals index.** Load `accruals.json` at agent root (empty array if absent). Row schema: `{id, accrualName, glCode, currentBalance, reversing, lastActivity, status: "active" | "reversed" | "stale" | "written-off", notes, createdAt, updatedAt}`. Keep in-memory list keyed by `id`. 3. **Read supporting journal entries.** Load `journal-entries.json`, filter to entries whose `lines[].glCode` matches any accrual's `glCode`, ordered by `date` ascending. Activity history used to recompute balances. 4. **Recompute current balances.** For each active accrual row: - Sum all journal entry line debits + credits against its `glCode` since row's `createdAt`. - Apply sign convention based on natural balance of account type (asset: debit-positive; liability/deferred revenue: credit-positive). - Update `currentBalance`. Update `lastActivity` to max journal entry `date` hitting this account code. No journal entries → leave `lastActivity` unchanged. 5. **Discover net-new accruals.** Any `glCode` appearing in `chart-of-accounts.json` under `statementSection` containing `"prepaid"`, `"deferred"`, `"accrued"`, or `"pto"` but no row in `accruals.json` → create new row. Infer `accrualName` from account name + first journal entry memo. `status: "active"`. Default `reversing: false` unless source journal entry had `reversing: true`. 6. **Classify status.** - `active` - `abs(currentBalance) > 0.00` AND `lastActivity` within last 90 days. - `stale` - `abs(currentBalance) > 0.00` AND `lastActivity` older than 90 days. Flag as write-off-or-reclass candidate. Note recommended action in `notes` ("consider reclass to {X}" or "candidate for write-off journal entry"). - `reversed` - `abs(currentBalance) <= 0.01` AND reversing journal entry exists referencing original accrual. - `written-off` - only user can set. Never transition automatically. 7. **Identify reversing-entry candidates for current period.** Row is reversing candidate if: - `reversing: true` (original accrual booked as reversing), AND - status is `active`, AND - current period strictly after accrual's origination period, AND - no reversing journal entry yet exists for this `id`. Collect into `reversing_candidates` list with suggested reversal amount (negative of `currentBalance`) + originating journal entry id. 8. **Rewrite `accruals/register.md`.** Living doc - overwrite in place. Structure: - **Summary** - counts by status, total prepaid balance, total deferred revenue balance, total accrued liabilities balance. - **Active accruals** - one row per active accrual with `accrualName`, `glCode`, `currentBalance`, `lastActivity`, `reversing` flag. - **Reversing-entry candidates this period** - numbered list with suggested journal entry memo + amount; user runs `prep-journal-entry type=accrual` to draft each. - **Stale accruals (>90 days no activity)** - table with recommended action per row. - **Recently reversed** - last period's reversals for traceability. - **Written-off** - historical tail; keep last 6 months. Atomic write: `accruals/register.md.tmp` → rename. 9. **Upsert `accruals.json`.** Read-merge-write: - Read current file. - Each row in recomputed list: `id` matches → update mutable fields (`currentBalance`, `lastActivity`, `status`, `notes`, `updatedAt`). New `id` → append. - Preserve `createdAt` - never touch. - Never drop rows no longer in recompute; mark `written-off` only if user explicitly confirmed. - Atomic write: `accruals.json.tmp` → rename. 10. **DO NOT append to `outputs.json`.** Register is living doc. `accruals.json` flat-at-root index, not deliverable. 11. **Summarize to user.** One paragraph: how many actives / stale / reversing-candidates this period, total carrying balance, exact next move (e.g., "2 reversing journal entries due - run `prep-journal-entry type=accrual` on each"). Never propose posting; drafts only. ## Outputs - `accruals/register.md` (living document - NOT indexed in outputs.json) - `accruals.json` (flat-at-root index - upserted, not overwritten)
Ver no GitHub