Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Tenable Nessus is the industry-leading vulnerability scanner used to identify security weaknesses across network infrastructure including servers, workstations, network devices, and operating systems.
.claude/skills/scanning-infrastructure-with-nessus/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-14 | ✗→✓ | ▲ Improved | — | — |
| case-20 | ✓→✓ | = Same ✓ | — | — |
Tenable Nessus is the industry-leading vulnerability scanner used to identify security weaknesses across network infrastructure including servers, workstations, network devices, and operating systems. This skill covers configuring scan policies, running authenticated and unauthenticated scans, interpreting results, and integrating Nessus into continuous vulnerability management workflows.
Nessus operates as a client-server application where the Nessus scanner engine runs as a service (nessusd) on the host system. It uses a plugin-based architecture with over 200,000 plugins updated weekly by Tenable's research team. Each plugin tests for a specific vulnerability, misconfiguration, or compliance check.
Nessus organizes plugins into families including:
bash# Start Nessus service sudo systemctl start nessusd sudo systemctl enable nessusd # CLI management with nessuscli /opt/nessus/sbin/nessuscli update --all /opt/nessus/sbin/nessuscli fix --list # Verify plugin count /opt/nessus/sbin/nessuscli update --plugins-only
Configure a custom scan policy through the Nessus web UI at https://localhost:8834:
For authenticated scanning, configure credentials under the Credentials tab:
# Using Nessus REST API via curl
# Authenticate and get token
curl -k -X POST https://localhost:8834/session \
-d '{"username":"admin","password":"password"}' \
-H "Content-Type: application/json"
# Create scan
curl -k -X POST https://localhost:8834/scans \
-H "X-Cookie: token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"uuid": "<TEMPLATE_UUID>",
"settings": {
"name": "Infrastructure Scan Q1",
"text_targets": "192.168.1.0/24",
"enabled": true,
"launch": "ON_DEMAND"
}
}'
# Launch scan
curl -k -X POST https://localhost:8834/scans/<SCAN_ID>/launch \
-H "X-Cookie: token=<TOKEN>"
# Check scan status
curl -k -X GET https://localhost:8834/scans/<SCAN_ID> \
-H "X-Cookie: token=<TOKEN>"Nessus categorizes findings by severity:
bash# Export via REST API curl -k -X POST "https://localhost:8834/scans/<SCAN_ID>/export" \ -H "X-Cookie: token=<TOKEN>" \ -H "Content-Type: application/json" \ -d '{"format":"nessus"}' # Supported formats: nessus (XML), csv, html, pdf
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 23 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.