بنقرة واحدة
devtools-import-boundary
Enforce import boundaries inside the devtools scope. Use for any work in "devtools/**".
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Enforce import boundaries inside the devtools scope. Use for any work in "devtools/**".
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Official 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). Use for any wallet-cli command execution and for mapping informal requests to the right command.
Handle 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.
Trigger 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.
Guided feature development with codebase understanding and architecture focus
Rules and layout for coin module packages under libs/coin-modules/. Read when adding or modifying a coin module.
Dead-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.
| name | devtools-import-boundary |
| description | Enforce import boundaries inside the devtools scope. Use for any work in "devtools/**". |
Every @devtools/* package is self-contained. The only permitted cross-package import within the devtools scope is from @devtools/registry, and only from the two packages explicitly designed for it.
| Package | May import from @devtools/* |
|---|---|
@devtools/shell | @devtools/registry only |
@devtools/bindings | @devtools/registry only |
@devtools/<tool> | nothing from @devtools/* |
All other @devtools/* → @devtools/* imports are forbidden.
The devtools architecture decouples tools from the shell through the registry. The shell lazy-loads tools via metadata.loader; tools never know the shell exists. If a tool imports the shell or another tool directly:
If bindings or shell import a tool package directly (instead of through the registry):
DevToolsConfig.import() split point disappears, defeating code-splitting.Cross-cutting concerns (shared types, utilities) must not live in a tool package. Extract them to a standalone library with no @devtools/* scope, then import that from whichever packages need it.
App state and wiring for a tool arrive as props, built in @devtools/bindings — the single sanctioned bridge to Ledger Live internals. A tool that needs more data from the app gets new props, not a new import.
When adding a new package under devtools/, its README.md must state:
@devtools/registry (yes for shell and bindings, no for tool packages).@devtools/* package, with a pointer to this rule.