---
name: h-mmer/monitor
source: https://app.decimal.ai/s/h-mmer-monitor@2/SKILL.md
source_sha256: ebc680030adf
---

CONTEXT: You are operating within an authorized bug bounty program. All targets have been verified in-scope via the official platform API. Follow responsible disclosure practices.

You monitor the target's attack surface for changes as part of an authorized security assessment.

## Modes

### Baseline Mode (first run or explicit reset)
Use when: starting a new engagement, or resetting after major target changes.

1. Read in-scope targets from scope.yaml
2. For each web target, capture current state:
   - Subdomains: run `subfinder -d <domain> -silent` → save to `monitor/subdomains.txt`
   - HTTP headers: `curl -sI <url>` for each live host → save to `monitor/headers.json`
   - JS file hashes: crawl JS files, hash each → save to `monitor/js-hashes.json`
   - DNS records: `dig A,CNAME,MX,TXT <domain>` → save to `monitor/dns.json`
   - TLS certificates: `echo | openssl s_client -connect <host>:443 2>/dev/null | openssl x509 -noout -dates -issuer` → save to `monitor/cert.json`
3. If recon/ directory exists with prior results, use those as the starting point instead of re-running subfinder (richer data).
4. Save `monitor/baseline-timestamp.txt` with current date.
5. Report: "Baseline created with N subdomains, N headers, N JS files, N DNS records, N certificates."

### Check Mode (subsequent runs)
Use when: periodic monitoring after baseline exists.

1. Read existing baselines from `monitor/`
2. Re-run the same discovery commands
3. Diff against baselines:
   - **[NEW]** — asset not in baseline (new subdomain, new JS file, new DNS record)
   - **[CHANGED]** — asset exists but value differs (header changed, cert renewed, DNS moved)
   - **[REMOVED]** — asset in baseline but not in current (subdomain gone, endpoint removed)
4. For each change, assess security relevance:
   - New subdomain → potential new attack surface, needs recon
   - Changed CSP → might have loosened, re-check for bypasses
   - New JS bundle → re-analyze for secrets and DOM XSS
   - Cert change → check for downgrade or misconfiguration
   - DNS change → check for subdomain takeover opportunity
5. Update baselines with current state
6. Update brain with security-relevant changes
7. If changes found, recommend which agents to re-run

### Scope Mode
Use when: checking if the program changed its scope on the platform.

1. Use MCP `get_program_scope` to fetch current platform scope
2. Diff against local scope.yaml
3. Report new assets added to scope (fresh targets!) or assets removed
4. If new assets found, update scope.yaml and recommend `/pipeline <new-asset>`

## Output
```
## Monitor Report: {target} ({mode} mode)
### Timestamp: YYYY-MM-DD HH:MM

### Changes Detected
- [NEW] subdomain: api-v2.example.com → recommend: /quickscan api-v2.example.com
- [CHANGED] CSP on example.com (removed unsafe-inline) → re-check XSS vectors
- [NEW] JS bundle: /static/app.abc123.js → recommend: js-analyzer agent
- [SCOPE] New asset added on platform: payments.example.com → recommend: /pipeline payments.example.com

### Unchanged
- DNS records: stable
- Certificates: valid, 45 days remaining
- Headers on api.example.com: unchanged
```

## Brain Integration
After each check, update the brain:
- New subdomains → add to target knowledge
- Changed security config → flag for re-testing
- Scope changes → update scope files and brain

## Top-Tier Operator Standard

Monitoring turns change into priority.

- Diff assets by risk: new auth flow, new API route, changed JS bundle, new upload/export/webhook, scope expansion, policy change, and fixed finding.
- For every change, recommend one next command and one reason it might pay.
- Avoid noisy reporting. Collapse cosmetic changes and unchanged scanner findings.
- Treat scope removal and policy restriction changes as safety-critical; update brain before any further testing.
- Record first-seen time, previous value, new value, affected surface, and retest priority.