Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aeondave avatar

Zap

  • 2 installs
  • 12 repo stars
  • Updated August 4, 2026
  • aeondave/malskill

zap is a Claude Code reference skill for OWASP ZAP, a free open-source web application scanner and intercepting proxy.

About

zap is a Claude Code reference skill for OWASP ZAP, a free open-source web application scanner and intercepting proxy. It documents the baseline (passive), full active, and API scan scripts, the YAML Automation Framework, and the REST and Python APIs for daemon-mode scanning. Developers and pentesters use it for DAST in CI/CD and manual web app security testing.

  • Reference for OWASP ZAP, a free open-source web app scanner and proxy
  • Covers baseline (passive), full active, and API scan scripts plus CI use
  • Documents the YAML Automation Framework and REST/Python APIs

Zap by the numbers

  • 2 all-time installs (skills.sh)
  • Ranked #1,788 of 2,203 Security skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

zap capabilities & compatibility

Free open-source (Apache-2.0); runs via Docker or Java 11+.

Capabilities
web app pentest · dast scanning · api scanning
Works with
docker
Use cases
security audit · ci cd
Platforms
Linux · macOS · Windows
Pricing
Free
From the docs

What zap says it does

Free web app scanner — active/passive DAST, API scanning, CI/CD integration.
SKILL.md
| `zap-baseline.py` | Passive only | Safe for prod — CI/CD gate |
SKILL.md
npx skills add https://github.com/aeondave/malskill --skill zap

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2
repo stars12
Last updatedAugust 4, 2026
Repositoryaeondave/malskill

What it does

Run passive or active DAST scans against a web app or API with OWASP ZAP, including in a CI/CD gate.

Who is it for?

Passive DAST in CI/CD and full active web app or API scanning.

Skip if: Running active (attack) scans against production without care; baseline is the prod-safe mode.

When should I use this skill?

You want to scan a web app or API for vulnerabilities, especially inside a pipeline.

By the numbers

  • 3 scan scripts: baseline, full-scan, api-scan

Files

SKILL.mdMarkdownGitHub ↗

OWASP ZAP

Free web app scanner — active/passive DAST, API scanning, CI/CD integration.

Quick Start

# Docker baseline scan (passive, safe for prod)
docker run --rm zaproxy/zap-stable zap-baseline.py -t https://target.com

# Full active scan
docker run --rm zaproxy/zap-stable zap-full-scan.py -t https://target.com

# API scan (OpenAPI spec)
docker run --rm zaproxy/zap-stable zap-api-scan.py \
    -t https://target.com/openapi.json -f openapi

# Daemon mode
zap.sh -daemon -port 8080 -host 127.0.0.1 -config api.key=MYKEY

Scan Scripts

ScriptModeUse
zap-baseline.pyPassive onlySafe for prod — CI/CD gate
zap-full-scan.pyActive (attacks)Comprehensive pentest
zap-api-scan.pyActive — API focusedOpenAPI / SOAP / GraphQL

zap-baseline.py Flags

FlagPurpose
-t <url>Target URL
-r <file>HTML report output
-J <file>JSON report output
-x <file>XML report output
-aInclude alpha-quality passive rules
-dDebug mode
-m <min>Spider duration (default: 1)
-jUse AJAX spider
-z <options>Pass options to ZAP directly
-c <config>Config file for FAIL/WARN overrides

zap-full-scan.py Flags

FlagPurpose
-t <url>Target URL
-r <file>HTML report output
-m <min>Spider duration (minutes)
-z <options>ZAP options (e.g., -config api.key=KEY)
-aInclude alpha active rules
-jUse AJAX spider
-l <level>Alert level: PASS / IGNORE / WARN / FAIL
-s <policy>Scan policy

zap-api-scan.py Flags

FlagPurpose
-t <file/url>OpenAPI/SOAP/GraphQL spec (local or URL)
-f <format>Format: openapi / soap / graphql
-r <file>HTML report
-J <file>JSON report
-n <context>Context file

Automation Framework (YAML)

Recommended approach for complex scans:

# zap-automation.yaml
env:
  contexts:
    - name: Default
      urls:
        - https://target.com
      includePaths:
        - https://target.com.*
  parameters:
    failOnError: true

