pre-bounty
Skill153 starsChanged 45 days agoMITView on GitHub
Map a bug-bounty scope and rank targets by payout, crowding, and freshness. Use to size up a program or decide where to hunt before committing time.
In this repository41 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- broken-access-controlSkill
- cdn-peekSkill
- http-request-smugglingSkill
- jwt-attacksSkill
- ssrf-oobSkill
- webapp-probeSkill
- blockchain-forensicsSkill
- foundry-pocSkill
- safe-huntSkill
- smart-contract-auditSkill
- cloud-bucket-bruteSkill
- infrastructure-auditSkill
- dylib-hijack-scanSkill
- endpoint-threat-huntSkill
- parse-securitySkill
- agentic-seoSkill
- agent-onboardingSkill
- context-window-to-skillSkill
- git-commitSkill
- keen-eyesSkill
- no-aispeakSkill
- secure-1pass-accessSkill
- self-improveSkill
- shadow-partnerSkill
- training-guideSkill
- variant-tableSkill
- auditor-quizSkill
- audit-scopeSkill
- evidence-captureSkill
- external-enumerationSkill
- gdocs-audit-reportSkill
- hackerone-reportSkill
- nuclei-suggestSkill
- sandboxed-audit-runnerSkill
- tiny-auditorSkill
- vm-labSkill
- llm-fuzz-toolsSkill
- mcp-server-pentestSkill
- prompt-injection-auditSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 32
If you only get a program name, construct the URL.
- Distinctive: line 49
Resolved-report count / share per asset: if the platform shows it. This is your single best crowd proxy - an asset with 40% of all resolved …
- Distinctive: line 61
Check the program's hacktivity / disclosed reports.
- Distinctive: line 128
Verdict - a tight closer under both widgets: Only what the tables can't say: name the top 1–3 picks (one clause each on *why now*), state …
- Distinctive: line 141
When in doubt, move the sentence into a table cell or delete 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
Pre-bounty: scope recon & target prioritization
The core thesis
Most hunters converge on whatever is cheapest to start testing. That means the crowd is an artifact of the setup barrier, not of where the bugs are. So the edge is systematic: rank the scope by
opportunity ≈ (payout ceiling × freshness) ÷ crowd, with setup difficulty acting as a moat - a hard-to-reproduce environment keeps competitors out, so it is a positive when paired with a high ceiling.
The whole skill exists to compute that ranking from real program data and show it in a way the user can act on. A high max-payout asset that is trivial to set up and already swept (lots of resolved reports) is a worse target than a modest one nobody has tooled up for. Make that legible.
Inputs this skill accepts
Any of, in order of preference:
- A program URL -
hackerone.com/<program>,bugcrowd.com/<program>,app.intigriti.com/...,yeswehack.com/..., or a self-hosted/security/security.txt/ VDP page. - A pasted scope table or asset list (domains, mobile apps, repos, APIs).
- A rough description of API/repo access the user already has.
If you only get a program name, construct the URL. If the platform page is
JavaScript-rendered (HackerOne, Bugcrowd, Intigriti all are), use the browser
tools to read it - WebFetch returns an empty shell for these. read_page /
get_page_text on the policy and scope tabs is the reliable path.
Workflow
Work the five stages in order. Stages 1–3 are parallelizable - fire the fetches and searches together.
1. Gather the scope (the signal-richest step)
Pull and record, per asset:
- Asset name, type (domain / mobile / desktop / API / source / other) and whether it is in or out of scope.
- Payout tier - most programs tag assets into tiers (HackerOne Core/Non-core; Bugcrowd P1–P5 targets; others "critical eligible" vs not). Capture the max reward reachable per asset - this is the ceiling.
- Resolved-report count / share per asset if the platform shows it. This is your single best crowd proxy - an asset with 40% of all resolved reports is picked-over; one with <2% is open. HackerOne shows this on the scope table; Bugcrowd/Intigriti show submission stats less granularly (note when missing).
- Last-updated date of each scope entry → freshness. Recently added or rescoped assets have had fewer eyes.
- Program-wide reward table (per-severity bounty ranges + averages) and the severity mix of resolved reports if shown.
See references/sourcing.md for exactly where each platform surfaces these.
2. Mine bug history
- Check the program's hacktivity / disclosed reports. Many programs disclose nothing publicly - say so plainly and fall back to the crowd proxy.
- Web-search public CVEs and researcher writeups for the target's products. The recurring bug class tells you what actually lands (e.g. trust-boundary RCE, config-precedence, deep-link/IPC on native clients). Record specific CVE IDs where found.
- Note remediation / dedup signals - if the policy says a bug class is under a wholesale fix, reports there will close as duplicates. Flag those assets as saturated regardless of payout.
3. Extract the boundary gotchas
The fine print is where hunters waste days. Capture:
- Adjacent in/out pairs - cases where a near-identical bug is in-scope on one asset and out on another (e.g. first-party MCP in-scope vs OSS MCP out; first-party connector in vs third-party-in-directory out).
- Excluded vulnerability classes (DoS, clickjacking on non-sensitive pages, missing cookie flags, dependency confusion, self-XSS, rate-limiting, etc.).
- Platform-standard deviations and payout nerfs - especially "one bounty per systemic issue" and discretionary PII-leak severity, which kill the "report many instances" strategy.
- Testing constraints (e.g. leaked-key "authenticate then immediately
deauth only", required
X-HackerOne-Handleheader / researcher email).
Render this as a compact in ✅ / out ❌ table - see the output spec.
4. Score & rank every asset
Apply the rubric in references/scoring.md. For each asset produce:
{ setup tier + time estimate, crowd, payout ceiling, freshness, ROI verdict,
opportunity score 0–100 }, then sort best→worst. Verdict buckets:
Prime · Good · Recon · Skip · Dead. Be honest that the two highest-ceiling
assets are often near the bottom because the crowd is already there - surfacing
that inversion is the point.
5. Deliver
Produce the artifacts below. Lead with the ranking; it is what the user asked for even when they phrased it as "analyze the scope".
Output spec
The output is tables + the two widgets. Prose is connective tissue, not the product. Put every fact that fits in a cell in a cell - never restate in a paragraph what a table or widget already shows. See "Prose discipline" below for the hard budget; violating it is the most common failure of this skill.
Deliver, in this order:
- Program header - one line.
bounty since · total paid · paid/90d · resolved · response-efficiency · # in-scope assets, then a single sentence on how hunted the program is. No more. - Boundary gotchas - a table. The
in ✅ / out ❌adjacent pairs as a two-column table. Follow with at most 3–4 bullets for the strategy-killing nerfs (systemic-dedup, testing constraints, saturated classes) - one line each, no sub-bullets, no paragraphs. - Severity economics - a table. Columns:
severity · share of resolved · avg bounty · range, one row per severity. Then one italic sentence: "where the crits actually land", grounded in the CVE corpus - noting crit rates are usually ~1% and the money is repeatable Highs. - Ranked list widget, best→worst - rank, verdict chip, payout ceiling,
setup time, crowd %, freshness, and a one-line "why" per asset. Render with
the ranked-list widget in
references/sankey.md. The widget carries the per-asset detail; do not narrate the list row by row afterward. - Ranked Sankey widget - the three-stage
asset → replication setup → ROI verdictflow, assets ordered best (top) → worst (bottom), thread width = report volume, labels carrying payout ceiling + freshness. Fill the one data array in thereferences/sankey.mdtemplate - do not hand-roll new diagram code. Render via thevisualizeshow_widgettool (call itsread_meonce first, as that tool requires). - Verdict - a tight closer under both widgets. Only what the tables can't say: name the top 1–3 picks (one clause each on why now), state the inversion in one sentence (which high-ceiling assets sit at the bottom and why), and flag any technique-development target. Cap this whole section at ~120 words.
Prose discipline (the point of this update)
- Tables and widgets are load-bearing; prose only connects them. If a sentence repeats a number or verdict already in a cell/chip, cut it.
- Budget: header = 1 line; each table gets ≤1 lead-in line and ≤1 follow-up line; the closing verdict ≤120 words. No section is a paragraph block.
- No row-by-row narration of the ranked list - that is the widget's job.
- One sources line at the very end (CVE/writeup links), not inline essays.
- When in doubt, move the sentence into a table cell or delete it.
Notes on judgment
- Estimate, but flag estimates. Setup-time and opportunity scores are your synthesis; the payout ceiling, crowd counts, and dates are hard data from the program. Keep the two visibly separate so the user can trust the spine.
- Scale to the ask. "Quick take on this program" → the ranked list is enough. "Full workup" → all four artifacts plus the CVE history.
- Stay in authorized-recon lane. This skill reads public program data and public vulnerability history to prioritize; it does not test, exploit, or probe live targets. Reproduction/testing happens later, under program rules.
- This skill pairs with a reporting skill for the next phase (filing a found bug). Don't try to do both; hand off.
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.

