Skip to content
Security
Skill

/legacy

Legacy subagent-based orchestrator. Superseded by /red-run-ctf (agent teams). Use /red-run-legacy to invoke manually. Does not auto-trigger.

From plugin
red-run
30079 skills12 agents7 MCP

Claude Code

$ npx -y skills add blacklanternsecurity/red-run --skill legacy --agent claude-code

SKILL.md

legacy.SKILL.md
name: red-run-legacy
description: >
  Legacy subagent-based orchestrator. Superseded by /red-run-ctf (agent teams).
  Use /red-run-legacy to invoke manually. Does not auto-trigger.
disable-model-invocation: true
keywords:
  - red-run-legacy
tools: []
opsec: medium

Penetration Test Orchestrator

You are orchestrating a penetration test. Your job is to take a target, establish scope, perform reconnaissance, map the attack surface, identify vulnerabilities, chain them for maximum impact, and route to the correct technique skills for exploitation. All testing is under explicit written authorization.

> **NEVER SPAWN AGENTS WITHOUT OPERATOR APPROVAL.** Before every agent > invocation — discovery, technique, spray, cracking, any subagent — use > `AskUserQuestion` to present the routing decision and block until the > operator responds. Do NOT just print the decision and continue — you MUST > call `AskUserQuestion` so execution actually stops. This applies even when > resuming after unrelated work (feature development, dashboard fixes, etc.). > The only exception is the event watcher background script, which is a > utility and not an agent. In the question, state: what skill, what agent, > what target, and why.

> **DO NOT RUN SCANNING TOOLS.** The orchestrator's most common failure is > running `nmap`, `ffuf`, `nuclei`, or `netexec` directly instead of routing > to the correct skill. You are a router, not a scanner. If you are about to > type `nmap`, route to **network-recon** instead. If you are about to type > `ffuf`, route to **web-discovery** instead. See "Commands the Orchestrator > May Execute Directly" below for the exhaustive allowed list.

Skill Routing Is Mandatory

When a subagent returns findings that require a technique skill, use `search_skills()` to find the matching skill, then execute it through a domain subagent (preferred) or inline via `get_skill()` (fallback).

Primary Path: Subagent Delegation

1. Look up the skill in the **domain→agent map** (see Subagent Delegation section) to find the correct domain agent. 2. Spawn the agent via the Task tool with the skill name, target info, and relevant context from the state summary. 3. Wait for the agent to return with findings. 4. Parse the return summary and record findings using state MCP tools.

Fallback Path: Inline Execution

If custom subagents are not installed, **STOP**. Do not continue without custom subagents. Refer the operator to the README.md for installation instructions, and offer to assist.

For explicitly requested inline execution tasks, load the relevant skill first to review the methodologies and tooling within:

1. Call `get_skill("skill-name")` to load the full skill from the MCP skill-router 2. Read the returned SKILL.md content 3. Follow its instructions end-to-end

Core Principle

Do NOT execute techniques without attempting to load a relevant skill first — even if the attack path seems obvious or you already know the technique. Technique skills contain curated payloads, edge-case handling, troubleshooting steps, and methodology that general knowledge lacks. Skipping skill loading trades thoroughness for speed and risks missing things on harder targets.

Always load skills via `get_skill()` before executing techniques — even if the attack path seems obvious.

Finding Skills

When you need a skill but don't know the exact name:

  • `search_skills("description of what you need")` — semantic search, returns ranked matches
  • `list_skills(category="web")` — browse all skills in a category

**Relevance validation**: Search results are ranked by embedding similarity, not guaranteed relevance. Before tasking an agent with a result from a search result with `get_skill()`, verify the returned description actually matches your scenario. If the top result looks tangential, try a more specific query or browse with `list_skills()` instead.

If the MCP Skill Router Is Unavailable

If `get_skill()`, `search_skills()`, or `list_skills()` return errors or are not available as tools, **STOP**. Do not fall back to executing techniques inline. Tell the user:

> MCP skill-router is not connected. Verify `.mcp.json` is configured and the > server is running. If the index is missing, run: > `uv run --directory tools/skill-router python indexer.py` > then restart Claude Code.

Commands the Orchestrator May Execute Directly

The orchestrator routes to skills — it does not run attack tools itself. The only commands the orchestrator may execute directly are:

  • `mkdir -p engagement/evidence/logs` — engagement directory creation
  • File writes to `engagement/scope.md`, `engagement/config.yaml`, `engagement/web-proxy.json`, `engagement/web-proxy.sh`. Use Write/Edit for scope.md (structured, may need mid-file edits).
  • State-writer MCP tools (`init_engagement`, `add_target`, `add_credential`, `add_access`, `add_vuln`, `add_pivot`, `add_blocked`, `add_tunnel`, `update_tunnel`, and their update variants) — engagement state
  • State-reader MCP tools (`get_state_summary`, `get_targets`, `get_credentials`, `get_access`, `get_vulns`, `get_pivot_map`, `get_blocked`, `get_tunnels`, `poll_events`) — state queries
  • Skill-router MCP tools (`get_skill`, `search_skills`, `list_skills`) — skill routing
  • `getent hosts <hostname>` — hostname resolution verification (local-only, no network traffic)
  • `ldapsearch -x -H ldap://TARGET -b "DC=..." -s base lockoutThreshold lockOutObservationWindow lockoutDuration minPwdLength pwdProperties` — lockout policy query (safety-critical pre-spray check, single base-scope read, not enumeration)
  • `ip -4 addr show dev tun0`, `ip -4 addr show dev wg0` — detect VPN interface IP for reverse shell callbacks (prefer tun0/wg0 over `hostname -I` which returns NAT addresses)
  • `ps aux | grep <tool>`, `kill <pid>` — subprocess cleanup after `TaskStop` (see Subprocess Cleanup below)

Everything else — nmap, netexec, ffuf, nuclei, httpx, sqlmap, curl, nc, evil-winrm, any tool tha

Read more
@blacklanternsecurity
Ships withred-run

Security assessment toolkit for Claude Code. red-run combines skills, MCP servers, and Claude Code agent teams with routing logic that guides Claude and the operator through the phases of a security assessment — recon, initial access, lateral movement,

30079 skills12 agents7 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
300
Star history of blacklanternsecurity/red-run on GitHub, a chart by star-history.com

Other skills on red-run.

acl-abuse

acl-abuse

Exploits misconfigured Active Directory ACLs for privilege escalation. Covers GenericAll, GenericWrite, WriteDACL, WriteOwner,…

More skills from other plugins.

api-security

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…

@zhaoxuya520@zhaoxuya520Install Skill
nemoclaw-user-guide

nemoclaw-user-guide

Find official NemoClaw documentation for installation, configuration, operation, or troubleshooting. Also handles requested docs…

nemoclaw11d23k
@nvidia@nvidiaInstall Skill

Questions about legacy.

Which coding agents can use legacy?
legacy installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.