Install any skill in seconds. Free to start, no credit card required.
Get Started Free →ledgerhq/coin-modules
Rules and layout for coin module packages under libs/coin-modules/. Read when adding or modifying a coin module.
Passed 21 of 22 test cases with the skill, and 7 of 22 without it.
and 25 more in the full report
14 fixed7 passed either way1 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 14 test cases the skill fixed. Same model, same prompt, with and without the skill.
Where in the monorepo should a new coin package be located, what npm scope package naming format must it follow, and where do coin modules eventually migrate?
| Checked | Without skill | With skill |
|---|---|---|
| Specifies the monorepo package path libs/coin-modules/coin-<family>. | Missed | Passed |
| Specifies the npm package name format @ledgerhq/coin-<family>. | Missed | Passed |
| States that coin modules migrate to LedgerHQ/coin-modules. | Missed | Passed |
The instructions your model reads when the skill loads.
Each blockchain family lives in its own package under libs/coin-modules/coin-<family>.
Package name: @ledgerhq/coin-<family>
Coin modules are one of the few things that still belong in legacy libs/: they migrate to
LedgerHQ/coin-modules, not to the monorepo layers.
Do not create a new coin-module if it fits the ecosystem of an existing one.
No packages other than coin-modules are allowed in libs/coin-modules/.
| Directory / file | Purpose |
|---|---|
api/ | Coin Module API surface — implements CoinModuleApi from @ledgerhq/coin-module-framework/api/index; restricted imports apply (see below) |
logic/ | Core blockchain logic, agnostic of Bridge or API; only depends on network/ and external libs; restricted imports apply (see below) |
network/ | Communication with explorer / indexer / node; restricted imports apply (see below) |
types/ | Model definitions, not related to network |
bridge/ (legacy) | CurrencyBridge + AccountBridge implementation |
signer/ (legacy) | Hardware wallet signer interface and device address resolver |
Tests: *.unit.test.ts (co-located), *.test.ts (integration, no network), *.integ.test.ts (real network, separate jest.integ.config.js).
Prefer native dependencies from the blockchain foundation and well-established open-source libraries.
Avoid proprietary third-party SDKs or closed-source vendor packages.
In api/, logic/, and network/, the only permitted @ledgerhq/* imports are @ledgerhq/logs, @ledgerhq/live-network, @ledgerhq/coin-module-framework, and @ledgerhq/ledger-wallet-framework (enforced by eslint/no-restricted-imports in libs/coin-modules/.oxlintrc.json). Other directories (bridge/, signer/, types/) have no such restriction.
1. Coin Module API path (preferred) — export createApi(config, currencyId) returning CoinModuleApi (from @ledgerhq/coin-module-framework/api/index). Enable the family in libs/ledger-live-common/src/bridge/generic-coin-framework/genericCoinFrameworkFamilies.json (checked by isGenericCoinFrameworkFamily). For methods that don't apply, throw new Error("<method> is not supported").
2. Classic JS Bridge (legacy, do not use) — export createBridges(signerContext, coinConfig) returning { currencyBridge, accountBridge }. Wired via libs/ledger-live-common/src/families/<family>/setup.ts.
craftTransaction / estimateFees: cover each transaction type (token transfer, native, memo, delegation, …)test cases passed, vs 7 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.