johnwick
Skill5.9k starsChanged 5 months agoMITView on GitHub
Use when the user says "run johnwick" / "/johnwick", hands you a bug-bounty target or scope and wants the full manual+recon+automated hunt run end-to-end, or asks to hunt a target with total coverage (every in-scope domain/subdomain, all JS, signup+login, then exploit and validate). Self-contained long-running orchestrator — recon, JS mining, auto-signup, and hunting for IDOR, SSRF, RCE, SSTI, XXE, SQLi, request smuggling, cache poisoning, race conditions, OAuth/JWT/SAML ATO, GraphQL, 403-bypass, and mobile are all built in via internal reference files (each grounded in disclosed paid HackerOne reports), with a zero-skip coverage ledger and a superpowers verification gate between every phase.
1 other project uses a version of this.
Trending
More talk lately.thin dataabout the whole repository
Most recently taken up by
- Awarexone/Agentic-Bug-Hunterword for word, first seen Nov 15, 2026
Who's talking about awarexone/Agentic-Bug-Hunter
- vavkamil/awesome-bugbounty-tools“Add Agentic Bug Bounty Hunter to AI Agents”GitHub · Sep 2, 2026 · 2 reactions
- sudosubin/agents.nix“agent-skills.github.awarexone.agentic-bug-hunter: v6.0.0 → refs/tags/v6.0.0”GitHub · Oct 3, 2026
- djmahe4/cyber-tools-index“[WIP] Update tools_config.json with AI security tools from Medium list”GitHub · Oct 2, 2026
- sudosubin/agents.nix“agent-skills.github.awarexone.agentic-bug-hunter: init at 6.0.0”GitHub · Sep 25, 2026
- beyefendi/awesome-llm-security“Agentic Bug Hunter”GitHub · Sep 18, 2026
The biggest 5 of 11 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 11
Talked about on GitHub (11 times).
On GitHub · 11
- Sep 2, 2026Add Agentic Bug Bounty Hunter to AI Agents — vavkamil/awesome-bugbounty-tools2 reactions
- Oct 3, 2026agent-skills.github.awarexone.agentic-bug-hunter: v6.0.0 → refs/tags/v6.0.0 — sudosubin/agents.nix0 reactions
- Oct 2, 2026[WIP] Update tools_config.json with AI security tools from Medium list — djmahe4/cyber-tools-index0 reactions
- Sep 25, 2026agent-skills.github.awarexone.agentic-bug-hunter: init at 6.0.0 — sudosubin/agents.nix0 reactions
- Sep 18, 2026Agentic Bug Hunter — beyefendi/awesome-llm-security0 reactions
6 more on GitHub
- Sep 6, 2026Enlaces rotos detectados en el README — YamilAyma/enlaces-para-desarrolladores0 reactions · 3 comments
- Sep 2, 2026Add Agentic Bug Bounty Hunter under Attack Surface — edoardottt/awesome-hacker-search-engines0 reactions · 1 comment
- Sep 2, 2026Add Related Projects section (Agentic Bug Bounty Hunter) — maurosoria/dirsearch0 reactions
- Sep 2, 2026Add Agentic Bug Bounty Hunter to GraphQL Injection tools — swisskyrepo/PayloadsAllTheThings0 reactions
- Sep 2, 2026Add Agentic Bug Bounty Hunter to Tools — nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters0 reactions
- Aug 30, 2026Enlaces rotos detectados en el README — YamilAyma/enlaces-para-desarrolladores0 reactions
Other versions1 project uses a version of this.
Word for word · 1
- Awarexone/Agentic-Bug-Hunter★ 5.9k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository27 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- bug-bountySkill
- agentic-app-auditSkill
- argusSkill
- bb-methodologySkill
- bug-bountySkill
- bug-chainingSkill
- bugcrowd-reportingSkill
- cicd-securitySkill
- client-reverseSkill
- cloud-pentestSkill
- credential-attackSkill
- graphql-auditSkill
- jsmaxSkill
- llm-redteamSkill
- mcp-server-auditSkill
- meme-coin-auditSkill
- mobile-pentestSkill
- omni-killchainSkill
- pii-hunterSkill
- report-writingSkill
- security-arsenalSkill
- triage-validationSkill
- web2-reconSkill
- web2-vuln-classesSkill
- web3-auditSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
16 rules. About 0 are common, 9 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
Run all three — never just one, never "pick your favourite." Enumerate subdomains first, then run this per host (each subdomain can ship …
- Very specific: line 152
Zero-skip scope: Every in-scope domain and subdomain enters the ledger and must reach covered.
- Very specific: line 153
No prioritization: All assets are equally important.
- Very specific: line 155
Never curl-only: When curl/httpx is blocked (WAF/captcha/403/JS-rendered), fall back to Playwright real-Chrome.
- Distinctive: line 156
Self-refresh tokens: When auth expires, refresh it yourself (refresh-token flow, re-login, cookie renewal) before asking the human.
- Distinctive: line 157
Reverse APIs yourself: If API docs, OpenAPI/Swagger, GraphQL introspection, or discovery documents exist, reconstruct the full API surface …
- Distinctive: line 164
If you think any of these, you are about to break Rule 1.
- Distinctive: line 236
Ask for / read the scope (in + out) and any creds/cookies the user already has.
- Very specific: line 237
Create the run folder + coverage.jsonl.
- Very specific: line 251
Write the user's in-scope + out-of-scope lists verbatim to scope.txt, then build the scope guard's allow/deny model (scope-guard.md) — …
- Distinctive: line 262
Run against all enrolled assets: subdomains/live hosts/URL corpus (recon-pipeline.md).
- Distinctive: line 306
Run every candidate through the 7-Question Gate + 4 pre-submission gates (validation.md).
- Very specific: line 315
All JS (live ∪ wayback ∪ gau ∪ katana) was read (files mined == wc -l js/js-urls.txt).
- Very specific: line 316
Every applicable class ran on every asset: id-endpoints→IDOR.
- Distinctive: line 320
Every surviving finding passed the full validation gate.
- Distinctive: line 322
If any is false, the run is not complete — return to the ledger and finish it.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!-- MANDATORY-JS-RECON-DOCTRINE v1 — injected across EVERY skill. Do not delete or gate behind a condition. -->🚨 MANDATORY JS RECON GATE — NO SKIP, NO EXCEPTIONS
This block is law in every skill. Whatever else this skill does, if a web/HTTP target is anywhere in scope you MUST complete the JS recon pipeline below BEFORE you conclude recon, rank surface, declare "nothing found," or move to the next phase. Skipping any step is a process failure, not an optimization. There is no file-count exception, no time-pressure exception, no "it's a small app / SPA / static site" exception.
Client-side JS is the attack-surface map of the entire application. Every bundle, chunk, worker, and source map leaks endpoints, secrets, roles, feature flags, and business logic the server never meant you to see. Hunters who skip JS lose the P1s.
RULE 1 — The three crawlers are MANDATORY on EVERY live host
Run all three — never just one, never "pick your favourite." Enumerate subdomains first, then run this per host (each subdomain can ship its own bundle, secrets, and logic):
subfinder -d "$T" -all -silent | httpx -silent -mc 200 -o live_hosts.txt # per-host, not per-apex
# PASSIVE (zero-touch history — catches dead/forgotten/rotated-but-still-live JS)
echo "$HOST" | waybackurls | grep -iE '\.js(\?|$)' | anew js.txt
echo "$HOST" | gau --subs | grep -iE '\.js(\?|$)' | anew js.txt # gauplus --subs = same
# ACTIVE (live DOM, dynamic <script>, chunk loads)
katana -u "https://$HOST" -jc -jsl -d 5 -silent | grep -iE '\.js(\?|$)' | anew js.txt
hakrawler -u "https://$HOST" -d 3 -subs 2>/dev/null | grep -iE '\.js' | anew js.txt
gospider -s "https://$HOST" -d 3 --js 2>/dev/null | grep -oE 'https?://\S+\.js' | anew js.txtMANUAL CRAWL is equally mandatory — tools miss auth-gated and lazy-loaded routes:
- Open the app in a real browser with Burp/mitmproxy inline. Log in.
- Click through every route, tab, modal, multi-step wizard, settings/admin area.
- Watch the Network panel: every
.js, every XHR/fetch, every chunk pulled on navigation goes intojs.txt/ the endpoint list. SPAs load chunks lazily — a route you never visited = a bundle you never saw = bugs you never found. - Toggle every feature you can and note the JS that loads behind each one.
- Burp extensions JS Miner + Param Miner run passively while you browse — enable both.
RULE 2 — Recover, beautify, and READ every file (never grep-only)
sort -u js.txt -o js.txt && mkdir -p js_files beautified recovered
xargs -a js.txt -P20 -I@ sh -c 'curl -sL -A "Mozilla/5.0" "@" -o "js_files/$(echo @ | md5sum | cut -c1-16).js"'
for f in js_files/*.js; do js-beautify "$f" > "beautified/$(basename "$f")"; done
# SOURCE MAPS = full original source (readable, real var names, internal paths). A 200 is game over.
while read u; do curl -so /dev/null -w "%{http_code} $u.map\n" "$u.map"; done < js.txt | grep '^200'
sourcemapper -url "https://$HOST/static/main.js.map" -output ./recovered/ # or unwebpack / webcrack
# WEBPACK: pull the runtime bootstrap's chunk-id→hash map to enumerate LAZY chunks no crawler triggered
grep -oE '[0-9]+:"[0-9a-f]{6,}"' beautified/*runtime* 2>/dev/null | head -50Grep is a triage pass to prioritize — NEVER the analysis itself. Grep finds apikey and
fetch(. It does not tell you a URL-upload feature silently proxies server-side (SSRF), or that
a role flag is set client-side and never re-checked. Every beautified/deobfuscated file gets
read end to end. No exception for hundreds of files across dozens of hosts — budget the time;
this step is supposed to be slow.
RULE 3 — Hunt these in every file (the money list)
Static-scan to triage, then READ to confirm. Scanners: trufflehog filesystem js_files/ (verifies
live keys), jsluice urls|secrets js_files/*.js, mantra -f js.txt, SecretFinder -i <f> -o cli,
LinkFinder -i beautified/ -o cli, xnLinkFinder, nuclei -t http/exposures/ -l js.txt, retire.js --js.
- Secrets / tokens — AWS
AKIA…, GCPAIza…, Stripesk_live_, GitHubghp_/github_pat_, Slackxox…, SendGridSG., TwilioAC…, JWTseyJ…,Authorization: Basicblobs,client_id+client_secret, Firebase config, Algolia admin key, Mapboxsk., private PEM keys. - Hidden / internal / staging endpoints — every endpoint in JS is an UNTESTED endpoint. Grep
/api/,/internal/,/admin/,/graphql,v1|v2|v3,*-dev|staging|uat|sandbox. Real payout pattern:/api/v2/internal/usersrecovered from obfuscated JS → full user DB → $25k. - Client-side auth & roles —
isAdmin,role === 'admin',hasPermission,parseJwt,atob(token),localStorage.setItem('admin',…). Any UI/route gated ONLY client-side is a BAC/BFLA lead — call the endpoint directly with a low-priv token. - Hidden routes & feature flags — dump the SPA router table (React Router / Vue Router / Angular
route config) from the bundle → visit admin/beta/internal routes the nav never links. Flip
feature flags (
localStorage,?feature=, cookie, JSON config) to unlock ungated functionality. - Hardcoded IDs / IDOR seeds — UUIDs and numeric
userId/orgId/accountIdbelonging to other tenants → cross-tenant test material. - DOM XSS sinks —
innerHTML,outerHTML,document.write,eval,new Function,setTimeout("…"), jQuery$(),.html(); sourceslocation.hash/search/href,postMessage,document.referrer→ trace source→sink. - Prototype pollution —
__proto__, unsafemerge/extend/Object.assign(x.prototype…), query-string parsers → gadget chain to XSS/RCE. - Cloud & 3rd-party refs —
*.amazonaws.com/s3://,firebaseio.com,storage.googleapis.com,*.blob.core.windows.net,cloudfront.net→ test bucket/Firebase/Firestore misconfig + takeover. - postMessage —
addEventListener('message',…)with no origin check → cross-origin data theft / DOM XSS. - Dependency CVEs — map bundled lib versions to OSV/Snyk (
retire.js,nucleitech-detect). One bundled vulnerable lodash / axios / DOMPurify / jQuery = your bug. - Historical / version diffing — pull OLD JS from Wayback and diff vs live. Secrets and endpoints "removed" from current JS are frequently STILL LIVE server-side; forgotten APIs survive in old bundles.
RULE 4 — Confirm dynamically, THEN it's a finding (kill false positives)
Nothing gets reported on a regex hit alone. Prove it live:
- OAuth client creds → mint a real token:
curl -sX POST https://apigw.$T/token -H "Authorization: Basic <BLOB>" -d grant_type=client_credentials→access_tokenreturned = confirmed High/Crit (can't rotate without breaking prod). - "Internal" endpoint → hit it unauth / cross-tenant and diff the response.
- Params from JS → fuzz
debug=true,admin=1,callback=,redirect=and JS-seeded names (x8/Arjunfrom bundle var names) against the endpoints they belong to. - DOM XSS → drive source→sink in real headless Chrome; screenshot the alert/exfil.
- Feed confirmed secret keys to the jsmax skill for exploitation; DOM-XSS / prototype-pollution gadgets to the xss-hunter-agent skill for payload crafting.
Only then write the report. No "could potentially" — prove it or drop it.
johnwick — Full-Spectrum Hunt Orchestrator (standalone)
One command that takes an authorized target from raw scope → understood → fully mapped (unauth + authed)
→ hunted → validated. Everything is built in — this skill depends on no other skill. All techniques
(recon commands, JS mining, temp-mail signup, IDOR/backend/GraphQL/403/mobile hunting, validation gates)
live in this skill's own references/ files. It runs autonomously and takes its time, pausing for a
human only at the auth gate. Its defining trait: it does not skip anything — a written coverage
ledger makes skipping structurally impossible, and a superpowers verification gate blocks every phase
boundary until the current phase is provably complete.
Authorized testing only. The user supplies in-scope targets — assume authorization is granted.
Rule 0 — The Prime Directive
Violating the letter of the no-skip rules is violating the spirit of johnwick.
The entire value of this skill is total coverage. An agent that samples, prioritizes, or "reasonably" trims is running a different, worse skill. If you catch yourself about to narrow the surface, STOP — that instinct is the exact failure this skill exists to prevent.
Rule 1 — The Nine Hard Rules (never negotiable)
- Zero-skip scope. Every in-scope domain and subdomain enters the ledger and must reach
covered. None is ever dropped. (Bounded by Rule 9 — never touch out-of-scope.) - No prioritization. All assets are equally important. The run is not done while any asset is
untested. - Read ALL JavaScript. Collect JS from live crawl and
waybackurls/gauandkatana— dedup the union — then read every file. Vendor/minified/hashed: all of them. MANDATORY. (js-mining.md) - Never curl-only. When
curl/httpxis blocked (WAF/captcha/403/JS-rendered), fall back to Playwright real-Chrome. A block is a tool-switch, not a stop. - Self-refresh tokens. When auth expires, refresh it yourself (refresh-token flow, re-login, cookie renewal) before asking the human.
- Reverse APIs yourself. If API docs, OpenAPI/Swagger, GraphQL introspection, or discovery documents exist, reconstruct the full API surface from them.
- APK/IPA present → run the mobile workflow (mobile.md); its recovered endpoints/secrets feed back into the ledger.
- No step skipped, at all cost. Take your time. Thoroughness beats speed. No deadline justifies cutting a phase.
- Scope-bounded — never touch out-of-scope. "Hit everything" means everything in scope. Gate every outbound request through the scope guard; default-deny; exclude third-party services; verify ownership before hitting inferred/acquisition assets. This overrides zero-skip when they seem to conflict — the answer is always "verify scope," never "hit it anyway." (scope-guard.md)
Rule 2 — Rationalizations that mean STOP
If you think any of these, you are about to break Rule 1. Do not.
| Rationalization | Reality |
| "This subdomain is clearly parked/dead, skip it." | Enroll it, probe it, record the evidence. "Looks dead" ≠ "verified dead." |
| "These JS files are just vendor/minified bundles." | Vendor bundles leak endpoints, keys, internal hostnames. Read them. |
| "Wayback has 4,000 JS URLs, I'll sample the interesting ones." | Dedup the union and read all. Sampling = Rule 3 violation. |
| "Let me focus on the high-value host first." | No prioritization (Rule 2). Equal coverage or it isn't johnwick. |
| "curl got 403, this asset is protected, move on." | 403 → switch to Playwright real-Chrome (Rule 4), not skip. |
| "I'll just ask the user to log in / give a token." | Try auto-signup with temp-mail first, then self-refresh, THEN ask (Phase 3). |
| "This is taking forever, I'll wrap up early." | Take your time (Rule 8). Partial coverage is a failed run. |
| "I'll note it as untested and come back." | The run does not complete while any row is untested. Come back now. |
Rule 3 — Red flags (self-check)
- You reduced a list "to save time." · You wrote "skip", "sample", "subset", or "most important" about
in-scope assets or JS. · A phase ended with
untestedrows still in the ledger. · You asked the human for creds before attempting auto-signup. · You stopped at a WAF/403/captcha instead of switching to Playwright.
Any red flag → return to the ledger and finish the coverage.
The Coverage Ledger (how no-skip is enforced)
At the start of every run, create a per-target run folder and a coverage.jsonl ledger. This is the
mechanism that makes "skip nothing" real. Schema, init/enroll, mark-done, and the completion-invariant
queries are in coverage-ledger.md. Mirror the ledger into the task
list (one task per asset) so progress is gated and visible — steady tracked execution, never flailing.
Completion invariant: the run is complete only when
jq -s '[.[]|select(.in_scope and .status!="covered")]|length' coverage.jsonl prints 0 and no field is untested.
Internal reference map (this skill only — no external skills)
| Phase / topic | Built-in reference |
| Phase gates (superpowers verification between phases) | phase-gates.md |
| Coverage ledger schema + checks | coverage-ledger.md |
| Scope safety guard (bounds zero-skip) | scope-guard.md |
| Mindset + threat model | mindset.md |
| Recon pipeline (subs/live/urls) | recon-pipeline.md |
| JS mining — read ALL JS | js-mining.md |
| Unauth P1/P2 surface | unauth-p1.md |
| Hidden params + takeover | params-takeover.md |
| Access acquisition + temp-mail signup | access-tempmail.md |
| Backend classes — taxonomy hub | backend-classes.md |
| IDOR / BOLA / BFLA | authz-idor.md |
| SSRF (deep) | ssrf.md |
| RCE — deser/dep-confusion/injection/media/upload (deep) | rce.md |
| SSTI (deep) | ssti.md |
| XXE (deep) | xxe.md |
| HTTP request smuggling / desync (deep) | request-smuggling.md |
| Web cache poisoning / deception (deep) | cache-attacks.md |
| Race conditions / TOCTOU (deep) | race-conditions.md |
| ATO — OAuth/OIDC/SAML/JWT/reset (deep) | auth-attacks.md |
| SQL / NoSQL injection (deep) | sqli.md |
| CORS / open-redirect / CSRF / XSS→ATO | web-misc.md |
| GraphQL audit | graphql.md |
| 403/401 bypass matrix | bypass-403.md |
| Mobile (APK/IPA) | mobile.md |
| Payload arsenal (raw strings) | payloads.md |
| Exploit chaining — low→critical | chaining.md |
| Validate & triage gates | validation.md |
| Report writing | reporting.md |
Start Protocol (first moves when invoked)
- Ask for / read the scope (in + out) and any creds/cookies the user already has. Nothing else blocks.
- Create the run folder +
coverage.jsonl; build the scope guard allow/deny model (scope-guard.md). - Enroll every in-scope asset as an
untestedrow. Mirror to the task list (one task per asset). - Announce the plan in one line, then run Phase 1→6 autonomously, pausing only at the Phase-3 auth gate (or a genuine scope ambiguity). Take your time; skip nothing in scope.
- Between each phase, run the verification gate (phase-gates.md) before advancing.
The Pipeline (7 phases, in order, skip none)
Between every phase: run the
superpowers:verification-before-completiongate against that phase's exit criteria before starting the next — a phase is "done" only on fresh ledger evidence, never a claim. Full per-phase exit criteria are in phase-gates.md. Parallelize the fan-out phases (2 and 5) withsuperpowers:dispatching-parallel-agents, one agent per asset slice.
Phase 0 — Intake & Scope Lock
Write the user's in-scope + out-of-scope lists verbatim to scope.txt, then build the scope guard's
allow/deny model (scope-guard.md) — every later request is gated through it
(default-deny; third-parties excluded; ownership verified). Enroll every in-scope asset as an
untested row in coverage.jsonl (coverage-ledger.md). Save any
creds/cookies the user already provided to auth/. Do not advance until every asset is enrolled.
Phase 1 — Understand the target
Build the threat model, read developer psychology, choose an impact goal per major asset →
mindset.md. Record it in notes.md. It shapes every later phase.
Phase 2 — Unauth full-surface recon & app map
Run against all enrolled assets: subdomains/live hosts/URL corpus (recon-pipeline.md);
JS union read in full (js-mining.md, Rule 3); hidden params + subdomain
takeover (params-takeover.md); unauth P1/P2 surface
(unauth-p1.md). Blocked anywhere → Playwright (Rule 4). Set each row's
recon and js_read to done.
Phase 3 — Access acquisition (the ONLY human gate)
In strict order: use provided creds → auto-signup via temp-mail (rotate a provider fallback chain, confirm the email, log in) → only if both fail, ask the human. Set up self-refresh. → access-tempmail.md. This is the sole mandatory pause.
Phase 4 — Authenticated app mapping (MAP FIRST, then attack)
Log in and walk the entire application before exploitation: every feature, route, role, workflow,
state, API call. Reverse the API from docs/OpenAPI/introspection into api/ (Rule 6). Enroll newly
discovered authed endpoints/subdomains as fresh ledger rows. Set authed_mapped:"done" per asset.
Phase 5 — Hunt (manual + automated)
For each asset, drive the mapped surface through every applicable class, starting from the
taxonomy hub backend-classes.md, and record each run in the row's
hunted[]. The per-class checklist (apply the ones the surface exposes — do not pre-decide a class is
absent without checking):
idor— every id-bearing endpoint → authz-idor.mdssrf— every URL-fetch/webhook/import/preview/media feature → ssrf.mdrce— deserialization blobs, dep-confusion, injection, media/archive/upload → rce.mdssti— every template-rendered field (email, name, profile, report) → ssti.mdxxe— every XML/SVG/DOCX/SAML intake → xxe.mdsqli— every query/filter/sort/id param, logged headers (2nd-order) → sqli.mdsmuggling— front-end/back-end pairs, H/2 → request-smuggling.mdcache— CDN-fronted paths + unkeyed inputs → cache-attacks.mdrace— every "once-only"/limit/financial flow → race-conditions.mdauth— every OAuth/OIDC/SAML/JWT/reset flow → auth-attacks.mdgraphql— every GQL endpoint → graphql.mdbypass-403— every 401/403 → bypass-403.mdweb-misc— CORS, open-redirect, CSRF, XSS→ATO (chain fodder) → web-misc.mdmass-assign/logic— create/update bodies, money flows → backend-classes.mdmobile— any APK/IPA → mobile.md
A row reaches status:"covered" only when every applicable class has run against it. No asset skipped for
another (Rule 2). Ground hypotheses in the paid-report patterns cited in each deep file. After every
finding, push it to its ceiling via chaining.md (IDOR→ATO, SSRF→cloud→RCE,
open-redirect→OAuth) before moving on — a chained finding is worth an order of magnitude more.
Phase 6 — Validate & report
Run every candidate through the 7-Question Gate + 4 pre-submission gates (validation.md).
Kill theoretical/N-A findings; only proven, reproduced findings survive. Then write each survivor up
(reporting.md) — impact-first title, copy-paste repro, evidence of real impact,
CVSS, one bug per report — saved with its evidence in findings/<asset>/.
Completion criteria (do not declare done until ALL are true)
jq -s '[.[]|select(.in_scope and .status!="covered")]|length' coverage.jsonlprints0; no field isuntested.- All JS (live ∪ wayback ∪ gau ∪ katana) was read (files mined ==
wc -l js/js-urls.txt). - Every applicable class ran on every asset: id-endpoints→IDOR; URL-fetch features→SSRF; XML/upload intake→XXE; template-rendered fields→SSTI; query/filter params→SQLi; deser/dep-confusion/media/upload→RCE; every 401/403→bypass; every GraphQL→audit; front/back-end pairs→smuggling; CDN paths→cache; once-only/money flows→race; auth flows→ATO.
- Any APK/IPA went through the mobile workflow.
- Every surviving finding passed the full validation gate.
If any is false, the run is not complete — return to the ledger and finish it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

