Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Github:Dependabot

ASecurity

Triage open Dependabot PRs - categorize by risk, bundle duplicates, create fix PRs, approve safe merges

302 stars
0 votes
0 copies
0 views
Added 9/20/2026
devopstypescriptpythongobashnodedockerkubernetesgitapifrontend

Works with

cliapi

Security Analysis

A96/100
mediumInstalls packages at runtime which could introduce malicious dependencies

Scanned 9/20/2026

Install to Claude Code

$npx -y skills add rossoctl/rossoctl --skill github:dependabot --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Github:Dependabot?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Github:Dependabot
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/rossoctl-github-dependabot/badge)](https://www.skillsdirectory.com/skills/rossoctl-github-dependabot)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: github:dependabot
description: Triage open Dependabot PRs - categorize by risk, bundle duplicates, create fix PRs, approve safe merges
---

# Dependabot PR Triage

Analyze all open Dependabot PRs, categorize by risk, bundle duplicates into
single PRs, fix CI blockers, and approve safe merges.

## Table of Contents

- [When to Use](#when-to-use)
- [Variables](#variables)
- [Workflow](#workflow)
- [Workflow Diagram](#workflow-diagram)
- [Phase 1: Discovery](#phase-1-discovery)
- [Phase 2: Categorization](#phase-2-categorization)
- [Phase 3: Execution](#phase-3-execution)
- [Task Tracking](#task-tracking)
- [Troubleshooting](#troubleshooting)
- [Related Skills](#related-skills)

## When to Use

- Dependabot PRs are piling up (5+)
- Weekly or biweekly dependency grooming
- Before a release freeze to clear the backlog
- After enabling Dependabot on a new repo

> **Auto-approved**: All `gh` read commands are auto-approved. Merge and
> write commands require user confirmation.

## Variables

Set these at the start of every session. All commands below use them.

```bash
export OWNER=<org-or-user>       # e.g. rossoctl
export REPO=<repo-name>          # e.g. rossoctl
export LOG_DIR=/tmp/dependabot-triage/$REPO
mkdir -p $LOG_DIR
```

## Workflow

```
1. Discovery   → list all Dependabot PRs, CI status, mergeability
2. Categorize  → sort into Low Risk / Bundle / High Risk
3. Execute     → fix blockers, create bundles, approve, merge
```

## Workflow Diagram

```mermaid
flowchart TD
    START(["/github:dependabot"]) --> DISC["Phase 1: Discovery"]:::github
    DISC --> LIST["List Dependabot PRs"]:::github
    LIST --> CI["Check CI status per PR"]:::github
    CI --> CAT["Phase 2: Categorize"]:::github

    CAT --> LOW["Low Risk\n(patch/minor, CI green)"]:::github
    CAT --> BUNDLE["Bundle Candidates\n(same dep across paths)"]:::github
    CAT --> HIGH["High Risk\n(major version, CI failing)"]:::github

    LOW --> APPROVE["Approve + merge"]:::github
    BUNDLE --> CREATE["Create bundled PR\nClose originals"]:::github
    HIGH --> INVESTIGATE["Investigate CI failures\nLocal validation"]:::github
    INVESTIGATE --> FIX["Fix blocker on main\nthen rebase"]:::github
    FIX --> APPROVE

    classDef github fill:#E91E63,stroke:#333,color:white
```

## Phase 1: Discovery

### List all Dependabot PRs with CI status

```bash
gh pr list --repo $OWNER/$REPO --state open --json number,title,author,createdAt,updatedAt,statusCheckRollup,mergeable --jq '.[] | select(.author.login == "app/dependabot" or .author.login == "dependabot[bot]")' > $LOG_DIR/dependabot-prs.json
```

Parse summary:

```bash
cat $LOG_DIR/dependabot-prs.json | jq -r '{number, title: .title[:80], updated: .updatedAt[:10], mergeable, ci: ([.statusCheckRollup // [] | .[] | select(.conclusion != null) | .conclusion] | unique)}'
```

### Check CI failures for specific PRs

```bash
gh pr checks <NUMBER> --repo $OWNER/$REPO
```

### Get failed job logs

```bash
gh run view <RUN_ID> --repo $OWNER/$REPO --log-failed > $LOG_DIR/pr-<NUMBER>-failed.log 2>&1
```

Use a subagent to analyze:

```
Agent(subagent_type='Explore'):
  "Grep $LOG_DIR/pr-<NUMBER>-failed.log for error|Error|FAIL.
   Report the root cause in under 100 words."
```

### Check main branch CI health

```bash
gh run list --repo $OWNER/$REPO --branch main --limit 3 --json conclusion,displayTitle
```

If main is failing the same checks, the Dependabot failures may be pre-existing.

## Phase 2: Categorization

Sort each PR into exactly one bucket:

### Low Risk / Safe to Merge

- Minor or patch version bumps
- CI passing (all checks green)
- No known breaking changes in changelog
- GitHub Actions version bumps
- Docker base image digest bumps (when only one Dockerfile affected)

### Bundling Candidate

Detect duplicates: multiple PRs updating the same dependency across different
paths (e.g., the same Docker base image digest in 5 Dockerfiles). Also bundle
related dev-only dependency bumps that share the same component.

Identify bundles:

```bash
cat $LOG_DIR/dependabot-prs.json | jq -r '.title' | sort | uniq -c | sort -rn | head -10
```

### High Risk / Manual Intervention

- **Major version bumps** (e.g., TypeScript 5→6, pytest 8→9, pylint 3→4)
- **Core runtime dependencies** (pydantic, httpx, kubernetes client)
- **Security-critical libraries** (python-jose, cryptography)
- **CI failing due to the dependency change itself** (not pre-existing issues)

For each high-risk PR, check the changelog:

```bash
gh pr view <NUMBER> --repo $OWNER/$REPO --json body --jq '.body' > $LOG_DIR/pr-<NUMBER>-body.txt
```

## Phase 3: Execution

### Low Risk: Approve and merge

```bash
gh pr review <NUMBER> --repo $OWNER/$REPO --approve --body "Low-risk Dependabot update. CI passing."
```

```bash
gh pr merge <NUMBER> --repo $OWNER/$REPO --merge
```

### Bundles: Create bundled PR and close originals

1. Create a branch from main:

```bash
git checkout -b build/bundle-<description> main
```

2. Apply changes from all PRs in the bundle. For Docker digest bumps, use a
   global find-and-replace across the affected files. For pyproject.toml /
   package.json changes, apply each version bump manually.

3. Commit with references to the original PRs:

```bash
git commit -s -m "build(deps): <description>

Bundles Dependabot PRs #N, #N, #N into a single update.

Assisted-By: Claude (Anthropic AI) <noreply@anthropic.com>"
```

4. Push and create PR:

```bash
git push origin build/bundle-<description>
```

```bash
gh pr create --repo $OWNER/$REPO --title "build(deps): <description>" --body "..."
```

5. Close the originals (comment to prevent Dependabot from recreating):

```bash
gh pr close <NUMBER> --repo $OWNER/$REPO --comment "Superseded by #<bundled-PR>"
```

### High Risk: Investigate, fix, validate

1. **If CI fails due to pre-existing issues** (e.g., stricter linter catches
   old violations): fix on main first, then rebase the Dependabot PR.

2. **If CI fails due to the dependency change**: check out the PR branch,
   fix locally, push to a new branch that supersedes the original.

3. **For major version bumps in compiled languages** (TypeScript, Go):
   - Run type checks / build locally
   - Fix breaking changes
   - Create a superseding PR with fixes included

4. **For major version bumps in test frameworks** (pytest, jest):
   - Run the full test suite locally
   - Check for deprecated API usage

Local validation pattern:

```bash
gh pr checkout <NUMBER> --repo $OWNER/$REPO
```

```bash
# Language-specific build/test — examples:
# Python: make lint && uv run pytest
# Node: npm install && npx tsc --noEmit && npm run build
# Go: make build && make test
```

## Presentation Format

Present the analysis as a table before taking action:

```markdown
## Dependabot PR Triage — $OWNER/$REPO

| PR | Change | Component | CI | Risk | Action |
|----|--------|-----------|----|------|--------|
| #N | dep X.Y → X.Z | backend | PASS | Low | Merge |
| #N | dep A.B → C.D | frontend | FAIL | High | Investigate |
| #N | image digest | auth/* (5 files) | PASS | Low | Bundle |

### Proposed Bundles
- **Bundle 1**: #N, #N, #N — same Docker image across N Dockerfiles
- **Bundle 2**: #N, #N — test toolchain minor updates

### Execution Order
1. Fix pre-existing CI issues (if any)
2. Merge low-risk PRs
3. Create and merge bundled PRs, close originals
4. Validate and merge high-risk PRs
```

Wait for user approval before executing.

## Task Tracking

On invocation:

1. `TaskList` — check for existing dependabot triage tasks
2. Create one task per execution phase:
   - `<repo> | dependabot | Phase 0 | Fix CI blockers`
   - `<repo> | dependabot | Phase 1 | Merge N low-risk PRs`
   - `<repo> | dependabot | Phase 2 | Bundle N image PRs`
   - `<repo> | dependabot | Phase 3 | Validate high-risk PRs`
3. `TaskUpdate` as each phase completes

## Troubleshooting

### Problem: CI failures across many Dependabot PRs
**Symptom**: Multiple unrelated PRs fail the same CI check (usually lint).
**Fix**: The CI environment resolves to a newer version of a tool (e.g., pylint
4.x when `>=3.0.0` is pinned). Fix the violations on main first, then rebase.

### Problem: Cannot merge — branch protection requires reviews
**Symptom**: `gh pr merge` fails with permission error.
**Fix**: Use `gh pr review --approve` first, or batch-approve all low-risk PRs
and let the user merge from the GitHub UI.

### Problem: Cannot push to Dependabot branch
**Symptom**: Dependabot branches are read-only for contributors.
**Fix**: Create a new branch from main, apply the same changes plus any fixes,
create a new PR that supersedes the Dependabot one, then close the original.

### Problem: Bundled PR has merge conflicts after merging other PRs
**Symptom**: The bundled PR was created before other PRs were merged.
**Fix**: Rebase the bundled branch onto main:
```bash
git rebase main
```

## Related Skills

- `github:prs` - General PR health analysis
- `github-pr-review` - In-depth review of a single PR. Not bundled in this repo; import via `/plugin install github-pr-review@rossoctl-agent-skills`.
- `ci:status` - Detailed CI check analysis
- `git:rebase` - Fix merge conflicts and rebase branches
- `cve:scan` - Scan dependencies for security vulnerabilities

Attribution

rossoctlrossoctl
View sourceMore from rossoctl →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Terraform Module Library

Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices. Use when creating infrastructure modules, standardizing cloud provisioning, or implementing reusable IaC components.

393431 votes

sematext-otel

Wire a service's OpenTelemetry output to Sematext Cloud. Walks through region, App-type, instrumentation flow (managed OTLP endpoint vs Sematext Agent), and signal selection (traces/metrics/logs), then produces the exact env-var block and points at a runnable reference example in this repo. Invoke when instrumenting a new app for Sematext.

01 votes

Deployment Patterns

Deployment workflows, CI/CD pipeline patterns, Docker containerization, health checks, rollback strategies, and production readiness checklists for web applications. Use when setting up deployment infrastructure or planning releases.

2459130 votes

Babysit

Watch a pull request or review cycle until it is ready to merge. Use when asked to babysit, monitor, or keep checking PR comments, reviews, and CI until all actionable issues are resolved.

929660 votes

V7 Roster

Interact with the Paperclip control plane API for task coordination and governance. Use when checking assignments, updating issue status, posting comments, delegating work, managing routines, or calling Paperclip API endpoints.

805540 votes
View all in devops →