Threat modeling for open source

Make the implicit security contract explicit.

Agent skills that turn source, documentation, and maintainer decisions into a version-bound model downstream users and vulnerability triagers can actually apply.

security-contract.yml version bound
  1. 01Which inputs and adversaries are untrusted?
  2. 02Which properties does the project guarantee?
  3. 03Which properties are explicitly disclaimed?
  4. 04What must the caller or integrator enforce?
A contract, not a vulnerability report
Two readers, one shared model

Security decisions become usable.

The model records not just scope, but the evidence and authority behind every claim.

01 / Integrators

Know what you inherit

See which inputs remain untrusted, which guarantees are safe to rely on, and which controls belong downstream.

02 / Maintainers

Review concrete claims

React to a draft with proposed answers instead of starting from an empty security questionnaire.

03 / Triagers

Route findings consistently

Apply a closed disposition set with citations, provenance, and fail-safe escalation when the model is incomplete.

One model, three artifacts

Readable by people and tools.

Canonical prose

threat-model.md explains the contract, its evidence, open questions, and triage rules.

Structured sidecar

threat-model.yaml preserves the model structure and provenance for automated triage.

Portable export

threat-model.json provides a deliberately conservative, schema-backed interchange format.

proseYAMLJSON authority order
The workflow

Draft first. Challenge it. Then publish.

Specialist skills divide the work while the orchestrator preserves one evidence trail.

3.1Orient
3.2Mine docs
3.3Map surface
3.4Interview
3.5Draft
3.6Backtest
3.7Sign off
Start with evidence

Model the project you actually ship.

Install the skills, point an agent at a checkout, and review a concrete draft.