dependabot-pr-handler

Dependabot PR Handler Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "dependabot-pr-handler" with this command: npx skills add equinor/fusion-framework/equinor-fusion-framework-dependabot-pr-handler

Dependabot PR Handler Skill

Automated skill for reviewing, validating, and safely merging Dependabot pull requests in the Fusion Framework monorepo.

Dependencies: This skill uses:

  • pnpm-dependency-analysis skill for impact assessment and blast radius calculation

  • npm-research skill for changelog, security, and breaking changes analysis

Operating Modes

Default to Full mode unless the user explicitly chooses Audit-only or Validate.

  • Audit-only: Research + build/test/lint locally. Comments optional. No post/push/merge.

  • Validate: Install + build + test + lint. Prepare comments. All actions gated by consent.

  • Full: End-to-end with required comments, consent-gated push/merge.

Templates

Template Path When Mode File

Available PRs List templates/available-prs-list.template.md

Step 1 All: If interactive PR selection Display to user

Research templates/research-comment.template.md

Step 5 Full: Required; Other: Optional .tmp/gh-comment-research.md

Results templates/results-comment.template.md

Step 13 Full: Required; Other: Optional .tmp/gh-comment-results.md

Guardrails

  • Never post comments, push, close, merge, or modify code without explicit user approval

  • Pause on user unavailability; stop on build/test/lint/security failures

  • Maintain linear history (force-with-lease with consent only)

  • Propose code changes when needed; never auto-modify source

Workflow

Step 1: Select PR

  • If PR provided by user (number or URL) → parse and store details (owner, repo, number, branch) → Skip to Step 2

  • If no PR provided →

  • Execute: gh pr list --author "app/dependabot" --state open --json number,title,createdAt

  • Parse PR titles to determine semver type:

  • MAJOR: Breaking changes, major version bumps (e.g., 5.0.0 from 3.x.x )

  • MINOR: New features, minor version bumps (e.g., 1.2.0 from 1.1.x )

  • PATCH: Bug fixes, patch version bumps (e.g., 1.1.5 from 1.1.4 )

  • Categorize and display using available-prs-list.template.md with age and semver columns

  • Request user selection by PR number

  • User MUST explicitly choose PR — never auto-select

Whenever a user asks to handle a Dependabot PR without providing a specific PR number or URL, run the PR listing flow above immediately before requesting further input.

Step 2: Create Worktree

  • Ensure worktree directory exists: mkdir -p ../fusion-framework.worktree

  • Get PR branch name: gh pr view <PR_NUMBER> --json headRefName --repo equinor/fusion-framework --jq '.headRefName'

  • Fetch the branch: git fetch origin <BRANCH>:<BRANCH>

  • Create worktree: git worktree add ../fusion-framework.worktree/pr-<PR_NUMBER> <BRANCH>

  • cd ../fusion-framework.worktree/pr-<PR_NUMBER>

Step 3: Rebase Branch

  • git fetch origin main && git rebase origin/main

  • If rebase succeeds → Continue to Step 4

  • If lock file conflict (pnpm-lock.yaml):

  • pnpm install (regenerate lock file)

  • git add pnpm-lock.yaml

  • git rebase --continue

  • Continue to Step 4

  • If version conflict (package.json dependencies incompatible):

  • Ask to post comment + close PR

  • If yes: post + close → Skip to Step 15

  • If structural/complex conflicts:

  • Display details → Ask user → Stop if declined

