Use when creating or editing a skill in this offensive-claude repo — for the SKILL.md conventions (trigger descriptions, technique map, runnable scripts, OPSEC/detection, red-flags tables, flowchart rules)
Scanned 9/6/2026
Install to Claude Code
npx -y skills add hypnguyen1209/offensive-claude --skill writing-offensive-skills --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Writing Offensive Skills?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hypnguyen1209-writing-offensive-skills)More formats (shields.io, HTML) on the badges page.
---
name: writing-offensive-skills
description: Use when creating or editing a skill in this offensive-claude repo — for the SKILL.md conventions (trigger descriptions, technique map, runnable scripts, OPSEC/detection, red-flags tables, flowchart rules)
---
# Writing Offensive Skills
## Overview
Conventions for authoring skills in this repo so the dispatcher can find them and operators can
trust them. This adapts superpowers' skill conventions to offensive security.
**REQUIRED BACKGROUND:** superpowers:writing-skills (the general conventions) and
superpowers:test-driven-development (skills are tested like code — baseline failure first).
## Description = triggers only
The `description:` field decides whether the dispatcher loads the skill. Write **`Use when…`**
triggering conditions and symptoms ONLY — never summarize the skill's workflow (a workflow summary
makes Claude follow the description instead of reading the skill).
```yaml
# BAD (summarizes workflow): description: Recon skill that enumerates subdomains then scans ports
# GOOD (triggers only): description: Use when mapping a target's external attack surface — subdomains, hosts, exposed services
```
Third person, technology-specific only if the skill is. Verb-first / gerund names.
## Skill layout (progressive disclosure)
```
skills/<name>/
SKILL.md # thin router, <=180 lines
references/ # per-technique deep-dives (theory + 2024-2026 + code + detection + OPSEC)
scripts/ # runnable tooling (no placeholders)
```
**Domain (technique) skill** SKILL.md sections, in order: frontmatter → When to Activate →
**Technique Map** (Technique | ATT&CK Txxxx | CWE | reference | script) → Quick Start →
**OPSEC & Detection** table → Deep Dives (links into `references/`).
**Discipline skill** (a hard rule, e.g. finding/scope/opsec-discipline): Overview with the Iron Law →
the rule → **Red Flags** (STOP signals) → **Rationalizations** table (excuse | reality). State
"violating the letter is violating the spirit" and close loopholes explicitly.
## The four pillars (every technique)
2024-2026 currency (web-search-verified CVEs; no fabricated ids — mark unverified ones), runnable
scripts, OPSEC + detection pairing, technique-level ATT&CK + CWE.
## Flowcharts
Only for non-obvious decision points / "where you might stop too early". Never for reference
material (use tables), code (use blocks), or linear steps (use lists).
## Cross-references
Name only, with explicit markers: `**REQUIRED:** scope-discipline`. Never `@`-link (force-loads,
burns context). Frontmatter `references:`/`scripts:` list the files the skill ships.
## Test before you trust
A skill that enforces discipline must resist rationalization under pressure. Capture the excuses an
agent makes without the skill, put each in the Rationalizations table, and re-check. Safety-relevant
scripts get a `tests/` suite (run `pytest`) and an adversarial review before they're trusted.
## Red Flags
- Description summarizes the workflow → rewrite to triggers only
- A domain skill with no Technique Map / no ATT&CK+CWE / no detection → incomplete
- A discipline skill with no Red Flags / no Rationalizations table → won't hold under pressure
- Fabricated CVE/arXiv ids presented as real → mark UNVERIFIED or remove
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!