Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when Codex is already in the threat-modeling phase of a security scan, the user explicitly invokes $threat-model, or the user explicitly asks to create, update, or persist a repository threat model. Do not use as the primary trigger for full PR, commit, branch, patch, or repository scans.
.claude/skills/cowork-os-threat-model/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -18% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 102% | 0% |
| case-10 | ✓→✗ | ▼ Worse | 44% | 0% |
Establish the repository-scoped threat model at the path defined in ../../references/scan-artifacts.md. If this already exists, stop here. If a threat model or clearly authoritative security scan guidance is provided or already exists, persist it unchanged to this file, then stop here.
AGENTS.md can be that authoritative source when it is sufficiently specific about the repository's product surfaces, trust boundaries, attacker-controlled inputs, assumptions, or security scan guidance to serve as the threat model.
If no threat model is provided, generate a repository-scoped threat model to be used in future bug discovery. The threat model should holistically cover the entire repository and should make it obvious:
The path references in this skill are the default locations for this phase. If the user explicitly provides a different path for a required input or output, use the user-provided path instead of the corresponding default path referenced in this skill. If a required input is still missing, stop and ask the user for it before continuing. Use the shared scan artifact path conventions in ../../references/scan-artifacts.md.
repo_name, security_scans_dir, and the repository-scoped threat model path using ../../references/scan-artifacts.md.AGENTS.md is acceptable here when it is clearly being used as the security scan guidance or threat model source for this scan and is sufficiently repository-specific to stand in for a threat modelGenerate and structure the threat model using references/threat-model-guidance.md.
personal/, test/, tests/, docs/, examples/, or one-off developer tooling unless repository evidence shows those are real deployed or privileged workflow surfaces.../../references/scan-artifacts.md.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-18 | fail→pass | 8,233 | 3,345 | -59% | 1 | 1 | 0% | 1,243 | 1,233 | -1% | 0 | 0 | — |
case-01 | fail→fail | 6,103 | 8,868 | +45% | 1 | 1 | 0% | 199 | 938 | +371% | 0 | 0 | — |
case-02 | fail→fail | 12,097 | 11,645 | -4% | 1 | 1 | 0% | 269 | 976 | +263% | 0 | 0 | — |
case-03 | fail→fail | 5,373 | 3,950 | -26% | 1 | 1 | 0% | 284 | 952 | +235% | 0 | 0 | — |
case-04 | fail→fail | 15,623 | 8,899 | -43% | 1 | 1 | 0% | 2,399 | 1,314 | -45% | 0 | 0 | — |
case-05 | fail→pass | 10,777 | 3,762 | -65% | 1 | 1 | 0% | 1,596 | 1,314 | -18% | 0 | 0 | — |
case-06 | fail→fail | 21,639 | 26,088 | +21% | 1 | 1 | 0% | 3,276 | 4,065 | +24% | 0 | 0 | — |
case-07 | fail→fail | 18,773 | 23,711 | +26% | 1 | 1 | 0% | 2,701 | 3,587 | +33% | 0 | 0 | — |
case-08 | fail→fail | 16,476 | 4,561 | -72% | 1 | 1 | 0% | 2,669 | 988 | -63% | 0 | 0 | — |
case-09 | fail→fail | 14,482 | 6,853 | -53% | 1 | 1 | 0% | 2,379 | 1,042 | -56% | 0 | 0 | — |
case-10 | pass→fail | 12,425 | 24,100 | +94% | 1 | 1 | 0% | 830 | 1,198 | +44% | 0 | 0 | — |
case-11 | pass→pass | 11,707 | 5,994 | -49% | 1 | 1 | 0% | 1,716 | 1,603 | -7% | 0 | 0 | — |
case-12 | fail→pass | 18,765 | 20,616 | +10% | 1 | 1 | 0% | 2,738 | 3,715 | +36% | 0 | 0 | — |
case-13 | fail→fail | 14,859 | 12,100 | -19% | 1 | 1 | 0% | 2,174 | 1,193 | -45% | 0 | 0 | — |
case-14 | pass→pass | 15,830 | 10,974 | -31% | 1 | 1 | 0% | 2,430 | 2,343 | -4% | 0 | 0 | — |
case-15 | fail→fail | 18,529 | 37,706 | +103% | 1 | 1 | 0% | 2,690 | 7,304 | +172% | 0 | 0 | — |
case-16 | fail→pass | 8,235 | 13,384 | +63% | 1 | 1 | 0% | 1,248 | 2,520 | +102% | 0 | 0 | — |
case-17 | pass→pass | 21,505 | 19,274 | -10% | 1 | 1 | 0% | 3,478 | 3,784 | +9% | 0 | 0 | — |
case-19 | pass→pass | 12,138 | 6,634 | -45% | 1 | 1 | 0% | 1,823 | 1,767 | -3% | 0 | 0 | — |
case-20 | pass→pass | 3,150 | 2,265 | -28% | 1 | 1 | 0% | 474 | 1,014 | +114% | 0 | 0 | — |
case-21 | pass→pass | 7,269 | 6,395 | -12% | 1 | 1 | 0% | 1,215 | 1,735 | +43% | 0 | 0 | — |
case-22 | pass→pass | 10,357 | 8,646 | -17% | 1 | 1 | 0% | 1,577 | 1,891 | +20% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 13 counted toward the lift figure. The other 9 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 13 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.