From securin-platform
Use this skill when the user asks "how do I fix this exposure", "remediate this vulnerability", "what's the fix for...", "patch guidance for CVE-XXX", "workaround for this vuln", or needs an actionable fix plan for a specific exposure or CVE. The skill reads remediation, solution, and patch fields already populated in the platform (built-in, mapped, or scanner-provided) first, and only offers a web-search enrichment after user confirmation. For prioritization across many exposures use securin-exposure-triage; for global CVE intel use securin-cve-enrichment. Requires the Securin Platform MCP server.
How this skill is triggered — by the user, by Claude, or both
Slash command
/securin-platform:securin-remediation-guidanceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce an **actionable fix plan** for a specific exposure or CVE — drawn primarily from the platform's own remediation content (built-in fields, mapped attributes, scanner-native fields). Web search is an opt-in enrichment, not a default step.
references/_shared/account-preflight.mdreferences/_shared/brand.mdreferences/_shared/composite-fields.mdreferences/_shared/composite-vs-source.mdreferences/_shared/deep-links.mdreferences/_shared/fql-grammar.mdreferences/_shared/groupby-allowlist.mdreferences/_shared/securin_logos/README.mdreferences/_shared/securin_logos/Securin_logo_purple.pngreferences/_shared/securin_logos/Securin_logo_purple.svgreferences/_shared/securin_logos/Securin_logo_rounded.pngreferences/_shared/securin_logos/Securin_logo_rounded.svgreferences/_shared/securin_logos/Securin_logo_white.pngreferences/_shared/securin_logos/Securin_logo_white.svgreferences/_shared/sorting-rules.mdreferences/_shared/source-fields.mdreferences/patch-lookup-patterns.mdProduce an actionable fix plan for a specific exposure or CVE — drawn primarily from the platform's own remediation content (built-in fields, mapped attributes, scanner-native fields). Web search is an opt-in enrichment, not a default step.
exp-abc123"See _shared/account-preflight.md. Required — remediation plans read the user's exposure records.
Before using this skill, read every file in the references folder, including the shared references/_shared/ docs.
getUserProfile — resolve caller's accessible accounts + user-idgetEffectiveAccess / getEffectiveAccessWorkspaces — per-resource access when neededsearchExposureData (source) or exposureQuery (composite) — exposure records; this is where most remediation content lives, under exposure.mappedAttributes.* / compositeExposure.sources.mappedAttributes.* or scanner-specific fieldssearchVulnerabilityData — CVE record with fixed-in version and vendor references (when available)searchAssetData (source) or assetQuery (composite) — asset platform context (OS, version) so the fix advice is relevantsearchComponentData — installed component / package version (for package-manager style remediation)getApiFields(entityType=['EXPOSURE'], searchText='remediation') — discover all remediation-bearing fields for this accountgetApiFields(entityType=['EXPOSURE'], searchText='solution') — same for scanner-native solution fieldsgetApiFields(entityType=['EXPOSURE'], searchText='patch') / 'fix' — same for patch / fix-info fieldsgetConfiguredIntegrations — call early. Returns every configured scanner + ticketing integration with id, name, vendorName, type (SCANNER / TICKETING), and prefix (e.g. WIZ, Q-VMDR, NESSUS, SNYK, SERVICE_NOW_INCIDENT). Two uses:
prefix maps to an integration-specific field group — pass it as fetchGroups to getApiFields(entityType=['EXPOSURE']) to retrieve that integration's remediation/solution/advisory fields (e.g., Qualys solution, Tenable solution, Rapid7 solution). Scanner-native fields often have richer vendor advisory text than the generic exposure.mappedAttributes.vendorRemediation.type = 'TICKETING' to find Jira / ServiceNow / ServiceNow_Incident integrations for draft ticket output.createDeepLink for every list or table of exposure / asset records you surface. Skip only for single-record drilldowns and purely conceptual responses (no customer data list). Do not fabricate or omit links for list responses.exposure.mappedAttributes.vulnerabilityIds = 'CVE-X' AND exposure.status = 'Open'). If many, ask the user whether to plan for all, a subset, or give a CVE-level summary.searchVulnerabilityData on name/aliases; confirm with the user.Fetch the exposure(s) with searchExposureData. Always include at minimum:
"fields": [
"exposure.exposureId",
"exposure.title",
"exposure.scores.scoreLevel",
"exposure.scores.score",
"exposure.mappedAttributes.vulnerabilityIds",
"exposure.mappedAttributes.vendorRemediation",
"exposure.remediationTarget.status",
"exposure.remediationTarget.dueDate",
"exposure.remediationTarget.priority",
"asset.criticality",
"asset.reachability"
]
For richer coverage (account-specific integration fields), pre-discover via getApiFields(entityType=['EXPOSURE'], searchText='remediation') and append matched apiPaths.
The canonical field :
| Field | Notes |
|---|---|
exposure.mappedAttributes.vendorRemediation | Primary source of scanner-provided remediation text. Always request this field first. Example real value: (example: a vendor advisory patch instruction) |
genericExposure.vulnerability.attributes.vendorRemediation | Alternate path on generic-connector exposures |
Secondary / structured remediation fields (also populated on most accounts):
| Field | Type | Use |
|---|---|---|
exposure.remediationTarget.status | enum On Track / Overdue / Met / Missed | SLA state |
exposure.remediationTarget.dueDate | date | Due date |
exposure.remediationTarget.priority | string (P1, P2, …) | Priority band |
exposure.remediationTarget.targetDays | integer | SLA target window |
exposure.scores.remediationScore | number | Platform-computed remediation urgency |
Account-specific integration fields may exist (Qualys, Tenable, CrowdStrike, Rapid7 — discover via getApiFields(entityType=['EXPOSURE'], searchText='remediation')). Present whatever is populated, clearly labeled with the source field.
Run in parallel:
searchAssetData (or composite) to get the affected asset's OS, version, criticality, reachability.
searchVulnerabilityData for the CVE record if not already fetched — confirm severity, KEV, exploit status.
getConfiguredIntegrations — critical step. From the response, identify which SCANNER integration produced the exposure (match the exposure's scanner source to an integration's prefix). Then call:
getApiFields(entityType=['EXPOSURE'], fetchGroups='<PREFIX>', searchText='remediation')
getApiFields(entityType=['EXPOSURE'], fetchGroups='<PREFIX>', searchText='solution')
getApiFields(entityType=['EXPOSURE'], fetchGroups='<PREFIX>', searchText='fix')
to enumerate that scanner's remediation/solution/fix fields. Add those paths to your searchExposureData fields array to pull the scanner-native remediation text. Common integrations and their typical remediation fields:
Q-VMDR, Q-EASM, Q-PC, Q-WAS) — solution fieldNESSUS, TIO_QA, TSC) — solution fieldIVM, IVM_CLOUD, NEXPOSES) — solution fieldWIZ) — remediation steps in the finding recordFS) — remediation fieldSNYK) — fixedIn / remediationTicketing integrations (type = 'TICKETING', e.g. SERVICE_NOW_INCIDENT) surface draft-ticket handoff options in Step 5.
The platform remediation content is often sufficient. Before running web search, ask:
"I found remediation guidance in the platform (sources: ). Want me to also search vendor advisories / KBs on the web for more depth? (Y/n)"
If the user says yes, proceed to Step 5. If no, skip to Step 6.
Only when the user confirmed. Search for:
Read the content — do not just link. Quote the specific steps. See references/patch-lookup-patterns.md.
Organize findings into this structure. Fields you couldn't populate (because the platform didn't have them and web search was declined) are explicitly marked "not available".
## Remediation Plan — <CVE or exposure id>
**Subject:** <CVE> on <asset hostname>
**Severity:** <Critical/High/Medium/Low/Info> (KEV: yes/no, score: <exposure.scores.score>)
**Remediation status:** <On Track / Overdue / Met / Missed> (due <date>, priority <P1/P2/…>)
**Asset:** <hostname> — <OS + version>, criticality <numeric 1–5>, reachability <Exposed / NotExposed>
### Remediation guidance from the platform
_Source: `<field path>` (integration: `<name>`)_
> <quoted content>
_Source: `<another field>`_
> <quoted content>
### Fixed version (if known)
- <version> — source: `<field path>` or vendor advisory
### Workaround
- <quoted or "none documented in platform record">
### Compensating controls
- <quoted or "none documented; consider WAF / network segmentation">
### Pre-patch risk (from platform)
- Other open exposures on the same asset(s): <list or "none">
- Asset criticality: <>
- Reachability: <>
### Ticketing draft (copy-paste)
**Title:** Patch <CVE> on <asset>
**Body:**
> <all of the above, with platform deep link>
> — Drafted by Claude + securin-remediation-guidance. Create manually in your ticketing system (MCP M1 is read-only for write actions).
### Platform links
- Exposure record: <url>
- Vulnerability record: <url>
- All open exposures for this CVE in your account: <url>
### Additional web-sourced references (if the user opted in)
- Vendor advisory: <url> — quoted excerpt: <…>
- KB article: <url> — quoted excerpt: <…>
If getConfiguredIntegrations shows a ticketing integration (Jira, ServiceNow) configured:
See references/patch-lookup-patterns.md for platform-specific upgrade command templates and ticket boilerplate.
exposure.mappedAttributes.remediation or scanner-native solution is usually the best source; skip CVE queries.vulnerabilities.tags = 'Zero Day' set; route via securin-zero-day-exposure-analysis for compensating-controls guidance.securin-cve-enrichment.securin-exposure-triage.securin-threat-correlation.securin-zero-day-exposure-analysis.Securin__search_tools meta-tool to look up the right MCP tool by description.When this skill produces aggregated or multi-row data (counts, trends, distributions, comparisons, single-CVE reports), emit a chart/graph/infographic in the Securin brand palette (#712880 / #453983 / #542ade / #987bf7 / #d7cbfb), Lato font, light theme, with the Securin logo. Default colormap uses the monotone gradient defined in _shared/brand.md. Offer customization after delivery; never default to a different brand.
npx claudepluginhub securin-public/securin-skills --plugin securin-platformGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.