thunderid: Skill for Claude Code

.agent/skills/fix-npm-vulnerability/SKILL.md

fix-npm-vulnerability is a skill for Claude Code from thunder-id/thunderid. It costs 55 tokens per session (2,522 once invoked), scanned A, original, Apache-2.0.

A mancode workflow for fixing security advisories in pnpm monorepos, which are repositories containing multiple related packages. It first updates the dependency that introduced the vulnerable package and can use a temporary override when no upstream fix exists.

In plain words
What is it for?
Investigating pnpm audit or Dependabot findings, updating head dependencies, and recording temporary overrides with a GitHub issue.
Why use it?
A vulnerable indirect dependency may not be directly listed in the project. This provides a tracked way to fix or contain it.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

This is thunder-id/thunderid's own configuration. It tells Claude Code how to work on thunderid itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything thunderid configures →

Reuse

Borrowing it

Nothing to install: this file belongs to thunder-id/thunderid. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/thunder-id/thunderid/main/.agent/skills/fix-npm-vulnerability/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/thunder-id/thunderid

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for fix-npm-vulnerability

README.md
[![agentmods](https://agentmods.dev/badge/skills/thunder-id/thunderid/fix-npm-vulnerability/github.svg)](https://agentmods.dev/skills/thunder-id/thunderid/fix-npm-vulnerability)
Your own site
<a href="https://agentmods.dev/skills/thunder-id/thunderid/fix-npm-vulnerability"><img src="https://agentmods.dev/badge/skills/thunder-id/thunderid/fix-npm-vulnerability/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for fix-npm-vulnerability

Your own site · 80×15
<a href="https://agentmods.dev/skills/thunder-id/thunderid/fix-npm-vulnerability"><img src="https://agentmods.dev/badge/skills/thunder-id/thunderid/fix-npm-vulnerability.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 55 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,522 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00055 $0.02522
Opus 5.5 $0.00022 $0.01009
Sonnet 5.5 $0.00011 $0.00504
Haiku 4.5 $0.00006 $0.00252

Measured 5d ago against content hash f548d10cf43d, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

fix-npm-vulnerability scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.agent/skills/fix-npm-vulnerability/SKILL.md · 276 lines

How it starts

The opening of the file, as written. The whole thing — 276 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Fix npm Vulnerability

You are resolving a security advisory in a pnpm monorepo.

Step 0 — Gather the advisory details

Ask the user for one or both of:

What vulnerability do you want to fix? Provide a CVE ID (e.g. CVE-2026-44705), GHSA slug (e.g. GHSA-w7jw-789q-3m8p), or vulnerable package name. Optionally paste the pnpm audit output line for it.

Wait for the answer before proceeding.


Step 1 — Locate the workspace root

Find the directory containing pnpm-workspace.yaml, starting from the current directory and walking up:

dir=$(pwd); while [ "$dir" != "/" ]; do [ -f "$dir/pnpm-workspace.yaml" ] && echo "$dir" && break; dir=$(dirname "$dir"); done

If nothing is found, ask the user to navigate to the monorepo root first.

All subsequent commands run from this root.


Step 2 — Get the full audit picture

pnpm audit --json 2>/dev/null | jq '.advisories // .vulnerabilities // .' 2>/dev/null | head -400

Identify for each advisory matching the user's input:

  • vulnerablePackage — the transitive package that contains the flaw
  • patchedVersions — the version range that fixes it (e.g. >=4.0.6)
  • via — the dependency chain showing which head (direct workspace) dep pulls it in
  • advisoryId — CVE or GHSA identifier
  • severity — high / critical

Step 3 — Traverse the dependency chain

Use pnpm why to confirm the full chain from the workspace to the vulnerable package:

pnpm why <vulnerable-package> 2>&1 | head -60

This shows every head dep that transitively depends on it. Record:

  • The head package(s) (direct workspace deps) pulling in the vulnerable version
  • The current version of those head packages

Step 4 — Check if updating the head dep resolves the issue

For each head package, inspect what version of the vulnerable package its latest release ships:

# Latest available version of the head dep
npm info <head-package> version

# Its full dependency tree for the vulnerable package
npm info <head-package>@latest dependencies --json 2>/dev/null | jq '.<vulnerable-package> // "not direct"'

# If it's deeper, check peer dependencies too
npm info <head-package>@latest peerDependencies --json

Read the full file on GitHub · 276 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago Changed · +27 lines f548d10cf43d
  2. 1mo ago First seen · 249 lines · 55 tokens per session scan A 67856943ebd6

Subscribe to this mod's changes

fix-npm-vulnerability is a skill published in the GitHub repository thunder-id/thunderid (594 stars, last pushed yesterday), licensed Apache-2.0. It adds 55 tokens to every session and 2,522 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.