Agent skill

Impacting PRs

by LedgerHQ in 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…

MITAuto-check passed

Install Impacting PRs

skills CLI
$ npx skills add LedgerHQ/ledger-live --skill impacting-prs -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install LedgerHQ/ledger-live impacting-prs --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
impacting-prs
GitHub stars
622
Token cost
~3.3k tokens
SKILL.md length
1,678 words
Files
3 (incl. references)
Skills in repo
50
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 7 steps: Pin down the change and the migration… → Select eligible PRs → Analyse each hit → …
  • Asked to check/flag/notify/block open PRs about a breaking change
  • SKILL.md covers 1. Pin down the change and the…, 2. Select eligible PRs, 3. Analyse each hit and 4. 🔍 Study mode: one report,…, plus 3 more sections
  • Runs Shell scripts from its folder; calls gh and git

What it does

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.

When your agent uses it

  • Asked to check/flag/notify/block open PRs about a breaking change
  • Migration they need to follow

Example prompts

  • “/impacting-prs”

Requirements

  • A Bash shell

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Pin down the change and the migration pattern
  2. Select eligible PRs
  3. Analyse each hit
  4. 🔍 Study mode: one report, zero pings
  5. Draft and get approval
  6. Post (🟠 / 🔴 only)
  7. Recap

What it can do on your machine

