Skill

Month End Close Checklist

Drive a month-end close from a task definition file — sequence tasks by dependency, track owner and status, measure days-to-close against target, surface the critical path and what is blocking it, and produce a tie-out log proving which…

At a glance

Month End Close Checklist is an AI skill that you can use in Claude Code, Codex, or type.com.

Updated

See an example

Example output from a sample run. Company names and figures are sample data.

Month-end close status: period end 2026-08-31, as of 2026-09-08

Behind target: projected close is business day 11.0 (2026-09-16) against a target of business day 8 (2026-09-11), a variance of +3.0 business days. The critical path is BLOCKED at T10, awaiting the August invoice from Halberd Logistics. All 8 of 8 balance sheet tie-outs verify.

Business day 5 of the close. Progress: 6.5 of 14.0 estimated days complete (46.4%). Tasks: complete 8, in progress 1, BLOCKED 1, not started 6.

Critical path

IDTaskOwnerStatusRem daysFinish day
T10Accrued expense review and AP cut-offTomas WeberBLOCKED1.06.0
T11Intercompany elimination entriesMei Linnot started1.07.0
T12FX revaluation of foreign balancesMei Linnot started0.57.5
T13Assemble balance sheet tie-out packDiego Alvareznot started1.08.5
T14Flux analysis and variance commentarySofia Marchettinot started1.09.5
T15Controller review and sign-offAisha Bellonot started0.510.0
T16Board reporting packAisha Bellonot started1.011.0

Tie-out log

AccountNameGLEvidenceDiffVerdict
1000Cash - operating1,284,905.221,284,905.220.00tied
1010Cash - payroll96,410.8796,410.870.00tied
1150Undeposited Stripe payouts58,204.1158,204.110.00tied
1100Accounts receivable - trade742,318.40742,318.400.00tied
1500Fixed assets - net book value431,092.65431,092.650.00tied
2000Accounts payable - trade-389,451.07-389,451.070.00tied

…plus 2 more accounts, both tied. GL total 2,208,360.18 matches evidence total 2,208,360.18 at 0.00 tolerance per account.

Next actions

  • Tomas Weber: chase the August invoice from Halberd Logistics to unblock T10; T11 through T16 all wait on it.
  • Mei Lin: finish T07 Revenue cut-off and deferred revenue rollforward (in progress), the other input to T11.
  • If a balance does not tie, the verdict flips to "CLOSE DOES NOT TIE": Cash - operating with a 1,204.55 DIFFERENCE and Deferred revenue with NO EVIDENCE block sign-off (exit status 1).
  • A task file with a dependency cycle is rejected: "dependency cycle detected among task_id(s): T01, T02, T03".

Inputs: task definitions with owners, dependencies and estimates; tie-out evidence per account; a target of 8 business days with 2026-09-07 as a holiday.

Produced by running bash examples/run.sh on the sample data bundled with this skill.

How to use Month End Close Checklist

  1. type.com: Choose Use Skill to add Month End Close Checklist to your type.com workspace.
  2. Claude Code: Download the skill and extract it into ~/.claude/skills/month-end-close-checklist/ (or .claude/skills/month-end-close-checklist/ in a project). Then ask Claude to use Month End Close Checklist.
  3. Codex: Download the skill and extract it into ~/.agents/skills/month-end-close-checklist/ (or .agents/skills/month-end-close-checklist/ in a repository). Then ask Codex to use Month End Close Checklist.

AI agents can read this page as Markdown or fetch the raw SKILL.md.

Frequently asked questions

What is Month End Close Checklist?

Month End Close Checklist is an AI skill that you can use in Claude Code, Codex, or type.com.

What does Month End Close Checklist do?

Drive a month-end close from a task definition file — sequence tasks by dependency, track owner and status, measure days-to-close against target, surface the critical path and what is blocking it, and produce a tie-out log proving which…

Can I use Month End Close Checklist in Claude Code or Codex?

Yes. Month End Close Checklist is a standard Agent Skills folder with a SKILL.md file. Download it and extract it into ~/.claude/skills/ for Claude Code or ~/.agents/skills/ for Codex.

Who created Month End Close Checklist?

The type.com team created Month End Close Checklist. The type.com team reviews every skill before it is published in the Skills Library.

AI for accounting: a practical guide

Browse the technical files
---
name: month-end-close-checklist
description: Drive a month-end close from a task definition file — sequence tasks by dependency, track owner and status, measure days-to-close against target, surface the critical path and what is blocking it, and produce a tie-out log proving which balances were verified against which evidence.
---

# Month-end close checklist

Turns a close checklist into a status report a controller can act on in the
morning stand-up: who owes what, what the close is actually waiting on, whether
it will hit the target close day, and which balances are still unevidenced.

## Before you run

This skill ships scripts and sample data alongside this SKILL.md. Before running any command:

1. **Get the files.** Make sure the skill's other files (`scripts/`, `examples/` and anything else listed with this skill) are in your working folder at the same relative paths. Some environments load only SKILL.md; if yours did, fetch each file from this skill's published files and write it to the matching path. In Type, read them with the skill-file tools. Anywhere else, the Type Skills Library API lists every file with its path, content and `sha256`: GET `https://api.type.com/api/public/library/skills` and take the entry with slug `month-end-close-checklist`.
2. **Check the copies are exact.** Compare each file's size in bytes, not characters (and its hash, where your tools report one), with the published version before running. A copy written out from the published file is fine once its byte size and hash match; never run a script you summarised or reconstructed from memory.
3. **Run from the skill's folder**, calling interpreters explicitly: `python3 scripts/…` and `bash examples/run.sh`.
4. **Try the sample first.** If the skill ships `examples/run.sh` and `examples/expected_output.txt`, run `bash examples/run.sh`; its output should match the expected file exactly. If it doesn't, stop and report the first differing line rather than running on real data.

