address-cves
Find and fix high and critical application dependency CVEs across all non-archived GitHub repositories available to the authenticated gh CLI user.
Skill by RubenGlez
Chalk Labs
Need help deploying address-cves?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/rubenglez-address-cves
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, testing, devops, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/address-cves
What's inside
- Skill name
address-cves- Description
- Find and fix high and critical application dependency CVEs across all non-archived GitHub repositories available to the authenticated gh CLI user. Use when the user asks to address, remediate, audit, patch, or report severe CVEs/security advisories across many repos, including cloning missing repos, scanning dependencies and GitHub Actions, making dependency changes, testing, committing, pushing, merging to main after validation, cleaning branches, and producing a Markdown stdout report.
- License
- MIT
- Instructions
- 158 lines in SKILL.md · view on GitHub
Files (2)
- REFERENCE.md
- SKILL.md
SKILL.md (first lines)
# Address CVEs
Remediate high and critical application dependency vulnerabilities across repositories discovered with `gh`. Work repo-by-repo, preserve user changes, validate before merging, and report exactly what happened.
Read [REFERENCE.md](REFERENCE.md) when choosing scanners, upgrade strategies, or validation commands for a specific ecosystem.
## Operating Contract
- Discover repos with `gh`; include private repos; exclude archived repos.
- Clone missing repos into `~/workspace`.
- Skip dirty local repos and report them.
- Address only high and critical vulnerabilities. Low and moderate findings are noise: never fix them, never let them fail validation, never let them pad the report.
- Include runtime and dev dependencies; label dev-only findings when detectable.
Severity and dependency scope are independent filters, and they move in opposite directions. Keep them straight:
| Axis | Rule | Flag |
|---|---|---|
| Severity | Narrow. High/critical only. | `--audit-level=high` — always |
| Dependency scope | Wide. Runtime *and* dev. | `--prod` / `--omit=dev` — never |
Narrowing the severity filter is the point of this skill. Narrowing the dependency scope hides real findings: a prod-filtered scan reports clean while high-severity dev findings remain.
- Include GitHub Actions/workflow dependency issues.
- Exclude Docker base image and OS package CVEs.
- Prefer temporary scanner runners (`npx`, `uvx`, `pipx run`, `go run`, etc.) over installing scanner tools into projects.
- Prefer the smallest safe upgrade.
- Attempt breaking migrations when required to fix a high/critical issue.
- Prefer direct dependency upgrades; use low-risk overrides/resolutions for transitive issues when needed and report them as maintenance debt.
- Replace abandoned packages when that is the practical fix.
- Create, commit, push, validate, merge to `main`, push `main`, then delete local and remote security branches only when validation passes.
- If validation fails after changes, clean up the security branch and report the failed attempt.
- Produce the final report as Markdown on stdout only.
## Step 1: Discover Repositories
Confirm `gh auth status` works. If not, stop and ask the user to authenticate.
Check the token scopes in that output. Listing Dependabot alerts needs `admin:repo_hook`; without it those calls fail with a permissions error mid-run. If it is missing, tell the user to run `gh auth refresh -h github.com -s admin:repo_hook` themselves — it is an interactive device flow that will hang if you run it in the background — then continue with ecosystem scanners and note the gap.
Build the repo set from the authenticated account and its orgs:
1. Get the viewer login with `gh api user --jq .login`.
2. List non-archived repos for the viewer with `gh repo list <login> --limit 1000 --json nameWithOwner,isArchived,isPrivate,url,defaultBranchRef`.
3. List orgs with `gh org list --limit 1000`; for each org, list repos with the same `gh repo list` fields.
4. Deduplicate by `nameWithOwner`.
5. Keep only `isArchived == false`.
For each repo, ensure it exists under `~/workspace/<repo-name>` unless a matching clone already exists. Prefer `~/workspace/<owner>/<repo>` if multiple owners have the same repo name.
## Step 2: Preflight Each Repo
For each repo:
1. Fetch default branch and remotes.
2. If the worktree is dirty, skip it and add it to the report.
3. Checkout and update the default branch, expected to be `main` unless the repo metadata says otherwise.
4. Create or reset a local branch named `security/fix-high-critical-cves` from the updated default branch.
Do not overwrite user work. If the branch already exists and contains unmerged local work, inspect the commits before deciding:
- **Leftovers from a previous run of this skill** — recognisable by the `fix: address high and critical CVEs` subject and a `Claude-Session` trailer from an earlier session. These are not user work. Their lockfiles are stale and predate current advisories, so rebuilding from the updated default branch beats salvaging them. Ask the user to confirm, then delete the branch and redo.
- **Anything else** — stop for that repo and report it.
Treating the skill's own leftovers as user work strands repos that have real findings, which is the opposite of the intent.
## Step 3: Establish Baseline
Before changing dependencies:
1. **Enumerate every tracked lockfile and manifest with `git ls-files`.** Do not use `find`: it misses files deeper than whatever `-maxdepth` you picked and it picks up untracked build artifacts, vendored copies and agent worktrees that are not the repo's problem. Only tracked files ship.
2. Treat **each lockfile as its own scan target**, run from its own directory. A repo is not one scan. Monorepo packages covered by a root workspace lockfile scan together; a nested directory with its own lockfile does not, and is the easiest thing in this whole skill to miss.
3. Detect the package manager per lockfile, and discover validation commands from CI first, then package scripts, Makefile targets, language metadata, and README.
4. Run targeted baseline checks where available. Record failures but do not skip the repo only because baseline checks fail.
5. Run scanners and keep only high/critical findings.
Every lockfile enumerated in step 1 must appear in the final report as either scanned or explicitly out of scope, with the reason. An unaccounted-for lockfile is an unscanned lockfile.
Templates and scaffolds deserve extra attention: a lockfile under a `template/`, `starter/` or `examples/` directory is copied into user projects, so its vulnerabilities are distributed rather than merely local.
### Use both scanners, always
Ecosystem scanners and GitHub advisory data are complementary, not redundant — each routinely finds high-severity issues the other misses. Run both and reconcile:
- Establish whether Dependabot is even enabled with `gh api /repos/{owner}/{repo}/vulnerability-alerts` (204 = enabled, 404 = disabled). **A 403 or any other API error means "unknown", never "clean".** Conflating a permissions failure with an empty result silently marks vulnerable repos as safe.
- Where the two disagree, trust neither: check the specific package against the registry and the advisory record, then report the discrepancy.
Use scanner output plus package manifests/lockfiles to determine whether each finding is runtime or dev-only when possible.
## Step 4: Fix Findings
Before choosing a strategy, **confirm the patched version actually exists in the registry** (`npm view <pkg> versions`, or the ecosystem equivalent). Scanners report advisory metadata, and a "patched in X" range can name a version that was never published — in which case upgrading is not an option at all and you must jump to replacement. Do not plan an upgrade you have not confirmed is installable.
Where a finding spans several release lines, **fetch the authoritative ranges** with `gh api /advisories/<GHSA>` rather than inferring scope from which repos a scanner happened to flag. Scanners surface a finding only where their heuristics reach; the advisory record is what actually defines who is affected, and older major lines are frequently affected too.
Fix high/critical findings in this order:
1. Upgrade the direct dependency to the smallest patched version.
2. Upgrade the parent dependency that brings in a vulnerable transitive dependency.
3. Add an override/resolution only when the patched transitive version is plausibly compatible.
4. Attempt required breaking migrations when no non-breaking fix exists.
5. Replace abandoned packages when no maintained patched path exists.
6. Update GitHub Actions versions for high/critical workflow advisories.
Keep changes scoped to vulnerability remediation and required migrations. Do not perform unrelated refactors.
Editing an overrides/resolutions block can rewrite a large part of the lockfile, because it invalidates the cached resolution and the package manager re-renders the whole peer graph. That is expected and is not a reason to abandon a correct fix. Verify it is representation-only rather than eyeballing the diff size: extract the set of resolved `package@version` entries before and after and confirm nothing was added or removed. Report the churn so a large diff does not read as an unexplained change.
## Step 5: Validate
After changes:
1. Re-run the scanners **over the same set of lockfiles enumerated in Step 3**, with the same unfiltered dependency scope, and confirm no high/critical findings remain. Verifying a narrower scope than you discovered produces a false clean.
2. Check CI for hardcoded toolchain versions that override the manifest. A workflow that pins the tool version (for example `pnpm/action-setup` with an explicit `version:`, overriding `packageManager`) silently keeps installing the vulnerable version no matter what the manifest says. When the fix was a toolchain bump, the manifest and CI must agree; prefer removing the pin so CI reads the manifest and the two cannot drift apart again.
3. Run targeted checks first.
4. Run full validation after targeted checks: install/restore, lint/typecheck, tests, build, and smoke checks when discoverable.
5. Compare failures with the baseline. Pre-existing failures may remain; new failures block merge.
Validation passes only when high/critical findings are fixed and no new regressions appear. Low and moderate findings that remain are expected and do not block anything.From RubenGlez/harness, MIT.
More from RubenGlez/harness
- 0.552score
metrics
RubenGlez
Measure traction and discoverability across all non-archived GitHub repos and their publications (npm, App Store, Play Store, web properties), judge each…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
migrate-docs
RubenGlez
Discover all documentation in the repo, classify each file, transform content to match harness templates, and migrate everything to the correct location.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
task
RubenGlez
Make a small change to a shipped product — a bug fix, behavior tweak, or micro-feature — as one verified slice, syncing the affected feature spec on the way…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
prototype
RubenGlez
Build throwaway code to answer a specific design question before committing to an implementation approach.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
write-a-skill
RubenGlez
Create new harness skills with proper structure, progressive disclosure, and bundled resources.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
next-step
RubenGlez
Recommends the next harness skill to use by inspecting the repo, docs, git state, and recent work.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
dev-plan
RubenGlez
Analyze product docs and the codebase to decide architecture, tech stack, and implementation approach, then generate a technical spec for every must-have…
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
implement
RubenGlez
Classify planned features as autonomous or human-approval-required, then implement the current phase as parallel vertical slices — one subagent per feature.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
product-plan
RubenGlez
Define the full product vision — audience, positioning, features, roadmap, and UX direction — through a structured interview.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
qa
RubenGlez
Test implemented features against their acceptance criteria, fix simple failures, and write a QA report.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
update-docs
RubenGlez
Update all project documentation to reflect the current state of the codebase.
SkillBFreshness: B★ 1Claude Code +9 - 0.497score
evolve
RubenGlez
Define what to add, change, or extend on an existing product through a product-level interview, then update the harness docs and hand off to dev-plan.
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jul 21, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/RubenGlez/harness
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from RubenGlez
- 0.552score
metrics
RubenGlez
Measure traction and discoverability across all non-archived GitHub repos and their publications (npm, App Store, Play Store, web properties), judge each…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
task
RubenGlez
Make a small change to a shipped product — a bug fix, behavior tweak, or micro-feature — as one verified slice, syncing the affected feature spec on the way…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
migrate-docs
RubenGlez
Discover all documentation in the repo, classify each file, transform content to match harness templates, and migrate everything to the correct location.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
prototype
RubenGlez
Build throwaway code to answer a specific design question before committing to an implementation approach.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
next-step
RubenGlez
Recommends the next harness skill to use by inspecting the repo, docs, git state, and recent work.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
write-a-skill
RubenGlez
Create new harness skills with proper structure, progressive disclosure, and bundled resources.
SkillBFreshness: B★ 1Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get address-cves running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
address-cves skill. Agent Mart. https://agentmart.dev/skills/rubenglez-address-cves (last updated 2026-10-24)