Security Audit CSV Reporting
SkillFiles & storageGenerate structured CSV security audit reports from vulnerability data with proper filtering, formatting, and field mapping.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Security Audit CSV Reporting skill
What this skill tells your AI
The instructions your AI receives, as published by cxcscmu/skilllearnbench in skills/b1-one-shot-claude-haiku-4-5/dependency-vulnerability-check/security-audit-csv-reporting/SKILL.md and read by ahel’s review.
Overview
Converting vulnerability data into CSV format for audit trails, compliance reporting, and stakeholder communication.
CSV Schema
Standard security audit CSV columns:
Package,Version,CVE_ID,Severity,CVSS_Score,Fixed_Version,Title,Url
Field Definitions
| Column | Type | Description | Example |
|---|---|---|---|
| Package | String | Package/library name | lodash |
| Version | String | Installed version | 4.17.20 |
| CVE_ID | String | CVE identifier | CVE-2021-23337 |
| Severity | String | HIGH or CRITICAL | HIGH |
| CVSS_Score | Float/String | CVSS v3 score (0-10) | 7.5 or N/A |
| Fixed_Version | String | Version with fix or N/A | 4.17.21 |
| Title | String | Vulnerability title/description | Prototype Pollution |
| Url | String | Reference URL | https://nvd.nist.gov/vuln/detail/CVE-2021-23337 |
Implementation Pattern
import csv
import json
from typing import List, Dict
def generate_security_audit_csv(vulnerabilities: List[Dict], output_file: str):
"""
Generate security audit CSV from vulnerability data.
vulnerabilities: List of vulnerability dictionaries
output_file: Path to output CSV file
"""
fieldnames = ['Package', 'Version', 'CVE_ID', 'Severity',
'CVSS_Score', 'Fixed_Version', 'Title', 'Url']
with open(output_file, 'w', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for vuln in vulnerabilities:
row = {
'Package': vuln.get('package', 'N/A'),
'Version': vuln.get('version', 'N/A'),
'CVE_ID': vuln.get('cve_id', 'N/A'),
'Severity': vuln.get('severity', 'N/A'),
'CVSS_Score': vuln.get('cvss_score', 'N/A'),
'Fixed_Version': vuln.get('fixed_version', 'N/A'),
'Title': vuln.get('title', 'N/A'),
'Url': vuln.get('url', 'N/A')
}
writer.writerow(row)
Filtering and Sorting
Filter by Severity
def filter_by_severity(vulnerabilities, severity_levels=['HIGH', 'CRITICAL']):
"""Filter vulnerabilities to only specified severity levels"""
return [v for v in vulnerabilities if v.get('severity') in severity_levels]
Sort by Severity and CVSS
def sort_vulnerabilities(vulnerabilities):
"""Sort by severity (CRITICAL first) then by CVSS score (descending)"""
severity_order = {'CRITICAL': 0, 'HIGH': 1}
def sort_key(vuln):
severity = severity_order.get(vuln.get('severity'), 2)
# Handle N/A CVSS scores
cvss = float(vuln.get('cvss_score', 0)) if vuln.get('cvss_score') != 'N/A' else 0
return (severity, -cvss)
return sorted(vulnerabilities, key=sort_key)
Data Cleaning
Sanitize CSV Fields
def sanitize_field(value):
"""Sanitize field for CSV output"""
if value is None:
return 'N/A'
if isinstance(value, list):
return '; '.join(str(v) for v in value)
return str(value).strip()
def prepare_row(vuln_data):
"""Prepare vulnerability record for CSV output"""
return {k: sanitize_field(v) for k, v in vuln_data.items()}
Usage
Use this skill when:
- Converting vulnerability scan results to audit format
- Creating compliance reports
- Sharing findings with stakeholders
- Building automated security audit pipelines
- Archiving vulnerability data for historical tracking
Related Skills
trivy-vulnerability-scanning: Source of vulnerability datacvss-score-extraction: Enriching data with CVSS scores
Signals
- GitHub stars
- 83
- Forks
- 5
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
security-audit-csv-reporting- Source
- github.com/cxcscmu/skilllearnbench