agentleFS
thegeekybengthegeekybeng/architecture-governance/skills/vuln-scanner/SKILL.md

vuln-scanner

Skill0 starsChanged 4 months agoMITView on GitHub

Use when the user wants to scan a live website, web application, or network service for security vulnerabilities from the outside (DAST). Triggers: "scan this site", "find vulnerabilities on", "pentest", "security scan URL", "check if this site is vulnerable". Not for source code analysis — use run-security-scanner for SAST instead.

  • Deletes or force-pushes
  • Installs packages

4 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions4 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 4

    1. aaronjmars/aeon★ 789same name
    2. aeonfun/aeon★ 789same name
    3. aaronjmars/miroshark-aeon★ 20same name
    4. MiroShark/miroshark-aeon★ 20same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository4 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 9 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 9

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    All ProjectDiscovery tools ship as pre-compiled binaries — no Go toolchain required.

    line 72
  2. Distinctive:

    If you prefer not to install binaries on the host:

    line 110
  3. Very specific:

    Important: Use -T3 (normal timing) maximum.

    line 157
  4. Very specific:

    Rate limiting is mandatory: Never remove -rate-limit. This prevents overwhelming the target and getting banned or causing disruption.

    line 178
  5. Distinctive:

    Create an artifact at the conversation's artifact directory:

    line 199
  6. Distinctive:

    If critical or high findings exist, generate a disclosure email template:

    line 276
  7. Distinctive:

    If the user wants to scan the full attack surface:

    line 318
  8. Distinctive:

    False positives are common: Before reporting a finding as confirmed:

    line 345
  9. Distinctive:

    Check if the matched URL actually returns the vulnerable response

    line 347
  10. Distinctive:

    Verify the detected version against the CVE's affected versions

    line 348
  11. Distinctive:

    Do not log raw scan output to shared/public locations

    line 356
  12. Distinctive:

    Delete scan artifacts after remediation is confirmed

    line 357

“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

External Vulnerability Scanner (DAST)

Orchestrates external security scanning of live websites and services using Nuclei, nmap, and supporting reconnaissance tools. Produces structured vulnerability reports as artifacts.

⚖️ LEGAL GATE — MANDATORY (No Exceptions)

Before ANY scan executes, the agent MUST present this acknowledgment and obtain explicit user confirmation. No scan runs without a "yes".

┌─────────────────────────────────────────────────────────────────┐
│                    ⚠️  LEGAL ACKNOWLEDGMENT                     │
│                                                                 │
│  Scanning a system without authorization is illegal under:      │
│  • Computer Misuse Act (Singapore)                              │
│  • Computer Fraud and Abuse Act (USA)                           │
│  • Computer Misuse Act 1990 (UK)                                │
│  • Equivalent laws in most jurisdictions                        │
│                                                                 │
│  By proceeding, you confirm:                                    │
│                                                                 │
│  1. You OWN the target system, OR                               │
│  2. You have WRITTEN AUTHORIZATION from the owner to test it    │
│                                                                 │
│  RESPONSIBLE DISCLOSURE:                                        │
│  Any vulnerability discovered will be immediately flagged       │
│  to the site/system owner. This tool is for defensive           │
│  security assessment ONLY — never for exploitation.             │
│                                                                 │
│  DISCLAIMER:                                                    │
│  This tool is provided as-is for authorized security testing.   │
│  The user assumes full legal responsibility for its use.        │
│  The tool author and AI agent bear no liability for misuse.     │
│                                                                 │
│  Do you confirm authorization and accept these terms? (yes/no)  │
└─────────────────────────────────────────────────────────────────┘

If the user says anything other than an unambiguous "yes" → abort. Do not scan. Do not ask again in the same session.

When to Use

  • User wants to scan a live URL or IP for vulnerabilities
  • User asks for a penetration test / security assessment of a running service
  • User wants to check if their deployed app has known CVEs or misconfigurations

When NOT to Use

  • Source code analysis → use run-security-scanner (SAST)
  • Dependency auditing → use scan_dependencies
  • Threat modeling → use determine-threat-model
  • The target is NOT owned by the user and no written auth exists

Prerequisites

The following tools must be installed on the host. The skill will check for each before proceeding and provide install instructions for any missing tool.

All ProjectDiscovery tools ship as pre-compiled binaries — no Go toolchain required. Download from GitHub Releases for your architecture (linux_amd64 for most x86 servers, linux_arm64 for ARM).

