Fix all vulnerabilities on the current branch using npm audit. Local branch only — no ADO/GitHub queries.
Scanned 6/6/2026
Install to Claude Code
npx -y skills add microsoft/powerplatform-build-tools --skill fix-dependencies --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Fix Dependencies?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/microsoft-fix-dependencies)More formats (shields.io, HTML) on the badges page.
---
name: fix-dependencies
description: Fix all vulnerabilities on the current branch using npm audit. Local branch only — no ADO/GitHub queries.
user-invocable: true
---
# Fix Dependencies
Fix all vulnerabilities on the current branch using `npm audit`. No user input required.
**Scope:** local branch only — no origin sync, no ADO queries, no Dependabot. For S360 / ADO / GitHub alerts use `/security-alerts`.
---
## Step 1 — Audit
```bash
npm audit --json 2>&1
```
Build a fix list. For each vulnerability, apply the first matching rule:
| Condition | Action |
| --------- | ------ |
| `patched_version` exists | Fix it — patch/minor/major all acceptable for security |
| `inBundle: true`, parent has newer version | Upgrade parent (Strategy B) |
| `inBundle: true`, no parent upgrade | Patch lock file directly (Strategy C) |
| `patched_version: null` | Accept risk, document, move on |
| `scope: development` + low severity + no patch | Accept risk, move on |
Known permanent accepted risk — do not flag: `elliptic` (GHSA-848j-6mx2-7j84) via `rewiremock` — dev-only, no patched version.
---
## Step 2 — Fix (no pausing between fixes)
### Strategy A — npm override (non-bundled transitive dep)
Add/update the entry in `"overrides"` in `package.json`, then:
```bash
npm view <pkg>@<version> version # confirm version exists
# edit package.json overrides
npm install 2>&1
npm ls <pkg> 2>&1 # confirm version took effect
```
Hard rules:
- **Never add `"minimatch": "^3.x"` as a flat override** — infinite npm loop
- `ajv` override must stay at `^6.x` — v8 breaks ESLint
- Do not change intentionally-pinned overrides (`nanoid`, `electron-to-chromium`, `@types/node`) unless explicitly asked
### Strategy B — Direct dependency bump
Update the version in `dependencies` or `devDependencies` in `package.json`, then `npm install`.
### Strategy C — Lock file patch (for `inBundle: true` packages)
```bash
# Find all paths for the package
node -e "
const l = require('./package-lock.json');
console.log(
Object.keys(l.packages)
.filter(k => k.endsWith('/<pkg>'))
.map(k => k + ' -> ' + l.packages[k].version + ' inBundle:' + l.packages[k].inBundle)
.join('\n')
);"
# Get safe version metadata
npm view <pkg>@<patched-version> dist.tarball dist.integrity --json
# Patch all matching entries
node -e "
const fs = require('fs');
const l = require('./package-lock.json');
Object.keys(l.packages)
.filter(k => k.endsWith('/<pkg>'))
.forEach(k => {
l.packages[k].version = '<patched-version>';
l.packages[k].resolved = '<tarball-url>';
l.packages[k].integrity = '<integrity>';
});
fs.writeFileSync('./package-lock.json', JSON.stringify(l, null, 2) + '\n');
console.log('Patched');
"
npm install 2>&1
```
### Strategy D — Accept risk
Document in final summary. Do not block or ask.
---
## Step 3 — Verify
```bash
npm audit 2>&1
npm run ci 2>&1
```
`npm run ci` functional tests will fail locally (require `PA_BT_ORG_PASSWORD`) — expected, not a blocker.
If `npm run ci` fails on a non-functional-test step (TypeScript error, lint, unit test), fix it and re-run before continuing. Do not commit a broken build.
---
## Step 4 — Commit and PR (only if Step 3 passes)
```bash
git add package.json package-lock.json
git status # confirm nothing accidental staged
git commit -m "chore: fix dependency vulnerabilities"
```
Then run `/create-pr` to create the pull request.
---
## Final Summary
Print before handing off to `/create-pr`:
- **Fixed:** package, old → new version, strategy used
- **Accepted risk:** package, GHSA ID, reason
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!