apiscan
API security audit — REST, GraphQL, JWT analysis, parameter discovery
Ingest recon files to build engagement context and extract findings
> /plugin marketplace add ogrodev/fsociety > /plugin install fsociety@ogrodev-fsociety
How it fires
How this command gets triggered: by you, by Claude, or both.
/ingestContext preview
What this command does when you run it.
Ingest recon files to build engagement context and extract findings
description: Ingest recon files to build engagement context and extract findings allowed-tools: Bash, Read, Write, Glob, Grep, Task argument-hint: <path-to-file-or-directory>
> **Storage Policy**: ALL output files MUST be saved in the project directory. NEVER write to `/tmp/` or any system temporary directory.
You are ingesting reconnaissance files to extract vulnerability findings and build engagement context. The target path is: `$ARGUMENTS`
---
If `$ARGUMENTS` is empty or blank, print this and stop:
Usage: /ingest <path-to-file-or-directory> Examples: /ingest /path/to/recon-notes /ingest ./ATTACK-VECTORS.md /ingest ./reports/
Use Bash to validate the path exists and resolve it to an absolute path:
realpath "$ARGUMENTS"
Determine if the path is a **file** or **directory** using `test -f` / `test -d`.
---
**If single file**: Skip to Step 4 (process directly).
**If directory**: Use Glob to find all ingestible files:
Exclude these from results:
Count the files. If zero, print "No ingestible files found" and stop.
---
---
Read each file with the Read tool.
For each file, extract:
Identify every distinct vulnerability or security issue mentioned. For each one, extract:
Extract key intelligence: 1. **Discovered Endpoints** — all API endpoints, PHP scripts, routes with brief description and auth requirement 2. **Credentials** — usernames, emails, passwords, API keys, tokens, PIX keys 3. **Technology Stack** — CMS versions, frameworks, languages, servers, WAF/CDN, databases 4. **Attack Chains** — multi-step exploitation paths 5. **Blockers** — what prevents exploitation (expired tokens, captcha, rate limits, WAF blocks) 6. **Unresolved Questions** — research gaps, unknowns
After extraction, skip to Step 6.
---
Group files into batches of 5. For each batch, spawn a Task with `subagent_type: "general-purpose"`.
**IMPORTANT**: Launch ALL batch Tasks in a SINGLE message (parallel tool calls) for maximum concurrency.
Each Task prompt should be:
Analyze these reconnaissance files and extract vulnerability findings and engagement context.
FILES TO READ:
{list each absolute file path, one per line}
---
INSTRUCTIONS:
Read each file using the Read tool. Extract two types of information:
## A. VULNERABILITY FINDINGS
For each distinct vulnerability or security issue, extract a pipe-delimited line:
endpoint|vuln_type|param|severity|title
Rules:
- endpoint: URL path as written (preserve leading slash)
- vuln_type: idor, sqli, xss, auth-bypass, rce, info-leak, config, rate-limit, user-enum, ssrf, lfi, type-confusion, etc.
- param: vulnerable parameter name, or "none"
- severity: CRITICAL, HIGH, MEDIUM, LOW, or INFO (uppercase)
- title: brief description, max 80 chars
- One finding per line, no extra whitespace around pipes
Examples:
/api/payments/generate|idor|recipient|CRITICAL|Unauthenticated payment IDOR via recipient parameter
/api/auth/reset-password|rate-limit|code|HIGH|Reset password brute-force no rate limit
## B. ENGAGEMENT CONTEXT
### Discovered Endpoints
- {path}: {description} ({auth requirement})
### Credentials
- {type}: {value}
### Technology Stack
- {component}: {version/details}
### Attack Chains
- {description}
### Blockers
- {description}
### Unresolved Questions
- {question}
---
RETURN FORMAT — use these exact headers:
## FINDINGS
{pipe-delimited lines, one per finding, or "(none)" if no findings}
## CONTEXT
{structured sections as above}Wait for all Tasks to complete.
---
For each extracted finding, run:
node "${CLAUDE_PLUGIN_ROOT}/scripts/findings-tracker.js" add "<endpoint>" "<vuln_type>" "<param>" "<severity>" "<title>"The tracker returns either:
Count the ADDED vs DUPLICATE results for the summary.
**IMPORTANT**: Run these sequentially (each `add` call depends on the DB state from prior calls). You may batch multiple calls in a single Bash invocation using `&&` chains for efficiency:
node "${CLAUDE_PLUGIN_ROOT}/scripts/findings-tracker.js" add "/endpoint1" "idor" "param1" "CRITICAL" "Title 1" && \
node "${CLAUDE_PLUGIN_ROOT}/scripts/findings-tracker.js" add "/endpoint2" "xss" "param2" "HIGH" "Title 2"---
Use the Write tool to create `engagement-context.md` in the project directory.
Structure the document as follows:
# Engagement Context
**Generated:** {today's date}
**Source:** {file count} files ingested from {source path}
**Findings:** {new_count} new findings added, {dup_count} duplicates skipped
---
## Target Profile
{Infer the target domain and description from the content, or write "Unknown — run /scope <target>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