deps
Skill2 starsChanged 8 days agoMITView on GitHub
Merge open Dependabot PRs and reconcile GitHub security alerts
9 other projects use a version of this.
Adopted by
Most recently taken up by
- ShiftinBits/constellation-claudetheir own version, first seen Nov 1, 2026
- luisgf/infrabrokertheir own version, first seen Oct 21, 2026
- joa23/linear-clitheir own version, first seen Oct 8, 2026
- mik2win/foureyestheir own version, first seen Oct 8, 2026
- jorekai/skillstheir own version, first seen Sep 7, 2026
- AaravChadha/acstacktheir own version, first seen Jul 30, 2026
Used with
Projects with it also use diagnose, refactor and 2 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
MicrosoftSkilldiagnose
Use to systematically diagnose why scenarios fail — identifies root causes by analyzing agent traces, codebase, and behavioral patterns
Also in 3 projects that use this
GitHubSkillrefactor
Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements.
Also in 3 projects that use this
AWSSkillretro
Conduct a retrospective on a coding session.
Also in 3 projects that use this
Google CloudSkilltriage
Gather context on a change or bug and plan the implementation.
Also in 3 projects that use this
Other versions9 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 9
- joa23/linear-cli★ 144same name
- luisgf/infrabroker★ 13same name
- tykisgod/quick-question★ 12same name
- AaravChadha/acstack★ 2same name
- GlamgarOnDiscord/claude-saas-blueprint★ 2same name
- mik2win/foureyes★ 2same name
- Pradnyeshp/Claude-Skills★ 2same name
- ShiftinBits/constellation-claude★ 2same name
- jorekai/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository37 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- templates/CLAUDE.mdCLAUDE.md
- auditSkill
- backup-patternsSkill
- bash-patternsSkill
- django-patternsSkill
- docker-patternsSkill
- drf-patternsSkill
- engineering-fundamentalsSkill
- fastapi-patternsSkill
- git-patternsSkill
- go-patternsSkill
- graphql-patternsSkill
- investigateSkill
- javascript-patternsSkill
- logging-patternsSkill
- referenceSkill
- metaSkill
- monitoring-patternsSkill
- next-app-router-patternsSkill
- nuxt-patternsSkill
- opentofu-patternsSkill
- prSkill
- python-patternsSkill
- react-patternsSkill
- report-formatSkill
- security-patternsSkill
- slop-patternsSkill
- storybook-patternsSkill
- tailwind-patternsSkill
- test-patternsSkill
- typescript-patternsSkill
- unslopSkill
- vps-provisioningSkill
- vue-patternsSkill
- wcag-auditSkill
- writeSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
23 rules. 0 are common, 17 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
17
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 20
Do not detect the stack.
- Distinctive: line 21
Do not re-list lockfiles.
- Distinctive: line 22
Do not hardcode any tool's syntax.
- Very specific: line 23
Never run checks locally: a PR's CI (gh pr checks) is its gate.
- Very specific: line 44
Do not pass -f state=open: -f sends a body field and makes gh issue a POST, which this read-only endpoint rejects with 404.
- Very specific: line 45
Do not use a bare ?state=open either.
- Distinctive: line 62
Do not assert "disabled" as fact.
- Distinctive: line 63
If a 404 appears only when a filter is attached but not on the bare GET, it is a malformed request: re-issue the bare GET.
- Distinctive: line 71
If $ARGUMENTS scopes to an ecosystem or PR number, filter to it.
- Very specific: line 75
Stop for approval before mutating (rules/workflow.md sections 2 and 4).
- Distinctive: line 94
If still conflicting, resolve locally:
- Distinctive: line 104
Never merge on GitHub mergeability alone.
- Very specific: line 108
Wait for the PR's CI: gh pr checks <n> --watch.
- Distinctive: line 110
After each merge, re-check the next PR's mergeability.
- Distinctive: line 135
If alerts were unavailable, state the severity source and name the slug.
- Distinctive: line 137
every major bump held
- Distinctive: line 138
every PR that failed checks
- Distinctive: line 139
every open alert with no PR
- Distinctive: line 140
if Phase 5 ran, every transitive pin applied (so the debt is visible)
- Very specific: line 147
Only state == "open" alerts are actionable.
- Distinctive: line 148
No opportunistic bumps. Touch only deps named in an open alert or open Dependabot PR.
- Distinctive: line 153
Stop and hand back to the user, without proceeding further, when:
- Distinctive: line 156
No GitHub remote resolves (Precondition 2).
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
General core, best-effort tail. Package-manager agnostic.
The core (Phases 1-4) is ecosystem-agnostic: GitHub normalizes Dependabot PRs and security alerts identically across ecosystems, so merging PRs and reconciling alerts works the same everywhere. The tail (Phase 5) is opt-in.
This command names no specific package manager, lockfile, or manifest.
- Package manager and stack are already injected at session start (
<repo-context>block: stack and location, and apackage-managerline per lockfile directory). Read them from there. For any install, audit, tree query, lockfile regen, or override, derive the correct command from that manager at runtime. - Do not detect the stack.
- Do not re-list lockfiles.
- Do not hardcode any tool's syntax.
- Never run checks locally: a PR's CI (
gh pr checks) is its gate.
Preconditions
- Require
gh. If absent: stop and report. Confirm auth:gh auth status. If unauthenticated, stop. - Resolve the repo slug:
gh repo view --json nameWithOwner -q .nameWithOwner. Call it<slug>. If this fails there is no GitHub remote; stop, this command is GitHub-only. - Base branch:
!kit git-base``. Merge target and rebase base; do not re-derive it. - Working tree must be clean. If
git status --porcelainis non-empty, stop and surface.
Phase 1: inventory
1a. Dependabot PRs
gh pr list --author "app/dependabot" --state open --json number,title,headRefName,mergeable,mergeStateStatus,labels.
Classify each PR by semver bump from its title (Bump x from 1.2.3 to 1.2.4): patch, minor, major.
1b. Dependabot alerts (authoritative for severity; audit is only a cross-check)
Fetch all alerts with one bare GET and filter state client-side in jq.
- Do not pass
-f state=open:-fsends a body field and makes gh issue a POST, which this read-only endpoint rejects with 404. - Do not use a bare
?state=openeither; an unquoted?is a zsh glob. - Let gh follow the Link header with
--paginate; never constructpage/first/last, removed for these endpoints on 2025-10-14.
gh api "repos/<slug>/dependabot/alerts" --paginate \
--jq '.[] | select(.state=="open") | {number, severity: .security_vulnerability.severity, cvss: .security_advisory.cvss.score, ghsa: .security_advisory.ghsa_id, pkg: .dependency.package.name, ecosystem: .dependency.package.ecosystem, scope: .dependency.scope, relationship: .dependency.relationship, manifest: .dependency.manifest_path, fixed: .security_vulnerability.first_patched_version.identifier, range: .security_vulnerability.vulnerable_version_range}'Field paths were verified against a live payload on 2026-07-02; re-check them if the endpoint's shape has moved since. The ecosystem field identifies each alert's ecosystem; use it. state is one of open, fixed, dismissed, auto_dismissed; only open is actionable.
Branch on the outcome (read it with --include and the HTTP/2 <code> line):
- 200: alerts are authoritative for severity. Continue.
- 404 on this bare GET:
- Alerts are unavailable for the repo (disabled, or not visible to the token).
- Record "GitHub Dependabot alerts unavailable for
<slug>" (name the slug). - Fall through to audit-only, flagging every severity "from local audit, may understate".
- Do not assert "disabled" as fact.
- If a 404 appears only when a filter is attached but not on the bare GET, it is a malformed request: re-issue the bare GET.
- 403: token lacks scope. A classic PAT needs
repoorsecurity_events. Stop and tell the user to rungh auth refresh -s security_events. - Any other non-2xx: stop and surface status and body.
1c. Native audit (cross-check only, optional)
A cross-check that may surface advisories GitHub has not yet alerted on. Using the injected package manager, run that ecosystem's native audit if one exists. If the manager has no native audit or its audit tool is not installed, note that and rely on the GitHub alerts alone. A missing audit tool is not an error.
If $ARGUMENTS scopes to an ecosystem or PR number, filter to it.
Phase 2: triage and present
Stop for approval before mutating (rules/workflow.md sections 2 and 4).
- Severity is from 1b when available; where audit and alerts disagree, trust the alert.
- Map each open alert to a PR by package and fixed version.
- Annotate
relationshipandscope; runtime + direct + critical/high is the priority tier.
Group PRs:
- Auto-merge candidates: patch/minor,
mergeable: MERGEABLE,mergeStateStatus: CLEAN. - Conflicted:
mergeStateStatus: DIRTYormergeable: CONFLICTING. - Hold for confirmation: major bumps, and any runtime-scope bump whose advisory flags a breaking change.
Flag open alerts with no PR. By default these are reported, not fixed (see Phase 5).
Present a table: severity, package, ecosystem, scope, relationship, current -> fixed, bump, source (alert / PR / both), action. Wait for approval.
Phase 3: resolve conflicts
gh pr comment <n> --body "@dependabot rebase". PollmergeStateStatus.- If still conflicting, resolve locally:
gh pr checkout <n>git rebase <base>(base from Precondition 3)- Lockfile conflict: take the incoming dependency change, then regenerate the lockfile with the injected manager's lockfile-only install. Never hand-merge a lockfile.
- Manifest conflict: merge both edits keeping the higher compatible version, then regenerate the lockfile.
git addresolved files,git rebase --continue.
- Dependabot branches are bot-owned; force pushing one is
rules/workflow.mdsections 1 and 2.
Phase 4: verify then merge
Never merge on GitHub mergeability alone. The PR's CI is its gate.
Per candidate, in turn:
- Wait for the PR's CI:
gh pr checks <n> --watch. On any failing or missing check: do not merge, record the failing check, leave the PR open, move on. - On pass: merge with the project's convention (read recent merges). Default
gh pr merge <n> --squash --delete-branch. - After each merge, re-check the next PR's mergeability; a merge can newly conflict a sibling.
Process priority-tier alerts first.
Phase 5: manual remediation of alerts with no PR (opt-in, best-effort)
Runs only when $ARGUMENTS contains --fix-transitive; then read reference/fix-transitive.md and follow it. Without the flag, skip to Phase 6.
Phase 6: report
Load the report-format skill and use its format. Write to the path kit scratch-dir deps prints.
Per PR/alert, report these fields:
| Field | Value |
| package | package name |
| ecosystem | dependency ecosystem |
| scope | dependency.scope |
| relationship | dependency.relationship |
| version delta | current -> fixed |
| bump | patch / minor / major |
| severity | from the alert (or local audit if alerts were unavailable) |
| action | merged / held / failed checks / parent bumped / pinned / manual PR opened / no fix available / left for user |
- If alerts were unavailable, state the severity source and name the slug.
- End with "Still open, needs you", listing:
- every major bump held
- every PR that failed checks
- every open alert with no PR
- if Phase 5 ran, every transitive pin applied (so the debt is visible)
Rules
- Core (Phases 1-4) is ecosystem-agnostic. Read the
ecosystemfield on each alert; never assume a default ecosystem. - In Phase 5, prefer a parent bump over a transitive pin. A pin is the fallback, not the default, and it is standing debt; record every one. If the ecosystem's pin mechanism is uncertain, stop and hand back rather than guess.
- Severity is from the GitHub alert list when available, not local audit.
- Only
state == "open"alerts are actionable.fixed,dismissed,auto_dismissedare not. - No opportunistic bumps. Touch only deps named in an open alert or open Dependabot PR.
- Pushing, protected branches, and mutating Bash calls:
rules/workflow.mdsections 1 and 2.
Stop conditions
Stop and hand back to the user, without proceeding further, when:
ghis absent or unauthenticated (Precondition 1).- No GitHub remote resolves (Precondition 2).
- The working tree is dirty at start (Precondition 4).
- The alerts endpoint returns 403 (Phase 1b): token lacks scope.
- Phase 2's proposal table is presented: wait for approval before any mutation.
- A transitive-pin mechanism can't be confirmed for the ecosystem (Phase 5).
- A merge would land on or push to a protected branch (Rules).
A failed-checks PR (Phase 4) is not a full stop: record it as held and continue to the next candidate.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

