auth
FreeAuthentication and authorization patterns for Rossoctl services
The English summary is being prepared. Showing the original description.
Triage open Dependabot PRs - categorize by risk, bundle duplicates, create fix PRs, approve safe merges
The English summary is being prepared. Showing the original description.
Run score Not tested
See how to installReview the instructions the agent will receive before you install.
Analyze all open Dependabot PRs, categorize by risk, bundle duplicates into single PRs, fix CI blockers, and approve safe merges.
Auto-approved: All
ghread commands are auto-approved. Merge and write commands require user confirmation.
Set these at the start of every session. All commands below use them.
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
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
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
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:
cat $LOG_DIR/dependabot-prs.json | jq -r '{number, title: .title[:80], updated: .updatedAt[:10], mergeable, ci: ([.statusCheckRollup // [] | .[] | select(.conclusion != null) | .conclusion] | unique)}'
gh pr checks <NUMBER> --repo $OWNER/$REPO
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."
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.
Sort each PR into exactly one bucket:
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:
cat $LOG_DIR/dependabot-prs.json | jq -r '.title' | sort | uniq -c | sort -rn | head -10
For each high-risk PR, check the changelog:
gh pr view <NUMBER> --repo $OWNER/$REPO --json body --jq '.body' > $LOG_DIR/pr-<NUMBER>-body.txt
gh pr review <NUMBER> --repo $OWNER/$REPO --approve --body "Low-risk Dependabot update. CI passing."
gh pr merge <NUMBER> --repo $OWNER/$REPO --merge
git checkout -b build/bundle-<description> main
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.
Commit with references to the original PRs:
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>"
git push origin build/bundle-<description>
gh pr create --repo $OWNER/$REPO --title "build(deps): <description>" --body "..."
gh pr close <NUMBER> --repo $OWNER/$REPO --comment "Superseded by #<bundled-PR>"
If CI fails due to pre-existing issues (e.g., stricter linter catches old violations): fix on main first, then rebase the Dependabot PR.
If CI fails due to the dependency change: check out the PR branch, fix locally, push to a new branch that supersedes the original.
For major version bumps in compiled languages (TypeScript, Go):
For major version bumps in test frameworks (pytest, jest):
Local validation pattern:
gh pr checkout <NUMBER> --repo $OWNER/$REPO
# 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
Present the analysis as a table before taking action:
## 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.
On invocation:
TaskList — check for existing dependabot triage tasks<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 PRsTaskUpdate as each phase completesSymptom: 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.
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.
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.
Symptom: The bundled PR was created before other PRs were merged. Fix: Rebase the bundled branch onto main:
git rebase main
github:prs - General PR health analysisgithub-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 analysisgit:rebase - Fix merge conflicts and rebase branchescve:scan - Scan dependencies for security vulnerabilitiesNo reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Authentication and authorization patterns for Rossoctl services
The English summary is being prepared. Showing the original description.
Create confidential OAuth2 clients in Keycloak for server-to-service authentication
The English summary is being prepared. Showing the original description.
Configure MLflow with mlflow-oidc-auth plugin for Keycloak OIDC authentication
The English summary is being prepared. Showing the original description.
Configure OpenTelemetry Collector with OAuth2 authentication for trace export
The English summary is being prepared. Showing the original description.
CI pipeline monitoring, status checks, and PR validation workflows
The English summary is being prepared. Showing the original description.
Monitor running CI jobs, wait for completion, create tasks for results
The English summary is being prepared. Showing the original description.