Install any skill in seconds. Free to start, no credit card required.
Get Started Free →hypnguyen1209/threat-model-discipline
Use when starting an engagement, before exploitation, or whenever the attack surface changes — build/validate the threat model and detect drift (new unreviewed surface) before advancing
Passed 19 of 22 test cases with the skill, and 6 of 22 without it.
and 13 more in the full report
14 fixed5 passed either way2 still failing1 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 14 test cases the skill fixed. Same model, same prompt, with and without the skill.
Which discipline in the engagement framework governs the boundaries of allowable targets and actions?
| Checked | Without skill | With skill |
|---|---|---|
| Identifies scope-discipline as the skill governing allowable target boundaries. | Missed | Passed |
The instructions your model reads when the skill loads.
You cannot test what you have not modeled. A threat model names the assets, entry points, trust boundaries, relevant ATT&CK techniques, and existing mitigations — so coverage is deliberate, not accidental. On a long engagement the surface drifts (a new endpoint, a new dependency); un-reviewed drift is where bugs hide. This skill keeps the model complete and re-checks it for drift.
/engage.gate — the gate refuses to advance on un-acknowledged drift.threat-model.json (see templates/threat-model/): five required lists —
assets, entry_points, trust_boundaries, attck (technique ids), mitigations.
# 1. Lint - every required field present, no placeholders, valid ATT&CK ids
python skills/threat-model-discipline/scripts/threatmodel_lint.py lint .engage/recon/threat-model.json
# 2. Drift - diff a re-run against the reviewed baseline; NEW entry points/assets/boundaries are
# unreviewed surface and BLOCK the gate until re-reviewed or acknowledged
python skills/threat-model-discipline/scripts/threatmodel_lint.py drift \
.engage/recon/threat-model.baseline.json .engage/recon/threat-model.json
Or use /engage.threatmodel (materialize | lint | drift).
TBD/[fill in] — that is not a model; the lint fails it.entry_point appeared and you proceeded anyway — that is the exact gap attackers use.test cases passed, vs 6 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.