What problem does it solve?
Generic screens, hooks, and ViewModels in Ledger Wallet Desktop and Mobile often accumulate coin-specific branches like if (currency.family === "evm"), which breaks modularity and blocks lazy loading. This Skill guides developers to keep all coin-specific UI and behavior inside families/<family>/ folders and expose it only through a typed contract.
Core Features & Use Cases
- Anti-pattern detection: Identifies forbidden family-name branching in generic code under
renderer/, mvvm/, and screens/ directories.
- Contract extension pattern: Shows how to add optional slots to
LLDCoinFamily in types.ts (Desktop) or generated family maps (Mobile), implement them per family, and consume them via lookups like getLLDCoinFamily(currency.family).SlotName.
- Use Case: When adding a custom "no associated accounts" screen for Hedera, implement
NoAssociatedAccounts.tsx in families/hedera/, register it in the family contract, and let generic scan-device code read the slot without any Hedera-specific branch.
Quick Start
Review my changes in the scan accounts flow and refactor any coin-specific branching to use the families contract pattern.