Step 4: Research Dependencies

  • Parse PR for dependency updates

  • Check latest available version: npm view <PACKAGE> versions --json

  • If Dependabot version is NOT the latest stable:

  • Display: Dependabot suggests X.Y.Z , but latest stable is A.B.C

  • Ask user: "Use Dependabot version or update to latest stable?"

  • If user chooses latest: Update package.json and run pnpm install

  • If user chooses Dependabot version: Continue with existing PR changes

  • Use pnpm-dependency-analysis skill (.github/skills/pnpm-dependency-analysis/SKILL.md ) to:

  • Identify which workspaces are affected (pnpm why PACKAGE --recursive --depth=0 )

  • Check resolved versions and detect inconsistencies

  • Determine blast radius (low/medium/high risk based on workspace count)

  • Verify dependency type (dev vs production)

  • Apply the Quick Decision Tree below to assess merge readiness

  • Use npm-research skill (.github/skills/npm-research/SKILL.md ) to:

  • Research changelog (GitHub releases, CHANGELOG files, npm registry)

  • Check security advisories (npm audit, GitHub advisories, Snyk)

  • Identify breaking changes (semver analysis, PR research when needed)

  • Review related PRs if release notes reference specific changes

  • Analyze peer dependency changes and new dependencies

  • Analyze codebase compatibility

  • Identify if code changes needed (document only; don't modify)

Quick Decision Tree (Dependabot Triage)

Step 4.1: Identify the package

From PR title like "build(deps): bump lodash from 4.x to 5.x"

PACKAGE="lodash" pnpm why "$PACKAGE" --recursive --depth=0

Step 4.2: Assess spread

  • 1–2 workspaces: Low risk, check one changelog

  • 3–5 workspaces: Medium risk, test carefully

  • 6+ workspaces: High risk, core shared dep — review thoroughly

Step 4.3: Determine dependency type

pnpm why "$PACKAGE" --recursive --json | jq -r '.[] | "(.workspace): (.dependencyType)"'

  • devDependencies only → usually safer (unless it's eslint, typescript, vite, vitest, jest, rollup, playwright, storybook)

  • dependencies → production impact — more caution needed

  • Both → requires full testing

Step 4.4: Check version consistency

pnpm why "$PACKAGE" --recursive --json | jq -r '.[] | "(.workspace)\t→ (.version)"'

  • All same version → good, consistent

  • Multiple versions → check if workspace:* controls it or if overrides are needed

  • Very different (e.g., v4 vs v5) → potential bugs, test before merge

Merge Decision Checklist

Before approving Dependabot PRs:

  • Run pnpm why <PACKAGE> --recursive --depth=0 to see spread

  • Check if marked workspace:* (almost always safe) or has mixed versions (riskier)

  • For high-spread packages (6+), skim the package's CHANGELOG for breaking changes

  • For tooling (eslint, vite, etc.), verify lint/build still works

  • For major version bumps in production deps, request test results or run locally

Safe to merge immediately (low friction)

✅ One or two workspaces affected

✅ Uses workspace:* or workspace protocol

✅ Only appears in devDependencies

✅ Patch or minor version bump

Requires careful review (plan ahead)

⚠️ 5+ workspaces affected

⚠️ Appears in production (dependencies )

⚠️ Major version bump

⚠️ Touches core tools (eslint, typescript, vite, vitest)

Escalate to team (discuss before merge)

🚫 Package used as shared library (everyone depends on it)

🚫 Multiple conflicting versions after upgrade

🚫 Breaking changes with no migration path

🚫 Touches build or CI infrastructure

Risk / Blast Radius Reference

Indicator Risk Level Action

1–2 workspaces only Low Usually safe to merge

≥ 6–8 workspaces High Review changelog + test carefully

Only in devDependencies

Lower Safe unless eslint, typescript, vite, vitest, jest, rollup, playwright, storybook

Uses workspace:* or workspace:^x.y.z

Very Low Almost always safe (controlled at workspace root)

Many different resolved versions Medium Consider pnpm.overrides or .npmrc resolutions before merging

Hub node (many packages → it) High Core shared dep — high breakage risk

Deep/long chains in pnpm why

Medium–High Transitive breakage possible

Appears in multiple config files (eslint, vite, etc.) Medium Tooling change — lint/format/build risk

Step 5: Post Research Comment

(Full: Required; Other: Optional)

  • Format using template → Create .tmp/gh-comment-research.md

  • Show to user → Ask: "Post research comment?"

  • If yes: gh pr comment <PR> -F .tmp/gh-comment-research.md → Clean up

Step 6: Install Dependencies

pnpm install --frozen-lockfile (clean node_modules if lock changed)

Step 7: Build Project

pnpm build → Stop on failure

Step 8: Run Tests

pnpm test → Stop on failure

Step 9: Run Linting

  • npx biome format --fix

  • git add .

  • npx biome check --diagnostic-level=error → Stop on failure

Step 10: Generate Changeset

(if .changeset exists)

  • Parse PR for package changes

  • Determine if changeset is needed:

  • Create changeset if:

  • Dependency affects a compiled/built package (CLI, Dev-Portal, vite-plugins, etc.)

  • Consumers can manually update the package (not just a transitive dependency)

  • DevDependency updates that affect build output or tooling behavior

  • Skip changeset if:

  • Changes only affect workspace tooling (root package.json, turbo.json, CI configs)

  • Test-only changes with no impact on package functionality

  • Generate using changeset rules

  • Use patch bump for devDependency updates

  • Prefix with "Internal:" for non-API changes

  • List affected packages in frontmatter

  • Include brief summary of dependency changes

  • Show to user → Ask: "Create changeset?"

  • If yes: Stage files

Step 11: Propose Code Changes

(if needed from Step 4)

  • Document required changes + rationale

  • Propose exact modifications → Ask: "Approve modifications?"

  • If yes: Commit with clear message

Step 12: Rebase & Push Changes

(Always execute)

  • cd ../fusion-framework.worktree/pr-<PR_NUMBER>

  • git fetch origin main (ensure latest main)

  • git rebase origin/main (resolve any conflicts if needed)

  • Show status: git status --porcelain

  • Ask: "Push rebased branch?"

  • If yes: git push origin HEAD --force-with-lease (to PR branch)

Step 13: Post Validation Results

(Full: Required; Other: Optional)

  • Format using template → Create .tmp/gh-comment-results.md

  • Show to user → Ask: "Post validation results?"

  • If yes: gh pr comment <PR> -F .tmp/gh-comment-results.md → Clean up

Step 14: Merge PR

(Full mode only)

  • Show merge details + branch protection status

  • Ask: "Merge PR now?"

  • If yes: gh pr merge <PR_NUMBER> --squash --admin

Step 15: Cleanup

  • cd <MAIN_REPO_PATH> (return to main repo)

  • git worktree remove ../fusion-framework.worktree/pr-<PR_NUMBER> (or --force if dirty)

  • Summarize results

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Research

pnpm-dependency-analysis

No summary provided by upstream source.

Repository SourceNeeds Review
General

make-skill-template

No summary provided by upstream source.

Repository SourceNeeds Review
Research

npm-research

No summary provided by upstream source.

Repository SourceNeeds Review