
threat-modeling
Run a structured threat-modeling session for a new feature, system, or architecture — STRIDE, attack trees, data flow diagrams, abuse cases. Use when the user mentions 'threat model,' 'threat modeling,' 'STRIDE,' 'attack tree,' 'abuse case,' 'data flow diagram,' 'DFD,' 'security architecture review,' 'design review,' 'pre-implementation security,' 'shift left,' 'what could go wrong,' or needs strategic security thinking before code is written.
- Installs
- 421
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/briiirussell/cybersecurity-skills --skill threat-modeling- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads threat-modeling automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Threat Modeling — Pre-Implementation Security Design
Run a structured threat-modeling session against a proposed feature, system, or architecture. This is the design-time security skill — different from audit (which inspects code that exists). Use this when there's a design doc, a feature spec, an architecture diagram — but not yet code.
When to use:
- New feature touching auth, payments, multi-tenant data, or sensitive PII
- New external integration (third-party API, OAuth provider, webhook receiver)
- New service / microservice being added to the architecture
- Significant refactor of a security-sensitive component
- Before committing to a major architecture decision (event-driven vs request/response, monolith split, AI-feature introduction)
Cross-references: owasp-audit (code-level checklist that lines up with the threats this surfaces), api-audit (API-specific category mapping), iam-audit (identity decisions touch every threat model).
Authorization
Model systems the user owns, builds or is authorized to assess, from designs, diagrams and code they provide. Threat modeling is design analysis; it doesn't test anything. Don't build an attack tree of someone else's product without their authorization.
The four questions
Adam Shostack's framing — every threat model answers these four:
- What are we working on? (Scope and model)
- What can go wrong? (Threats)
- What are we going to do about it? (Mitigations)
- Did we do a good job? (Validation)
The rest of this skill walks through each in order.
Step 1 — What are we working on?
Produce a Data Flow Diagram (DFD) at one of three levels:
- Level 0 — Context diagram. One bubble for the system, lines to every external entity (users, third-party APIs, internal admin tools). Use this when the question is "what does this system even touch?"
- Level 1 — Major processes. Auth service, API gateway, primary data store, payment integration, etc. Use this for most feature-level threat models.
- Level 2 — Detailed component model. Specific endpoints, specific tables, specific queues. Use this for the trickiest parts only.
A useful DFD has:
- External entities (rectangles) — users, third-party services, admins
- Processes (circles) — your services, functions, handlers
- Data stores (parallel lines / cylinders) — databases, caches, blob storage, queues
- Data flows (arrows, labeled with what crosses) — request bodies, tokens, files, events
- Trust boundaries (dashed lines) — every crossing is a place data is validated, authenticated, or filtered
Trust boundaries are the most useful element. If you can draw exactly one diagram that shows every trust boundary in your feature, you've already done 60% of the work.
For text-only environments, render the DFD in Mermaid:
flowchart LR
User[User] -- HTTPS --> WAF[WAF / CDN]
WAF -- request --> API[API Gateway]
API -- JWT --> Service[Service]
Service -- SQL --> DB[(Postgres)]
Service -- HTTPS --> Stripe[Stripe]
classDef trust fill:#fff,stroke:#f00,stroke-dasharray:4 4
class API,Service trust
Step 2 — What can go wrong? (STRIDE)
For each process, data store, and data flow, ask STRIDE — one threat category per letter. Not every category applies to every element, and that's fine.
| Letter | Threat | Property violated | Examples |
|---|---|---|---|
| S | Spoofing | Authentication | Stolen token, forged JWT, replay attack, impersonating a service |
| T | Tampering | Integrity | Modifying a request mid-flight, parameter tampering, modifying stored data |
| R | Repudiation | Non-repudiation | User denies an action; logs don't prove they did it |
| I | Information Disclosure | Confidentiality | Leak via error messages, IDOR exposing other users' data, exposed S3 bucket |
| D | Denial of Service | Availability | Resource exhaustion, expensive query bomb, billing exhaustion via paid downstream APIs |
| E | Elevation of Privilege | Authorization | User → admin via mass assignment, BFLA, escape from sandbox |
STRIDE per element
A useful threat-modeling habit: for each element of the DFD, write a short table.
**Element:** API Gateway
| STRIDE | Threat | Likelihood | Impact |
|---|---|---|---|
| S | Forged JWT — symmetric secret in env, leaks if .env exposed | M | H |
| T | Request body modified between gateway and upstream service | L | M |
| R | Gateway access logs deleted by attacker post-breach | L | H |
| I | Verbose error responses expose internal hostnames | M | L |
| D | No rate limit at the gateway → upstream services overwhelmed | H | H |
| E | "X-Admin: true" header pass-through from external requests | L | C |
Likelihood and impact: L / M / H / C(ritical) — qualitative is fine; quantitative scoring is theater for most engagements.
Abuse cases (sister to STRIDE)
For features with business-flow concerns, also walk abuse cases. The format is:
As a malicious actor, I want to [goal] so that I can [outcome].
Examples:
- As a malicious customer, I want to redeem the same coupon code 100 times so that I can drain the discount budget
- As a competitor, I want to scrape every product detail in bulk so that I can clone your catalog
- As an insider with read access, I want to extract every customer's PII over a year so that I can sell it without triggering DLP alerts
Abuse cases catch what STRIDE misses — STRIDE is great at "security properties violated"; abuse cases are great at "business intent violated."
Step 3 — What are we going to do about it?
For each threat surfaced in Step 2, pick one of four responses:
- Mitigate — design a control that reduces likelihood or impact
- Transfer — push the risk to someone else (Stripe handles PCI compliance, Vercel handles DDoS)
- Accept — document the residual risk and the rationale
- Avoid — don't build the feature this way; redesign
Mitigations should be specific:
| Bad mitigation | Good mitigation |
|---|---|
| "Add rate limiting" | "Add 5 req/min per user IP to /api/coupon/redeem, with Redis-backed counter; queue 429 responses to be alerted on" |
| "Validate inputs" | "Reject ?next= URLs that contain control bytes (\t, \n, \0), backslashes, or percent-encoded slashes; normalize via new URL(target, ...).pathname (see owasp-audit A01)" |
| "Encrypt the data" | "Application-level encryption with AWS KMS-managed CMK, envelope encryption per row, key rotation every 90 days, audit log of every Decrypt call" |
Common mitigation patterns
- Spoofing → strong identity — short-lived tokens, MFA, mutual TLS, signed requests, workload identity federation (see
iam-audit) - Tampering → integrity controls — HMAC, signed cookies, transport encryption, write-ahead logs, immutable infrastructure
- Repudiation → audit logs — immutable append-only logs, separate logging account, alerting on log-tampering attempts
- Information disclosure → minimum exposure — least-privilege IAM, data classification, encryption at rest and in transit, DTOs not whole records (see
api-auditAPI3) - Denial of service → resource limits — rate limits, quotas, query depth limits, billing alarms, circuit breakers
- Elevation of privilege → authorization checks — centralized
can(user, action, resource), deny-by-default, sister-route audit (seeowasp-auditA06 sister-route)
Step 4 — Did we do a good job?
Validation comes from three sources:
- Coverage check — every element in the DFD has a STRIDE table; every threat has a mitigation; every mitigation has an owner and a deadline. Missing rows are the most common failure.
- Adversarial second pass — invite someone who wasn't in the original session (or another model, in this skill's context). Ask "what did we miss?" with explicit prompt to break correlated blind spots. See
owasp-auditSecond-Opinion Pass. - Trace to tests — every High/Critical mitigation should have a test (unit, integration, or canary in production monitoring). If you can't write the test, you don't have the mitigation, you have an intention.
When to threat model (and when not to)
Worth it:
- New auth flow / new payment integration / new third-party data exchange
- Multi-tenant data model
- Anything touching admin functionality, billing, or sensitive PII
- Significant architecture changes
- AI features (see
prompt-injection)
Probably not worth it:
- Internal CRUD on data you already have well-modeled
- UI-only changes
- Refactors that don't change trust boundaries
The test: if the change introduces a new trust boundary, moves an existing one, or changes what crosses one — threat model it. Otherwise, skip.
Output Format
A threat model is a living document, not a one-shot report. Keep it short and reviewable.
# Threat Model: [Feature / System Name]
## Status: Draft / In Review / Approved
## Owner: [name]
## Date: [date]
## Reviewers: [names]
## 1. Scope
[2-3 sentences — what's in, what's out]
## 2. Data Flow Diagram
[Mermaid diagram or link to image]
## 3. Assumptions and constraints
- [Anything taken as given — e.g. "users authenticate via Okta, MFA enforced"]
## 4. Threats and mitigations
[STRIDE-per-element tables, then abuse cases]
## 5. Open questions
[Things we deferred or couldn't decide]
## 6. Decision log
[Material design decisions and why — including risks accepted]
## 7. Action items
| Item | Owner | Deadline | Status |
|------|-------|----------|--------|
Keep this in the repo alongside the design doc, not in a separate security tracker. Drift between the threat model and the implementation is the dominant failure mode — proximity helps.
Boundaries
- This skill produces planning artifacts, not exploitation
- Threat models surface risks; they don't grant authority to test them — pair with
web-pentestorowasp-auditfor verification - Don't threat-model someone else's product without authorization (e.g., generating an attack tree of a competitor)
- Threat models that don't get reviewed and signed off are noise — push back if the user is producing a model nobody will read
References
- "Threat Modeling: Designing for Security" — Adam Shostack
- Microsoft STRIDE methodology
- OWASP Threat Modeling Cheat Sheet
- OWASP pytm / threatspec (tooling)
- "Threat Modeling Manifesto" (threatmodelingmanifesto.org)
- Mozilla Rapid Risk Assessment (RRA) framework
- NIST SP 800-154 (Guide to Data-Centric System Threat Modeling)
FAQ
What does the threat-modeling skill do?
Run a structured threat-modeling session for a new feature, system, or architecture — STRIDE, attack trees, data flow diagrams, abuse cases. Use when the user mentions 'threat model,' 'threat modeling,' 'STRIDE,' 'attack tree,' 'abuse case,' 'data flow diagram,' 'DFD,' 'security architecture review,' 'design review,' 'pre-implementation security,' 'shift left,' 'what could go wrong,' or needs strategic security thinking before code is written.
How do I install threat-modeling?
Run npx skills add https://github.com/briiirussell/cybersecurity-skills --skill threat-modeling in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/threat-modeling/ (personal) or .claude/skills/threat-modeling/ (project).
Which AI agents can use threat-modeling?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is threat-modeling safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains threat-modeling?
It is published by briiirussell in briiirussell/cybersecurity-skills. It has 421 recorded installs.
More from briiirussell/cybersecurity-skills
owasp-audit
briiirussell/cybersecurity-skills
Audit application source code against the OWASP Top 10 (2021) vulnerability categories — broken access control, cryptographic failures, injection, insecure design, security misconfiguration, vulnerable components, authentication failures, data integrity, logging failures, SSRF. Use when the user mentions 'OWASP,' 'OWASP Top 10,' 'security audit,' 'security review,' 'secure code review,' 'code security review,' 'vulnerability audit,' 'find vulnerabilities,' 'appsec review,' 'application security audit,' 'check for security issues,' 'broken access control,' 'IDOR,' 'SQL injection,' 'XSS,' 'SSRF,' or wants to check their codebase for common security weaknesses.
web-pentest
briiirussell/cybersecurity-skills
Perform black-box / grey-box web application penetration testing on an authorized target — auth bypass, IDOR, session handling, business-logic flaws, parameter tampering, Burp Suite / OWASP ZAP workflows. Use when the user mentions 'web pentest,' 'web application penetration test,' 'pentesting,' 'bug bounty,' 'Burp Suite,' 'ZAP,' 'OWASP testing,' 'authentication testing,' 'session testing,' 'authorization testing,' 'business logic testing,' 'web vulnerability testing,' or has explicit authorization to test a live web application.
api-audit
briiirussell/cybersecurity-skills
Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023). Use when the user mentions 'API security,' 'API audit,' 'BOLA,' 'broken object level authorization,' 'BFLA,' 'function-level authorization,' 'mass assignment,' 'API rate limiting,' 'GraphQL security,' 'REST security,' 'API authentication,' 'API authorization,' 'excessive data exposure,' or needs to review API endpoints for security weaknesses.
dependency-audit
briiirussell/cybersecurity-skills
Audit project dependencies, frameworks, languages, and dev tools for known vulnerabilities, CVEs, and security anti-patterns. Use when the user mentions 'dependency audit,' 'npm audit,' 'CVE,' 'vulnerable packages,' 'supply chain security,' 'outdated dependencies,' 'known vulnerabilities,' 'security advisory,' 'package security,' 'framework vulnerability,' 'is this package safe,' or needs to check whether their stack has known security issues.
secrets-audit
briiirussell/cybersecurity-skills
Find leaked secrets in source code, Git history, build artifacts, and infrastructure — and audit the secrets-management posture preventing future leaks. Use when the user mentions 'secrets audit,' 'secret scanning,' 'leaked credentials,' 'API key in code,' 'gitleaks,' 'trufflehog,' 'git history scan,' 'secrets management,' 'vault audit,' 'rotation policy,' 'AWS Secrets Manager,' 'HashiCorp Vault,' 'Doppler,' '1Password Secrets Automation,' 'sealed-secrets,' 'External Secrets Operator,' or needs to find or prevent credential exposure.
recon
briiirussell/cybersecurity-skills
Perform structured reconnaissance and attack surface enumeration for authorized penetration tests, CTF challenges, and bug bounty programs. Use when the user mentions 'recon,' 'reconnaissance,' 'enumerate,' 'attack surface,' 'subdomain enumeration,' 'port scan,' 'fingerprint,' 'asset discovery,' or needs to map a target's external footprint.
Popular security skills
azure-compliance
microsoft/azure-skills
Run Azure compliance and security audits with azqr plus Key Vault expiration checks. Covers best-practice assessment, resource review, policy/compliance validation, and security posture checks. WHEN: compliance scan, security audit, BEFORE running azqr (compliance cli tool), Azure best practices, Key Vault expiration check, expired certificates, expiring secrets, orphaned resources, compliance assessment.
minimal-run-and-audit
lllllllama/rigorpilot-skills
Rigor Run skill for README-first deep learning repo reproduction. Use when the task is specifically to capture or normalize evidence from the selected smoke test or documented inference or evaluation command and write standardized reprooutputs/ files, including patch notes when repository files changed. Do not use for training execution, initial repo intake, generic environment setup, paper lookup, target selection, hidden scientific-meaning changes, or end-to-end orchestration by itself.
seo-audit
coreyhaines31/marketingskills
When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," "indexing issues," "stuck on page 2," "striking distance keywords," "title tag rewrite," "low CTR," "local SEO," "Google Business Profile," or "map pack." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema. For AI search optimization, see ai-seo.
firebase-security-rules-auditor
firebase/agent-skills
Audits Firebase (Firestore, Cloud Storage) security rules for vulnerabilities, privilege escalation, role bypasses, create vs update inconsistencies, resource exhaustion, type safety, size limits, and hasOnly ownership checks. Use when auditing/reviewing rules, running red-team rule assessments, or scoring against auditor checklists. Don't use for Firebase CLI (login, deploy), Auth, Crashlytics, Remote Config, or database queries.
audit
pbakaus/impeccable
Run technical quality checks across accessibility, performance, theming, responsive design, and anti-patterns. Generates a scored report with P0-P3 severity ratings and actionable plan. Use when the user wants an accessibility check, performance audit, or technical quality review.
competitors
coreyhaines31/marketingskills
When the user wants to create competitor comparison or alternative pages for SEO and buyer-facing use. Also use when the user mentions 'alternative page,' 'vs page,' 'competitor comparison,' 'comparison page,' '[Product] vs [Product],' '[Product] alternative,' 'competitive landing pages,' 'how do we compare to X,' 'competitor teardown,' 'audit our competitor pages,' 'are our comparison pages out of date,' or 'competitive asset audit.' Use this for any content that positions your product against competitors. Covers four formats: singular alternative, plural alternatives, you vs competitor, and competitor vs competitor. For auditing existing claims (not researching competitors from scratch, which is competitor-profiling; not technical SEO on these pages, which is seo-audit), use the asset audit here. For internal battle cards and sales-specific competitor docs, see sales-enablement.