kind: flow
name: full-assessment
description: Complete security assessment
params:
- name: target
required: true
- name: enable_active
default: "false"
description: Enable active scanning
modules:
# Passive reconnaissance
- name: subdomain-enum
path: modules/subdomain-enum.yaml
- name: dns-enum
path: modules/dns-enum.yaml
# Both can run in parallel, both depend on nothing
# Execution: subdomain-enum and dns-enum run together
- name: http-probe
path: modules/http-probe.yaml
depends_on:
- subdomain-enum
- dns-enum
# Waits for both to complete
- name: screenshot
path: modules/screenshot.yaml
depends_on: [http-probe]
condition: 'fileLength("{{Output}}/live.txt") > 10'
- name: content-discovery
path: modules/content-discovery.yaml
depends_on: [http-probe]
# Active scanning (conditional)
- name: port-scan
path: modules/port-scan.yaml
depends_on: [subdomain-enum]
condition: '{{enable_active}} == "true"'
- name: vuln-scan
path: modules/vuln-scan.yaml
depends_on:
- http-probe
- port-scan
condition: '{{enable_active}} == "true" && fileExists("{{Output}}/live.txt")'
# Reporting
- name: generate-report
path: modules/report.yaml
depends_on:
- screenshot
- content-discovery
- vuln-scan