Reversible Migration
JuliusBrussee/caveman
Implement reversible compatibility-safe transitions. Use for schema, data, API, protocol, configuration, or dependency migrations requiring rollback and…
Find 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…
$ npx skills add LedgerHQ/ledger-live --skill impacting-prs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LedgerHQ/ledger-live impacting-prs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LedgerHQ/ledger-live.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/impacting-prs .claude/skills/impacting-prs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "impacting-prs" agent skill from https://github.com/LedgerHQ/ledger-live/tree/develop/.agents/skills/impacting-prs into .claude/skills/impacting-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "impacting-prs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LedgerHQ/ledger-live/tree/develop/.agents/skills/impacting-prsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LedgerHQ/ledger-live --skill impacting-prs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LedgerHQ/ledger-live impacting-prs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LedgerHQ/ledger-live.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/impacting-prs .agents/skills/impacting-prs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "impacting-prs" agent skill from https://github.com/LedgerHQ/ledger-live/tree/develop/.agents/skills/impacting-prs into .agents/skills/impacting-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "impacting-prs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LedgerHQ/ledger-live --skill impacting-prs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LedgerHQ/ledger-live impacting-prs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LedgerHQ/ledger-live.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/impacting-prs .cursor/skills/impacting-prs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "impacting-prs" agent skill from https://github.com/LedgerHQ/ledger-live/tree/develop/.agents/skills/impacting-prs into .cursor/skills/impacting-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "impacting-prs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LedgerHQ/ledger-live.git --path .agents/skills/impacting-prs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LedgerHQ/ledger-live --skill impacting-prs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LedgerHQ/ledger-live impacting-prs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LedgerHQ/ledger-live.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/impacting-prs .gemini/skills/impacting-prs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "impacting-prs" agent skill from https://github.com/LedgerHQ/ledger-live/tree/develop/.agents/skills/impacting-prs into .gemini/skills/impacting-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "impacting-prs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LedgerHQ/ledger-live impacting-prsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LedgerHQ/ledger-live --skill impacting-prs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LedgerHQ/ledger-live.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/impacting-prs .github/skills/impacting-prs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "impacting-prs" agent skill from https://github.com/LedgerHQ/ledger-live/tree/develop/.agents/skills/impacting-prs into .github/skills/impacting-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "impacting-prs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LedgerHQ/ledger-live --skill impacting-prs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LedgerHQ/ledger-live impacting-prs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LedgerHQ/ledger-live.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/impacting-prs .opencode/skills/impacting-prs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "impacting-prs" agent skill from https://github.com/LedgerHQ/ledger-live/tree/develop/.agents/skills/impacting-prs into .opencode/skills/impacting-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "impacting-prs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
impacting-prsFind 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…
Impacting PRs is an agent skill from LedgerHQ/ledger-live. Find 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.
Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/comment-templates.md` and `scan-prs.sh`).
The repository describes itself as: Mono-repository for Ledger Wallet apps and related packages. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9c51f17. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Shell), which the agent can run.
Shell commands in SKILL.md call:
ghgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Impacting PRs loads about 3.3k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 109 tokens; SKILL.md has 1,678 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LedgerHQ/ledger-live at commit 9c51f17, republished under its MIT licence (© LedgerHQ). 1,678 words, ~3,335 tokens.
.claude/skills/impacting-prs/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.When: a change is landing (or has landed) that every in-flight PR must follow — a package sunset, an API deprecation, a moved module, a new architectural rule.
Three modes. What gates the ping is whether the replacement is already on develop, not where the removal lives — an author can only act on advice they can commit today. Whether the old path is already gone only sets the severity:
Replacement on develop? | Old path on develop? | Mode | What we do |
|---|---|---|---|
| ✅ yes | gone | 🔴 Blocking | review requesting changes on each impacted PR |
| ✅ yes | still there (deprecated, or removed only in a pending PR) | 🟠 Heads-up | comment on each impacted PR |
| ❌ not yet | anything | 🔍 Study | no ping. Report the blast radius to the user, or as one comment on their own migration PR |
The middle row is the common case and the one easy to get wrong: a sunset PR usually only deletes the last legacy alias of something whose successor landed weeks ago. The impacted authors can migrate right now, so ping them — the migration PR being unmerged is a reason to say "landing soon", not a reason to stay silent. Reserve 🔍 study for when the successor genuinely does not exist yet.
Hard rules:
develop, so a ping is noise that ages badly.develop first (step 1); if it resolves there, this is 🟠, and offer the user the choice of pinging now.🤖 icon, so authors can tell at a glance it came from an agent, and so a later run can detect the PR was already informed.Ask the user for what only they know (use AskUserQuestion, batched):
Establish the two axes with git, not by asking. Mixed cases are normal — one artifact dropped, another only deprecated — so the mode is per artifact:
gh pr view <migration-pr> --json state,mergedAt # is the removal on develop yet?
git fetch origin <base> -q # your worktree is probably stale
git grep -l '<dropped-import>' origin/<base> # old path: still resolvable?
git grep -l '<replacement-symbol>' origin/<base> # replacement: does it exist TODAY?That last line is the one that decides 🔍 vs 🟠. Counting how the rest of the repo already imports the symbol on origin/<base> also hands you the per-layer replacement for free, and proves it rather than assuming it:
git grep -hE '\b<Symbol>\b' origin/<base> -- '<layer-path>' \
| grep -oE 'from "[^"]+"' | sort | uniq -c | sort -rnThen do the homework yourself, don't ask for it:
gh pr diff <migration-pr> # the actual before → after
gh pr list --state merged --author <login> --limit 30 --json number,title,mergedAt
gh api repos/$GH_REPO/commits?path=<dropped-path> --jq '.[].commit.message'Read enough of the merged diffs to answer: how do I detect the problem in a diff, and what exactly replaces it, per layer. The replacement is rarely uniform — e.g. a public lib may not import an app-internal domain module, while libs/coin-modules/* reach the same data through the coin framework. Build a matrix:
| Layer / path | Detection signal (added lines) | Replacement | Severity |
|---|---|---|---|
apps/** | from "@x/dropped" | useFoo() from @x/new | 🔴 blocking |
libs/coin-modules/** | same import | coinConfig.getStore() | 🔴 blocking |
| any | from "@x/deprecated-types" | @x/new-types | 🟠 heads-up |
Severity is a property of the row, not of the campaign: the same scan routinely yields one 🔴 artifact already deleted from develop and one 🟠 artifact whose deletion is still in review.
Show the matrix and the severity policy to the user and get an explicit OK before scanning. Also agree on the detection regex — a too-broad one produces noise, and noise on 20 PRs is expensive.
Three exclusions, all handled by scan-prs.sh — don't re-implement them by hand:
develop.develop — they have to rebase anyway, and will pick the change up then.-m, default [Oo]n behalf of @) — commenting twice is pure noise, and the most common way this skill becomes annoying. The default is deliberately broad, so it also excludes PRs informed about another migration: when two campaigns overlap, narrow it to something specific to yours (-m '#20040', -m 'cryptoassets') — our bodies always name the migration PR, so that always has something to match..agents/skills/impacting-prs/scan-prs.sh -p 'cryptoassets' -o "$TMPDIR/scan"
# -p regex (required, matched on added lines only) -b base (develop) -l list limit
# -j parallel jobs -x excluded-paths regex -m already-informed marker -o output dirIt writes prs.json (eligible PRs), diffs/<n>.diff, hits.tsv (pr ⇥ path ⇥ line ⇥ content), already-informed.txt, and prints the skip counts. line is the RIGHT-side line number, ready to use as the line of a review comment — anchor on it rather than recomputing. Notes:
gh pr list returns UNKNOWN for most PRs and warms the cache; the script queries twice for that reason. Re-run if some stay UNKNOWN.gh outside the sandbox (dangerouslyDisableSandbox: true).For every PR with hits, read the surrounding diff ($OUT/diffs/<n>.diff) and decide:
hits.tsv — every surviving hit becomes an inline comment, not a paragraph in a wall of text.```suggestion block the author can commit in one click. Only when you can write the exact resulting line(s) — a wrong suggestion is worse than none, and a suggestion is a claim we are sure, so keep the hedging in the prose around it.The strongest suggestion you can write is one copied from the PR's own neighbours: if sibling files in the same directory already import the symbol the new way on origin/<base>, quote that and the fix becomes indisputable.
Then look past hits.tsv. It only sees added lines containing the pattern, so it structurally misses a PR that edits a file the migration deletes — the added line (+ newField?: string;) never names the package. Those are the expensive cases: guaranteed rebase conflicts, and often the author already made the same change in the right place and just left a stale duplicate. Check every PR with hits, and cheaply check the others:
grep -lE '^\+\+\+ b/(<deleted-path-1>|<deleted-path-2>)' "$OUT"/diffs/*.diffKeep a table: PR · author · what it is about · files · severity · required action. Verify a couple of the target APIs really exist before recommending them — git grep on origin/<base> in 🟠/🔴 mode, on the migration PR's branch in 🔍 study mode (gh pr diff <migration-pr>), since on develop they do not exist yet. Recommending a symbol that does not exist destroys the credibility of the whole batch.
Only when the replacement is not on develop — re-read the mode table before landing here, since an unmerged migration PR is usually still 🟠. The impacted authors cannot act yet, so nothing is posted on their PRs. Deliver the blast radius to the person doing the migration instead — steps 5 to 7 do not apply:
gh pr comment <migration-pr> --body-file report.md --edit-last).The report is for sizing the work, not for shaming anyone — group by required action, not by PR, since that is what tells the author whether they need a codemod, a migration guide, or a compat shim:
🔍 Impact study for `<artifact>` (this PR, not on `develop` yet) — 6 open PRs affected
**Mechanical import swap (4)** — #20204 (57 files, wallet-api refactor) · #19581 · #19191 · #20045
**Needs the coin-framework accessor (1)** — #20018 (coin-vechain, no access to the new store)
**Unclear, worth a chat (1)** — #20221 (adds a new dependency on the dropped path)
Scanned N open PRs targeting `develop`; skipped M conflicting + K other-base.
Rerun once this lands to notify them, or say the word and I'll draft the heads-up now.Two things this makes visible early, which is the point of the mode: PRs so large the migration should wait for them to land, and layers with no replacement yet.
One comment per PR, from the templates in references/comment-templates.md. Tone: 🤖 On behalf of @<author> in the summary body only — never repeat the attribution in each inline comment, it reads like a robot signing every line. Hedged ("it looks like", "you may need to") — we are never 100% sure, the PR author knows their code better. In English, nice, short, actionable, open to being wrong.
Show all drafts to the user in one message, grouped by severity, and wait. Expect the user to correct the expected code change — fold their corrections back into the matrix and re-check the other drafts against it.
Default form: one review carrying a short summary body + one inline comment per hit (with a suggestion block where relevant). Anchored comments land next to the offending line, so the author sees the impact in their own code instead of in a wall of text — see references/comment-templates.md for the payload.
# event: REQUEST_CHANGES for 🔴 blocking, COMMENT for 🟠 heads-up (does not block)
gh api repos/$GH_REPO/pulls/<n>/reviews --input payload.json --jq .html_urlSequentially, out of the sandbox, capturing each returned URL. Fallbacks:
422 line must be part of the diff → the hit is outside the PR's own hunks; drop that inline comment (keep it in the body) rather than retrying on another line.REQUEST_CHANGES on your own PR is rejected by GitHub → post with event: COMMENT and say in the body that it would otherwise be blocking.gh pr comment <n> --body-file draft.md.State drifts between the scan and the posting, so right before each post re-check that the PR is still open, still MERGEABLE and still free of the marker — the scan's exclusions are only as fresh as the scan:
gh pr view <n> --json state,mergeable --jq '"\(.state) \(.mergeable)"' # expect: OPEN MERGEABLEReport back a copy-pasteable summary, grouped by severity, each line linking the posted comment (the URL returned above, e.g. #issuecomment-… / #pullrequestreview-…) plus a 2-4 word label of what the PR is about:
:red_circle: Blocking (@x/dropped removed from develop)
- #19806 (<comment url>) — Kaspa coin tester
- #19645 (<comment url>) — Readiness + Tezos
:large_orange_circle: Deprecated (@x/deprecated-types)
- #20034 (<comment url>) — PolkadotList separately what was skipped and why (conflicting, other base, false positive) so the user can double-check the blind spots.
© LedgerHQ, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in .agents/skills/impacting-prs of LedgerHQ/ledger-live.
Open the folder on GitHubat commit 9c51f17
Impacting PRs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Impacting PRs this skillLedgerHQ/ledger-live | 622 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Reversible MigrationJuliusBrussee/caveman | 111k | 1 repos | ~196 | Automated safety check: Pass | Apache-2.0 | |
| Database Migrationsaffaan-m/ECC | 276k | 4 repos | ~3k | Automated safety check: Pass | MIT | |
| Database Migrationsaffaan-m/ECC | 276k | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Safe Database Migration Patternsaffaan-m/ECC | 276k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Migrate Createruvnet/ruflo | 74k | — | ~583 | Automated safety check: Notes | MIT |
JuliusBrussee/caveman
Implement reversible compatibility-safe transitions. Use for schema, data, API, protocol, configuration, or dependency migrations requiring rollback and…
affaan-m/ECC
Safe, reversible database migration patterns: forward-only production changes, expand-contract zero-downtime renames, concurrent indexes, batched backfills, and per-tool workflows for PostgreSQL…
affaan-m/ECC
Şema değişiklikleri, veri migration'ları, rollback'ler ve PostgreSQL, MySQL ve yaygın ORM'ler (Prisma, Drizzle, Django, TypeORM, golang-migrate) arasında sıfır kesinti deployment'ları için…
affaan-m/ECC
Rules and examples for safe, reversible schema changes in production: zero-downtime column and index changes, large data backfills and ORM migration workflows.
ruvnet/ruflo
Create a new sequentially numbered database migration with up/down SQL files
kortix-ai/suna
How to change the database schema in this repo. An agent skill from kortix-ai/suna.
LedgerHQ/ledger-live
Write, review or debug a cloudSyncModule.ts — a CloudSyncDataManager that syncs one slice of user data through Ledger Sync (Cloud Sync).
LedgerHQ/ledger-live
Maintain CODEOWNERS file and team directories. An agent skill from LedgerHQ/ledger-live.
LedgerHQ/ledger-live
Coin-specific families logic must live in families/. An agent skill from LedgerHQ/ledger-live.
LedgerHQ/ledger-live
Structure a Ledger Wallet data layer where one API response serves several entities.
LedgerHQ/ledger-live
Investigate native React Native crashes (Fabric/Hermes/iOS) in ledger-live-mobile when JS error logs are missing or unhelpful.
LedgerHQ/ledger-live
Detect new PII leaks introduced by the current branch. An agent skill from LedgerHQ/ledger-live.
Find 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…. Impacting PRs is an agent skill from LedgerHQ/ledger-live. Find 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.
Impacting PRs fits situations like: asked to check/flag/notify/block open PRs about a breaking change; migration they need to follow.
Run `npx skills add LedgerHQ/ledger-live --skill impacting-prs -a claude-code`. Or copy the skill folder (.agents/skills/impacting-prs in LedgerHQ/ledger-live) into .claude/skills/impacting-prs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LedgerHQ/ledger-live --skill impacting-prs -a codex`. Or copy the skill folder (.agents/skills/impacting-prs in LedgerHQ/ledger-live) into .agents/skills/impacting-prs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LedgerHQ/ledger-live --skill impacting-prs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/impacting-prs, .gemini/skills/impacting-prs, .github/skills/impacting-prs and .opencode/skills/impacting-prs in your project.
Going by SKILL.md and its folder, Impacting PRs needs a shell for the scripts in its folder and the command-line tools its instructions call (gh and git). Our summary lists: A Bash shell.
SKILL.md contains no URLs. Its commands use gh and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Impacting PRs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Impacting PRs: Reversible Migration (JuliusBrussee/caveman, 111k stars), Database Migrations (affaan-m/ECC, 276k stars), Database Migrations (affaan-m/ECC, 276k stars) and Safe Database Migration Patterns (affaan-m/ECC, 276k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LedgerHQ (a GitHub organization) maintains it in LedgerHQ/ledger-live, which has 622 GitHub stars. The repository holds 50 skills in this directory. The repository was last updated on October 9, 2026.
Source: LedgerHQ/ledger-live on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.