Managing Vulnerabilities logo

Managing Vulnerabilities

Community
trilwu
managing-vulnerabilities

Prioritize and drive remediation of a vulnerability backlog by real risk, not raw CVSS — combining severity with exploitation signals (EPSS, CISA KEV), asset exposure and business context, using SSVC-style decisions, distinguishing reachable from merely present, and tracking remediation and exceptions. Use when triaging scanner output, deciding what to patch first, building a risk-based vulnerability management process, or explaining why a critical CVE is not the top priority.

Overview

Publishertrilwu
Repositorysecskills
Skill namemanaging-vulnerabilities
Stars
144
Forks
15
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by trilwu on GitHub. Read the source before you install it.

Installation

Install the Managing Vulnerabilities AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/trilwu/secskills.git /tmp/secskills
mkdir -p .claude/skills
cp -r /tmp/secskills/secskills-defense/skills/managing-vulnerabilities .claude/skills/managing-vulnerabilities
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Managing Vulnerabilities in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Managing Vulnerabilities on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Managing Vulnerabilities is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Managing Vulnerabilities

A scanner returns ten thousand findings, most rated High or Critical, and the team can patch a few hundred a month. Vulnerability management is the function that decides which few hundred — and the default of "sort by CVSS descending" is close to the worst possible order, because CVSS measures theoretical severity, not the probability that this vulnerability, on this asset, gets exploited.

The whole discipline is turning an undifferentiated backlog into a defensible order of operations that a limited team can actually execute.

When to Use

  • Triaging vulnerability scanner output into a remediation order
  • Deciding what to patch first under a fixed remediation budget
  • Building or reviewing a risk-based vulnerability management process
  • Explaining why a CVSS 9.8 is not this week's top priority
  • Deciding whether a finding warrants an exception rather than a fix

When NOT to Use

  • Working a security alert queue (EDR/SIEM detections) — use triaging-security-alerts; that is detected activity, this is latent weakness
  • Auditing source for new vulnerabilities — use auditing-code-for-vulnerabilities
  • Cloud misconfiguration rather than software CVEs — use hardening-cloud-posture
  • Exploiting a vulnerability to prove it — use the relevant offensive skill

CVSS Is Severity, Not Priority

CVSS base score answers "how bad is this if exploited, in the abstract?" It does not answer "will it be exploited here?" — which is the question remediation order actually turns on. The evidence is stark: the large majority of CVEs are never exploited in the wild, yet most are scored High or Critical. Sorting by CVSS spends the team's finite capacity on vulnerabilities that will never be attacked while genuinely exploited ones wait behind them.

Use CVSS 4.0 as one input — the severity term — and combine it with signals that speak to probability and impact-here.

The Three Signals to Combine

1. Is it being exploited? — EPSS and KEV

  • CISA KEV (Known Exploited Vulnerabilities). A curated catalog of CVEs with confirmed, observed exploitation in the wild. Presence in KEV is the single strongest prioritization signal available: it is not a prediction, it is a fact of exploitation. Anything in your environment that is on the KEV list jumps the queue. For US federal agencies KEV also carries a binding remediation deadline; treat those dates as a sensible default even if you are not bound by them.
  • EPSS (Exploit Prediction Scoring System). A daily-updated machine-learning probability, from 0 to 1, that a CVE will be exploited in the next 30 days. It is a prediction, not observed fact, and it is a probability, not a ranking — a 0.90 means ~90% likely, and most CVEs sit far below 0.10. Use it to rank the long tail that is not (yet) in KEV. Because it updates daily, re-pull it; a CVE's EPSS can climb sharply when exploitation tooling appears.

KEV and EPSS answer different questions — "known exploited" versus "likely to be" — and you want both. KEV is the floor of certainty; EPSS orders everything below it.

2. Is it reachable? — exposure and context

A vulnerability that is present but not reachable is not the same as one an attacker can touch:

  • Is the affected service internet-facing, internal-only, or on an isolated segment?
  • Is the vulnerable code path actually invoked, or is it a dependency present but never called? (Reachability analysis — see auditing-supply-chain for the dependency case.)
  • Is there a compensating control — a WAF rule, network policy, a disabled feature — that breaks the exploit precondition?
  • Does exploitation need authentication, local access, or user interaction that the placement makes unlikely?

An internet-facing, unauthenticated, KEV-listed RCE and an internal, authenticated, same-CVSS bug are not the same priority, whatever the score says.

3. What does it protect? — asset value

The same vulnerability on a domain controller, a crown-jewel database, and a developer's throwaway VM warrants three different urgencies. Tie the finding to asset criticality; a vulnerability management programme without an asset inventory is ranking blind.