ToolPurposeInstall (linux_amd64)
nucleiTemplate-based vuln scanner (CVEs, misconfigs, exposures)See install commands below
nmapPort/service enumeration + NSE vuln scriptssudo apt install nmap
httpxHTTP probing and technology detectionSee install commands below
subfinder(Optional) Subdomain enumerationSee install commands below

Install via pre-compiled binaries

# Nuclei
curl -sL https://github.com/projectdiscovery/nuclei/releases/latest/download/nuclei_$(curl -sL https://api.github.com/repos/projectdiscovery/nuclei/releases/latest | grep tag_name | cut -d'"' -f4 | sed 's/v//')_linux_amd64.zip -o /tmp/nuclei.zip \
  && unzip -o /tmp/nuclei.zip -d /tmp/nuclei-bin \
  && sudo mv /tmp/nuclei-bin/nuclei /usr/local/bin/ \
  && rm -rf /tmp/nuclei.zip /tmp/nuclei-bin

# httpx
curl -sL https://github.com/projectdiscovery/httpx/releases/latest/download/httpx_$(curl -sL https://api.github.com/repos/projectdiscovery/httpx/releases/latest | grep tag_name | cut -d'"' -f4 | sed 's/v//')_linux_amd64.zip -o /tmp/httpx.zip \
  && unzip -o /tmp/httpx.zip -d /tmp/httpx-bin \
  && sudo mv /tmp/httpx-bin/httpx /usr/local/bin/ \
  && rm -rf /tmp/httpx.zip /tmp/httpx-bin

# subfinder (optional)
curl -sL https://github.com/projectdiscovery/subfinder/releases/latest/download/subfinder_$(curl -sL https://api.github.com/repos/projectdiscovery/subfinder/releases/latest | grep tag_name | cut -d'"' -f4 | sed 's/v//')_linux_amd64.zip -o /tmp/subfinder.zip \
  && unzip -o /tmp/subfinder.zip -d /tmp/subfinder-bin \
  && sudo mv /tmp/subfinder-bin/subfinder /usr/local/bin/ \
  && rm -rf /tmp/subfinder.zip /tmp/subfinder-bin

# nmap
sudo apt install -y nmap

Alternative: Docker (no host install needed)

If you prefer not to install binaries on the host:

# Nuclei via Docker
docker run --rm projectdiscovery/nuclei -u <TARGET_URL> -severity high,critical

# httpx via Docker
echo "<TARGET_URL>" | docker run --rm -i projectdiscovery/httpx -silent -tech-detect

# subfinder via Docker
docker run --rm projectdiscovery/subfinder -d <domain>

Scan Workflow

1. LEGAL GATE        → Present acknowledgment, require explicit "yes"
2. RECON             → Probe target with httpx (tech stack, status, headers)
3. PORT SCAN         → nmap service detection on common ports
4. VULN SCAN         → Nuclei with severity-filtered templates
5. REPORT            → Generate structured artifact with findings
6. DISCLOSURE DRAFT  → Generate responsible disclosure template if critical findings exist

Step 1: Legal Gate

Present the acknowledgment block above. Wait for confirmation. Abort on anything other than explicit consent.

Step 2: Reconnaissance

# Probe the target — tech detection, status codes, response headers
echo "<TARGET_URL>" | httpx -silent -tech-detect -status-code -title \
  -content-length -web-server -follow-redirects -json -o recon.json

Parse and summarize: HTTP status, web server, technologies detected, title, security headers present/missing.

Step 3: Port Scan

# Service detection on top 1000 ports (non-intrusive)
nmap -sV -sC --top-ports 1000 -oN nmap_scan.txt -oX nmap_scan.xml <TARGET_HOST>

Important: Use -T3 (normal timing) maximum. Never use -T4 or -T5 on targets you don't control infrastructure for — it's aggressive and may trigger IDS/IPS or cause service disruption.

Step 4: Vulnerability Scan

# Update Nuclei templates first
nuclei -update-templates

# Run scan — filter to medium+ severity, output JSON
nuclei -u <TARGET_URL> -severity medium,high,critical \
  -json -o nuclei_findings.json \
  -rate-limit 50 \
  -bulk-size 25 \
  -concurrency 10 \
  -timeout 10 \
  -retries 2 \
  -no-interactsh

Rate limiting is mandatory. Never remove -rate-limit. This prevents overwhelming the target and getting banned or causing disruption.

Template categories to include:

CategoryWhat it catches
cves/Known CVEs in detected software
vulnerabilities/Generic web vulns (SQLi, XSS, SSRF, etc.)
misconfiguration/Security misconfigs (open redirects, CORS, etc.)
exposures/Exposed panels, configs, backups, debug endpoints
technologies/Technology fingerprinting

