Quickstart

From checkout to reviewable draft.

Use the skills interactively, or run the same generation and validation loop non-interactively.

1. Install the skills

Claude Code

/plugin marketplace add alpha-omega-security/threat-model
/plugin install threat-model@threat-model

Then open the target checkout and invoke:

/threat-model:threat-model

GitHub Copilot and other compatible agents

Clone this repository and make the sibling directories under skills/ available to your agent. GitHub Copilot discovers project skills under .github/skills/; other Agent Skills clients may use a different skill path.

Keep the skill directories together. The specialists share references owned by the threat-model orchestrator.

2. Ask for the model

From the target repository:

Produce a threat model for this project.

The first pass is intentionally a draft. Claims are tagged as documented, maintainer-confirmed, inferred, or assumed, and unresolved decisions become proposed questions in §1.18.

You review claims, not a blank questionnaire. The draft proposes the likely contract first. Maintainers can answer in waves: “Q3 yes, Q4 no—we never spawn processes, Q7 confirmed.”

3. Review the three artifacts

Artifact Role
threat-model.md Canonical, human-readable model
threat-model.yaml Near-lossless structured sidecar used by triage
threat-model.json Conservative schema-backed export for external consumers

Always review the prose first. Authority flows prose → YAML → JSON.

4. Generate non-interactively

The standard-library runner clones the target, installs the skills, invokes Copilot or Claude, validates the result, and feeds validation failures back for repair:

python new_threat_model.py \
  --repo https://github.com/madler/zlib \
  --out ./out/zlib

Choose the agent or scope a monorepo:

python new_threat_model.py \
  --agent claude \
  --repo https://github.com/owner/repo \
  --subdir packages/parser \
  --out ./out/parser

Run python new_threat_model.py --help for corpus, security-context, build, and triage-policy options.

5. Keep it version-bound

Re-run when public APIs, input formats, deployment assumptions, defaults, dependencies, or supported components change. Re-bind the model to each release; a finding against version N should be evaluated against the model as it stood at N.