Produces a STRIDE-based security threat model. Identifies assets, trust boundaries and threats, and assigns a mitigation and verification method to each. Operates the SEC-THREAT gate.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add bturksoy/claude-code-app-studio --skill threat-model --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Threat Model?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/bturksoy-threat-model)More formats (shields.io, HTML) on the badges page.
---
name: threat-model
description: Produces a STRIDE-based security threat model. Identifies assets, trust boundaries and threats, and assigns a mitigation and verification method to each. Operates the SEC-THREAT gate.
---
# /threat-model
Owner: `security-engineer`. Output: `docs/security/threat-model.md`
Prerequisite: `ARCHITECTURE.md` (plus `openapi.yaml` if available).
Mandatory in `full` mode; optional in `lean`; skipped in `solo`.
---
## 1. Input
- Architecture: containers, trust boundaries, external systems
- API: endpoint list + auth schemes (not the full YAML)
- Data: which entities are sensitive (personal, financial, health, credentials)
- Compliance requirements (GDPR/PCI etc. — from `NFR.md`)
- User roles and the permission matrix
## 2. Invoke `security-engineer`
```
<CONTEXT BLOCK>
Task: produce a STRIDE threat model.
1. Asset inventory
| Asset | Sensitivity | Where stored | Who accesses | Legal status |
2. Trust boundaries (Mermaid) — every boundary crossing is a control point
3. Threat table — apply all 6 STRIDE categories to each trust boundary:
Spoofing, Tampering, Repudiation, Information disclosure,
Denial of service, Elevation of privilege
| # | Boundary | STRIDE | Threat scenario | Impact | Likelihood | Risk | Mitigation | Verification |
The threat scenario must be CONCRETE: "if the attacker does X they obtain Y"
4. For every HIGH/CRITICAL risk:
- The required mitigation (actionable, at code/config level)
- The verification method (a test id or a check step)
- Which REQ/ADR it will be bound to
5. Risks recommended for acceptance (mitigation cost > risk) — with rationale
6. Security requirement proposals: items that should be added to NFR.md
Rules:
- Do NOT produce attack tooling or exploit code — describe the scenario
- If you cannot write an exploit scenario, it is not a finding but a theoretical concern
- Match the scale of this project; do not write an APT model for a 10-user internal tool
Begin your reply with "SEC-THREAT: APPROVED|CONDITIONAL|REJECTED".
```
## 3. Present
```
## Threat Model
Assets: <N> | Trust boundaries: <M> | Threats: <K>
Risk distribution: Critical <a> | High <b> | Medium <c> | Low <d>
Required mitigations (Critical/High):
| # | Threat | Mitigation | Where it will be bound |
Risks recommended for acceptance: <list>
NFR proposals: <list>
Gate: SEC-THREAT <verdict>
```
Have the user confirm the risks to accept via `AskUserQuestion` — this is a
**business decision**, not one the security engineer can make alone.
## 4. Write
- `docs/security/threat-model.md`
- Propose the required mitigations **as NFRs** to `business-analyst` (list them in the
report — you do not modify `NFR.md`)
- Add accepted risks to `product/risks.md` (with owner + review date)
- `.state/gates.jsonl`
## 5. Close
```
✓ Threat model → docs/security/threat-model.md
<K> threats | <a> critical/high mitigations required
⚠ These mitigations must become stories: <list>
Include them when you run /epics.
▶ Next: /epics
```
---
## Token note
- **1 agent call.**
- Depth should match project scale — do not produce 60 threats for a small project; 15 is enough.
- Do not embed the whole API; the endpoint list plus auth schemes is enough.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!