Decide with SSVC, Not a Single Number

Rather than collapsing everything into one score, a decision-tree approach (SSVC — Stakeholder-Specific Vulnerability Categorization) asks the questions above in order and lands on an action: exploitation status → exposure → automatable → impact → {track / track* / attend / act}. The value is that each decision is explainable to the team doing the work and to the risk owner signing the exceptions, in a way "it scored 8.7" never is.

Whatever the framing, the output must be an ordered, executable list with owners and dates, not a risk score. The programme's product is patched systems, not a dashboard.

Track Remediation and Exceptions Honestly

  • A finding is open until verified fixed, not until a ticket is closed. Re-scan to confirm; "patched" and "no longer detected" are different claims.
  • Exceptions are decisions with an owner and an expiry, not silent suppressions. "Accepted risk" with no name and no review date is how a KEV CVE sits open for a year.
  • Recurrence is a process finding. The same vulnerability returning after a fix means the base image, the golden template, or the pipeline is reintroducing it — fix the source, not the instance, the same way cloud guardrails beat point-fixes.

Rationalizations to Reject

  • "It's a 9.8, so it's top priority." CVSS is severity, not probability of exploitation. A 9.8 that is not in KEV, has a low EPSS, and sits on an isolated internal host ranks below a 7.5 that is KEV-listed and internet-facing.
  • "It's only a 5.3, we can ignore it." Not if it is KEV-listed and reachable. Observed exploitation outranks a mediocre severity score.
  • "We patch everything Critical within 30 days." A blanket SLA by severity spends the budget by the wrong axis. Patch exploited and reachable within days; let unexploited, unreachable Criticals follow.
  • "The dependency is vulnerable, so we're vulnerable." Only if the vulnerable code path is reachable. Present-but-uncalled is real backlog but not the same urgency as invoked.
  • "EPSS is low, so it's safe." EPSS is a 30-day prediction that moves. Re-pull it, and remember KEV overrides it — observed beats predicted.
  • "We closed the ticket." Closing a ticket is not fixing a vulnerability. Re-scan and verify, or it is still open.
  • "It's an accepted risk." Accepted by whom, reviewed when? An exception with no owner and no expiry is an unmanaged vulnerability wearing a label.

Reading External Sources

Fetch public advisories, specifications, and vendor reports as Markdown:

bash
curl -sL "https://defuddle.md/<url>"      # scheme in the path is optional

This strips page boilerplate — roughly 78% fewer tokens on a prose page — and returns the full text rather than a summary, so you can grep it and trust a negative result.

Three things it is not for. Fetch JSON and API responses raw, because readability extraction mangles structured data. Fetch authenticated or JavaScript-rendered pages directly, because it retrieves them anonymously. And never route adversary infrastructure (phishing links, C2, malware hosting), client-owned hosts, or engagement URLs through it — the request leaves your machine to a third party, and for live adversary infrastructure it also tips off the operator.

Some sites block the extractor and return an error blob rather than the page — {"error":"Failed to fetch: 418 I'm a teapot"} from freedesktop.org, for instance. That is the fetch being refused, not the source saying the thing does not exist. Re-fetch the URL directly before drawing any conclusion from it.

References

  • triaging-security-alerts — the detected-activity counterpart to this latent-weakness work; both rank by real risk under finite capacity
  • auditing-supply-chain — dependency reachability, the input to signal 2 for library CVEs
  • hardening-cloud-posture — the config-misconfiguration counterpart to software CVEs
  • reporting-security-findings — communicating prioritized risk to owners

Frequently asked questions

What does the Managing Vulnerabilities AI skill do?

Prioritize and drive remediation of a vulnerability backlog by real risk, not raw CVSS — combining severity with exploitation signals (EPSS, CISA KEV), asset exposure and business context, using SSVC-style decisions, distinguishing reachable from merely present, and tracking remediation and exceptions. Use when triaging scanner output, deciding what to patch first, building a risk-based vulnerability management process, or explaining why a critical CVE is not the top priority.

Why use Managing Vulnerabilities on TypingMind?

Because you install it once and use it with any model. Managing Vulnerabilities is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Managing Vulnerabilities in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/trilwu/secskills/tree/main/secskills-defense/skills/managing-vulnerabilities. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Managing Vulnerabilities?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Managing Vulnerabilities?

As many as you like. As long as a model supports skills, you can use Managing Vulnerabilities with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Managing Vulnerabilities AI skill free?

Yes. It is published on GitHub by trilwu under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