Read from SKILL.md and the folder at commit 9c51f17. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships script files (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • gh
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~109
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.6k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from LedgerHQ/ledger-live at commit 9c51f17, republished under its MIT licence (© LedgerHQ). 1,678 words, ~3,335 tokens.

Download SKILL.mdSave it as .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.
name
impacting-prs
description
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.

Notify open PRs impacted by an ongoing migration

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?ModeWhat we do
✅ yesgone🔴 Blockingreview requesting changes on each impacted PR
✅ yesstill there (deprecated, or removed only in a pending PR)🟠 Heads-upcomment on each impacted PR
❌ not yetanything🔍 Studyno 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:

  • 🚫 Never post anything before the user has read and approved the drafts.
  • 🚫 Never guess the migration pattern. Derive it from the merged work, then have the user confirm it (step 1).
  • 🚫 In study mode, never comment on an impacted PR. There is nothing they can do yet: the target API does not exist on develop, so a ping is noise that ages badly.
  • ⚖️ Never pick 🔍 study just because the migration PR is open. Check the replacement on develop first (step 1); if it resolves there, this is 🟠, and offer the user the choice of pinging now.
  • 🇬🇧 Everything we post is in English, whatever language the conversation happens in. Being prompted in French is not a reason to write French comments — the PR authors are an international audience.
  • 🤖 Every posted message starts with the 🤖 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.

1. Pin down the change and the migration pattern

Ask the user for what only they know (use AskUserQuestion, batched):

  • On whose behalf we speak (the person who did the migration) — the comments are written for them.
  • The merged/prepared PRs implementing the migration, and a migration guide/ADR if one exists.
  • The mode, once you have established both axes yourself (below) — confirm it rather than let the user guess, and when the answer is 🟠 on an unmerged migration, explicitly offer to ping now.

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:

bash
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:

bash
git grep -hE '\b<Symbol>\b' origin/<base> -- '<layer-path>' \
  | grep -oE 'from "[^"]+"' | sort | uniq -c | sort -rn

Then do the homework yourself, don't ask for it:

bash
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 / pathDetection signal (added lines)ReplacementSeverity
apps/**from "@x/dropped"useFoo() from @x/new🔴 blocking
libs/coin-modules/**same importcoinConfig.getStore()🔴 blocking
anyfrom "@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.

2. Select eligible PRs

Three exclusions, all handled by scan-prs.sh — don't re-implement them by hand:

  • PRs that do not target develop.
  • PRs already conflicting with develop — they have to rebase anyway, and will pick the change up then.
  • PRs somebody already informed (a comment/review body matching -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.
bash
.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 dir

It 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:

  • Matching added lines only matters: a PR that removes the old import is doing the migration, not breaking it.
  • GitHub computes mergeability lazily — the first 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.
  • Run gh outside the sandbox (dangerouslyDisableSandbox: true).
Show full SKILL.md (811 more words)Show less

3. Analyse each hit

For every PR with hits, read the surrounding diff ($OUT/diffs/<n>.diff) and decide:

  • False positive? Drop it: moved/renamed lines, comments, changesets, fixtures, generated files, code that was already there, or a usage the matrix explicitly allows.
  • Which layer the file belongs to → which row of the matrix applies → severity.
  • What the author must do, in one sentence, referring to their own file paths and symbols.
  • The exact line to comment on, from hits.tsv — every surviving hit becomes an inline comment, not a paragraph in a wall of text.
  • Is the replacement mechanical? Then attach a ```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:

bash
grep -lE '^\+\+\+ b/(<deleted-path-1>|<deleted-path-2>)' "$OUT"/diffs/*.diff

Keep 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.

4. 🔍 Study mode: one report, zero pings

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:

  • They have a PR for the migration → one comment on their own PR, updated in place on later runs (gh pr comment <migration-pr> --body-file report.md --edit-last).
  • They don't → just answer in the conversation. Nothing is posted anywhere.

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:

markdown
🔍 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.

5. Draft and get approval

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.

6. Post (🟠 / 🔴 only)

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.

bash
# 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_url

Sequentially, 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.
  • No inline anchor at all (nothing mechanical, or all 422s) → 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:

bash
gh pr view <n> --json state,mergeable --jq '"\(.state) \(.mergeable)"'   # expect: OPEN MERGEABLE

7. Recap

Report 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>) — Polkadot

List 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

Files

SKILL.md and 2 other files (references) in .agents/skills/impacting-prs of LedgerHQ/ledger-live.

  • SKILL.md
  • references/comment-templates.md
  • scan-prs.sh

Open the folder on GitHubat commit 9c51f17

Compare with similar skills

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.

Impacting PRs compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Impacting PRs this skillLedgerHQ/ledger-live622—~3.3kAutomated safety check: PassMIT
Reversible MigrationJuliusBrussee/caveman111k1 repos~196Automated safety check: PassApache-2.0
Database Migrationsaffaan-m/ECC276k4 repos~3kAutomated safety check: PassMIT
Database Migrationsaffaan-m/ECC276k1 repos~2.4kAutomated safety check: PassMIT
Safe Database Migration Patternsaffaan-m/ECC276k—~3.3kAutomated safety check: PassMIT
Migrate Createruvnet/ruflo74k—~583Automated safety check: NotesMIT

Similar skills

  • Reversible Migration

    JuliusBrussee/caveman

    Implement reversible compatibility-safe transitions. Use for schema, data, API, protocol, configuration, or dependency migrations requiring rollback and…

    111k GitHub starsUsed in 1 repo~196 tokens
    DevelopmentAuto-check passed
  • Safe, reversible database migration patterns: forward-only production changes, expand-contract zero-downtime renames, concurrent indexes, batched backfills, and per-tool workflows for PostgreSQL…

    276k GitHub starsUsed in 4 repos~3k tokens
    DatabasesAuto-check passed
  • Ş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…

    276k GitHub starsUsed in 1 repo~2.4k tokens
    DatabasesAuto-check passed
  • Rules and examples for safe, reversible schema changes in production: zero-downtime column and index changes, large data backfills and ORM migration workflows.

    276k GitHub stars~3.3k tokensUpdated 4 days ago
    DatabasesAuto-check passed
  • Migrate Create

    ruvnet/ruflo

    Create a new sequentially numbered database migration with up/down SQL files

    74k GitHub stars~583 tokensUpdated today
    DatabasesAuto-check: notes
  • Migration

    kortix-ai/suna

    How to change the database schema in this repo. An agent skill from kortix-ai/suna.

    20k GitHub stars~1.2k tokensUpdated today
    DatabasesAuto-check passed

More from LedgerHQ/ledger-live

All 50 skills in this repo
  • Cloud Sync Module

    LedgerHQ/ledger-live

    Write, review or debug a cloudSyncModule.ts — a CloudSyncDataManager that syncs one slice of user data through Ledger Sync (Cloud Sync).

    622 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Codeownership

    LedgerHQ/ledger-live

    Maintain CODEOWNERS file and team directories. An agent skill from LedgerHQ/ledger-live.

    622 GitHub stars~687 tokensUpdated today
    Auto-check passed
  • Coin Families Contract

    LedgerHQ/ledger-live

    Coin-specific families logic must live in families/. An agent skill from LedgerHQ/ledger-live.

    622 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Data Layer Advanced

    LedgerHQ/ledger-live

    Structure a Ledger Wallet data layer where one API response serves several entities.

    622 GitHub stars~509 tokensUpdated today
    Auto-check passed
  • Debug Rn Native Crash

    LedgerHQ/ledger-live

    Investigate native React Native crashes (Fabric/Hermes/iOS) in ledger-live-mobile when JS error logs are missing or unhelpful.

    622 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Detect Data Leaks

    LedgerHQ/ledger-live

    Detect new PII leaks introduced by the current branch. An agent skill from LedgerHQ/ledger-live.

    622 GitHub stars~1.3k tokensUpdated today
    Auto-check passed

Questions about Impacting PRs

What does Impacting PRs do?

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.

When should I use Impacting PRs?

Impacting PRs fits situations like: asked to check/flag/notify/block open PRs about a breaking change; migration they need to follow.

How do I install Impacting PRs in Claude Code?

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.

How do I install Impacting PRs in Codex?

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.

Can I use Impacting PRs in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Impacting PRs need to run?

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.

Does Impacting PRs access the network?

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.

Is Impacting PRs safe to install?

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.

What licence does Impacting PRs use?

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.

How many tokens does Impacting PRs use?

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.

What are the alternatives to Impacting PRs?

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.

Who maintains Impacting PRs?

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.