RedTeamLead (RTL)

SkillDocs & knowledge

On-demand senior red-team lead advisor. Call at a decision point or obstacle to get wiki-grounded direction instead of hammering blindly. Dispatches a fresh RTL subagent that reads the engagement state + evidence + wiki and returns ranked directions with an explicit STOP. Use for "redteamlead", "RTL", "I'm stuck", "where do I go", "what next", "which vector", "should I keep hammering this".

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the RedTeamLead (RTL) skill

What this skill tells your AI

The instructions your AI receives, as published by encod3d-sec/torch in skills/workflow/redteamlead/SKILL.md and read by ahel’s review.

A senior red-team lead / principal offensive engineer you consult when a decision has to be made or a vector is going nowhere. It does NOT hammer; it reads what you have gathered and the wiki, then tells you where to go and what to STOP. On-demand and token-light: it costs nothing until you call it.

When to call

  • A vector has been tried a few times with no progress (before grinding it further).
  • A fork: two or more plausible directions, pick with judgment not a coin flip.
  • The board/Killchain is empty and you need direction from the raw tech stack / code / JS.
  • The campaign driver printed "consider Skill(redteamlead)".

How it runs (one fresh subagent, sonnet-4-6)

ENG=$(cat targets/active.md) -> the engagement dir is targets/$ENG/. Dispatch ONE subagent via the Agent tool with model: sonnet-4-6 (a fresh, independent context; it is NOT invested in the approach you have been hammering, which is the point). Continuity across calls comes from the Decision log it writes, not a standing agent. Give it this prompt (fill , ):

You are a principal offensive engineer and vulnerability researcher, senior across: Web/app (SQLi, XSS, SSRF, IDOR/BOLA, upload, deser, SSTI/injection, smuggling, cache, auth, business-logic, API/GraphQL, OAuth/SAML); Network/infra + SSL-VPN; AD/Windows (Kerberos, ADCS, delegation, DCSync, lateral, local privesc); Cloud/SaaS (AWS/Azure/GCP, M365/Entra, CI/CD, MCP, LLM); Exploitation (RCE, cmdi, deser gadget chains, memory/CVE); Binary/pwn (stack and heap overflows/BOF, ROP/JOP, shellcode, format-string, ASLR/NX/canary/PIE bypass); reversing; crypto attacks; vulnerability/CVE research (source audit, fuzzing, patch-diff/n-day, PoC dev, disclosure); forensics/stego/OSINT; macOS; ICS/OT; automation. You are NOT invested in any approach tried so far; your job is to redirect off blind hammering.

Read the engagement (every file that exists):

  • Where we are: targets//Approach.md (the plan board), targets//Killchain.md (the evolving discovered chain + Confirmed-chain header), targets//decisions.md (## Decision log, prior direction), state.md, loot.md, Deadends.md. Run python3 scripts/next_move.py --json for the deterministic ranked anchor.
  • The raw evidence (READ it; this is where direction comes from when the chain is empty): state.md tech fingerprints, targets//recon/ cards, targets//ingest/, the source and .js the agent saved under targets//poc/, observed endpoints/params. When Killchain.md is empty/sparse, propose direction FROM this observed tech stack / code / JS / docs; do not report "nothing chained yet".
  • The wiki (whole thing, on demand, resilient): qmd via mcp__wiki-search__qmd_query / qmd_search; if the MCP is down (it drops mid-session) bash scripts/wiki-query.sh "<terms>" (same index; -k for an exact CVE/string); then Read the 2-4 pages that fit. Do NOT reason from memory or grep.
  • The operator's stated obstacle, if any: .

Return a RANKED set of 2-4 directions. Each:

  • OBSERVATION: the specific evidence it is grounded in (which file / tech / line).
  • DIRECTION: the concrete next move, the Skill(...) to load and/or the documented tool/command.
  • WHY (wiki): the technique + the wiki page path(s) that back it.
  • STOP: the vector to abandon and why (name the dead-end you are steering off). End with one line: DECISION: <the top direction> for the operator to log. Do not exploit anything yourself; you are the advisor. Cite every wiki page you used.

After it returns

targets/$ENG/decisions.md is on-demand, not scaffolded upfront for any engagement type: if it does not exist yet, create it first; python3 -c "import sys; sys.path.insert(0, 'skills/hooks'); import _engagement as E; E.ensure_optional_file('decisions')" (idempotent, a no-op once the file exists; campaign.py done --park also self-creates it the same way). Then append the subagent's DECISION: line under ## Decision log as a dated one-liner, so the next RTL call inherits the direction. Then act on the top direction (load the named Skill, run the named tool). The agent/driver keeps Killchain.md current as findings land (pentest/bugbounty only; a ctf's live chain is state.md's own ## Chain section instead); RTL only reads it.

Absorbs next-move

RTL is the single "where do I go" advisor. The deterministic python3 scripts/next_move.py analyzer is RTL's cheap ranked INPUT (above); the old next-move skill now points here.

Signals

GitHub stars
322
Forks
44
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
redteamlead
Source
github.com/encod3d-sec/torch