incident-management — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited incident-management (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Structure incidents, don't just react to them. Every incident gets a record. Every record follows the lifecycle. Every deadline gets tracked.
One JSON object per incident, stored in .compliance/incidents/INC-YYYY-NNN.json. The agent creates this on first detection and updates it through the lifecycle.
{
"incident_id": "INC-2026-001",
"status": "detected | triaging | responding | notified | recovering | closed",
"severity": "P1-critical | P2-high | P3-medium | P4-low",
"detected_at": "ISO 8601",
"detected_by": "agent | user | monitoring | third-party",
"summary": "One-line description of what happened",
"affected_assets": ["names from profile.critical_assets if applicable"],
"category": "data-breach | ransomware | unauthorised-access | dos | phishing | misconfiguration | supply-chain | other",
"timeline": [
{ "timestamp": "ISO 8601", "action": "what happened or was done", "actor": "who" }
]
}| Field | When | Content |
|---|---|---|
impact | Triage | { "confidentiality": bool, "integrity": bool, "availability": bool, "data_subjects_affected": number, "description": "..." } |
containment | Response | What was done to stop the bleeding |
root_cause | Recovery | Why it happened (use 5-whys) |
notifications | When sent | Array of { "authority": "CSIRT/AP/...", "deadline": "ISO 8601", "sent_at": "ISO 8601", "reference": "..." } |
remediation | Recovery | Actions taken to fix + prevent recurrence |
lessons_learned | Close | What changed as a result |
closed_at | Close | ISO 8601 |
When an incident is reported or detected:
| Severity | Criteria | Response time |
|---|---|---|
| P1 | Critical asset CIA 5 affected, or data breach with special category data, or full service outage | Immediate — all hands |
| P2 | Critical asset affected but contained, or personal data exposed, or partial outage | Within 1 hour |
| P3 | Non-critical system affected, no data exposure, limited impact | Within 4 hours |
| P4 | Near-miss, policy violation, no actual impact | Next business day |
Determine impact. Key questions:
profile.critical_assets)NIS2/Cbw deadlines (for essential and important entities):
| Step | Deadline | Content | To whom |
|---|---|---|---|
| Early warning | 24h after detection | Suspected significant incident + cross-border indicator + suspected unlawful/malicious | CSIRT |
| Incident notification | 72h after detection | Severity, impact assessment, indicators of compromise, measures taken | CSIRT |
| Final report | 1 month after notification | Root cause, mitigation applied, cross-border impact | CSIRT |
GDPR/AVG (if personal data breach):
| Step | Deadline | To whom |
|---|---|---|
| Authority notification | 72h after becoming aware | Autoriteit Persoonsgegevens (NL) / relevant DPA |
| Data subject notification | Without undue delay (if high risk to rights) | Affected individuals |
Both can apply simultaneously. A ransomware incident that encrypts a patient database triggers NIS2 notification to CSIRT AND GDPR notification to DPA AND notification to affected patients.
Read profile.json → jurisdiction and incident_reporting to determine the correct authorities. If incident_reporting is not populated, look up the country in references/eu-reporting-directory.md.
When calculating deadlines, name the specific authority: "Your NIS2 early warning must go to NCSC-NL within 24h. Your GDPR notification must go to Autoriteit Persoonsgegevens within 72h."
Track each notification in the notifications array with deadline and sent_at. The agent flags overdue notifications as CRITICAL.
When an incident requires notification, generate clickable mailto: links with pre-filled subject and body so the user (or CISO) can send with one click. The agent fills in the details from the incident record.
Template — CISO escalation:
mailto:{ciso_email}?subject=P{severity}%20Security%20Incident%20{incident_id}&body=Incident%3A%20{incident_id}%0ASeverity%3A%20{severity}%0ADetected%3A%20{detected_at}%0ASummary%3A%20{summary}%0AAffected%20assets%3A%20{affected_assets}%0A%0ANotification%20deadlines%3A%0A-%20CSIRT%3A%20{csirt_deadline}%0A-%20DPA%3A%20{dpa_deadline}Template — NIS2 early warning to CSIRT:
mailto:{csirt_email}?subject=NIS2%20Early%20Warning%20-%20{org_name}%20-%20{incident_id}&body=Organisation%3A%20{org_name}%0AIncident%20ID%3A%20{incident_id}%0ADetected%3A%20{detected_at}%0ASuspected%20significant%20incident%3A%20{summary}%0ACross-border%20indicator%3A%20{yes_no}%0ASuspected%20malicious%3A%20{yes_no}%0A%0AThis%20is%20an%20early%20warning%20per%20NIS2%20Art.%2023(4)(a).%20Full%20notification%20follows%20within%2072h.Agent generates these by:
incident_reporting from profile to get authority namesIf the authority uses a web portal instead of email (most CSIRTs do), provide the portal URL with the pre-filled text as a copyable block instead.
An incident is "significant" if it:
When in doubt, notify. The penalty for late notification exceeds the cost of over-reporting.
.compliance/incidents/. Don't wait for complete information.{
"incident_id": "INC-2026-003",
"status": "notified",
"severity": "P1-critical",
"detected_at": "2026-03-16T02:15:00Z",
"detected_by": "monitoring",
"summary": "Ransomware encryption detected on file server containing client data",
"affected_assets": ["Azure tenant met klantomgevingen"],
"category": "ransomware",
"impact": {
"confidentiality": false,
"integrity": true,
"availability": true,
"data_subjects_affected": 200,
"description": "Client data encrypted, services unavailable"
},
"timeline": [
{ "timestamp": "2026-03-16T02:15:00Z", "action": "EDR alert: ransomware detected on FS01", "actor": "CrowdStrike Falcon" },
{ "timestamp": "2026-03-16T02:20:00Z", "action": "Server isolated from network", "actor": "SOC analyst" },
{ "timestamp": "2026-03-16T02:45:00Z", "action": "IR retainer activated, case INC-EYE-4521", "actor": "Teamlead Cloud" },
{ "timestamp": "2026-03-16T08:00:00Z", "action": "Early warning submitted to NCSC", "actor": "Compliance officer" }
],
"notifications": [
{ "authority": "NCSC/CSIRT", "deadline": "2026-03-17T02:15:00Z", "sent_at": "2026-03-16T08:00:00Z", "reference": "NCSC-2026-1234" }
],
"containment": "Server isolated. Backup integrity verified. Clean restore initiated from immutable backup."
}~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.