To scan specific categories only:

nuclei -u <TARGET_URL> -t cves/ -t exposures/ -severity high,critical \
  -json -o nuclei_critical.json -rate-limit 50 -no-interactsh

Step 5: Generate Report

Create an artifact at the conversation's artifact directory:

Filename: vuln_scan_report_<target_domain>_<YYYY-MM-DD>.md

Report structure:

# Vulnerability Scan Report

> [!CAUTION]
> This report contains security findings. Handle with care.
> Any critical or high findings must be disclosed to the site owner immediately.

## Target Information

| Field | Value |
|-------|-------|
| Target URL | `<url>` |
| Scan Date | YYYY-MM-DD HH:MM (timezone) |
| Scanner | Nuclei vX.X.X + nmap X.XX |
| Authorization | Confirmed by user (self-owned / written auth) |

## Executive Summary

- **Critical:** X findings
- **High:** X findings
- **Medium:** X findings
- **Info:** X findings (if any)

## Findings

### 🔴 Critical

#### [CVE-XXXX-XXXXX] <Title>
- **Severity:** CRITICAL
- **CWE:** CWE-XXX
- **URL:** `<matched_url>`
- **Description:** ...
- **Remediation:** ...
- **Reference:** <link to CVE/advisory>

### 🟠 High
...

### 🟡 Medium
...

## Reconnaissance Summary

### HTTP Probe
- Status: ...
- Server: ...
- Technologies: ...
- Security Headers: (present/missing checklist)

### Open Ports
| Port | Service | Version |
|------|---------|---------|

## Responsible Disclosure

> [!IMPORTANT]
> If this scan was performed on a third-party system with authorization,
> the following findings MUST be reported to the system owner.

<disclosure draft — see Step 6>

## Disclaimer

This scan was performed with explicit authorization from the system owner.
The results are provided for defensive security assessment purposes only.
Any vulnerability discovered is flagged for immediate remediation.
Unauthorized use of these findings for exploitation is strictly prohibited.

Step 6: Responsible Disclosure Draft

If critical or high findings exist, generate a disclosure email template:

## Disclosure Email Template

Subject: Security Vulnerability Report — <domain>

Dear Security Team,

During an authorized security assessment of <domain> conducted on <date>,
the following vulnerabilities were identified:

1. [CRITICAL] <title> — <brief description>
2. [HIGH] <title> — <brief description>

**Impact:** <brief impact summary>

**Recommended Actions:**
- <remediation step 1>
- <remediation step 2>

I am available to provide additional technical details or assist with
remediation. Please acknowledge receipt within 5 business days.

This report follows responsible disclosure practices. A 90-day disclosure
window is standard — findings will not be published before that period
or before remediation, whichever comes first.

Regards,
<your name>

Quick Scan vs Full Scan

ModeCommandUse When
Quicknuclei -u <URL> -severity critical,high -rate-limit 100 -no-interactshFast check for critical issues only
StandardFull workflow aboveRegular security assessment
DeepAdd -t cves/ -t vulnerabilities/ -t exposures/ -t misconfiguration/ + nmap --script vulnComprehensive audit

Subdomain Enumeration (Optional)

If the user wants to scan the full attack surface:

# Find subdomains
subfinder -d <domain> -silent -o subdomains.txt

# Probe which are alive
cat subdomains.txt | httpx -silent -o alive_hosts.txt

# Scan all alive hosts
nuclei -l alive_hosts.txt -severity medium,high,critical \
  -json -o nuclei_full.json -rate-limit 30 -no-interactsh

Common Mistakes

MistakeFix
Scanning without legal confirmationAlways present the legal gate first
Removing rate limitsKeep -rate-limit — always
Using aggressive nmap timing (-T5)Use -T3 maximum on external targets
Scanning targets user doesn't ownAbort — no exceptions
Not generating disclosure draftAlways generate for critical/high findings
Running --interactsh on third-party targetsUse -no-interactsh — OOB testing hits external servers

Interpreting Results

False positives are common. Before reporting a finding as confirmed:

  1. Check if the matched URL actually returns the vulnerable response
  2. Verify the detected version against the CVE's affected versions
  3. Cross-reference with the technology stack detected in recon
  4. Mark unverified findings as "Requires Manual Verification" in the report

Security of Scan Data

  • Scan results contain sensitive information — treat as confidential
  • Reports are stored only in the conversation artifact directory
  • Do not log raw scan output to shared/public locations
  • Delete scan artifacts after remediation is confirmed

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.