Skip to content
Back to skills

Financial Integrity

ASecurity

Patterns for provable financial accuracy and invariant testing

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 8, 2026
developmenttypescriptrustgoawstestingdatabase

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill financial-integrity --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Financial Integrity?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Financial Integrity
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-financial-integrity/badge)](https://www.skillsdirectory.com/skills/majiayu000-financial-integrity)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Financial Integrity
description: Patterns for provable financial accuracy and invariant testing
---

# Financial Integrity

In the "Action Era", LivestockAI agents may autonomously propose sales or analyze profit. **Trust is our currency.** Calculations must be mathematically provable.

## Core Principle: The "Penny Perfect" Rule

All financial storage and calculation must treat money as an integer (minor units) or high-precision decimal.
**NEVER use standard generic `number` floating point math for money.**

## 1. Storage Standards

**Database:**
`DECIMAL(19, 4)` for unit prices (allows for precise small-unit costs like feed per gram).
`DECIMAL(19, 2)` for final transaction amounts (invoices, payments).

**TypeScript:**
Always use `decimal.js` via the project's currency utilities.

```typescript
// ❌ Dangerous
const total = 0.1 + 0.2 // 0.30000000000000004

// ✅ Safe
import { add } from '~/features/settings/currency'
const total = add(0.1, 0.2) // Decimal(0.3)
```

## 2. Invariant Testing (Property Tests)

Use `fast-check` to prove financial laws hold true for **all** inputs.

### Profit Law

`Profit = Revenue - (COGS + Expenses)`

```typescript
test('Profit Invariant', () => {
  fc.assert(
    fc.property(fc.integer(), fc.integer(), (revenue, cost) => {
      const profit = calculateProfit(revenue, cost)
      // Profit + Cost must always exactly equal Revenue
      return profit.add(cost).equals(revenue)
    }),
  )
})
```

### Allocation Law

When splitting a cost across N batches, the sum of parts must equal the total.
_Watch out for rounding leftovers._

**Pattern: The "Penny Allocate" Algorithm**
If splitting $100 among 3 batches:
Batch 1: $33.33
Batch 2: $33.33
Batch 3: $33.34 (Takes the remainder)

## 3. Immutability

Financial records (`invoices`, `sales`, `expenses`) should be "Append-Only" to the user.
If a mistake is made:

1. Create a **Reversal Transaction** (negative amount) to void the error.
2. Create a new **Correct Transaction**.
   _This preserves the audit trail._

## 4. Multi-Currency Safety

Always store `exchangeRate` and `currencyCode` at the **time of transaction**.
Never calculate historical value using _current_ exchange rates.

## Related Skills

- `financial-calculations` - The specific library calls implementation
- `property-testing` - The value verification method

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.