/osint-autopilot
End-to-end external OSINT engagement autopilot. Run the FULL osint-methodology pipeline to completion in ONE go for an authorized domain — engagement folder, Stages 1-5 (seed, expansion, enrichment, exposure, convergence), multi-agent per-host content+JS fan-out, headline
$ npx -y skills add elementalsouls/Claude-OSINT --skill osint-autopilot --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/osint-autopilot
Context preview
The summary Claude sees to decide when to auto-load this skill.
End-to-end external OSINT engagement autopilot. Run the FULL osint-methodology pipeline to completion in ONE go for an authorized domain — engagement folder, Stages 1-5 (seed, expansion, enrichment, exposure, convergence), multi-agent per-host content+JS fan-out, headline
SKILL.md
osint-autopilot.SKILL.mdname: osint-autopilot
description: End-to-end external OSINT engagement autopilot. Run the FULL osint-methodology pipeline to completion in ONE go for an authorized domain — engagement folder, Stages 1-5 (seed, expansion, enrichment, exposure, convergence), multi-agent per-host content+JS fan-out, headline verification, auto-generated findings, and a consolidated multi-tab .xlsx deliverable. Stops ONLY for Stage 6 (active exploitation) arming and out-of-scope sibling assets. Use whenever asked to "run OSINT / recon / attack-surface" on a target — do NOT deliver a thin passive first pass.
OSINT Autopilot
Purpose: eliminate the "thin first pass, then user pushes for more" failure. When the user says *run OSINT/recon on `<domain>`* (authorized), execute the whole pipeline to completion and hand back the consolidated workbook — no stopping to ask except the two hard gates below.
Read the companion `osint-methodology` skill for the framework; this skill is the executable runbook. Feedback memory `osint-full-pipeline-default` governs the default.
Hard gates (the ONLY reasons to stop and ask)
1. **Authorization** — if not already asserted, ask the one scope question, then proceed. (Here it's typically already signed.) 2. **Stage 6 (active exploitation)** — BOLA/IDOR, credential replay, injection confirmation. Never run under autopilot; present the ranked target queue and wait for arming. 3. **Out-of-scope siblings** — a newly-discovered sibling domain/brand (e.g. `<company>.io` when scope was `.com`). Flag; don't scan until confirmed.
Everything in Stages 1–5 runs without pausing for questions.
Run sequence
Let `S = ~/.claude/skills/osint-autopilot/scripts`.
1. Deterministic recon (Stages 1–3 + harvest + breach + ports)
bash $S/recon_pipeline.sh <domain>
Creates `~/Research/engagements/<domain>/` and populates evidence (DNS/WHOIS/RDAP/email-sec, subdomain union via subfinder+certspotter+crt.sh, dig-resolve, HTTP probe, identity fabric, /version disclosure, S3 takeover check, gau+wayback+JS harvest, HudsonRock breach, bounded public-IP port scan), hashes everything, and splits responsive hosts into `buckets/bucket-NN`.
Host notes baked in: uses `dig`/`curl` (ProjectDiscovery `dnsx`/`httpx` segfault on this M1 — cgo m1cpu); nmap is time-capped at 10 min so it can't stall.
2. Multi-agent per-host fan-out (Stage 4 exposure)
Read `buckets/COUNT` and the `buckets/bucket-*` paths, then launch the workflow (`ffuf` must be on PATH — `go install github.com/ffuf/ffuf/v2@latest` if missing):
Workflow({ scriptPath: "<S>/host_enum.workflow.js",
args: { domain:"<domain>", engDir:"~/Research/engagements/<domain>" (absolute),
ffuf:"<gopath>/bin/ffuf", wordlist:"<S>/wordlist.txt",
buckets:[ absolute bucket-00 … bucket-NN ] } })**Pass `args` as a real JSON object, NOT a stringified one** — the harness hands `args` to the script verbatim; a string makes `args.domain`/`args.buckets` undefined and only the synthesize agent runs. The script fails loudly if args are malformed. `engDir` must be absolute. `buckets` = absolute paths of every `buckets/bucket-*` file (read `buckets/COUNT`).
It fans out ffuf content-discovery + JS/endpoint analysis per bucket (agentType general-purpose), then synthesizes a ranked BOLA/IDOR target queue. Save `synthesis` to `evidence/stage6-content/SYNTHESIS.md`. Optional screenshots: `gowitness scan file -f <urls> --screenshot-path evidence/stage6-screens --write-db` (Chrome required).
3. Verify headlines yourself (do NOT trust agent output blindly)
Re-curl every CONFIRMED-worthy claim before reporting it: exposed secrets (fetch the JS/vars file), `/version` disclosures, Cognito/Auth0 config, any "unauth admin 200". Downgrade anything you can't reproduce.
4. Auto-findings + workbook
python3 $S/findings_gen.py <domain> # evidence -> findings/findings.csv (rules engine)
python3 $S/build_xlsx.py <domain> # findings.csv + evidence -> <domain>-osint-consolidated.xlsx
`findings_gen.py` encodes the rubric (non-prod exposure, CDN/WAF-bypass origins, internal-IP leak, DMARC/SPF, /version disclosure, JS secrets, S3 takeover, identity fabric, breach severity, WordPress, port exposure). Hand-add any nuanced findings the rules miss by editing `findings.csv`, then re-run `build_xlsx.py`.
5. Report
Give the consolidated `.xlsx` path + a short severity summary, then present the two open gates (Stage 6 queue + any out-of-scope siblings). Offer passive CVE mapping against disclosed versions as a next step.
Deliverable
`~/Research/engagements/<domain>/`:
- `<domain>-osint-consolidated.xlsx` — 9–10 tabs (Summary, Findings, Subdomains, Live Hosts, API Endpoints, Secrets, Ports, Internal-IP-Leak, Screenshots)
- `findings/findings.csv` · `evidence/**` (+ `.sha256`) · `evidence/stage6-content/SYNTHESIS.md` · `run-log.jsonl`
Time budget
Small org (<100 hosts): ~15–25 min wall-clock. Medium (100–1K): ~30–60 min, dominated by the fan-out workflow and gau harvest.
Scale note
The fan-out is ~1 agent per 18 hosts. Keep total agents ≤15 (default guideline); for >270 responsive hosts, raise bucket size in `recon_pipeline.sh` (`split -l`) rather than agent count.
Read more
name: osint-autopilot description: End-to-end external OSINT engagement autopilot. Run the FULL osint-methodology pipeline to completion in ONE go for an authorized domain — engagement folder, Stages 1-5 (seed, expansion, enrichment, exposure, convergence), multi-agent per-host content+JS fan-out, headline verification, auto-generated findings, and a consolidated multi-tab .xlsx deliverable. Stops ONLY for Stage 6 (active exploitation) arming and out-of-scope sibling assets. Use whenever asked to "run OSINT / recon / attack-surface" on a target — do NOT deliver a thin passive first pass.
OSINT Autopilot
Purpose: eliminate the "thin first pass, then user pushes for more" failure. When the user says *run OSINT/recon on `<domain>`* (authorized), execute the whole pipeline to completion and hand back the consolidated workbook — no stopping to ask except the two hard gates below.
Read the companion `osint-methodology` skill for the framework; this skill is the executable runbook. Feedback memory `osint-full-pipeline-default` governs the default.
Hard gates (the ONLY reasons to stop and ask)
1. **Authorization** — if not already asserted, ask the one scope question, then proceed. (Here it's typically already signed.) 2. **Stage 6 (active exploitation)** — BOLA/IDOR, credential replay, injection confirmation. Never run under autopilot; present the ranked target queue and wait for arming. 3. **Out-of-scope siblings** — a newly-discovered sibling domain/brand (e.g. `<company>.io` when scope was `.com`). Flag; don't scan until confirmed.
Everything in Stages 1–5 runs without pausing for questions.
Run sequence
Let `S = ~/.claude/skills/osint-autopilot/scripts`.
1. Deterministic recon (Stages 1–3 + harvest + breach + ports)
bash $S/recon_pipeline.sh <domain>
Creates `~/Research/engagements/<domain>/` and populates evidence (DNS/WHOIS/RDAP/email-sec, subdomain union via subfinder+certspotter+crt.sh, dig-resolve, HTTP probe, identity fabric, /version disclosure, S3 takeover check, gau+wayback+JS harvest, HudsonRock breach, bounded public-IP port scan), hashes everything, and splits responsive hosts into `buckets/bucket-NN`.
Host notes baked in: uses `dig`/`curl` (ProjectDiscovery `dnsx`/`httpx` segfault on this M1 — cgo m1cpu); nmap is time-capped at 10 min so it can't stall.
2. Multi-agent per-host fan-out (Stage 4 exposure)
Read `buckets/COUNT` and the `buckets/bucket-*` paths, then launch the workflow (`ffuf` must be on PATH — `go install github.com/ffuf/ffuf/v2@latest` if missing):
Workflow({ scriptPath: "<S>/host_enum.workflow.js",
args: { domain:"<domain>", engDir:"~/Research/engagements/<domain>" (absolute),
ffuf:"<gopath>/bin/ffuf", wordlist:"<S>/wordlist.txt",
buckets:[ absolute bucket-00 … bucket-NN ] } })**Pass `args` as a real JSON object, NOT a stringified one** — the harness hands `args` to the script verbatim; a string makes `args.domain`/`args.buckets` undefined and only the synthesize agent runs. The script fails loudly if args are malformed. `engDir` must be absolute. `buckets` = absolute paths of every `buckets/bucket-*` file (read `buckets/COUNT`).
It fans out ffuf content-discovery + JS/endpoint analysis per bucket (agentType general-purpose), then synthesizes a ranked BOLA/IDOR target queue. Save `synthesis` to `evidence/stage6-content/SYNTHESIS.md`. Optional screenshots: `gowitness scan file -f <urls> --screenshot-path evidence/stage6-screens --write-db` (Chrome required).
3. Verify headlines yourself (do NOT trust agent output blindly)
Re-curl every CONFIRMED-worthy claim before reporting it: exposed secrets (fetch the JS/vars file), `/version` disclosures, Cognito/Auth0 config, any "unauth admin 200". Downgrade anything you can't reproduce.
4. Auto-findings + workbook
python3 $S/findings_gen.py <domain> # evidence -> findings/findings.csv (rules engine) python3 $S/build_xlsx.py <domain> # findings.csv + evidence -> <domain>-osint-consolidated.xlsx
`findings_gen.py` encodes the rubric (non-prod exposure, CDN/WAF-bypass origins, internal-IP leak, DMARC/SPF, /version disclosure, JS secrets, S3 takeover, identity fabric, breach severity, WordPress, port exposure). Hand-add any nuanced findings the rules miss by editing `findings.csv`, then re-run `build_xlsx.py`.
5. Report
Give the consolidated `.xlsx` path + a short severity summary, then present the two open gates (Stage 6 queue + any out-of-scope siblings). Offer passive CVE mapping against disclosed versions as a next step.
Deliverable
`~/Research/engagements/<domain>/`:
- `<domain>-osint-consolidated.xlsx` — 9–10 tabs (Summary, Findings, Subdomains, Live Hosts, API Endpoints, Secrets, Ports, Internal-IP-Leak, Screenshots)
- `findings/findings.csv` · `evidence/**` (+ `.sha256`) · `evidence/stage6-content/SYNTHESIS.md` · `run-log.jsonl`
Time budget
Small org (<100 hosts): ~15–25 min wall-clock. Medium (100–1K): ~30–60 min, dominated by the fan-out workflow and gau harvest.
Scale note
The fan-out is ~1 agent per 18 hosts. Keep total agents ≤15 (default guideline); for >270 responsive hosts, raise bucket size in `recon_pipeline.sh` (`split -l`) rather than agent count.
8 Claude skills · 100+ recon capabilities · 80 secret-regex patterns · 80+ dorks · 9 read-only credential validators · 27 attack-path templates · ~10,000 lines of structured tradecraft.
Repo: elementalsouls/Claude-OSINT
Other skills on claude-osint.
- /run-claude-osint
Build, validate, and run the claude-osint skills repo — check SKILL.md frontmatter, run the secret_scan.py and h1_reference.py helpers, run sync-skill-content.sh, run the smoke test. Use when asked to run, build, test, validate, or smoke-test claude-osint or its OSINT
Open skill - /cloud-saas-exposure
Organization-grade cloud and supply-chain attack-surface discovery: S3/GCS/Azure Blob bucket discovery via observed-name mining (CNAME/cert-SAN/Wayback) and bounded two-class permutation (6 prefixes x 15 suffixes on trusted tokens, bounded target-bound expansion on subdomain
Open skill - /continuous-exposure-monitoring
Turns one-shot external recon into a continuous monitoring program. Covers the scheduled re-scan-and-diff loop (baseline snapshot -> interval sleep -> re-scan -> asset/finding delta -> threshold-gated webhook alert), the scan-to-scan diff engine (new/removed/changed assets by a
Open skill - /email-domain-security
Rigorous, defensible email-spoofability verdict and SPF supply-chain risk analysis computed from published DNS alone. Deepens the record-level SPF/DMARC/DKIM/BIMI/MTA-STS/DNSSEC fetch recipes in the offensive-osint arsenal (§16.14) with the reasoning that section doesn't do: a
Open skill - /exposure-risk-quantification
FAIR-aligned exposure quantification: turns a pile of recon findings into a defensible 0-100 + A-F org risk score (Likelihood x Impact, three ownership-aware factors: exposure/threat/impact), an ownership + proof demotion cap so unproven or weakly-owned findings can't inflate
Open skill - /identity-provider-recon
Organization-grade identity-fabric mapping: tenant/federation fingerprinting and the pre-auth user-ENUMERATION oracle methodology — enumeration and fingerprint only, never credential submission. Covers domain-to-tenant resolution (Microsoft getuserrealm.srf Managed/Federated
Open skill

