Fast PARALLEL wiki lookup engine over wiki/techniques + wiki/payloads + wiki/tools + wiki/cheatsheets for a surface/service/vuln-class. Two modes - quick (one qmd search, cheap, fire constantly) and deep (4 parallel subagents, one per area, merged ready-to-use arsenal card, cached). This is the fast path arsenal that `arsenal` delegates to; the hunt-* skills each inline their own qmd_query and can hand off here for a parallel lookup. Use for "what do I use against <surface>", "arsenal for <X>", "deep/full arsenal", "tool + payload + technique + cheatsheet for <X>", "fast wiki lookup", "parallel wiki search", any "how do I attack/exploit <service|vuln-class>" where you want the documented tooling + payloads before hand-rolling.
npx skills add https://github.com/Encod3d-Sec/TORCH --skill wiki-arsenal
The fast, wiki-first lookup engine for "what do I use against this surface". Runs the four
knowledge areas in parallel so a deep lookup is one wall-clock, not four serial reads. arsenal
delegates here; the hunt-* skills each carry their own wiki-first qmd_query (MCP-independent) and
can hand off here for a fast parallel lookup. Never hand-roll from memory when the wiki has the answer.
Input: a surface, service, or vuln-class (e.g. Jenkins on 8080, SSRF, Kerberoasting).
Slug the surface (lowercase, non-alnum -> -). If targets/<active-eng>/arsenal/<slug>.md
exists, read and return it. Do not re-spend. (<active-eng> = the dir named in targets/active.md.)
One mcp__wiki-search__qmd_query over the whole index (add a qmd_search keyword pass when the
surface is an exact product/CVE string). Group the hits under the four areas and return each as
path -> one-line snippet:
wiki/techniques/)wiki/payloads/)wiki/tools/)wiki/cheatsheets/)Cost ~1-2k tokens, no subagents. This is what arsenal calls by default and what you fire on
every new surface to raise wiki coverage cheaply. Stop here unless the surface is worth deep prep.
Dispatch FOUR parallel subagents in a SINGLE message (Agent tool), one per area, with
model: haiku - each only reads its area and distils a card, which a lightweight model does well
at a fraction of the cost (a full-model fan-out measured ~170k tokens; haiku cuts that hard). Each
is told to search only its area, read the top 2-3 matching pages, and return a compact ready-to-use
card for its area ONLY (nothing else), citing the page paths it used:
| Agent | Searches | Returns |
|---|---|---|
| tools | wiki/tools/ | the automated tool(s) to run + the exact command line |
| payloads | wiki/payloads/ | ready-to-send payloads for the vuln-class |
| techniques | wiki/techniques/ | the attack steps / chain |
| cheatsheets | wiki/cheatsheets/ | quick copy-paste commands |
Each agent scopes its search to its area: pass a path filter to qmd, or query the whole index
and keep only wiki/<area>/ hits, then read those pages. The pages an agent reads stay in that
agent's context and are discarded; you ingest only its card.
Merge the four returned cards into one arsenal card, four labelled sections plus a final
Sources: line listing every page used.
Write the merged card to targets/<active-eng>/arsenal/<slug>.md (create the dir on demand) with
frontmatter surface: and generated:. That is the cache step 0 reads next time.
model: haiku, each capped to the top 2-3 pages. The costis isolated to the subagents; your main context only gains the merged card.
The full class-specific methodology lives in the matching hunt-* skill. After the arsenal card,
hand off to it (e.g. Skill(hunt-ssrf)) for the actual exploitation loop.
Take encod3d-sec/wiki-arsenal 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.