threat-model-discipline
Skill401 starsChanged 55 days agoMITView on GitHub
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
In this repository38 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- active-directory-attackSkill
- advanced-redteamSkill
- ai-agent-redteamSkill
- ai-securitySkill
- browser-exploitationSkill
- cicd-supply-chainSkill
- cloud-securitySkill
- coding-masterySkill
- container-k8s-escapeSkill
- crypto-analysisSkill
- edr-evasionSkill
- engagement-flowSkill
- engagement-memorySkill
- exploit-developmentSkill
- finding-disciplineSkill
- incident-responseSkill
- initial-accessSkill
- keylogger-archSkill
- malware-analysisSkill
- mobile-pentestSkill
- network-attackSkill
- opsec-disciplineSkill
- privesc-linuxSkill
- privesc-windowsSkill
- recon-osintSkill
- red-team-opsSkill
- reverse-engineeringSkill
- scope-disciplineSkill
- shellcode-devSkill
- threat-huntingSkill
- using-offensive-claudeSkill
- vulnerability-analysisSkill
- web-pentestSkill
- windows-boundariesSkill
- windows-mitigations-bypassSkill
- wireless-rfSkill
- writing-offensive-skillsSkill
The file
Files
Threat-Model Discipline
Overview
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.
When to Activate
- At engagement start (after recon-osint), before weaponize/exploit.
- Whenever recon is re-run or the target changes — to catch new attack surface.
- At
/engage.gate— the gate refuses to advance on un-acknowledged drift.
The model (JSON, materialized from recon)
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.jsonOr use /engage.threatmodel (materialize | lint | drift).
Red Flags — STOP
- "We'll model it as we go" — unmodeled surface = untested surface. Model first.
- "Recon changed but the threat model didn't" — re-run drift; new surface must be re-reviewed.
- A threat model full of
TBD/[fill in]— that is not a model; the lint fails it. - A new
entry_pointappeared and you proceeded anyway — that is the exact gap attackers use.
Rationalizations
| Excuse | Reality |
| "The model is obvious, skip it" | Obvious to you ≠ documented. Coverage you can't diff is coverage you can't trust. |
| "Drift is just noise" | A new entry point is new attack surface. Acknowledge it explicitly or re-review. |
| "ATT&CK mapping is busywork" | It turns 'we tested stuff' into 'we covered these techniques' — the report's backbone. |
Pairs with scope-discipline (what you may touch) and finding-discipline (what counts as proven).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

