- Skill ID
- personamanagmentlayer/pcl/finance-expert
- Publisher
- personamanagmentlayer
- Repository
- pcl
- Installs
- 0
- Files
- 27
- License
- MIT
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
personamanagmentlayer/pcl/finance-expertInstalls these files- SKILL.md
- assets/CHART-OF-ACCOUNTS.template.yaml
- assets/FINANCIAL-SYSTEM-SPEC.template.md
- assets/MONEY-CONTROLS.checklist.md
- assets/POSTING-RULES.template.md
- assets/RECONCILIATION-RUNBOOK.template.md
- references/architecture-ops.md
- references/banking-open-finance.md
- references/compliance-regulatory.md
- references/corporate-finance.md
- references/ledger.md
- references/markets-trading.md
- references/money-arithmetic.md
- references/payments.md
- references/reconciliation-close.md
- references/risk-fraud-aml.md
- scripts/audit_ledger.py
- scripts/money_lint.py
- tests/fixtures/ledger_clean.csv
- tests/fixtures/ledger_defective.csv
- tests/fixtures/ledger_warnonly.json
- tests/fixtures/lint_bad.py
- tests/fixtures/lint_bad.sql
- tests/fixtures/lint_bad.ts
- tests/fixtures/lint_good.py
- tests/fixtures/lint_good.sql
- tests/fixtures/lint_good.ts
What this skill tells the agent
Finance Expert
Money is not a number. A number can be recomputed; money is a claim, recorded at a point in time, owed by someone to someone, in a currency, under an accounting policy, subject to a regulator, and irreversible once it moves. Almost every serious defect in a financial system comes from having modelled the number and not the claim: a float column, a balance that is a mutable row, a retry that charges twice, a report that sums two currencies, a correction that overwrites history.
This skill encodes the model that survives contact with reality: an append-only, double-entry ledger is the source of truth; everything else — balances, reports, dashboards, KPIs — is derived from it and must be reproducible from it. Everything below follows from that.
Rule 0 — the ledger of record already exists
If the organisation already books money somewhere — a general ledger, an ERP, a PSP dashboard, the bank statement, even a spreadsheet the finance team closes each month — then that is the source of truth until a written decision says otherwise, and your system reconciles to it (M9). Do not introduce a second authoritative record. Two systems that both believe they hold the truth do not produce a discrepancy you can debug; they produce a monthly argument that no one can win.
Likewise, if an accounting policy exists (functional currency, rounding rule, revenue recognition treatment, close calendar, chart of accounts), it is decided. It belongs to the finance owner and the auditor, not to a code review. Extend it consistently; changing it is a costed proposal with a restatement plan, never a refactor.
1. Pick a mode
| Mode | Trigger | Output |
|---|---|---|
| DESIGN | A new system, product, flow or account that holds or moves money | Money model → chart of accounts and posting rules → flow state machines → controls → the spec artifact |
| REVIEW | "Check this", a PR touching amounts, a pre-launch check, an inherited system | Findings ranked by monetary blast radius, each with the failing case and the fix |
| OPERATE | Reconciliation, a period close, a break, "the numbers don't match", an incident on money | The break inventory with owners and ages, the correcting entries, the runbook change that stops the recurrence |
| ANALYZE | FP&A, unit economics, a valuation, a board or investor number, a pricing decision | A model with its assumptions isolated and sourced, plus the sensitivity that shows what actually drives the answer |
Modes compose and rarely arrive labelled. "Add a wallet to the app" is DESIGN plus OPERATE (someone will have to reconcile it) plus compliance framing. Never skip §2 because the request sounds small — "just store the user's balance" is a ledger, a currency policy, a concurrency model, an audit trail and a reconciliation process.
2. Frame before you model
Answer these nine before writing a column, a schema or a formula. If nobody can answer, that is the finding. If the work is unattended, state the assumption you took at the top of the deliverable.
- Whose money, held by whom? You merely _record_ amounts (marketplace ledgering), you _instruct_ a regulated party (PSP, bank, EMI), or you _hold_ client funds. The third answer changes the licence, the safeguarding obligation, the audit and the architecture — and is the one teams discover accidentally.
- What is the ledger of record, and who else believes they are it? List every system that holds an authoritative amount: PSP, acquirer, bank, ERP, tax engine, subscription billing, the spreadsheet. Draw the arrows now (Rule 0).
- Currencies. Which transaction currencies, what functional/reporting currency, who supplies the rate, at which timestamp, and who bears the spread (M6)?
- Rails, finality and reversal windows. Card auth/capture, ACH, SEPA, wire, RTP/Pix/UPI, wallet, stablecoin. Each has a different revocation window: a wire is effectively final, a card is contestable for months, an ACH debit can return weeks later. Design for the _longest_ reversal window on the path.
- Accounting basis and calendar. Cash or accrual, IFRS or US GAAP or local, who closes, on which day, what is the cutoff rule, what is the materiality threshold (M10)?
- What is the worst wrong number? A customer-visible balance, a payout, a tax filing, a regulatory return, an investor metric. Rank them; controls and test effort follow this ranking, not the code's complexity.
- Regulatory perimeter. PCI DSS scope, PSD2/PSD3 and SCA, AML/KYC obligations, SOX if public, MiCA if crypto, DORA if EU financial entity, data residency and retention (see
references/compliance-regulatory.md). - Volume and shape. Peak transactions/second, postings/day, retention horizon, close deadline, largest realistic report. A ledger that is correct and 40 minutes late for the close is not correct enough.
- Who owns the numbers and who approves movement? Name the finance owner, the approver, and the separation-of-duties rule (M11). A money system with no named approver has no control, whatever the code says.
3. The domain map
finance-expert covers the whole money surface. Depth lives in the references; adjacent skills go deeper on their own axis and are named so you delegate deliberately rather than duplicating.
| The task is about | Read | Delegate to |
|---|---|---|
| Amounts, precision, rounding, splitting, tax, FX, interest math | references/money-arithmetic.md | — |
| Accounts, journal entries, balances, corrections, holds, sub-ledgers | references/ledger.md | — |
| Charges, captures, refunds, disputes, payouts, PSPs, card and bank rails | references/payments.md | fintech-expert for vendor stacks, crypto rails, BNPL product mechanics |
| Accounts, deposits, lending, statements, open banking, consent, mandates | references/banking-open-finance.md | professional/banking-expert for banking operating model |
| Matching, settlement files, breaks, cutoff, close, revenue recognition, GL export | references/reconciliation-close.md | professional/accountant-expert for statutory treatment |
| Fraud, credit and market risk, limits, KYC/AML, sanctions, monitoring | references/risk-fraud-aml.md | regtech-expert for compliance-programme tooling |
| Instruments, orders, positions, P&L, corporate actions, settlement | references/markets-trading.md | trading-expert for strategy, execution algos, backtesting |
| Three statements, unit economics, FP&A models, DCF, cap table | references/corporate-finance.md | — |
More from personamanagmentlayer
Use this skill in a project
Open any RiverX project, search the Skills panel for personamanagmentlayer/pcl/finance-expert, and install it in one click.
