ledgerhq
- 90 skills
- 0 followers
- 4 hours ago last updated
- ▌ Add Icon 2 · ledgerhqAdd new crypto icon(s) to the project: compress PNGs, update _record.json, regenerate index, and open a PR. Use when the user says /add-icon, asks to add a crypto icon, or wants to register a new token icon.
- ▌ Ddd Structure Flow 2 · ledgerhqPlace and organize Ledger Wallet code in the DDD monorepo. Use when creating, moving, or reviewing code under apps, features, domain, shared, or support; deciding which layer owns a concern; structuring packages and flow steps; or checking package names, dependency boundaries, platform variants, and legacy imports.
- ▌ Package Public API 2 · ledgerhqA new-architecture package (shared/, domain/, features/) exposes its API through barrels that contain nothing but `export *`, and keeps its private code in an internals location. Read this when creating a package under shared/, domain/ or features/, when editing any `index.*` file, or when a `lint:structure` check fails.
- ▌ Ddd Types State Mocks 2 · ledgerhqStructure a simple Ledger Wallet data layer where one API response maps to one entity slice. Use when creating or reviewing domain/entity schemas, inferred types, initial state, mocks, selectors, slices, domain/api clients, and their tests.
- ▌ Ddd Data Layer Advanced 2 · ledgerhqStructure a Ledger Wallet data layer where one API response serves several entities. Use when creating or reviewing cross-entity domain/api orchestration with RTK Query, createAsyncThunk, or both, including response validation and tests spanning multiple domain/entity packages.
- ▌ Add Icon · ledgerhqAdd new crypto icon(s) to the project: compress PNGs, update _record.json, regenerate index, and open a PR. Use when the user says /add-icon, asks to add a crypto icon, or wants to register a new token icon.
- ▌ Dmk Business Logic · ledgerhqExplain the design rationale and domain concepts behind the Ledger Device Management Kit (DMK) API, including Clear Signing, Secure Channel, Ledger OS (BOLOS), Device Actions vs Commands, sessions, transports, derivation paths, and Genuine Check. Use when a developer asks 'what is X?' about a DMK concept, 'why does X work this way?' about an API design decision, or 'what's the difference between X and Y?' for DMK components.
- ▌ Dmk Intent Vocabulary · ledgerhqMap developer intent and natural language to the correct Ledger Device Management Kit (DMK) components, operations, and API methods. Use when a developer's request is phrased informally, incompletely, or in terms of outcomes rather than API methods, when the intent is ambiguous and needs mapping to a specific DMK component or operation, or when a developer asks 'how do I...', 'what's the difference between...', or describes a symptom rather than an API.
- ▌ Wallet CLI Usage · ledgerhq bundleOfficial Ledger wallet-cli - USB-based CLI for Ledger hardware wallet flows (account discover, receive, balances, operations, send, swap quote/execute/status, genuine-check, assets token / token-by-id) and the Ledger Key Ring (ring init/encrypt/decrypt/keys/destroy — LKRP-backed encryption of files and text). Use for any wallet-cli command execution and for mapping informal requests to the right command.
- ▌ Ledger Dmk Implementation · ledgerhq bundleExecute Ledger Device Management Kit (DMK) signing operations safely: initialize the SDK, establish a device session, verify device state, open the correct chain app, perform signing or device management operations, and return the result. Use when a developer needs to implement a signing operation (transaction, message, typed data), derive or retrieve an address from a Ledger device, send any command to a Ledger device, or perform device management operations such as genuine check, app install, or app uninstall.
- ▌ Commit · ledgerhqCommit message convention for this repo (gitmoji + scope + capitalized message) enforced by the danger CI bot. Use whenever creating commits, when the user invokes /commit, or when fixing commit messages that failed CI.
- ▌ Release · ledgerhqRelease one or more packages from this monorepo using the scripts in agent-files/scripts/release/. Activate when the user says "release", "/release", or asks to release specific packages (e.g. "/release dmk signer-eth").
- ▌ Backmerge · ledgerhqBackmerge the release branch into develop after the release PR has been merged to main. Activate when the user says "backmerge", "/backmerge", or asks to backmerge after a release PR merges.
- ▌ Changeset · ledgerhqHow to create a changeset in this monorepo. Use when adding a new changeset, when the user invokes /changeset, or when committing changes that need a version bump.
- ▌ Mock Server · ledgerhqTalk to the DMK device mock server (apps/device-mock-server, default http://127.0.0.1:9752) with curl. Make fake devices, connect them, add APDU mocks, send APDUs, break commands on purpose. ALWAYS read this skill when the user says "mock server", makes/changes a mock device, adds mocks, forces an APDU error, or pokes a device Ledger Live/DMK is on.
- ▌ Release Mock Server · ledgerhqBump the mock server version in package.json, commit, push, and trigger the Docker image publish workflow to JFrog. Activate when the user says "release mock server", "/release-mock-server", or asks to release/publish the device mock server Docker image.
- ▌ Playwright Gwt To Sample Test · ledgerhq bundleConverts a human-written GIVEN / WHEN / THEN specification into a Playwright end-to-end test for the DMK sample app (apps/sample/playwright/). Use whenever the user pastes or writes a GWT scenario, asks to "turn this spec into a Playwright test", "add a sample e2e test for…", or describes sample-app behavior in Given/When/Then form. Also trigger when writing mock-server APDU tests, Speculos interaction tests, or device-command / signer flows in the sample app — even if the user does not mention Playwright explicitly.
- ▌ Github Pr · ledgerhqCreate a well-formed draft PR for ts-libs. Covers changeset, commit check, PR body, and gh CLI invocation.
- ▌
- ▌ Commit Message · ledgerhqFormat a conventional commit message for ts-libs. Use when writing or reviewing a commit message.
- ▌
- ▌ Test Lib With Wallet · ledgerhqProve a ts-libs library is compatible with the ledger-live wallet monorepo BEFORE publishing, by packing local tarballs and forcing them into ledger-live via pnpm.overrides. Use after /import-lib-from-live, before releasing, or to validate an open PR against its biggest consumer.
- ▌ Nx · ledgerhqNx workspace commands and guidelines for running tasks, generators, and using Nx MCP tools
- ▌ Open Pr · ledgerhqOpen a PR from the current branch to `main`: commit if needed, ensure an Nx version plan exists, push, and create the PR with a filled-in description and testing steps. Run only when the user explicitly asks to open/create a PR.
- ▌ Context7 · ledgerhqUse when researching external libraries/frameworks (React, Radix, Tailwind, etc.) — reach for the Context7 MCP to get up-to-date docs. Not for internal codebase or design-system-token questions.
- ▌ Pr Review · ledgerhqReview a PR or the current branch for a Lumen design-system change — routes each changed file to React (web/Tailwind) or React Native (useStyleSheet) guidelines, checks the Nx version plan, and reports a flat, severity-scored finding list. Use when the user asks to review a PR, review code changes, check a branch, do a local code review, or provides a GitHub PR URL.
- ▌ Code Connect · ledgerhqCreates and maintains Figma Code Connect files (`*.figma.tsx`) that map Figma components to code via the parser-based `figma.connect()` API. Use when the user mentions Code Connect, Figma component mapping, design-to-code translation, or asks to create/update .figma.tsx files.
- ▌ Release Plan · ledgerhqUse when generating or editing an Nx version plan in .nx/version-plans/ — the bump type must always be `patch`, one package per file.
- ▌ Component Mdx · ledgerhq bundleUse when writing or editing Storybook MDX docs (*.mdx) — the two-tab Overview/Implementation structure, story-backed `<Source>` examples, and doc table guidelines.
- ▌ Figma To Code · ledgerhqUse when implementing or updating a component from a Figma link — how to turn the Figma design variables into code tokens, on both platforms: Tailwind classnames for libs/ui-react and themeJS (`t.*`) paths for libs/ui-rnative. For the full token catalogues and styling mechanics, see component-styling.
- ▌ Disabled Context · ledgerhqUse when a component has a `disabled` state/variant, or when building a compound component that owns a disabled state — inherit/provide it via the shared disabled context so state flows from parent to sub-components.
- ▌ Figma Token Sync · ledgerhq bundleSync processed CSS design tokens with JavaScript theme objects for React Native. Use when aligning tokens after Figma sync, checking token consistency, or updating JS theme files manually.
- ▌ Component Anatomy · ledgerhqUse when creating, naming, or placing a file or folder in libs/*, or when modifying or adding a file to an existing component (even when the barrel isn't touched) — component vs utility naming, the one-responsibility-per-file layout, when a folder needs an `index.ts` barrel (public API only), and the required set of files a component needs per lib. Load this before scaffolding or restructuring a component so the layout matches the codebase.
- ▌ Component Stories · ledgerhqUse when creating or editing Storybook stories (*.stories.tsx, React or React Native) — story layout, docs source type, controls, and export naming conventions.
- ▌ Component Styling · ledgerhq bundleUse when building or styling a component in libs/ui-react or libs/ui-rnative (and their visualization libs) — the cross-platform styling principles, plus routing to the platform mechanics: Tailwind + cva + cn on web, useStyleSheet + themeJS + lx on React Native. Load this before writing component styles.
- ▌ Component Testing · ledgerhqUse when writing or editing component tests in libs/ui-react or libs/ui-rnative (and their visualization libs) — shared structure and coverage conventions, plus the per-platform runner: Vitest + React Testing Library on web, Jest + React Native Testing Library on RN. Load this before writing tests.
- ▌ Release Notes Slack · ledgerhq bundleTurn raw Lumen release content (a dump of the LedgerHQ/lumen GitHub Releases page) into one minimalist Slack announcement, drafted to #lumen-releases. Use whenever the user pastes one or more `@ledgerhq/lumen-*` package releases, a chunk of the Releases page, or asks to "announce", "format", "post", or "write release notes / a Slack message" for new Lumen versions. Trigger it even when the user just drops the raw release text with no instructions, or says things like "new Lumen release", "format these lumen versions for Slack", or "lumen changelog for the channel".
- ▌ Component Architecture · ledgerhqUse when designing or changing a component's public API, its composition, or its state model in libs/ui-react or libs/ui-rnative — layering (core vs internal vs primitives), BaseProps/Props splits, converting a component to compound / changing its composition with createSafeContext, controlled/uncontrolled state, prop-naming conventions, and cross-platform API parity. Load this before shaping a new component, changing its props, or refactoring its composition.
- ▌ Mvvm Architecture · ledgerhqPlan, review, and develop desktop and mobile app features following our MVVM architectural pattern. Applies to all new .ts and .tsx files within /apps/ledger-live-desktop or /apps/ledger-live-mobile
- ▌ Ddd Structure Flow · ledgerhqPlace and organize Ledger Wallet code in the DDD monorepo. Use when creating, moving, or reviewing code under apps, features, domain, shared, or support; deciding which layer owns a concern; structuring packages and flow steps; or checking package names, dependency boundaries, platform variants, and legacy imports.
- ▌
- ▌ Package Public API · ledgerhqA new-architecture package (shared/, domain/, features/) exposes its API through barrels that contain nothing but `export *`, and keeps its private code in an internals location. Read this when creating a package under shared/, domain/ or features/, when editing any `index.*` file, or when a `lint:structure` check fails.
- ▌ E2e Desktop Onboard · ledgerhqInteractive setup wizard for running desktop E2E (Playwright + Speculos) tests locally
- ▌ Remove Feature Flag · ledgerhq bundleRemove a Ledger Wallet feature flag while preserving its resolved production behavior, then validate, create a draft PR, and watch CI to green. Invoke only through /remove-feature-flag; this command may stash local work, push a new branch, create or update Jira work, and publish a PR.
- ▌ Ddd Types State Mocks · ledgerhqStructure a simple Ledger Wallet data layer where one API response maps to one entity slice. Use when creating or reviewing domain/entity schemas, inferred types, initial state, mocks, selectors, slices, domain/api clients, and their tests.
- ▌ Debug Rn Native Crash · ledgerhq bundleInvestigate native React Native crashes (Fabric/Hermes/iOS) in ledger-live-mobile when JS error logs are missing or unhelpful. Use when the app dies silently, throws an NSException on iOS, or shows only a native stack trace.
- ▌ Docs Update Or Create · ledgerhqGuidelines that must be followed when creating or updating docs in this repo. Applies to AGENTS.md, README.md, **/docs/**/*.md, skill and sub-agent files.
- ▌ Coin Families Contract · ledgerhqCoin-specific families logic must live in families/. Generic UI uses the families contract only (no if (family === "evm") in shared code). Use this guidance for work in "**/families/**", "**/mvvm/**", "**/renderer/**" and "**/screens/**".
- ▌ Device Intent Executor · ledgerhqDevice Intent Executor (DIE) and Device Intents reference. Read when working with features/platform/device-intent/, DeviceIntentExecutor / DeviceIntentExecutorLWM, Intent definitions (IntentDefinition, IntentPlatformDefinition, Job, createIntent), deviceInitializationInput / buildDeviceInitializationInput, DmkCompatTransport, or migrating a Ledger Wallet device flow off connectApp / DeviceAction / withDevice.
- ▌ Ddd Data Layer Advanced · ledgerhqStructure a Ledger Wallet data layer where one API response serves several entities. Use when creating or reviewing cross-entity domain/api orchestration with RTK Query, createAsyncThunk, or both, including response validation and tests spanning multiple domain/entity packages.
- ▌ Devtools Import Boundary · ledgerhqEnforce import boundaries inside the devtools scope. Use for any work in "devtools/**".
- ▌ Rebuild To Fix Lib Import Errors · ledgerhqWhen typecheck finds an error importing from a lib in the monorepo, rebuild the lib
- ▌ Card Endpoint Shape · ledgerhqRead this before adding or editing an endpoint in `domain/api/card-management/src/api.ts`, a credential-bearing one included.
- ▌ Errors · ledgerhqHow to define and check error classes in Ledger Live. Read when adding a new error, creating an errors.ts file, or checking an error's type.
- ▌
- ▌
- ▌ Testing · ledgerhqWrite unit and integration tests for Ledger Wallet apps. Use for Jest tests (Desktop/Mobile), MSW handlers and testing best practices. Applies to "*.test.*", "*.spec.*", "**/tests/**", "**/__tests__/**", "**/__integrations__/**", "**/jest-setup*"
- ▌
- ▌ E2e Earn · ledgerhqCheck, update, and RUN Earn E2E tests for Ledger Wallet Desktop (Playwright) and Mobile (Detox). Covers the Earn v2 dashboard, the native + redirect staking flows, and the delegate specs (owned by the Earn team). Use to run earn.v2 / delegate locally, adapt earn page objects/flows, and triage failures.
- ▌ E2e Swap · ledgerhqWrite or update Swap E2E tests for Ledger Live Desktop (Playwright) and Mobile (Detox). Use for swap spec updates, provider flows, multi-step approvals, page-object refactors, swap-history checks, KYC/validation banners, and review-driven cleanup.
- ▌ Create Pr · ledgerhqCreate a pull request with a valid title, description, changeset, and all required elements
- ▌ Run Tests · ledgerhqRun unit tests scoped to files changed in the current branch. Use when the user asks to run tests, validate changes, or before a PR.
- ▌ Client Ids · ledgerhqPrivacy-protected ID management with @domain/entity-client-identity — DeviceId, UserId, DatadogId, export-rules.json
- ▌
- ▌ Run Builds · ledgerhqTrigger the on-demand production build workflows on LedgerHQ/ledger-live-build (Desktop, Android APK, iOS) for a ledger-live branch, then post a PR comment. Use when asked to "run builds", "produce a build", "build the app(s)", or "make an APK/iOS/desktop build" for a PR/branch.
- ▌ Run E2e CI · ledgerhqTrigger the on-demand E2E / Coin Tester CI workflows (Desktop E2E, Mobile E2E, Coin Tester) on a branch and post a PR comment. Use when asked to "run e2e", "trigger e2e on CI", or "run coin testers" for a PR/branch.
- ▌ Typescript · ledgerhqTypeScript + React typing conventions for Ledger Wallet. Read when writing or reviewing .ts and .tsx files.
- ▌
- ▌ Feature Dev · ledgerhqGuided feature development with codebase understanding and architecture focus
- ▌
- ▌
- ▌
- ▌ Coin Modules · ledgerhqRules and layout for coin module packages under libs/coin-modules/. Read when adding or modifying a coin module.
- ▌ Docs Migrate · ledgerhqMigrate docs into our target structure. Use when asked to migrate or clean up existing docs – agentic and otherwise.
- ▌ Wire Devtool · ledgerhqWire an existing devtool package into host apps (LLD, LLM, web-tools) and optionally create bindings
- ▌ Codeownership · ledgerhq bundleMaintain CODEOWNERS file and team directories. Provides resolve-codeowners.js to annotate files with their owner team — useful to split a large PR by team. Use when working with "**/team-*/**" or splitting monolithic files.
- ▌
- ▌ Impacting Prs · ledgerhq bundleFind which open PRs are impacted by a migration/sunset/refactor and notify their authors — blocking review when the old path is already gone from develop, heads-up comment when it is only deprecated or its removal is still in review, silent study report only when the replacement does not exist yet. Use when asked to check/flag/notify/block open PRs about a breaking change, deprecation or migration they need to follow.
- ▌ React General · ledgerhqGeneral React and React Native engineering rules for Ledger Live. Read when writing or reviewing any .ts/.tsx file.
- ▌
- ▌ Test Coverage · ledgerhqIncrease test coverage to 90% on a target zone with iterative writing and refactoring
- ▌ Knip Migration · ledgerhqDead-code / unused-dependency detection is migrating from the legacy `unimported` tool to `knip`, which requires each package to expose an explicit, minimal `package.json#exports` (no `./*` wildcard). Read this when adding a new package or migrating an existing one.
- ▌ Prefer Set Has · ledgerhqPrefer Set.has() over Array.includes() for constant allowlists/blocklists. Read this when reviewing or writing membership checks in TypeScript files.
- ▌ Git Conventions · ledgerhqRead for naming branches, commit messages, pull request titles and merge commits
- ▌ Create Changeset · ledgerhqCreate changesets for the ledger-live monorepo using @changesets/cli. Use when the user asks to add a changeset, prepare a release, or document package changes for a PR.
- ▌ Slack Pr Message · ledgerhqGenerate a formatted Slack message to share a pull request with the team. Use when the user asks to generate a Slack message for a PR, share a PR on Slack, or after creating a pull request.
- ▌ Batch Feature Dev · ledgerhqHandle batches of Jira tickets through shared analysis, per-ticket feature-dev, Lumen UI guardrails, changesets, and draft PRs. Use when the user provides multiple Jira tickets or asks to deliver tickets one by one with PRs.
- ▌ Cloud Sync Module · ledgerhqWrite, review or debug a `cloudSyncModule.ts` — a `CloudSyncDataManager` that syncs one slice of user data through Ledger Sync (Cloud Sync). Covers the contract, its invariants, the mandatory contract test, the wiring checklist and the data-loss traps. Use for any work on `**/cloudSyncModule.ts`, `createAggregator`, or `@shared/cloud-sync-module`.
- ▌ Detect Data Leaks · ledgerhqDetect new PII leaks introduced by the current branch. Use when asked to check for potential data leaks for the current changes.
- ▌ Ledger Wallet CLI · ledgerhq bundleOfficial Ledger wallet-cli - USB-based CLI for Ledger hardware wallet flows (account discover, receive, balances, operations, send, swap quote/execute/status, genuine-check, assets token / token-by-id) and the Ledger Key Ring (ring init/encrypt/decrypt/keys/destroy — LKRP-backed encryption of files and text). Use for any wallet-cli command execution and for mapping informal requests to the right command.