threat-model-discipline SKILL.md skillA
threat-model-discipline from hypnguyen1209/offensive-claude is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
mdr add hypnguyen1209/offensive-claude/threat-model-discipline@git:20260630.b54aaaaPins git:20260630.b54aaaa in mdr.lock. Pin the fingerprint instead.
- Audit grade
- A, 17 of 17 checks passed
- Kind
- SKILL.md skill
- Repository
- hypnguyen1209/offensive-claude
- Path
skills/threat-model-discipline/SKILL.md- Versions recorded
- 2
- Latest version
- git:20260630.b54aaaa, committed Jun 30, 2026
- First version recorded
- Jun 30, 2026
- Size
- 2,663 bytes
- Repository stars
- 410
- License
- MIT
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.
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# 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`. ```bash # 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 …
Read the whole file at its exact version.
How to install
mdr add hypnguyen1209/offensive-claude/threat-model-discipline@sha256:46c6e89ae25f0e17The line at the top of this page pins the label git:20260630.b54aaaa, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
[](https://markdownregistry.com/a/art_5zqv7sejbpsa5rji)
4 badge image fetches in 30 days. What the badge shows.
Versions
The registry has recorded 2 versions of this file, all committed on Jun 30, 2026.
| version | committed | commit | size | audit | |
|---|---|---|---|---|---|
| git:20260630.b54aaaa latest | 2026-06-30 | b54aaaa | 2,663 B | A | view · diff |
| git:20260630.df7d895 | 2026-06-30 | df7d895 | 2,622 B | A | view |
Audit of the latest version
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (2663 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No link to an exfiltration or paste host
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No prompt-injection phrasing
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
- pass: No link to a raw IP address
- pass: No script tag
Source
hypnguyen1209/offensive-claude · 410 stars · license MIT · pushed 2026-10-22 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_5zqv7sejbpsa5rji GET https://markdownregistry.com/api/v1/resolve?ref=hypnguyen1209/offensive-claude/threat-model-discipline GET https://markdownregistry.com/api/v1/blob/46c6e89ae25f0e1739b738517bc7cc4a2c93451463e7f10cf6aa47749fae3ce9
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.