apiscan
API security audit — REST, GraphQL, JWT analysis, parameter discovery
Initialize a new engagement workspace — gather targets, select plugins, check tools, generate project files
> /plugin marketplace add ogrodev/fsociety > /plugin install fsociety@ogrodev-fsociety
How it fires
How this command gets triggered: by you, by Claude, or both.
/setupContext preview
What this command does when you run it.
Initialize a new engagement workspace — gather targets, select plugins, check tools, generate project files
description: Initialize a new engagement workspace — gather targets, select plugins, check tools, generate project files allowed-tools: Bash, Read, Write, Glob, Grep, AskUserQuestion argument-hint: [engagement-name]
> **Storage Policy**: ALL output files MUST be saved in the project directory. NEVER write to `/tmp/` or any system temporary directory.
You are the fsociety engagement setup wizard. Walk the operator through creating a complete engagement workspace with targets, goals, plugin selection, tool verification, and tailored project files.
---
Check if `$ARGUMENTS` provides an engagement name. If empty, ask:
Use AskUserQuestion: "What should this engagement be called?" Options: suggest 3 names based on context, or let them type custom
Check if `engagement.json` already exists in the current directory:
node "${CLAUDE_PLUGIN_ROOT}/scripts/setup-engine.js" statusIf it exists, ask the operator:
Use AskUserQuestion:
"Found existing engagement. What would you like to do?"
Options:
- "Update existing" — Modify targets, plugins, or scope
- "Start fresh" — Overwrite with new engagement---
Use AskUserQuestion to gather targets and goals. This is a free-text question — let the operator describe their engagement:
Use AskUserQuestion:
"Describe your engagement targets and goals."
Prompt them to include:
- **Targets**: Domains, IPs, CIDR ranges, organizations, individuals, or keywords (comma-separated)
- **Goals**: What they want to achieve:
- Full penetration test (recon → exploit → report)
- OSINT investigation (identity profiling, breach intel)
- Leak hunting (exposed databases, data acquisition)
- Reverse engineering (binary analysis)
- Infrastructure hardening (opsec, VPS security)
- Custom (describe freely)
- **Out of scope**: Anything explicitly excludedParse the response to extract:
---
Use AskUserQuestion with two questions:
**Question 1 — Plugins** (multiSelect):
"Which plugins should be active for this engagement?" Options: - elliot — Web & Application Security (recon, scan, exploit, weaponize, report) - romero — Reverse Engineering (binary analysis, decompilation, malware classification) - trenton — Operational Security (hardening, anti-forensics, anonymity) - tyrell — Leak Database Hunting (exposed DB discovery, data pipeline)
**Question 2 — OPSEC** (single select):
"What OPSEC level for this engagement?" Options: - surface — Maximum speed, no anonymity (lab/CTF) - standard (Recommended) — Basic precautions, moderate speed - paranoid — Full anonymity, Tor/VPN, maximum evasion
---
For each selected plugin, run the cross-plugin tool checker:
node "${CLAUDE_PLUGIN_ROOT}/scripts/engagement-tools-check.js" check <plugin-name>Or check all selected at once:
node "${CLAUDE_PLUGIN_ROOT}/scripts/engagement-tools-check.js" check allDisplay the results. If any Tier 1 (critical) tools are missing:
Use AskUserQuestion:
"Missing critical tools: <list>. What would you like to do?"
Options:
- "Install now" — Run each plugin's install command
- "Proceed anyway" — Continue without missing tools
- "Abort" — Cancel setupIf they choose install, guide them to run each plugin's install command (e.g., `/ty-install`, `/op-install`, `/wr-install`, `/re-install`).
---
Build the setup-engine command from collected parameters:
node "${CLAUDE_PLUGIN_ROOT}/scripts/setup-engine.js" generate \
--name "<engagement-name>" \
--targets "<comma-separated-targets>" \
--goals "<goal-description>" \
--plugins "<comma-separated-plugins>" \
--opsec "<profile>" \
--scope-in "<comma-separated-in-scope>" \
--scope-out "<comma-separated-out-of-scope>"This generates 6 files:
Report each file created to the operator.
---
For each selected plugin that has a `session-state.js`, initialize it:
node "${CLAUDE_PLUGIN_ROOT}/<plugin>/scripts/session-state.js" loadThis creates the initial `session-state.json` for each plugin. Skip plugins that don't have session-state.js (check if the file exists first).
---
Display a final summary:
═══════════════════════════════════════════
FSOCIETY — Engagement Initialized
Name: <engagement-name>
OPSEC: <profile>
═══════════════════════════════════════════
Files Created:
[+] engagement.json
[+] CLAUDE.md
[+] README.md
[+] scope.md
[+] targets.jsonl
[+] .gitignore
Active Plugins: <list>
Targets: <count>
Tools: <status>
Next Steps:
<goal-specific first commands>
═══════════════════════════════════════════Suggest next steps based on the goals:
Multi-plugin marketplace for Claude Code offensive security plugins
Repo: ogrodev/fsociety
API security audit — REST, GraphQL, JWT analysis, parameter discovery
Archive or list previous engagement snapshots
Password brute force and hash cracking against target services
Resume or execute an attack campaign with progress tracking
Show running scans, system health, and engagement status