skills/pentest-orchestrator/SKILL.md
Orchestrate multi-phase penetration test engagements using specialized sub-agents (specter-recon, specter-enum, specter-vuln, specter-exploit, specter-post, specter-report). Use when: running a structured pentest, spawning pentest agents in sequence, managing engagement phases with decision gates, or adapting workflow when a vector is a dead end. NOT for: single-task scans (use enum/recon skills directly), writing final pentest reports without context (use reporting skill), or vulnerability analysis without orchestration context.
npx skillsauth add duriandurino/openclawrino pentest-orchestratorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage end-to-end penetration test engagements across 7 structured phases with decision gates, agent coordination, and adaptation logic.
✅ USE this skill when:
❌ DON'T use this skill when:
scripts/quick-scan/DISPATCH.mdTreat scripts/ as the default reusable operations layer for full pentests.
Required behavior:
scripts/orchestration/*.py planning/runners before hand-writing repeated phase logicscripts/shared/manifests/ and target-family planning before manual phase planning when the target traits are known or inferablescripts/recon/, scripts/enum/, scripts/vuln/, scripts/exploit/, and scripts/post-exploit/ before inventing new one-off command chainsWhen a real engagement reveals a repeatable command sequence, parser need, checklist, or validation pattern that would improve future pentests:
scripts/ as a reusable helper, manifest, parser, or docs updateengagements/<target>/, but keep reusable operational logic in scripts/Load skills/opencode-utility/SKILL.md whenever the orchestrator or a phase agent hits a coding or scripting bottleneck.
Use it for:
scripts/Default behavior:
scripts/opencode/reusable/ for utilities likely to recurscripts/opencode/session/ for engagement-specific helpersscripts/opencode/throwaway/ only for urgent one-offsBefore any agent spawns, load skills/preengagement-essentials/SKILL.md when the engagement is real or authorization/scope/ROE are not already explicit.
When the user says pentest <target> or otherwise asks to start a real pentest engagement, do not jump straight into active testing.
Use this pre-engagement chat flow:
Before any active testing, collect and document this intake in the pre-engagement artifacts:
If any of these are missing, mark them TBD in the documentation and clearly state that active testing should not proceed until authorization and scope are explicit.
Before any agent spawns, confirm:
python3 scripts/orchestration/init_engagement_docs.py <target-name> ...python3 scripts/orchestration/plan_target_family.py before hand-writing phase plans. Use --family <name> when the family is already known, or --hint "<target description>" --target <host-or-url> --engagement <engagement-path> to recommend and expand one automatically. Treat the output as the default reusable baseline for a full pentest, not for quick-scan.registers/master-activity-log.md, findings-register.md, evidence-register.md, attack-path-register.md, and asset-register.mdPreferred full-pentest planning flow when the target type is known or inferable:
python3 scripts/orchestration/recommend_target_family.py --hint "<target description>"python3 scripts/orchestration/describe_target_family.py --family <recommended-family> when you need the whypython3 scripts/orchestration/plan_target_family.py --family <family> --target <host-or-url> --engagement <engagement-path> or the equivalent --hint formRead these references before kickoff:
references/engagement-documentation-protocol.mdreferences/engagement-doc-templates.mdreferences/phase-handoff.mdUse engagements/<target-name>/pre-engagement/engagement-charter.md and engagements/<target-name>/pre-engagement/scope-and-roe.md as the authoritative intake artifacts.
For compatibility with existing engagements, you may also create or refresh engagements/<target-name>/SCOPE_<target-name>_<YYYY-MM-DD>.md, but the charter and ROE files are now primary.
File naming convention: All files MUST include a datetime stamp for generated handoffs and versioned phase outputs: <TOPIC>_SUMMARY_<YYYY-MM-DD_HHMM>.md (see References below for the full format). This allows multiple versions to coexist and makes it easy to identify the latest.
Spawn the first agent only after the intake is recorded, the engagement is cleared for active testing, and any available target-family baseline has been reviewed.
If the target is a recognizable family, include the relevant planning output in the first spawn and keep it as the preferred default baseline for later phases.
First, plan the family baseline when possible:
python3 scripts/orchestration/plan_target_family.py --hint "<target description>" --target <host-or-url> --engagement engagements/<target-name>
Spawn specter-recon with:
task: "Perform passive recon on <target>. Before ad-hoc planning, read the charter, scope/ROE, documentation protocol, and the target-family baseline from scripts/orchestration/plan_target_family.py when one exists. Save all findings to engagements/<target-name>/recon/ and update the phase docs plus shared registers. Use the family plan as the default reusable baseline for full-pentest work, then branch manually from live evidence."
engagement: <target-name>
Objective: Build a target profile and map the attack surface without touching the target.
Activities:
Web search queries: See references/web-search-queries.md for phase-specific queries.
Completion criteria:
python3 scripts/orchestration/generate_phase_summary.py --engagement <target-name> --phase recon used to draft the handoff when standardized artifacts existRECON_SUMMARY_<YYYY-MM-DD_HHMM>.md written — see references/phase-handoff.md for templateRead the recon RECON_SUMMARY_*.md. Based on findings:
| Finding | Next Phase | Agent | |---------|-----------|-------| | Network services discoverable via public sources | Network Enumeration | specter-enum | | Physical location identified, physical testing authorized | Physical Enumeration | specter-enum (physical mode) | | Web applications / APIs discovered | Application Enumeration | specter-enum (app mode) | | Wireless networks identified | Wireless Enumeration | specter-enum (wireless mode) | | No promising vectors | Request operator input — provide what was found and ask for guidance |
Adaptation: If network recon yields nothing useful but physical access is available, pivot to physical. Do not force a dead-end vector.
Objective: Actively probe the target to discover open services, versions, and attack surface details.
Input from Recon: Read engagements/<target-name>/recon/RECON_SUMMARY_*.md for the target profile and recommended vector.
Activities (vary by vector):
scripts/orchestration/run_enum_profile.py --profile enum-windows-host --target <target> --engagement <target-name> when they fit, then scripts/enum/ports/scan_ports_fast.sh, scripts/enum/ports/scan_ports_service.sh, and service-specific wrappers like SMB/RDP/WinRM/Web before custom manual scanningscripts/enum/web/enum_web_basic.sh for baseline web coverage before custom app enumerationskills/opencode-utility/SKILL.md and prefer reusable upgrades under scripts/opencode/reusable/ when they will improve current or future enum workskills/enum-phase-essentials/SKILL.md to reinforce fast-then-accurate workflows, validation gates, protocol-triggered deep dives, and clean service inventory handoffsCompletion criteria:
ENUM_SUMMARY_<YYYY-MM-DD_HHMM>.md written with service inventory| Finding | Next Action | |---------|------------| | Open services with version numbers | Proceed to Vulnerability Analysis | | Services found but versions unclear | Run additional fingerprinting, then proceed | | No services found on network vector | Pivot to alternative vector (physical, app-layer) | | Complete dead end (no services, no physical access, no apps) | Report findings to operator, request scope adjustment |
Objective: Match discovered services against known vulnerabilities and assess exploitability.
**Input from Enum: Read `engagements/<target-name>/enum/ENUM_SUMMARY_*.md`` for service inventory.
Activities:
references/web-search-queries.mdskills/opencode-utility/SKILL.md and prefer reusable or session utilities instead of hand-writing one-off glue each timeskills/vuln-phase-essentials/SKILL.md to reinforce validation discipline, CVE/CWE/CVSS handling, KEV/EPSS-aware prioritization, and report-ready evidence standardsCompletion criteria:
VULN_SUMMARY_<YYYY-MM-DD_HHMM>.md written with CVEs, exploit plan, and confidence levels| Finding | Next Action | |---------|------------| | Confirmed exploitable vulnerability with PoC | Proceed to Exploitation | | Potential vulnerability, needs verification | Run additional enumeration on the specific service | | Vulnerability exists but no known exploit | Research manual exploitation techniques, then proceed or report | | No exploitable path found | Report findings, recommend remediation, consider engagement complete |
Objective: Demonstrate impact by exploiting vulnerabilities in a controlled manner.
**Input from Vuln: Read `engagements/<target-name>/vuln/VULN_SUMMARY_*.md`` for the exploit plan.
Activities:
skills/opencode-utility/SKILL.md for coding support, but do not use it to create unsafe or unauthorized offensive toolingskills/exploit-phase-essentials/SKILL.md to reinforce precondition checks, validation ladders, candidate selection discipline, and evidence/cleanup standardsCompletion criteria:
EXPLOIT_SUMMARY_<YYYY-MM-DD_HHMM>.md written with access details and credentials| Access Level | Next Action | |-------------|------------| | Root / SYSTEM / full admin | Proceed to Post-Exploitation | | Limited user access | Attempt privilege escalation, document attempts | | Service-level access only | Attempt escalation or report what was achieved | | Exploitation failed | Report what was attempted, what was partially achieved |
Objective: Demonstrate the full business impact of compromised access.
**Input from Exploit: Read `engagements/<target-name>/exploit/EXPLOIT_SUMMARY_*.md`` for access level and credentials.
Activities:
skills/opencode-utility/SKILL.md and place phase-specific code in scripts/opencode/session/ unless broader reuse is likelyskills/post-phase-essentials/SKILL.md to reinforce impact assessment, access-path discipline, telemetry-aware evidence, and cleanup/residual-risk reportingCompletion criteria:
POST_EXPLOIT_SUMMARY_<YYYY-MM-DD_HHMM>.md written with evidence and impact summaryObjective: Compile all findings into actionable deliverables.
Input: Read ALL *_SUMMARY_*.md files from phases 0–5.
Activities:
references/examples.md for engagement contextskills/opencode-utility/SKILL.md and prefer reusable reporting helpers over ad-hoc formattingskills/report-phase-essentials/SKILL.md to reinforce multi-audience structure, QA gates, secure handling, remediation quality, and cleanup/restoration reportingspecter-report to create a native Google Doc from the final report and return the Docs linkspecter-report to publish a PDF link for the final reportspecter-report to create styled Google Slides from a generated PPTX and return the presentation linkDeliverables:
engagements/<target-name>/reporting/REPORT_FINAL_<YYYY-MM-DD_HHMM>.mdengagements/<target-name>/reporting/EXECUTIVE_SUMMARY_<YYYY-MM-DD_HHMM>.mdengagements/<target-name>/reporting/REMEDIATION_GUIDE_<YYYY-MM-DD_HHMM>.mdengagements/<target-name>/reporting/PROCESS_OVERVIEW_<YYYY-MM-DD_HHMM>.mdReporting spawn instruction template:
Spawn specter-report with:
task: "Read all *_SUMMARY_*.md files under engagements/<target-name>/. Build the structured findings input needed by the production report generator. Generate REPORT_FINAL_<YYYY-MM-DD_HHMM>.md in engagements/<target-name>/reporting/ using the real branded implementation at reporting/scripts/generate_report.py. Also generate PROCESS_OVERVIEW_<YYYY-MM-DD_HHMM>.md as a stakeholder-friendly process narrative that explains what was actually done in each phase, what was observed, and why the next step happened. Include remediation and security enhancement recommendations for every finding. Because the user asked for the report, automatically publish it with reporting/scripts/generate_report.py --create-doc --create-slides --upload-drive --gdrive-account [email protected] --slides-title 'Pentest Report — <target-name>'. Return the local output path plus the Google Doc link, PDF link, and Slides link. Use raw gog docs/slides-from-markdown only as fallback if the branded generator path fails."
engagement: <target-name>
Phases 0→1→2→3→4→5→6 run in sequence. Each phase's *_SUMMARY_*.md is the handoff to the next.
Only use parallel agents when:
Spawn specter-<phase> with:
task: "<Specific instructions based on decision gate output>"
engagement: "<target-name>"
input: "Read engagements/<target-name>/<previous-phase>/<PREV_PHASE>_SUMMARY_*.md"
For specter-report, default to publishing for any real engagement that reaches a final/completed report state:
Spawn specter-report with:
task: "Read all prior *_SUMMARY_*.md files for <target-name>. Generate final reporting deliverables in engagements/<target-name>/reporting/, including PROCESS_OVERVIEW_<YYYY-MM-DD_HHMM>.md as the non-technical process narrative. Then create a Google Doc, publish/export a PDF, create Google Slides, and upload the raw markdown archive using reporting/scripts/generate_report.py --create-doc --create-slides --upload-drive --gdrive-account [email protected]. Return the local file path plus the Google Doc link, PDF link, and Slides link in the handoff. Skip publishing only for dry runs or explicit no-publish instructions."
engagement: "<target-name>"
Always include:
searchsploit and local exploit databasesEvery phase MUST produce *_SUMMARY_<YYYY-MM-DD_HHMM>.md in its engagement directory. See references/phase-handoff.md for the template.
That handoff is required, but it is not sufficient by itself. Every phase must also keep these current:
Do not treat documentation as end-of-phase cleanup.
For every meaningful run, command batch, operator-supplied result set, or sub-agent handoff, update documentation in the same working turn before considering the run complete.
Minimum required updates per run:
A phase is incomplete if work happened but the engagement docs still describe an older state.
When delegating to sub-agents, explicitly instruct them to update their phase docs and registers before handing off. If they do not, the orchestrator must normalize the docs immediately after receiving results.
Key fields:
See references/web-search-queries.md for curated queries per phase. Key principles:
Before moving to the next phase, and after every meaningful run within a phase, verify:
*_SUMMARY_<YYYY-MM-DD_HHMM>.md exists and has all required fieldstesting
Vulnerability analysis and CVE matching for penetration testing. Use when: user asks to check for vulnerabilities, match CVEs against service versions, analyze scan results for weaknesses, research exploitability, assess risk of discovered services, or identify known vulnerabilities. This is the analysis phase — no exploitation yet. NOT for: active scanning (use enum skill), exploitation (use exploit skill), or post-exploitation (use post skill).
development
Methodology and decision framework for the penetration testing vulnerability phase. Use when: validating scanner output, distinguishing confirmed vulnerabilities from hypotheses, explaining CVE/CWE/CVSS, prioritizing findings with KEV/EPSS/business context, guiding vuln-analysis workflow, or reinforcing evidence-backed reporting during the vulnerability phase. NOT for: initial recon or active enumeration, hands-on exploitation, post-exploitation, or replacing the specialized vuln skill's concrete checks.
development
Great slides need two things: content worth presenting and design worth looking at. #1 on DeepResearch Bench (Feb 2026) — CellCog researches and fills content mindfully from minimal prompts, no filler. State-of-the-art PDF generation for presentations, pitch decks, keynotes, and slideshows you can present as-is. Requires cellcog skill for SDK. If cellcog is unavailable, use gog slides as fallback (Google Workspace).
development
Methodology and quality framework for the penetration testing report phase. Use when: writing or QA-ing pentest reports, improving executive and technical readability, enforcing evidence completeness, adding remediation and retest guidance, including cleanup/restoration and residual risk, or securing report packaging and delivery. NOT for: running phase-specific testing tasks or replacing the specialized reporting implementation/publishing workflow.