Security scan report

{{ target }}
Generated {{ generated_at }} · {{ summary.scanners_completed }} of {{ summary.scanners_run }} scanners completed

Summary

Total findings
{{ summary.total_findings }}
{% for sev, count in summary.by_severity.items() %}
{{ sev.title() }}
{{ count }}
{% endfor %}

Scanners

{% for r in results %} {% endfor %}
ScannerStatusFindingsDurationNotes
{{ r.scanner }} {{ r.status }} {{ r.findings|length }} {{ r.duration }} {{ r.error or "" }}

Findings

{% for f in findings %}
{{ f.severity }} {{ f.title }} {{ f.scanner }}
{% if f.description %}

{{ f.description }}

{% endif %}

Target: {{ f.target }}

{% if f.evidence %}

Evidence:

{{ f.evidence }}
{% endif %} {% if f.remediation %}

Remediation: {{ f.remediation }}

{% endif %} {% if f.raw and f.raw.get("static_rationale") %}

Why it matters: {{ f.raw.static_rationale }}

{% endif %} {% if f.raw and f.raw.get("static_example") %}

Example fix:

{{ f.raw.static_example }}
{% endif %} {% if f.raw and f.raw.get("ai_fix") %}

🤖 AI suggestion {% if f.raw.get("ai_confidence") %}(confidence: {{ f.raw.ai_confidence }}){% endif %}

{{ f.raw.ai_fix }}

{% if f.raw.get("ai_rationale") %}

{{ f.raw.ai_rationale }}

{% endif %} {% if f.raw.get("ai_example") %}
{{ f.raw.ai_example }}
{% endif %}
{% endif %} {% if f.references %}

References:

    {% for ref in f.references %}{% if ref %}
  • {{ ref }}
  • {% endif %}{% endfor %}
{% endif %}
{% endfor %}