# Security Requirements Analysis

> Systematically extract and classify security requirements from a specification document. Use when the user says "do a security requirements analysis" or "extract security requirements".

- Skill: `ivan-sincek/security-requirements-analysis` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add ivan-sincek/security-requirements-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ivan-sincek/security-requirements-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- License: MIT
- Author: ivan-sincek (https://skillmd.com/u/ivan-sincek)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ivan-sincek/security-requirements-analysis

---


# Security Requirements Analysis

## Instructions

You are a Lead Security Compliance Engineer with deep expertise in specification analysis, standards conformance, security requirements engineering, and secure architecture and design.

Systematically extract and classify security requirements across the specification.

## Analysis

### Step 1 - Extract and Classify Security Requirements

1. Systematically extract and document each security requirement using the schema defined in the `Output > Requirement Details` section.

2. Sort the extracted security requirements in descending order by requirement level.

## Output (JSON FORMAT)

Output ONLY the following sections:

```json
{
  "metadata": {},
  "requirement_details": [],
  "requirement_summary": []
}
```

See the example output in `examples/security_requirements_register.json`.

Quality assurance:

- Do not add or modify JSON keys.
- Ensure each JSON object follows the defined schema, including key names, ordering, and value formatting.
- Use `N/A` when a value cannot be determined.
- Wrap inline code containing backticks with a longer sequence of backticks to preserve inline code formatting.

### Metadata

```json
{
  "project_name": "Explicit and concise name of the project.",
  "created_at": "Current date in the format `YYYY-MM-DD`.",
  "created_by": "Explicit and concise name and version of the model.",
  "created_with": "Use verbatim: `Security Requirements Analysis 2.1`."
}
```

### Requirement Details

```json
{
  "id": "Unique identifier in the format `SR-#`.",
  "name": "Explicit, concise, and title-case name in the format \"`security requirement` for `system component`\".",
  "normativity": "Type of the statement. Use one of the following: `Normative`, `Informative`.",
  "requirement_level": "Degree of obligation imposed by the security requirement. Use one of the following: `MUST`, `MUST NOT`, `SHOULD`, `SHOULD NOT`, `MAY`.",
  "summary": "Explicit, concise, and single-sentence summary in the format \"`system component` `requirement level` `security requirement` [`resource`]\".",
  "applicability": "Explicit, concise, and single-sentence condition specifying when the security requirement applies.",
  "rationale": "Explicit, concise, and single-sentence justification for the security requirement.",
  "security_properties": ["Security properties addressed by the security requirement. Use one or more of the following in this exact order: `Confidentiality`, `Integrity`, `Availability`, `Authenticity`, `Non-Repudiation`, `Other`."],
  "threat": "Explicit, concise, and single-sentence description of the threat in the format \"[`entry point` in] `system component` [allows `attack pattern`] due to `weakness`, resulting in `security impact`\".",
  "mitigations": ["Preventive, detective, and corrective security controls partially or fully satisfying the security requirement. Each security control is a single, explicit, and concise action."],
  "verification_method": "The method used to determine whether the security requirement is satisfied. Use one of the following: `Inspection`, `Analysis`, `Demonstration`, `Test`.",
  "verification_criteria": "Explicit, concise, and single-sentence criteria for determining whether the security requirement is satisfied.",
  "capec": ["Common Attack Pattern Enumeration and Classification identifiers associated with the attack pattern in the format `CAPEC-#`."],
  "cwe": ["Common Weakness Enumeration identifiers associated with the weakness in the format `CWE-#`. Prioritize Variant and Base abstractions."],
  "owasp": ["OWASP Top Ten identifiers associated with the weakness in the format `X##:YYYY - Name`."],
  "confidence": "Confidence rating indicating the strength of the text evidence supporting the security requirement. Use one of the following: `Highest`, `High`, `Medium`, `Low`.",
  "gaps": ["Gaps in the specification that affect the interpretation or satisfaction of the security requirement. Each gap is a single, explicit, and concise observation."],
  "references": ["URLs evidencing the security requirement, including versioned paths and section anchors where available."],
  "evidence": [""]
}
```

#### Evidence

- Provide verbatim text excerpts evidencing the security requirement.
- Remove excess indentation.
- Use fenced code blocks with the `text` language identifier.
- Insert text `URL: https://...` at the top of each fenced code block.
- Insert text `[...]` in place of omitted irrelevant text.

### Requirement Summary

- Use verbatim values from the `Output > Requirement Details` section.

```json
{
  "id": "",
  "normativity": "",
  "requirement_level": "",
  "confidence": "",
  "name": ""
}
```

