From resolve-prs
Resolve open Dependabot PRs on GitHub repos. Assesses each PR, merges safe ones, fixes and merges fixable ones, and closes broken ones with explanations. Use --all to process every git repo in the current directory in parallel. Use --dry-run to assess without taking action.
npx claudepluginhub gijungkim/resolve-prs --plugin resolve-prsThis skill is limited to using the following tools:
You are resolving open Dependabot dependency update PRs on GitHub repositories. Follow this methodology precisely.
Implements structured self-debugging workflow for AI agent failures: capture errors, diagnose patterns like loops or context overflow, apply contained recoveries, and generate introspection reports.
Monitors deployed URLs for regressions in HTTP status, console errors, performance metrics, content, network, and APIs after deploys, merges, or upgrades.
Provides React and Next.js patterns for component composition, compound components, state management, data fetching, performance optimization, forms, routing, and accessible UIs.
You are resolving open Dependabot dependency update PRs on GitHub repositories. Follow this methodology precisely.
gh CLI authenticated with access to the target repo(s)origin remote to determine owner/repo)--all: find all git repos in the current directory and process each one in parallel using a Claude team (one agent per repo)--dry-run: assess and report on all PRs without merging, fixing, or closing anythingowner/repo: process a specific GitHub repoFlags can be combined, e.g. --all --dry-run.
Raw arguments: $ARGUMENTS
If --all flag is present:
find . -maxdepth 2 -name .git -type d to discover reposOtherwise, determine the single target repo:
owner/repo argument is given, use thatgit remote get-url origingh pr list --repo OWNER/REPO --state open --json number,title,author,mergeable,mergeStateStatus,headRefName,labels,statusCheckRollup
Filter to Dependabot PRs (author login contains "dependabot"). If there are no open Dependabot PRs, report that and stop.
For each PR, before assessing risk, try to fetch release notes or changelogs:
gh api repos/OWNER/DEPENDENCY/releases/latest --jq '.body' 2>/dev/null
cat node_modules/PACKAGE/CHANGELOG.md 2>/dev/null | head -100
Use this information to anticipate breaking changes before testing. If the changelog explicitly mentions breaking changes or migration steps, factor that into the risk assessment and keep the info handy for Step 7 (fixing).
For each PR, get the diff:
gh pr diff NUMBER --repo OWNER/REPO
Categorize each PR by risk level:
Always cross-reference with the "Common Breaking Change Patterns" section below and any changelog info from Step 3.
Before testing, detect the project's package manager:
bun.lock or bun.lockb -> bunyarn.lock -> yarnpnpm-lock.yaml -> pnpmpackage-lock.json -> npmUse the detected package manager for all install/run commands throughout.
For medium/high risk PRs:
git stash --include-untrackedgit fetch origingit checkout origin/BRANCH -- package.json
<pkg-manager> install --no-save # or equivalent flag
package.json scripts):
tsc --noEmit, or a compile script)lint:check or lint script)test script)git checkout main -- package.json && <pkg-manager> installIf --dry-run is set, skip this step entirely. Just report the assessment from Step 9.
gh pr merge NUMBER --repo OWNER/REPO --merge
git checkout BRANCHgh pr close NUMBER --repo OWNER/REPO --comment "Reason for closing..."
Always include a clear, specific reason:
When you successfully fix a breaking change that is NOT already listed in the "Common Breaking Change Patterns" section below, add it.
Only record generalizable patterns. The entry should help with ANY project that hits this upgrade, not just the current one. Example of good: "react-native-mmkv 3 -> 4: new MMKV() -> createMMKV()". Example of bad: "fixed import in src/utils/storage.ts".
One line per pattern. Format: **package X -> Y**: brief description of what changed and how to fix it.
Cap at 30 entries per subsection. If a subsection hits 30, consolidate the oldest/most obvious entries (e.g., merge multiple similar patterns into one) to make room. Remove patterns for packages that haven't been relevant in multiple runs.
Don't duplicate. If a similar pattern already exists, update it rather than adding a new one.
Where to write. Edit the SKILL.md file directly in the skill's directory. The file location depends on where the skill is installed:
~/.claude/skills/resolve-prs/SKILL.md.claude/skills/resolve-prs/SKILL.mdls ~/.claude/plugins/*/skills/resolve-prs/SKILL.mdUse the Edit tool to append to the appropriate subsection under "Common Breaking Change Patterns".
git stash popPresent a summary table:
| PR | Title | Risk | Action | Reason |
|---|---|---|---|---|
| #N | ... | Low/Medium/High | Merged / Fixed & Merged / Closed / Would merge (dry-run) / Would close (dry-run) | ... |
If --dry-run, use "Would merge", "Would close", "Would fix & merge" in the Action column.
If any new patterns were learned, mention them at the bottom:
Learned N new breaking change pattern(s) - the skill will handle these automatically next time.
Reference these when assessing PRs. This is not exhaustive - always verify by testing. New patterns are added automatically via auto-learn (Step 8).
.eslintrc.* -> eslint.config.js). Check if eslint-config-* packages support flat config before merging.FlatESLint/LegacyESLint exports, breaking typescript-eslint <8.56.0 and @eslint/js <10. Bump @eslint/js to ^10.0.0 and typescript-eslint to ^8.56.0+. Note: eslint-plugin-react-hooks may lack ESLint 10 peer dep but works anyway.{ reactRefresh }, and configs.vite becomes configs.vite() (function call). Also customHOCs renamed to extraHOCs.jest-expo, react-scripts). Check the preset's peer dependencies.@types/* packages and build tools ship compatible definitions.baseUrl and moduleResolution: "node" are deprecated (error by default). Fix: remove baseUrl (default is .), change moduleResolution to "bundler". Also, TS 6 no longer auto-includes all @types/* from typeRoots — add an explicit "types" array listing needed type packages (e.g., ["react", "jest", "node"]).react version exactly.new MMKV() to createMMKV(), .delete() renamed to .remove(), requires Nitro Modules jest mock.npx expo install --fix. Don't bump packages that Expo constrains.@react-navigation/* packages.B@^2.0 but the PR bumps B to 3.0, close it.