Finding validation gate - 7-Question triage adapted for FIND schema. Run before moving any FIND from Research to Completed. One NO = keep in Research. All YES = move to Completed, then run /evidence.
npx skills add https://github.com/Encod3d-Sec/TORCH --skill triage
Use BEFORE moving any FIND from Vulns/Research/ to Vulns/Completed/.
One wrong answer = keep the finding in Research. Move on to next test class.
Ask in order. One NO = STOP for this finding.
Complete this template:
Setup: I need [own account / another user's ID / no account / internal access]
Request: [exact HTTP method, URL, headers, body -- copy-paste ready]
Result: I can [read / modify / delete / execute] [exact data or action]
Impact: The real-world consequence is [specific impact]
If you CANNOT write the Request line as a real reproducing command -> keep in Research.
Never promote to Completed without a chain:
Self-XSS only (no CSRF trigger)
Open redirect alone (no OAuth/ATO chain)
CORS wildcard without credentialed exfil PoC
SSRF DNS-only (no internal service access)
Rate limit without demonstrated impact
Version banner alone
Missing headers alone (no impact PoC)
A "primitive confirmed" != exploitable. Downgrade until the gate is bypassed.
| Result | Action |
|--------|--------|
| All 7 YES + Pre-Severity Gate clean | Move FIND to Vulns/Completed/. Update status in Vuln-index.md. Run python3 scripts/find-lint.py and fix any gaps (Description/PoC/Impact/Remediation + CVSS for HIGH/CRITICAL) so it is report-ready. Then run /evidence. |
| Any NO | Keep in Vulns/Research/. Update status to PARTIAL (reason) in Vuln-index.md. Document what is missing. |
| Q7 chain required | Move to Vulns/Research/ with note "chain required: [what is needed]". |
Take encod3d-sec/triage from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.