agent-runtime-validati…
Plans and evaluates bounded runtime tests of AI agents, tools, memory, hooks, approvals, and scope enforcement. Use when static…
Maps a target's public footprint — infrastructure, tech stack, leaked credentials, and people — using third-party data so no packet reaches the target. Use when scoping an engagement, planning a phishing pretext, or doing reconnaissance where the target must not detect it, and
Claude Code
$ npx -y skills add zero-lab-ai/skills --skill osint-scanner --agent claude-code
Codex
$ npx skills add zero-lab-ai/skills --skill osint-scanner -a codex -y
Cursor
$ npx skills add zero-lab-ai/skills --skill osint-scanner -a cursor -y
Gemini CLI
$ npx skills add zero-lab-ai/skills --skill osint-scanner -a gemini-cli -y
GitHub Copilot
$ npx skills add zero-lab-ai/skills --skill osint-scanner -a github-copilot -y
OpenCode
$ npx skills add zero-lab-ai/skills --skill osint-scanner -a opencode -y
Windsurf
$ npx skills add zero-lab-ai/skills --skill osint-scanner -a windsurf -y
name: osint-scanner description: "Maps a target's public footprint — infrastructure, tech stack, leaked credentials, and people — using third-party data so no packet reaches the target. Use when scoping an engagement, planning a phishing pretext, or doing reconnaissance where the target must not detect it, and when deciding whether a recon action actually touches the target or not." allowed-tools: Read Grep Glob Bash
The stealthiest scan is the one you never send. OSINT reaches a target's footprint by asking third parties who already looked — so done correctly it generates **zero packets to the target** and nothing to detect.
**The single discipline that makes this red-team-safe: know, for every action, whether it touches the target.** A query to Shodan reads a scan Shodan already ran. Pointing a tool at the target's own web host or authoritative nameserver is contact, and contact is what a defender sees. The line between them is the skill; blur it and OSINT stops being passive.
uv run {baseDir}/scripts/check_passive.py plan.jsonTakes a plan of intended actions and reports each one's contact level — `none` (third party only), `target` (reaches the target's infrastructure), or `unknown` — and **fails a passive plan that contains any `target` or `unknown` action.** An unexamined "maybe" is treated as contact, because on a red team op an unexamined maybe is how you get caught. See `references/contact-levels.md`.
Map servers, subdomains and cloud without a packet to their firewall.
| Tool | Gets you | Contact | |---|---|---| | `amass` (passive) | subdomains from hundreds of passive sources | none | | `crt.sh` | every TLS cert ever issued — exposes dev/staging subdomains | none | | Shodan / Censys | open ports, software versions, exposures from global scans | none | | `dig` TXT/MX (public resolver) | mail provider and security stack (Proofpoint, Mimecast, Google) | none |
> ⚠ `amass` and `theHarvester` also have **active** modes that resolve and > brute-force against the target. Those are contact. Declare the mode.
Know what you are up against before planning anything.
fetches the pages — that is contact; the catalog lookup is not).
phishing defenses before writing a pretext.
The initial foothold that needs no exploit.
in commit history (the repo is public; you are reading what they published).
If you want completeness and do not care about noise, you want the `network-recon` skill (penetration-testing). This skill assumes the opposite: the target must not know you looked. Thoroughness that generates detectable contact is a loss here, not a win.
| Thought | Reality | |---|---| | "It's just recon, it's harmless." | Recon that touches the target is detectable and attributable. Contact is the thing to avoid, not the payload. | | "`dig` is passive." | `dig` against the target's authoritative nameserver is contact. Only a public-resolver cache read is not. State which. | | "amass is a passive tool." | Only in passive mode. Active/brute resolves against the target. Declare the mode or the script fails the plan. | | "I'll run a quick httpx to confirm the hosts are live." | That is the first packet you send the target, and it undoes the point of everything passive that came before. | | "The tool isn't in the list, probably fine." | Unknown is treated as contact and fails a passive plan. Classify it first. | | "More thorough is better." | On a red team op, more contact is worse. The quiet result that no one noticed beats the complete one that tripped an alert. | | "TruffleHog touches their repo." | It reads a repo they published publicly. Reading public data is not contact with their production infrastructure. |
Portable, evidence-bound security skills for authorized defensive assessment, penetration testing, red teaming, detection engineering, purple teaming, and engagement operations. The collection contains 56 skills in 10 installable plugins from zero-lab.ai.
Plans and evaluates bounded runtime tests of AI agents, tools, memory, hooks, approvals, and scope enforcement. Use when static…
Reviews an MCP server's tool surface for tool poisoning, over-broad parameters, missing descriptions, and privilege escalation…
Maps identity, authority, instruction, data, memory, and approval propagation across agents and agent-to-agent handoffs. Use when…
Assesses whether direct, indirect, multi-turn, retrieved, or tool-mediated instructions can override an AI system's intended…
Maps cloud identity and authorization paths across AWS, Azure, GCP, and hybrid trust boundaries, separating proven access from…
Tracks embedded-device and firmware assessment coverage across exact units, acquisition methods, debug interfaces, stored…
Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…
Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys)…
Clean and finalize authorized natural-language text intended for readers by auditing suspicious invisible Unicode and rewriting…