jobs:
  - type: spider
    parameters:
      maxDuration: 2
      maxDepth: 5

  - type: spiderAjax
    parameters:
      maxDuration: 2

  - type: activeScan
    parameters:
      policy: Default Policy

  - type: report
    parameters:
      template: traditional-html
      reportFile: report.html

  - type: alertFilter
    rules:
      - ruleId: 10016
        newRisk: False Positive
        url: https://target.com/login
zap.sh -cmd -autorun zap-automation.yaml

REST API (Daemon Mode)

ZAP_KEY=your_api_key
ZAP="http://localhost:8080"

# Start scan
curl "$ZAP/JSON/spider/action/scan/?url=https://target.com&apikey=$ZAP_KEY"

# Wait for spider to complete
curl "$ZAP/JSON/spider/view/status/?scanId=0&apikey=$ZAP_KEY"

# Start active scan
curl "$ZAP/JSON/ascan/action/scan/?url=https://target.com&apikey=$ZAP_KEY"

# Check active scan progress
curl "$ZAP/JSON/ascan/view/status/?scanId=0&apikey=$ZAP_KEY"

# Get alerts
curl "$ZAP/JSON/core/view/alerts/?baseurl=https://target.com&apikey=$ZAP_KEY"

# Generate report
curl "$ZAP/OTHER/core/other/htmlreport/?apikey=$ZAP_KEY" -o report.html

Python API

from zapv2 import ZAPv2

zap = ZAPv2(apikey='MYKEY',
            proxies={'http': 'http://127.0.0.1:8080',
                     'https': 'http://127.0.0.1:8080'})

# Spider
zap.spider.scan('https://target.com')

# Active scan
zap.ascan.scan('https://target.com')

# Get alerts
alerts = zap.core.alerts(baseurl='https://target.com')
for alert in alerts:
    print(f"{alert['risk']}: {alert['name']} @ {alert['url']}")

Authentication Setup

# Form-based: use Automation Framework
# jobs entry:
# - type: authentication
#   parameters:
#     loginPageUrl: https://target.com/login
#     loginRequestData: username={%username%}&password={%password%}
#     usernameParameter: username
#     passwordParameter: password
#   verification:
#     method: response
#     loggedInRegex: Logout
#     loggedOutRegex: Login

Common Workflows

# CI/CD passive check (no attacks, no false positives)
docker run --rm \
    -v $(pwd):/zap/wrk \
    zaproxy/zap-stable zap-baseline.py \
    -t https://target.com \
    -r baseline_report.html \
    -J baseline.json

# Full scan with JSON report
docker run --rm \
    -v $(pwd):/zap/wrk \
    zaproxy/zap-stable zap-full-scan.py \
    -t https://target.com \
    -r full_scan.html

# OpenAPI scan
docker run --rm \
    -v $(pwd):/zap/wrk \
    zaproxy/zap-stable zap-api-scan.py \
    -t https://target.com/openapi.json \
    -f openapi \
    -r api_report.html

# GraphQL scan
docker run --rm \
    zaproxy/zap-stable zap-api-scan.py \
    -t https://target.com/graphql \
    -f graphql \
    -r graphql_report.html

GitHub Actions

name: ZAP Security Scan
on: [push]
jobs:
  zap_scan:
    runs-on: ubuntu-latest
    steps:
      - name: ZAP Baseline Scan
        uses: zaproxy/action-baseline@v0.12.0
        with:
          target: 'https://target.com'
          rules_file_name: '.zap/rules.tsv'
          cmd_options: '-a'

ZAP vs Burp Suite Pro

ZAPBurp Suite Pro
CostFree~$400/yr
CI/CD integrationExcellentGood
Manual testingGoodExcellent
Active scan accuracyMediumHigh
API scanningYesYes
Extension ecosystemCommunityBApp Store (commercial)
Use whenCI/CD, DevSecOps, API testingManual pentest, complex apps

Resources

FileWhen to load
references/automation-api.mdAutomation Framework YAML, REST API usage, Python client, CI/CD patterns

Related skills

FAQ

Which ZAP script is safe for production?

zap-baseline.py runs passive-only and is safe for prod as a CI/CD gate.

Is ZAP free?

Yes, it is a free open-source scanner licensed Apache-2.0.

Securityappsecaudit

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.