원클릭으로
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.