Skip to content
Development
Skill

/threat-model

Use to conduct STRIDE threat modeling for a system or feature design.

From plugin
mycelium
4662 skills
Install
$ npx -y skills add haabe/mycelium --skill threat-model --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/threat-model

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use to conduct STRIDE threat modeling for a system or feature design.

SKILL.md

threat-model.SKILL.md
name: threat-model
description: "Use to conduct STRIDE threat modeling for a system or feature design."
metadata:
  instruction_budget: "28"
  framework_dependency: "mycelium"
  framework_dependency_note: "This skill is designed to run within the Mycelium framework (https://github.com/haabe/mycelium). Standalone use will skip the canvas state, theory gates, and harness behavior the skill assumes. Install: /plugin install mycelium@haabe-mycelium."

Threat Model Skill

STRIDE threat modeling for secure design.

Workflow

1. **Define scope**: What system/feature/component is being modeled?

2. **Draw data flow diagram** (textual):

  • Identify actors (users, external systems)
  • Identify processes (services, functions)
  • Identify data stores (databases, caches, files)
  • Identify data flows (what moves between components)
  • Identify trust boundaries (where trust level changes)

3. **For each component and data flow, assess STRIDE threats**:

| Threat | Description | Question to Ask | |--------|------------|----------------| | **S**poofing | Impersonating something or someone | Can an attacker pretend to be this user/system? | | **T**ampering | Modifying data or code | Can data be changed in transit or at rest? | | **R**epudiation | Claiming to not have done something | Can a user deny an action without accountability? | | **I**nfo Disclosure | Exposing data to unauthorized parties | Can sensitive data leak? | | **D**enial of Service | Making the system unavailable | Can this component be overwhelmed? | | **E**levation of Privilege | Gaining unauthorized access | Can a user escalate their permissions? |

4. **For each identified threat**:

  • Severity: Critical / High / Medium / Low
  • Likelihood: High / Medium / Low
  • Existing mitigations (if any)
  • Recommended mitigations
  • Residual risk after mitigation

**For AI-powered systems**: Extend STRIDE with AI-specific threat dimensions:

  • **Autonomy risk**: Can the AI take actions beyond its intended scope?
  • **Oversight gap**: Is human-in-the-loop oversight meaningful? (Test Authority/Time/Understanding per Bannerman's triad -- see ${CLAUDE_PLUGIN_ROOT}/harness/security-trust.md)
  • **Feedback poisoning**: Can adversarial inputs degrade the system over time?
  • **Opacity risk**: Can decisions be explained to affected parties?

5. **Output**:

   ## Threat Model: [System/Feature]

   ### Data Flow
   [textual diagram]

   ### Trust Boundaries
   - [boundary 1]: [what changes]
   - [boundary 2]: [what changes]

   ### Threats
   | ID | Component | STRIDE | Threat | Severity | Likelihood | Mitigation |
   |----|-----------|--------|--------|----------|-----------|------------|
   | T1 | ... | S | ... | ... | ... | ... |

   ### Priority Actions
   1. [highest priority mitigation]
   2. [next priority]
   3. [next priority]

OWASP Top 10 for LLM Applications (2025)

For AI-powered products (`product_type: ai_tool` or any product using LLM components), extend the STRIDE analysis with LLM-specific threats:

| # | Threat | Description | |---|--------|-------------| | LLM01 | Prompt Injection | Manipulating model via crafted inputs (direct or indirect) | | LLM02 | Sensitive Information Disclosure | Model leaking training data, PII, or system prompts | | LLM03 | Supply Chain Vulnerabilities | Compromised model weights, training data, or plugins | | LLM04 | Data and Model Poisoning | Corrupting training/fine-tuning data to alter behavior | | LLM05 | Improper Output Handling | Trusting LLM output without validation (enables injection downstream) | | LLM06 | Excessive Agency | Granting LLM too many permissions, functions, or autonomy | | LLM07 | System Prompt Leakage | Extraction of system-level instructions via adversarial prompts | | LLM08 | Vector and Embedding Weaknesses | Manipulating RAG pipelines via poisoned embeddings | | LLM09 | Misinformation | Model generating false but plausible content (hallucination in high-stakes contexts) | | LLM10 | Unbounded Consumption | Resource exhaustion via expensive queries, denial-of-wallet attacks |

*Source: OWASP Top 10 for LLM Applications v2025.1 (genai.owasp.org). Updated from v1.1 (2023) — new entries: System Prompt Leakage (LLM07), Vector and Embedding Weaknesses (LLM08), Misinformation (LLM09), Unbounded Consumption (LLM10).*

For each LLM component in the threat model, assess all 10 threats. Use alongside STRIDE — STRIDE covers system-level threats, OWASP LLM covers model-level threats.

OWASP Agentic Skills Top 10 (AST10)

For products that ship or install agent skills, plugins, hooks or MCP servers, add the skill layer to the model. Skip this section for every other product. The skill layer is a trust boundary of its own: a skill runs with the host agent's permissions, and its instructions are natural language that a code scanner does not read.

| # | Threat | Description | |---|--------|-------------| | AST01 | Malicious Skills | A skill that looks legitimate carries a hidden payload in its prose or scripts | | AST02 | Supply Chain Compromise | Registry, marketplace or repository takeover; mass uploads; dependency confusion | | AST03 | Over-Privileged Skills | Broader tool or data grants than the stated function needs, widening blast radius | | AST04 | Insecure Metadata | Name, description and frontmatter are attacker-controlled input read with little validation | | AST05 | Untrusted External Instructions | Remote content fetched at runtime becomes part of the skill's instructions | | AST06 | Weak Isolation | Skills and hooks run in the host agent's security context with no containment | | AST07 | Update Drift | Unpinned installs: patches never applied, or upstream changes applied blindly | | AST08 | Poor Scanning | Signature and pattern scanners miss threats expressed in natural language | | AST09 | No Governance | No inventory, approval, audit trail or revocation for installed skills | | AST10 | Cross-Platfo

Read more
Ships withmycelium

A harness that asks who this is for before the agent writes code. Built on Claude Code, where the gates are structural. The files and skills port to opencode, Codex and Cursor. Outcome over output. You know how this goes.

Get the whole plugin
Stats
46
Stars
3
Forks
Active
Maintenance
Python
Language
MIT
License
2d ago
Last commit
5mo ago
Created

Repo: haabe/mycelium

Other skills on mycelium.

adopt
Skill

adopt

Bring Mycelium into a project that already has code. Detects that the repo predates the framework, asks before touching anything, then reads the codebase to…

@haabe@haabeView Skill