Skip to content
Back to skills

Threat Model

ASecurity

Generate a threat model from spec.md using STRIDE methodology. Use when you need to identify security threats, attack surfaces, and mitigations for a feature before implementation. Triggers on "threat model", "security analysis", "attack surface", "STRIDE analysis".

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
securityrustgosqlnextjsgitapidatabasesecurity

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill threat-model --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Threat Model?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Threat Model
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-threat-model/badge)](https://www.skillsdirectory.com/skills/aibot88-threat-model)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: speckit-threat-model
description: Generate a threat model from spec.md using STRIDE methodology. Use when you need to identify security threats, attack surfaces, and mitigations for a feature before implementation. Triggers on "threat model", "security analysis", "attack surface", "STRIDE analysis".
effort: high
---

# Threat Model Generation

Generate a structured threat model from a feature specification using STRIDE methodology.

## Prerequisites

Before starting, locate:
1. The feature spec (`.speckit/features/<feature>/spec.md` or provided by user)
2. The project constitution (`.speckit/constitution.md`) for security constraints
3. The project stack (check `package.json`, `CLAUDE.md`)

## Process

### Step 1: Identify Assets and Trust Boundaries

Read the spec and identify:
- **Data assets**: What data does this feature handle? (PII, credentials, financial, content)
- **Entry points**: API routes, form inputs, webhooks, file uploads
- **Trust boundaries**: Client/server, authenticated/anonymous, admin/user, internal/external services
- **Dependencies**: Third-party services, databases, auth providers

### Step 2: STRIDE Analysis

For each entry point, evaluate all 6 STRIDE categories:

| Category | Question |
|----------|----------|
| **S**poofing | Can an attacker impersonate a legitimate user or service? |
| **T**ampering | Can data be modified in transit or at rest without detection? |
| **R**epudiation | Can a user deny performing an action without accountability? |
| **I**nformation Disclosure | Can sensitive data leak through responses, logs, or errors? |
| **D**enial of Service | Can the feature be overwhelmed or made unavailable? |
| **E**levation of Privilege | Can a user gain access beyond their authorization level? |

### Step 3: Risk Assessment

For each identified threat, assess:
- **Likelihood**: Low / Medium / High
- **Impact**: Low / Medium / High / Critical
- **Risk Level**: Likelihood x Impact matrix
- **Existing mitigations**: What the current stack already handles (e.g., Supabase RLS, Next.js CSRF)

### Step 4: Mitigation Recommendations

For each Medium+ risk threat, propose:
- Specific code-level mitigation (Zod validation, RLS policy, rate limiting, etc.)
- Which story/task should implement it
- Whether it blocks the feature or can be addressed post-MVP

### Step 5: Generate Report

Output to `docs/security/<feature>-threat-model.md`:

```markdown
# Threat Model: <Feature Name>

**Date**: YYYY-MM-DD
**Spec**: .speckit/features/<feature>/spec.md
**Author**: Claude (automated)

## 1. Overview

Brief description of the feature and its security context.

## 2. Assets

| Asset | Type | Sensitivity |
|-------|------|------------|
| ... | PII / Financial / Content / System | High / Medium / Low |

## 3. Trust Boundaries

Diagram (text-based):
```
[Browser] --HTTPS--> [Next.js API] --SQL--> [Database]
              |                        |
         Trust Boundary 1        Trust Boundary 2
```

## 4. Threats (STRIDE)

### T-001: <Threat Name>
- **Category**: Spoofing / Tampering / ...
- **Entry Point**: POST /api/xxx
- **Description**: ...
- **Likelihood**: Medium
- **Impact**: High
- **Risk**: HIGH
- **Existing Mitigation**: Supabase RLS on table X
- **Recommended Mitigation**: Add Zod validation on input field Y
- **Priority**: Must-fix before MVP / Post-MVP acceptable

### T-002: ...

## 5. Risk Matrix

|          | Low Impact | Medium Impact | High Impact | Critical Impact |
|----------|-----------|--------------|-------------|----------------|
| **High** | Medium    | High         | Critical    | Critical       |
| **Medium** | Low     | Medium       | High        | Critical       |
| **Low**  | Info      | Low          | Medium      | High           |

## 6. Summary

- Total threats identified: N
- Critical: N | High: N | Medium: N | Low: N
- Must-fix before MVP: N
- Status: PASS / WARN / FAIL
```

## Status Levels

- **PASS**: No Critical or High threats without mitigation
- **WARN**: High threats exist but have proposed mitigations
- **FAIL**: Critical threats without clear mitigation path

## Common Patterns by Stack

### Supabase + Stripe
- Check RLS policies cover all tables touched by the feature
- Verify webhook signature validation for Stripe events
- Ensure `service_role` key is never exposed client-side
- Check that Supabase auth tokens are validated server-side

### Next.js (both starters)
- Server Actions: validate all inputs with Zod
- API routes: check authentication before processing
- Middleware: verify redirect targets are same-origin
- Environment variables: ensure no `NEXT_PUBLIC_` prefix on secrets

Files in this skill

  • SKILL.md4.5 KB
  • source.json785 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.