Skip to main content

dinero-best-practices

Core best practices for the Dinero.js money library. Use when writing, reviewing, or refactoring code that creates Dinero objects, performs arithmetic on monetary values, or handles money in JavaScript/TypeScript. Triggers on imports from 'dinero.js', monetary calculations, or price/cost handling logic.

Jump to install

Source facts

Repository
dinerojs/dinero.js
Last source activity
February 28, 2026 at 23:16
Detected SKILL.md language
English
Stars
6,796
Forks
204

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
13 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
dinero-best-practices
description
Core best practices for the Dinero.js money library. Use when writing, reviewing, or refactoring code that creates Dinero objects, performs arithmetic on monetary values, or handles money in JavaScript/TypeScript. Triggers on imports from 'dinero.js', monetary calculations, or price/cost handling logic.
license
MIT
metadata
{"author":"dinerojs","version":"1.0.0"}
# Dinero.js Best Practices Core rules for working with [Dinero.js](https://v2.dinerojs.com), the JavaScript/TypeScript library for creating, calculating, and formatting money safely. Contains rules across 4 categories, prioritized by impact. ## When to Apply Reference these guidelines when: - Creating Dinero objects from user input, API responses, or database values - Performing arithmetic on monetary values (adding, splitting, multiplying) - Choosing between `number` and `bigint` calculators - Importing from `dinero.js`, `dinero.js/currencies`, or `dinero.js/bigint` - Working with prices, costs, taxes, or any financial calculation ## Rule Categories by Priority | Priority | Category | Impact | Prefix | | -------- | --------------- | -------- | ------------- | | 1 | Object Creation | CRITICAL | `creation-` | | 2 | Arithmetic | CRITICAL | `arithmetic-` | | 3 | Precision | HIGH | `precision-` | | 4 | Imports | MEDIUM | `imports-` | ## Quick Reference ### 1. Object Creation (CRITICAL) - `creation-minor-units` - Always pass amounts as integers in minor currency units - `creation-from-floats` - Use a helper to convert float inputs to minor units - `creation-zero-exponent` - Currencies with exponent 0 (e.g., JPY) take major units directly ### 2. Arithmetic (CRITICAL) - `arithmetic-immutability` - All operations return new objects; capture the return value - `arithmetic-allocate-not-divide` - Use `allocate` for splitting money, not manual division - `arithmetic-scaled-amounts` - Never multiply by a raw decimal; use scaled amounts - `arithmetic-percentages` - Calculate percentages with `allocate` or scaled `multiply` ### 3. Precision (HIGH) - `precision-bigint` - Use `dinero.js/bigint` for amounts exceeding `Number.MAX_SAFE_INTEGER` - `precision-crypto` - Cryptocurrencies require bigint due to high exponents - `precision-trim-scale` - Use `trimScale` to remove trailing zeros after chained operations ### 4. Imports (MEDIUM) - `imports-tree-shaking` - Import only what you use; standalone functions enable tree-shaking - `imports-bigint-currencies` - Match calculator type: use `dinero.js/bigint/currencies` with `dinero.js/bigint` ## How to Use Read individual rule files for detailed explanations and code examples: ``` rules/creation-minor-units.md rules/arithmetic-allocate-not-divide.md ``` Each rule file contains: - Brief explanation of why it matters - Incorrect code example with explanation - Correct code example with explanation - Additional context and references
View on GitHub