Help us improve
Share bugs, ideas, or general feedback.
From audit-essentials
Runs ISA 240 journal-entry fraud and anomaly screens over a general-ledger extract (weekend/holiday/post-period postings, round-number amounts, entries just below approval thresholds, rare user-account pairings, unusual account combinations, manual top-side entries) and produces population statistics plus a flagged-items workpaper for audit follow-up; use for financial statement audit journal entry testing, JET, GL data analytics, fraud risk and management override of controls procedures, and Excel/CSV ledger reviews.
npx claudepluginhub kimonarrow/ledgerskills --plugin audit-essentialsHow this skill is triggered — by the user, by Claude, or both
Slash command
/audit-essentials:journal-entry-testerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill helps an auditor or reviewer run a structured set of journal-entry tests over a general-ledger (GL) extract, following the mindset of ISA 240 *The Auditor's Responsibilities Relating to Fraud in an Audit of Financial Statements*. ISA 240.32(a) requires the auditor to test journal entries and other adjustments because of the risk of management override of controls. This skill profiles...
Provides a checklist for code reviews covering functionality, security, performance, maintainability, tests, and quality. Use for pull requests, audits, team standards, and developer training.
Share bugs, ideas, or general feedback.
This skill helps an auditor or reviewer run a structured set of journal-entry tests over a general-ledger (GL) extract, following the mindset of ISA 240 The Auditor's Responsibilities Relating to Fraud in an Audit of Financial Statements. ISA 240.32(a) requires the auditor to test journal entries and other adjustments because of the risk of management override of controls. This skill profiles the journal population, applies repeatable anomaly screens, and produces a flagged-items workpaper that an engagement team can follow up, document, and sign off. It is for external auditors, internal audit, and finance teams running self-review or month-end controls.
Provide the GL extract as a CSV (or describe an Excel sheet). The bundled sample samples/general_ledger_extract.csv shows the expected shape. Useful fields, with typical headers:
journal_id / document_no - unique entry identifier (header level).line_no - line within the journal.posting_date - date the line hit the ledger.entry_date / created_date - date/time the entry was keyed (often differs from posting date).period - accounting period the entry posts to (e.g. 2025-12).account and account_name - GL account code and description.debit, credit (or a single signed amount).source / journal_type - e.g. AP, AR, payroll, bank, MANUAL, top-side.created_by / user_id - who entered it.approved_by - approver, if captured.description / narrative - free text.Also ask the user for the parameters that drive the screens (do not guess):
If posting date and entry date are the same field, note that the after-hours and post-period-vs-keyed tests are weakened, and say so in the workpaper.
Work in two phases: profile the population, then run targeted screens. Keep every record's journal_id and line_no so flags trace back to source.
journal_id). Flag one-sided entries, blank accounts, blank dates, zero-amount lines, and duplicate journal_id+line_no keys.source; count and value by created_by; count and value by period/month; count and value by account. This is the denominator for every screen and belongs in the planning memo.Run each screen as a separate, named test so results are auditable. For each, record the rule, the parameter used, the count and value flagged, and the percentage of population.
posting_date (and/or entry_date) falls on a Saturday, Sunday, or a date in the supplied holiday calendar. Legitimate automated postings may run on weekends; isolate manual weekend entries for higher scrutiny.entry_date carries a timestamp, flag entries keyed outside normal working hours (e.g. before 06:00 or after 20:00 local). State the window used.posting_date falls in the period but entry_date is after period-end (entries booked late and dated back), and any entry whose posting date is after period-end but posts to the period under audit. These bridge the cut-off and are high risk.000 or 0000, or exact thousands/millions). Round numbers can indicate estimates or fabricated figures. Report the rounding rule used.[0.90 * T, T) - amounts sized just under an approval limit, a classic override pattern. Report the band per threshold.created_by, account). Flag pairs that occur at or below a rarity cut-off (e.g. a user touching an account once or twice in the whole period when their normal accounts differ), especially for sensitive accounts (revenue, reserves, suspense, intercompany, cash, related party).source/journal_type is manual or top-side (i.e. not from a sub-ledger feed), particularly those posted near period-end, to the consolidation level, or by senior/finance users. ISA 240 treats non-standard, manual adjustments as inherently higher risk.Produce two artifacts.
1. Population summary (Markdown or CSV). Sections: scope and period; data source and row count; debit/credit reconciliation to TB; tables for count and value by source, by user, by month, and top accounts; list of screens run with parameters.
2. Flagged-items workpaper (CSV, one row per flagged journal line). Suggested columns:
journal_id, line_no, posting_date, entry_date, period, account, account_name, debit, credit, source, created_by, approved_by, description, flags_triggered, risk_score, reviewer_comment, conclusion
Leave reviewer_comment and conclusion blank for the human to complete. flags_triggered lists the screen names that fired (e.g. WEEKEND;ROUND_NUMBER;MANUAL). Sort by risk_score descending. Optionally add a short cover memo stating the objective (ISA 240.32 journal entry testing), population tested, screens applied, total items flagged, and that all flags require inspection of underlying evidence before any conclusion.
journal_id and line_no back to the source extract.Using samples/general_ledger_extract.csv (fictional, year end 31 Dec 2025, approval threshold 10,000):
created_by jsmith, posted Sat 27 Dec 2025 with narrative "to balance". This trips JUST_BELOW_THRESHOLD (within [9,000, 10,000)), MANUAL, WEEKEND, and KEYWORD ("to balance") - risk score 4, top of the list.entry_date after period-end), debiting revenue against suspense: trips ROUND_NUMBER, POST_PERIOD, and UNUSUAL_PAIRING.treasury posting to account 7400 (a payroll account treasury never otherwise touches), trips RARE_USER_ACCOUNT.The workpaper lists these with their flags_triggered and risk scores so the team requests support (approval, invoice, board minute) for the highest-scoring items first.
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.