Threat Model Interview logo

Threat Model Interview

Organization
alpha-omega-security
threat-model-interview

Run phase 3.4 maintainer question waves for threat-model production. USE WHEN inferred claims need ratification or interview-first versus draft-first mode must be chosen. Asks 3–7 prioritized proposed-answer questions per wave; wave 1 always covers scope, intended use, configuration support, and host side effects. Records answers, promotes inferred provenance to dated maintainer provenance, and retires matching §1.18 questions. Supports the phase 3.7 termination policy. DO NOT USE FOR: fabricating maintainer positions, drafting the whole model, or triage.

Overview

Publisheralpha-omega-security
Repositorythreat-model
Skill namethreat-model-interview
Stars
60
Forks
10
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by alpha-omega-security on GitHub. Read the source before you install it.

Installation

Install the Threat Model Interview AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/alpha-omega-security/threat-model/tree/main/skills/threat-model-interview
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/alpha-omega-security/threat-model.git /tmp/threat-model
mkdir -p .claude/skills
cp -r /tmp/threat-model/skills/threat-model-interview .claude/skills/threat-model-interview
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Threat Model Interview in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Threat Model Interview on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Threat Model Interview is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Threat Model — Interview (question waves)

Phase 3.4. Iteration is mandatory and the model is finite — better a tight 3-page document than a sprawling 20-page one. Pull questions from the question bank; reword for the project — do not read them verbatim.

Choose a mode

  • Interview-first — ask, then draft. Best when a maintainer is actively engaged and answers return quickly.
  • Draft-first (usually more efficient) — write v1 entirely from public artifacts (recon + surface), tag every claim, and collect the unresolved questions in §1.18. Hand the maintainer a document to react to rather than a questionnaire to fill in. Best when maintainer time is scarce or asynchronous.

Wave discipline

  • Never dump every question at once — a maintainer will not answer 30 in one go, and the answers will be shallow if they do. Ask in waves of 3–7, prioritized by which answers most shape the rest of the model.
  • Wave 1 is always scope + intended use — everything depends on it — plus the two questions that reshape multiple sections and are almost never documented:
    • the configuration-support question (support posture for every security- relevant knob, especially a default that voids a §1.11 property, reshaping §1.6/§1.11/§1.13/§1.17);
    • the no-surprise side-effects question (the negative claims from the surface pass — sockets, spawning, signal handlers, env reads, global state). If a prior SECURITY.md/"threat model" doc exists, also ask the coexistence question in wave 1.
  • Subsequent waves drill into trust boundaries, adversary model, dependencies, properties provided/not-provided, and known misuses/non-findings. Prioritize any unresolved rows in the surface contract-dimension matrix by expected triage volume and impact; numeric boundaries, callback trust, serialization, and failure atomicity commonly outrank low-volume edge cases.

Frame every question as a proposed answer

Maintainers respond faster and more precisely to "we believe X — confirm or correct" than to an open "what is X?". Wherever recon/surface yielded a plausible answer, state it as the working hypothesis and ask the maintainer to ratify or override. Reserve genuinely open questions for cases with no reasonable default. For a contract-dimension gap, propose an explicit routing decision: a §1.11 guarantee with conditions, a §1.12 disclaimer, or a narrower supported domain. Do not ask only "what happens here?"

Instead of: "What is the adversary model?" Ask: "We believe the only adversary in scope is whoever supplies the compressed input; in-process callers and side-channel observers are out of scope. Is that right, and is anything missing?"

After each wave

  • Record answers in the draft, not just in chat.
  • Promote provenance — (inferred, QN) or (assumption, QN) → (maintainer, YYYY-MM) — and delete the matching §1.18 open question.
  • State which next-wave questions the answers unlock or render moot.
  • Update the contract-dimension row from unresolved to claimed, disclaimed, or N/A, and route the resulting claim to its prose section.
  • Stop once the marginal value of another question is low.

Termination policy (§3.7) — the maintainer goes silent

Adopt a waiting policy up front (e.g., two unanswered waves, or 30–60 days — whatever the project's cadence suggests). When it expires:

  • Publish with status unratified draft, the draft-confidence count shown prominently, and §1.18 intact.
  • Closure constraint (all statuses): a disposition that closes a report against the reporter (OUT-OF-MODEL: *, BY-DESIGN: *, KNOWN-NON-FINDING) may not rest on inferred claims. An assumption closes only under the declared relaxed triage policy, only a low-blast-radius route, and never a security-critical property, KNOWN-NON-FINDING, or dependency-contract. A report that would otherwise be closed on inferred or ungoverned-assumption grounds is escalated to the maintainer instead, and the claim moves to the top of the next wave. VALID routings are unaffected (they fail safe).

Never fabricate

If a question is unanswered, its claim stays (inferred, QN) — or (assumption, QN) where a conservative default is clearly safe — with an open §1.18 item; do not invent a maintainer position. Answering a wave promotes both inferred and assumption claims to (maintainer, YYYY-MM). A draft that is mostly unratified is not ready to publish; a draft with none is fully reviewed or overclaiming.

Frequently asked questions

What does the Threat Model Interview AI skill do?

Run phase 3.4 maintainer question waves for threat-model production. USE WHEN inferred claims need ratification or interview-first versus draft-first mode must be chosen. Asks 3–7 prioritized proposed-answer questions per wave; wave 1 always covers scope, intended use, configuration support, and host side effects. Records answers, promotes inferred provenance to dated maintainer provenance, and retires matching §1.18 questions. Supports the phase 3.7 termination policy. DO NOT USE FOR: fabricating maintainer positions, drafting the whole model, or triage.

Why use Threat Model Interview on TypingMind?

Because you install it once and use it with any model. Threat Model Interview is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Threat Model Interview in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/alpha-omega-security/threat-model/tree/main/skills/threat-model-interview. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Threat Model Interview?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Threat Model Interview?

As many as you like. As long as a model supports skills, you can use Threat Model Interview with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Threat Model Interview AI skill free?

Yes. It is published on GitHub by alpha-omega-security under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