Graph DB Writes
samugit83/redamon
Writing to the Neo4j attack-surface graph in RedAmon: the tenant-isolation MERGE key every entity node must carry, where graph methods live (mixins, not the client), and the schema places that must…
A skill your agent uses when starting an engagement, before exploitation, or whenever the attack surface changes — build/validate the threat model and detect drift (new unreviewed surface) before…
$ npx skills add hypnguyen1209/offensive-claude --skill threat-model-discipline -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hypnguyen1209/offensive-claude threat-model-discipline --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hypnguyen1209/offensive-claude.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/threat-model-discipline .claude/skills/threat-model-discipline && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "threat-model-discipline" agent skill from https://github.com/hypnguyen1209/offensive-claude/tree/main/skills/threat-model-discipline into .claude/skills/threat-model-discipline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threat-model-discipline", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hypnguyen1209/offensive-claude/tree/main/skills/threat-model-disciplineType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hypnguyen1209/offensive-claude --skill threat-model-discipline -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hypnguyen1209/offensive-claude threat-model-discipline --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hypnguyen1209/offensive-claude.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/threat-model-discipline .agents/skills/threat-model-discipline && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "threat-model-discipline" agent skill from https://github.com/hypnguyen1209/offensive-claude/tree/main/skills/threat-model-discipline into .agents/skills/threat-model-discipline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threat-model-discipline", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hypnguyen1209/offensive-claude --skill threat-model-discipline -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hypnguyen1209/offensive-claude threat-model-discipline --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hypnguyen1209/offensive-claude.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/threat-model-discipline .cursor/skills/threat-model-discipline && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "threat-model-discipline" agent skill from https://github.com/hypnguyen1209/offensive-claude/tree/main/skills/threat-model-discipline into .cursor/skills/threat-model-discipline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threat-model-discipline", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hypnguyen1209/offensive-claude.git --path skills/threat-model-discipline--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hypnguyen1209/offensive-claude --skill threat-model-discipline -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hypnguyen1209/offensive-claude threat-model-discipline --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hypnguyen1209/offensive-claude.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/threat-model-discipline .gemini/skills/threat-model-discipline && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "threat-model-discipline" agent skill from https://github.com/hypnguyen1209/offensive-claude/tree/main/skills/threat-model-discipline into .gemini/skills/threat-model-discipline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threat-model-discipline", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hypnguyen1209/offensive-claude threat-model-disciplineInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hypnguyen1209/offensive-claude --skill threat-model-discipline -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hypnguyen1209/offensive-claude.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/threat-model-discipline .github/skills/threat-model-discipline && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "threat-model-discipline" agent skill from https://github.com/hypnguyen1209/offensive-claude/tree/main/skills/threat-model-discipline into .github/skills/threat-model-discipline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threat-model-discipline", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hypnguyen1209/offensive-claude --skill threat-model-discipline -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hypnguyen1209/offensive-claude threat-model-discipline --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hypnguyen1209/offensive-claude.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/threat-model-discipline .opencode/skills/threat-model-discipline && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "threat-model-discipline" agent skill from https://github.com/hypnguyen1209/offensive-claude/tree/main/skills/threat-model-discipline into .opencode/skills/threat-model-discipline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threat-model-discipline", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
threat-model-disciplineA skill your agent uses when starting an engagement, before exploitation, or whenever the attack surface changes — build/validate the threat model and detect drift (new unreviewed surface) before…
Threat Model Discipline is an agent skill from hypnguyen1209/offensive-claude. 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
Its SKILL.md is about 660 tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/threatmodel_lint.py`).
It sits in Security, covering Threat modeling and Penetration testing. The repository describes itself as: Offensive security toolkit for Claude Code covering red team, exploit dev, AD attacks, EDR bypass, mobile pentest. The licence is MIT.
Read from SKILL.md and the folder at commit a506ad3. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Threat Model Discipline loads about 660 tokens when it runs. Until then it costs about 52 tokens; SKILL.md has 250 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from hypnguyen1209/offensive-claude at commit a506ad3, republished under its MIT licence (© hypnguyen1209). 250 words, ~660 tokens.
.claude/skills/threat-model-discipline/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.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.jsonOr 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.| 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).
© hypnguyen1209, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in skills/threat-model-discipline of hypnguyen1209/offensive-claude.
Open the folder on GitHubat commit a506ad3
Threat Model Discipline next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Threat Model Discipline this skillhypnguyen1209/offensive-claude | 388 | — | ~660 | Automated safety check: Pass | MIT | |
| Graph DB Writessamugit83/redamon | 3k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Csono-session/pstack | 136 | — | ~12k | Automated safety check: Notes | MIT | |
| Senior Securitydavila7/claude-code-templates | 33k | 2 repos | ~1.1k | Automated safety check: Notes | MIT | |
| Secure By Designooiyeefei/ccc | 495 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Securitytelagod/code-abyss | 244 | — | ~907 | Automated safety check: Pass | MIT |
samugit83/redamon
Writing to the Neo4j attack-surface graph in RedAmon: the tenant-isolation MERGE key every entity node must carry, where graph methods live (mixins, not the client), and the schema places that must…
no-session/pstack
Chief Security Officer mode. An agent skill from no-session/pstack.
davila7/claude-code-templates
Comprehensive security engineering skill for application security, penetration testing, security architecture, and compliance auditing.
ooiyeefei/ccc
Run an enterprise security review of a system design or existing code before it ships.
telagod/code-abyss
Defensive security engineering judgment, distilled from a stronger model - invoke when THREAT MODELING a system or feature; making security-relevant design decisions (auth, crypto, trust boundaries…
cyberful/cyberful
Build or challenge an application threat model from architecture, dataflows, identities, trust boundaries, business invariants, dependencies, and deployment context.
hypnguyen1209/offensive-claude
A skill your agent uses when assessing cryptography — TLS/PKI auditing, RSA/ECC key attacks, ECDSA nonce lattice recovery, symmetric/AEAD misuse, JWT/JOSE forgery, hash cracking, post-quantum…
hypnguyen1209/offensive-claude
A skill your agent uses when responding to or forensically investigating an incident — triage acquisition (Velociraptor/KAPE), Volatility 3 memory forensics, Chainsaw/Hayabusa EVTX timelining…
hypnguyen1209/offensive-claude
A skill your agent uses when reverse-engineering or detecting malware — static triage + capa/YARA-X, emulation/DBI/.NET unpacking, dynamic/fileless/Volatility 3 memory analysis, C2 config extraction…
hypnguyen1209/offensive-claude
A skill your agent uses when mapping a target's external attack surface or gathering OSINT — subdomain enumeration, attack-surface mapping (httpx/katana/JS secrets), subdomain takeover…
hypnguyen1209/offensive-claude
A skill your agent uses when hunting threats or engineering detections — ATT&CK Detection-Strategies, Sigma + correlation with Detection-as-Code CI, Windows endpoint hunting…
hypnguyen1209/offensive-claude
A skill your agent uses when creating or editing a skill in this offensive-claude repo — for the SKILL.md conventions (trigger descriptions, technique map, runnable scripts, OPSEC/detection…
Categories
A skill your agent uses when starting an engagement, before exploitation, or whenever the attack surface changes — build/validate the threat model and detect drift (new unreviewed surface) before…. Threat Model Discipline is an agent skill from hypnguyen1209/offensive-claude.
Threat Model Discipline fits situations like: starting an engagement; before exploitation; whenever the attack surface changes — build/validate the threat model and detect drift (new unreviewed surface) before advancing.
Run `npx skills add hypnguyen1209/offensive-claude --skill threat-model-discipline -a claude-code`. Or copy the skill folder (skills/threat-model-discipline in hypnguyen1209/offensive-claude) into .claude/skills/threat-model-discipline in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hypnguyen1209/offensive-claude --skill threat-model-discipline -a codex`. Or copy the skill folder (skills/threat-model-discipline in hypnguyen1209/offensive-claude) into .agents/skills/threat-model-discipline in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hypnguyen1209/offensive-claude --skill threat-model-discipline -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/threat-model-discipline, .gemini/skills/threat-model-discipline, .github/skills/threat-model-discipline and .opencode/skills/threat-model-discipline in your project.
Going by SKILL.md and its folder, Threat Model Discipline needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Threat Model Discipline is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 660 tokens (SKILL.md is roughly 2.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Threat Model Discipline: Graph DB Writes (samugit83/redamon, 3k stars), Cso (no-session/pstack, 136 stars), Senior Security (davila7/claude-code-templates, 33k stars) and Secure By Design (ooiyeefei/ccc, 495 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hypnguyen1209 (a GitHub user) maintains it in hypnguyen1209/offensive-claude, which has 388 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on September 28, 2026.
Source: hypnguyen1209/offensive-claude on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.