repo-deps
Skill1 starsChanged 32 days agoMITView on GitHub
Security & dependency pass over active repos, covering vulnerabilities (npm/pip/cargo/dotnet audit), outdated deps, secret scan, and unpinned GitHub Actions. Analysis half is read-only and runs monthly on cron; remediation applies SAFE minor/patch bumps interactively per tier policy and flags majors. Use when the user says "repo-deps", "dependency audit", "security audit my repos", "check for vulnerable deps", or "/repo-deps".
- Reads credentials
In this repository19 other files it gives its agents.
- AGENTS.mdAGENTS.md
- cj-abSkill
- cj-ambitionSkill
- cj-automateSkill
- cj-cloudflare-workerSkill
- cj-code-reviewSkill
- cj-dailySkill
- cj-meetingsSkill
- cj-notesSkill
- cj-nowSkill
- cj-owa-toolsSkill
- cj-thingsSkill
- cj-todoSkill
- cj-uxloopSkill
- cj-video-visionSkill
- cj-voice-dnaSkill
- repo-deepSkill
- repo-groomSkill
- repo-healthSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 10
A) Analysis: read-only. repo-deps.py runs each repo's native audit tools without modifying anything and writes REPO-DEPS.md in the code …
- Very specific: line 20
If ~/.config/cj-skills/repo-deps.md exists, read it before acting.
- Very specific: line 65
Run the script (or read the cron-written REPO-DEPS.md).
- Distinctive: line 74
Do this ONE repo at a time, highest priority first.
- Very specific: line 85
Commit per tier: S-priv/S-pub commit + push.
- Distinctive: line 88
Majors: never auto-bump. List them (package, current -> latest, likely breaking change) for the user to schedule manually.
- Distinctive: line 90
Secrets: never auto-remediate. Report the hit.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
repo-deps
The security & dependency fixer in the repo-routine family. Two halves:
- A) Analysis: read-only.
repo-deps.pyruns each repo's native audit tools without modifying anything and writesREPO-DEPS.mdin the code root. This is the half a scheduled job can run (--analysis). - B) Remediation: writes. Applies SAFE (minor/patch) dep bumps as commits, one repo at a time, tests after each, per tier policy. Majors are flagged for manual review, never auto-bumped. Secrets are never auto-remediated. This half is interactive only. It is NOT in the script and never runs on cron.
Local overlay
If ~/.config/cj-skills/repo-deps.md exists, read it before acting. It holds this user's own profiles, paths and conventions, and it wins over the defaults here.
Scope & tiers
.repo-tiers.json in the code root ($REPO_ROOT, default ~/code; schema in the repo-health skill's references/tiers.md) maps repos to tiers. Without the file every discovered repo is audited. Analysis covers the active tiers
(S-priv / S-pub / W / W-ro); archive and external are skipped.
Remediation autonomy per tier:
| Tier | Analysis | Remediation |
| S-priv | yes | commit and push safe bumps |
| S-pub | yes | commit + push safe bumps; releases/tags need approval |
| W | yes | branch + local commit only, user pushes; never push |
| W-ro | yes | report only; never commit/branch/push |
| archive / external | no | never touched |
Priority order in the report and when remediating: deployed services first
(repos with a root deploy config such as wrangler.*), then public (S-pub), then private (S-priv), then work (W/W-ro).
A) Analysis: run it
<skill-dir>/repo-deps.py # all active repos
<skill-dir>/repo-deps.py CLI/mytool # one or more repos
<skill-dir>/repo-deps.py --stdout # don't write the fileFlags: --root (default $REPO_ROOT, else ~/code), --out (default REPO-DEPS.md),
--analysis (explicit no-op; the script is analysis-only and the flag documents cron
intent), --jobs, --stdout.
Per stack it runs, where the tool exists: Node npm/pnpm outdated +
audit --package-lock-only; Python uvx pip-audit (from uv export --frozen
or requirements.txt); Rust cargo audit + cargo outdated; .NET
dotnet list package --vulnerable / --outdated (two calls). Plus a secret
scan (gitleaks --redact if installed, else a regex fallback that reports only
pattern name + file:line, never the value) and a GitHub Actions pinned-by-SHA
check. Missing tools (cargo-audit, gitleaks, …) are noted and skipped. A
missing tool never fails the run.
Network: npm audit / pip-audit hit advisory APIs, so a run needs
network; each tool call has a timeout and the sweep continues past hangs.
Then (analysis)
- Run the script (or read the cron-written
REPO-DEPS.md). - Present in chat: the summary counts, then the deployed/public repos with real vulnerabilities first. Point at the file for the full table; don't paste it.
- False positives from the regex secret fallback are expected (it flags
patterns in test fixtures and
.env.examplefiles). Verify before alarming. - Offer remediation on the highest-priority repo with real, fixable vulns.
B) Remediation: interactive, per tier policy
Do this ONE repo at a time, highest priority first. For each repo:
- Show the proposed bumps and get the user's OK before committing. List the SAFE (minor/patch) bumps you intend to apply and the MAJOR bumps you are flagging but NOT applying. Wait for explicit approval.
- Apply only the safe bumps (
npm update <pkg>/npm audit fixwithout--force;uv lock --upgrade-package <pkg>;cargo update -p <pkg>;dotnet add package <pkg>). Nevernpm audit fix --force, which pulls majors. - Run that repo's build/test and confirm green before committing. If tests fail, revert the bump and flag it for manual review. Don't commit red.
- Commit per tier: S-priv/S-pub commit + push; W branch + local commit only, no push; W-ro/archive/external never commit. Releases/tags on S-pub still need user approval.
- Majors: never auto-bump. List them (package, current -> latest, likely breaking change) for the user to schedule manually.
- Secrets: never auto-remediate. Report the hit; if it's real, tell the user to rotate the credential and scrub history themselves.
Notes
- The script is read-only by construction; the monthly cron can never write to a repo. All writes happen here, interactively, under the tier matrix above.
npm outdatedwithout an installednode_modulesreturns sparse results;npm audit --package-lock-onlystill finds vulnerabilities from the lockfile.- Schedule: when a monthly launchd job is set up, it runs
python3 <skill-dir>/repo-deps.py --analysis. The script prepends/opt/homebrew/bin,~/.local/binand the fnm default node bin to PATH, since launchd starts with a bare one. pip-auditon a repo with many extras (e.g.yaams) takes about 5 minutes; its timeout is a flat 600 s.
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.

