Generate SITF-compliant attack flow JSON from red team or pentest reports. Accepts report files, URLs, or pasted findings. Use when documenting offensive security engagements.
npx skills add https://github.com/wiz-sec-public/SITF --skill red-team-flow
Generate SITF-compliant attack flow JSON files from red team or penetration testing reports.
/red-team-flow <engagement-name> [source]
engagement-name: Identifier for the engagement (e.g., "acme-2026q1", "client-sdlc-audit")source: One of:--file <path>: Path to report file (markdown, txt, json, pdf)--url <url>: URL to report or findings pageArguments: $ARGUMENTS
The skill accepts red team and pentest reports in various formats:
The skill looks for these common report patterns:
When this skill is invoked:
--file specified:--url specified:techniques.json to get the full SITF technique library."type": "technique-gap"Apply these layout rules (consistent with /attack-flow):
"type": "smoothstep" for all edgesGenerate attack flow JSON with this structure (identical to /attack-flow output):
{
"metadata": {
"name": "Engagement Name",
"title": "Canvas Display Title",
"created": "ISO-8601 timestamp",
"version": "1.0",
"framework": "SITF",
"source": "red-team-report",
"description": "Brief engagement description"
},
"nodes": [],
"edges": []
}
Metadata field guidelines:
name: Short identifier (e.g., "acme-2026q1", "client-sdlc-audit")title: Concise canvas title, max 5-7 words (e.g., "ACME CI/CD Pipeline Assessment", "Client SDLC Red Team Q1")description: One sentence summary, max 150 charactersNode types (same as /attack-flow):
entryPoint: How the engagement started (Assumed Breach, External Attacker, Insider, etc.)component: SITF component container (endpoint, vcs, cicd, registry, production)technique: Attack technique from techniques.jsontechnique-gap: Placeholder for missing SITF techniqueexitPoint: Engagement outcome (Data Exfiltration, Persistence, Supply Chain Compromise, etc.)Special metadata for red team flows:
"source": "red-team-report" to metadata"engagement" field if client/engagement name is known"scope" array listing in-scope components{
"id": "technique-c003-1",
"type": "technique",
"position": { "x": 95, "y": 160 },
"data": {
"id": "T-C003",
"name": "PWN Request / Poisoned Pipeline Execution",
"component": "cicd",
"stage": "Initial Access",
"description": "Full description from techniques.json",
"risks": ["risk1", "risk2"],
"controls": { "protective": [], "detective": [] },
"customLabel": "Exploited workflow in repo X",
"evidence": "PR #142 triggered workflow with write permissions",
"severity": "Critical"
},
"zIndex": 10,
"width": 160,
"height": 96
}
After generating the flow, analyze defensive gaps:
| Technique | Missing Control | OWASP SPVS |
|-----------|-----------------|------------|
| T-C003 | Minimal workflow permissions | V3.1 |
| T-C005 | Log sanitization | V2.5 |
Run this checklist before outputting:
[ ] Valid JSON structure (parse test passes)
[ ] Required fields: metadata.{name,title,created,version,framework,source}, nodes[], edges[]
[ ] All node IDs are unique
[ ] All edge source/target reference valid node IDs
[ ] Technique nodes use data.id and data.name (NOT techniqueId/label)
[ ] Technique nodes include full risks[] and controls from techniques.json
[ ] All techniques centered within components (x = component.x + 45)
[ ] Component heights adequate for technique count
[ ] Out-of-scope findings noted but not forced into SITF
[ ] Evidence preserved in customLabel or evidence fields
[ ] Exit points connected to terminal techniques
flows/red-team/<engagement-name>.jsonpython3 -c "import json; json.load(open('file'))"## Red Team Flow: <engagement-name>
### Attack Chain
1. Initial Access via [entry point]
2. [Technique] → [Technique] → ...
3. Impact: [exit point]
### Techniques Used
| ID | Name | Component | Evidence |
|----|------|-----------|----------|
| T-C003 | PWN Request | CI/CD | PR #142 |
| ... | ... | ... | ... |
### Control Gaps Identified
| Missing Control | Would Prevent | Priority |
|-----------------|---------------|----------|
| Minimal workflow permissions | T-C003, T-C005 | High |
| ... | ... | ... |
### Out-of-Scope Findings
- [Finding X]: Generic cloud attack, see MITRE ATT&CK T1078
### Technique Gaps
- [Finding Y]: No matching SITF technique, run `/technique-proposal`
/technique-proposal for each/red-team-flow acme-2026q1 --file ./reports/acme-final-report.md
/red-team-flow client-audit --url https://internal.wiki/engagements/client-findings
/red-team-flow demo-engagement
We started with access to a developer laptop (assumed breach). Found GitHub
PAT in ~/.config/gh/hosts.yml. Used the token to access private repos and
discovered hardcoded AWS credentials in a workflow file. The AWS creds had
admin access to production S3 buckets. We exfiltrated customer data as POC.
Red Team Reports (attack chains):
Pentest Reports (isolated findings):
The skill auto-detects based on report structure:
Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks
Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.
Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.
Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill.
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.
Take wiz-sec-public/red-team-flow from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.