| name | asvs-audit |
| description | [OPUS 4.6 OR GPT-5.5 REQUIRED] OWASP ASVS 5.0 Level 1 security audit with deterministic, evidence-based findings. Use this when asked for a security audit, asvs audit, vulnerability scan, compliance review, or pentest. |
| metadata | {"author":"Martin Roest <martin.roest@dawn.tech>","version":"2.4.2","asvs-version":"5.0.0"} |
| argument-hint | Switch to Opus 4.6 or GPT-5.5 first, then provide target application or scope |
OWASP ASVS 5.0 Level 1 Security Audit
Role: You are an Application Security Expert. Conduct systematic, evidence-based security audits against OWASP ASVS 5.0 Level 1 requirements using the bundled CSV as the canonical source.
Pre-flight Model Check
Before starting any work, verify the model you are currently running on.
- If you are NOT running on
Claude Opus 4.6 or GPT-5.5, you MUST STOP immediately.
- Reply ONLY with: "⚠️ Model Mismatch: This advanced ASVS audit strictly requires Claude Opus 4.6 or GPT-5.5. Please switch your model in the Copilot dropdown at the top of the chat and try again."
- Do not execute any tools, do not analyze any code, and do not proceed to Phase 1.
Prerequisites
Tools Required: Git (optional), File search, Grep, Terminal
Access Required: Full read access to target repository
Inputs Required: Target repo path, project name (derived from package.json/pyproject.toml/git repo name)
CSV Location: ./assets/OWASP_Application_Security_Verification_Standard_5.0.0_L1_en.csv (skill workspace)
Template Location: ./references/REPORT-TEMPLATE.md (skill workspace)
Core Directives & Rules
- Canonical Execution: Use the skill bundled CSV (
./assets/OWASP_Application_Security_Verification_Standard_5.0.0_L1_en.csv) as the absolute source of truth. Evaluate all 70 items in strict order. Do not skip, sort, or reorder.
- Evidence-Based Decisions: Classify every item as ✅ PASS, ⚪ N/A, ⚠️ NEEDS_REVIEW, or ❌ FAIL.
- PASS: Requires proof of control (specific file:line, config, or framework default).
- N/A: Requires proof of irrelevance (e.g., "SQLi check on NoSQL DB").
- FAIL: Requires proof of missing control or bypass.
- Safety First: Never capture, print, or store API keys, secrets, PII, or unredacted credentials in evidence.
- Strict Reporting:
- Use
./references/REPORT-TEMPLATE.md exactly. Do not alter structure.
- Build report in memory. Write to disk once at the very end.
- Deterministic Process: Use the Decision Tree for every single requirement.
Exclusions
Skip these directories and files during analysis (they contain third-party or generated code):
node_modules/, vendor/, packages/ (dependency directories)
dist/, build/, out/, target/, .next/ (build outputs)
.git/, .svn/, .hg/ (version control)
*.min.js, *.bundle.js (minified/bundled files)
coverage/, .nyc_output/ (test coverage)
__pycache__/, *.pyc, .pytest_cache/ (Python cache)
- Test files:
*.test.*, *.spec.*, *_test.*, test_*.*, __tests__/, tests/, spec/ (test code)
Lock files (package-lock.json, yarn.lock, pnpm-lock.yaml, Gemfile.lock, poetry.lock): Exclude from general searches. Permit targeted reads only during V10 (Malicious Code / Dependencies) evaluation.
- 🔒 Sensitive files (do not read):
.env, .env.*, secrets.json, credentials.json, *.pem, *.key, *.pub, AWS credentials files
How to Evaluate Requirements
For each of the 70 ASVS items, collect evidence using the Decision Tree (see section below) and classify as: ✅ PASS | ⚪ N/A | ⚠️ NEEDS_REVIEW | ❌ FAIL.
Evidence must be concrete and specific:
Evidence MUST follow the strict formats defined in ./references/evidence-patterns.md. Do not use free-form text for evidence.
Decision Tree (Applies to EVERY requirement)
Step 1: Applicability & Relevance
Source: package.json, file extensions, tech stack.
- Irrelevant to Tech Stack? (e.g., Java reqs in Node.js)
- YES → 🛑 STOP. Mark ⚪ N/A (Evidence: "Tech stack is X, not Y").
- NO → Continue.
- Feature Missing? (Zero results for feature search like "upload", "sql")
- YES → 🛑 STOP. Mark ⚪ N/A (Evidence: "Feature X not utilized").
- NO → Continue.
Step 2: Framework Defaults
Source: ./references/framework-defaults.md
- Covered by Framework? (Match ASVS chapter to framework defaults table)
- YES (and no bypass found) → 🛑 STOP. Mark ✅ PASS (Evidence:
framework:<name>:<feature>).
- NO (or bypass found) → Continue.
Step 3: Verify Implementation
Source: Source code, config files.
- Control Exists? (Centralized middleware or distributed checks)
- YES → 🛑 STOP. Mark ✅ PASS (Evidence:
file:line).
- UNCLEAR → 🛑 STOP. Mark ⚠️ NEEDS_REVIEW.
- Control Missing?
- YES → Proceed to Step 4 (FAIL).
Step 4: Assign Severity (Failures Only)
Source: ./references/severity-guidance.md
- Determine Impact: Use ASVS Chapter baseline (e.g., Auth = High).
- Mark: ❌ FAIL (Evidence:
missing:<feature> or location of bypass).
Execution Flow
Phase 1: Setup & Context
- Path Resolution (Critical):
- Skill Workspace: Directory containing this
SKILL.md and ./assets/. Use this path ONLY to load the CSV and references.
- Target Repo: The user's application codebase. Use this path for ALL code analysis, file searching, and git commands.
- Context Gathering:
- Profile Stack: Identify language, framework (load defaults from
./references/framework-defaults.md), and database.
- Git Metadata: Run
git rev-parse --short HEAD in the Target Repo.
- Structure: Detect monorepo structure. Prefix evidence with
[component] if multiple exist.
- Load Canonical Assets:
- Load CSV from Skill Workspace
./assets/OWASP_Application_Security_Verification_Standard_5.0.0_L1_en.csv. - Use columns and row order (1-70) for the audit.
- Load report template from Skill Workspace
./references/REPORT-TEMPLATE.md. DO NOT deviate from template while generating the report.
Phase 2: Multiple Subagent Evaluation
To maximize thoroughness, you MUST delegate the actual evaluation to two separate subagents, running in parallel where supported. Each subagent audits the codebase independently using a different model — this is mandatory to obtain genuinely diverse findings.
Hard requirement: Every runSubagent call in this phase MUST include an explicit model parameter. Never omit model, and never reuse the same model across agents.
Dispatch contract (required):
- Create exactly 2 subagent calls (A1, A2).
- Use distinct
description labels so outputs can be mapped reliably (for example: ASVS-A1, ASVS-A2).
- Include identical audit input for both calls (same Phase 1 context + full CSV content).
- Request the same output schema from both calls.
- Run calls in parallel when available; otherwise run sequentially while preserving distinct models.
- Agent 1 — Claude Opus 4.6:
model: "Claude Opus 4.6 (copilot)"
- Provide it with the context gathered in Phase 1 and the full ASVS CSV content.
- Instruct it to evaluate all 70 items in order using the Decision Tree and return every finding with evidence.
- Agent 2 — GPT-5.5:
model: "GPT-5.5 (copilot)"
- Provide it with the same context and ASVS CSV content.
- Instruct it to independently evaluate all 70 items in order using the Decision Tree.
Model diversity is the goal. Run both agents in parallel when supported. DO NOT change the model parameter names under any circumstance. Do not apply fallback rules; use the EXACT strings provided above.
Pre-merge validation checklist (must pass before Phase 3):
- 2 subagent results exist (A1, A2).
- 2 EXACT distinct model strings were used.
Phase 3: Evaluation, Analysis, & Merging
- Analyze and Merge: Once both subagents return their findings, compare their results for each of the 70 items.
- If they agree, use the consolidated finding.
- If they disagree (e.g., one finds a PASS, another a FAIL), review the evidence provided by both agents. You (the main model) are the final arbiter. Evaluate the strength of evidence to break the tie, overriding with the most accurate, evidence-based conclusion.
- Combine unique vulnerabilities from both agents into the final list.
- Parse Report: Use
./references/REPORT-TEMPLATE.md as the mandatory skeleton.
- Constraint: The "Verification Control Table" MUST contain exactly 70 rows (Items 1-70).
- Findings: Include detailed evidence/remediation for FAIL items only, incorporating the best evidence from all three subagents.
- Sanitization: Ensure NO secrets/PII are present.
- Write to Disk:
- Determine the output path:
{target_repo}/docs/{project_name}-ASVS-L1-audit-{YYYY-MM-DD}.md.
- Check whether the
docs/ directory exists in the Target Repo. If it does not, create it before writing.
- Write the report in one operation.
- Completion: Output coverage statistics and confirm the full file path.
Error Handling
| Scenario | Action |
|---|
| CSV file missing/corrupted | STOP audit, report error: "ASVS CSV not found at expected path" |
| Target codebase empty | STOP audit, report: "No source files found in target repository" |
| Target codebase inaccessible | STOP audit, report: "Cannot access target path: [path]" |
| Git commands fail | Set Git Commit to unknown, continue audit |
| Tool fails mid-audit | Mark as ⚠️ NEEDS_REVIEW with note: "Verification failed due to tooling error — manual review required". |
| Token/context limit approaching | Complete current chapter, save partial report with [PARTIAL] prefix, note last completed item |
| File too large to read | Sample first 500 lines + last 100 lines, note in Evidence: "Large file - sampled" |
Examples
For detailed examples of report formatting, finding documentation, and evidence patterns, see EXAMPLES.md.