Help us improve
Share bugs, ideas, or general feedback.
From fpa-essentials
Lints an integrated three-statement financial model (income statement, balance sheet, cash flow) the way a linter checks code - verifying the balance sheet balances every period, the cash flow ties to balance-sheet movements and to closing cash, detecting broken links, hardcodes inside formula cells, sign-convention errors, circularity, and implausible growth rates, then producing a graded findings report. Use for FP&A model review, due-diligence quality checks, audit of forecast/budget models, board-pack validation, or QA before sharing an Excel three-statement model.
npx claudepluginhub kimonarrow/ledgerskills --plugin fpa-essentialsHow this skill is triggered — by the user, by Claude, or both
Slash command
/fpa-essentials:three-statement-linterThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill reviews an integrated three-statement financial model the way a static analyzer reviews source code. It checks the structural integrity that makes a model trustworthy: the balance sheet must balance in every period, the cash flow statement must reconcile to the period-over-period movements in the balance sheet and tie to the closing cash line, formulas must not hide hardcoded numbers...
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
Share bugs, ideas, or general feedback.
This skill reviews an integrated three-statement financial model the way a static analyzer reviews source code. It checks the structural integrity that makes a model trustworthy: the balance sheet must balance in every period, the cash flow statement must reconcile to the period-over-period movements in the balance sheet and tie to the closing cash line, formulas must not hide hardcoded numbers, signs must be consistent, there must be no unintended circular references, and growth rates must be defensible. It is built for FP&A analysts, controllers, deal teams, and reviewers who need fast, repeatable QA before a model is relied upon. It works only on the files the user supplies in this session.
Provide one of the following:
Statement, Line Item, <period columns...>, where Statement is one of IS, BS, CF. See the bundled sample samples/three_statement_model.csv.Useful context to ask for if not provided: the sign convention in use (are costs, liabilities, and equity entered as negatives or positives?), the first forecast period (to separate actuals from projections), and the units/currency.
Run the checks in this order. Earlier failures often cause later ones, so report root causes first.
Net Income = sum(IS rows) and Assets + (negative) Liabilities + (negative) Equity = 0 at balance.For every period: Total Assets = Total Liabilities + Total Equity. Equivalently, under the all-signed convention used in the sample, sum(all BS rows) = 0.
delta = Assets - (Liabilities + Equity) per period.abs(delta) > tolerance. Use a tolerance of the larger of 1 currency unit or 0.01% of total assets to absorb rounding; anything above that is a real break.Retained Earnings(t) = Retained Earnings(t-1) + Net Income(t) - Dividends(t).The cash flow statement is, mechanically, the explanation of the change in every non-cash balance-sheet account. For each working-capital and long-term line, confirm the CF line equals the period-over-period BS movement with the correct sign:
CF Change in AR = -(AR(t) - AR(t-1)) (a rise in a current asset uses cash).CF Change in Inventory = -(Inventory(t) - Inventory(t-1)).CF Change in AP = +(AP(t) - AP(t-1)) (a rise in a liability releases cash).CF Capex = -(PP&E gross addition); reconcile PP&E(t) = PP&E(t-1) + Capex - Depreciation (net basis).CF Change in Debt = Debt(t) - Debt(t-1).Depreciation is added back in operating cash flow and also reduces PP&E on the BS - it must appear in exactly two places with opposite effect.Closing Cash = Opening Cash + CFO + CFI + CFF.Cash line on the balance sheet for the same period. A mismatch here, when section 4 passed, points to a missing CF line (e.g., dividends, equity issuance, or tax paid) rather than a wiring error.On the formula view:
#REF!, #VALUE!, #DIV/0!, #NAME?, #N/A, or external-link paths ([Book.xlsx]) - these are broken references.=B5*1.08 or =B5+250) where the constant is an unlabeled assumption. Growth and tax rates belong in clearly labeled input cells, not buried in formulas. Pure structural constants (a 12 to annualize, a sign flip *-1) are acceptable but should be noted.Produce a Markdown findings report (a "lint report") with these sections:
ID | Severity | Check | Location (statement / line / period) | Observed | Expected | Recommended fix. Severity is Error, Warning, or Info.Optionally also emit a findings.csv with the same columns as the findings table for tracking.
t minus t-1, so the first CF period has no prior balance.Using the bundled synthetic sample samples/three_statement_model.csv (fictional data; costs, liabilities, equity entered negative):
Disclaimer: This skill is a drafting and analysis aid, not professional advice. It does not provide accounting, audit, tax, investment, or legal advice. All output must be reviewed and approved by a qualified professional before use or reliance.
Part of LedgerSkills - security-vetted Claude Code skills for finance teams. New skills scanned and tested weekly; subscribe on the site.