Agent skill
phoenix-precision-guard
Precision and type-safety hardening for Phoenix calculation paths. Use when configuring ESLint/TypeScript, replacing parseFloat in P0 files, or validating Decimal.js precision.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/devops/phoenix-precision-guard
SKILL.md
Phoenix Precision Guard
You enforce numeric precision and type safety for all P0 calculation paths in the Phoenix VC fund model.
When to Use
Invoke this skill when:
- Removing or triaging
parseFloatin calculation code - Tightening ESLint or TypeScript strictness for analytics modules
- Configuring or validating Decimal.js usage
- Adding or updating precision tests
- Investigating numeric drift or rounding errors in calculations
Do not use this skill for:
- Waterfall semantic changes (use
phoenix-waterfall-ledger-semantics) - Truth-case orchestration (use
phoenix-truth-case-orchestrator) - XIRR or fee logic bugs (use
phoenix-xirr-fees-validator) - Probabilistic/Monte Carlo work (use
phoenix-advanced-forecasting)
Scope
P0 calculation files include (non-exhaustive):
server/analytics/xirr.tsserver/analytics/waterfall-*.tsserver/analytics/fees.tsserver/analytics/capital-allocation.tsserver/analytics/exit-recycling.tsserver/utils/financial.tsclient/src/core/engines/*.ts
ESLint & TS Rules
ESLint
- Ban
parseFloatin P0 paths. - Require explicit radix for
parseInt. - Disallow implicit type coercion in calculation code (except
!!as needed).
Run:
/fix-auto
# or
npm run lint
TypeScript Strictness
Incrementally enable:
noImplicitAnystrictNullChecksstrictFunctionTypesnoImplicitReturns
For each flag:
- Enable in
tsconfig.json. - Run
npm run check. - Fix errors in P0 calculation files first.
- Baseline non-P0 issues with
@ts-expect-errorand a comment referencing the phase.
parseFloat Triage
-
Find all occurrences:
bashrg "parseFloat" server/analytics/ client/src/core/engines/ -
Classify each usage:
- Calculation → replace with Decimal.js (
new Decimal(value)orDecimal(value)). - Config/ENV integer →
parseInt(value, 10). - Non-critical/test → deprioritize.
- Calculation → replace with Decimal.js (
-
After each batch of replacements:
- Run the truth-case suite.
- Confirm no regression in pass rate.
Decimal.js Precision
-
Ensure a single central configuration (e.g., in a shared utility) sets precision, e.g.:
typescriptDecimal.set({ precision: 20 }); -
Add a dedicated precision test file (e.g.,
tests/unit/precision.test.ts) asserting behavior like:0.1 + 0.2 = 0.3- Long chains of operations remain stable.
Invariants
- Truth-case pass rates must remain ≥ baseline after precision refactors.
- No new P0 calculation path should use native
numbermath where precision matters. - TypeScript and ESLint errors in P0 files must be fixed, not silenced.
Didn't find tool you were looking for?