## When to use this

- Daily during close: "where are we, and what is blocking day 5?"
- Post-close retro: which tasks pushed the close out, and by how many days.
- Audit prep: the tie-out log is the evidence index for the balance sheet.
- Handover between close owners, so nothing sits unassigned.

Do not use it for the reconciliations themselves — use `gl-reconciliation` for
bank and processor matching and feed its results into the tie-out file.

## Inputs

Two CSVs. Full column specification in `DATA_CONTRACT.md`.

1. `tasks.csv` — the close checklist: `task_id`, `task_name`, `owner`,
   `depends_on`, `estimate_days`, `status`, and optionally `remaining_days`,
   `completed_on`, `blocker_note`, `category`.
2. `tieouts.csv` (optional but strongly recommended) — one row per balance
   being proved: `account_code`, `account_name`, `gl_balance`,
   `evidence_balance`, `evidence_source`, `evidence_ref`, and optionally
   `verified_by`, `verified_on`, `note`.

### Gathering the inputs through Type integrations

- **Checklist**: most teams already keep it in a task tracker or a sheet. Pull
  the current list through the connected Linear / Asana / Notion / Google
  Sheets integration and map its fields onto the columns above. If there is no
  tracker, write `tasks.csv` once from the team's close narrative and keep it
  in the repo or workspace — it is the reusable asset here.
- **GL balances**: export the trial balance for the period from the connected
  QuickBooks, Xero, or NetSuite integration and use the closing balance per
  account as `gl_balance`.
- **Evidence balances**: bank closing balance from the bank CSV or banking
  integration; `Accounts receivable` from the AR ageing export; `Accounts
  payable` from the AP ageing export; processor balances from the Stripe
  integration's balance/payout report; payroll accruals from the payroll
  provider's period report. Record where each number came from in
  `evidence_source` and `evidence_ref` — that pairing is what an auditor asks
  for, and it is the whole point of the tie-out log.
- Never paste credentials into the CSVs or the script. The agent exports files,
  the script reads files.

## Running it

```bash
python3 scripts/close_status.py \
  --tasks examples/sample_tasks.csv \
  --tieouts examples/sample_tieouts.csv \
  --period-end 2026-08-31 \
  --as-of 2026-09-08 \
  --target-close-days 8 \
  --holidays 2026-09-07
```

- `--period-end` is the accounting period end; business day 1 is the first
  working day after it.
- `--as-of` is the status date. It is required because the script never reads
  the wall clock — the same inputs always produce the same output.
- `--target-close-days` is the close target in business days (default 5).
- `--holidays` takes comma-separated ISO dates that are not working days.
- `--tieout-tolerance` sets a per-account tolerance (default `0.00`).
- `--json` emits the same analysis as JSON for downstream automation.

Exit codes: `0` clean, `1` the close does not tie (a difference over tolerance
or a balance with no evidence), `2` bad input — the message names the file,
line, and column.

`examples/run.sh` runs three scenarios end to end, including the failing ones.

## Reading the output

- **Header** — business day of the close, target vs projected close day, and
  the variance in business days. Projected close is the finish of the last task
  under current dependencies and remaining estimates.
- **Critical path** — the chain that determines the close date. Shortening
  anything off this path does not move the close. The `Next action on the path`
  line is the single most useful sentence in the report.
- **Blocked and at-risk** — tasks flagged `blocked` plus every task whose
  predecessors are still open, with the note explaining why.
- **Sequence** — the full dependency-ordered checklist with projected finish
  dates, suitable for pasting into the stand-up.
- **Tie-out log** — per account: GL balance, evidence balance, difference,
  where the evidence came from, who verified it, and a verdict of `tied`,
  `DIFFERENCE`, or `NO EVIDENCE`.

When you present this to a human: lead with projected vs target close and the
one blocking task, then list the `DIFFERENCE` / `NO EVIDENCE` accounts by name
with their owner. Do not summarise the tie-out log as "reconciled" unless every
row says `tied`.

## Conventions

- Money uses `decimal.Decimal` end to end; rounding happens only at print time,
  to 2 decimal places, `ROUND_HALF_UP`.
- Balances use natural signs: debits positive, credits negative. A liability
  balance is negative. Keep the evidence balance on the same convention as the
  GL balance or every liability will show a difference of twice the balance.
- Durations are in business days and may be fractional (`0.5`).
- Business days are Monday-Friday minus `--holidays`. There is no built-in
  holiday calendar.

## Limits

- It does not post journals, read your GL, or change anything upstream. It
  reports on files you exported.
- It does not know your holiday calendar unless you pass `--holidays`, and it
  has no concept of part-time owners, working hours, or capacity: two tasks
  owned by the same person on the same day are assumed to run in parallel.
  Model contention by adding an explicit dependency between them.
- Projected close uses `remaining_days` as supplied. It does not estimate
  progress from history; garbage estimates give a garbage projection.
- It checks that a GL balance agrees with one evidence balance. It does not
  test whether the evidence itself is right, does not sample transactions, and
  is not a substitute for review.
- Tie-out tolerance is absolute per account, not a materiality framework.
- No multi-entity consolidation logic, no currency translation, and no
  sub-day scheduling.