finding-discipline
Skill1 starsChanged 11 days agoMITView on GitHub
Evidence and quality standards for every finding before it goes in a report: the Demonstrated/Inferred/Unproven tagging system, what counts as a valid PoC, and how to justify a CVSS score. Use whenever a potential vulnerability is identified and before writing it up — this is the gate between "I think I found something" and "this is a reportable finding." Do NOT use for recon/scanning technique — use the relevant recon or hunt skill for that; this skill only governs how findings are documented and scored.
- Sends data out
1 other project uses a version of this.
Adopted by
Most recently taken up by
- hypnguyen1209/offensive-claudetheir own version, first seen Sep 21, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- hypnguyen1209/offensive-claude★ 401same name
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 repository124 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ai-agent-reconSkill
- ai-supply-chainSkill
- exfiltration-via-aiSkill
- indirect-injectionSkill
- llm-fuzzingSkill
- prompt-injectionSkill
- rag-poisoningSkill
- tool-abuseSkill
- chain-analysisSkill
- chain-auth-to-takeoverSkill
- chain-customSkill
- chain-graph-walkSkill
- chain-idor-to-mass-dataSkill
- chain-info-to-exploitSkill
- chain-multi-appSkill
- chain-ssrf-to-cloudSkill
- chain-web-to-rceSkill
- chain-xss-to-account-takeoverSkill
- email-securitySkill
- engagement-flowSkill
- http-headers-securitySkill
- oob-interactionsSkill
- opsec-disciplineSkill
- research-firstSkill
- scope-disciplineSkill
- scope-importSkill
- session-contextSkill
- 2fa-bypassSkill
- api-abuseSkill
- auth-bypassSkill
- broken-access-controlSkill
- business-logicSkill
- cache-poisoningSkill
- clickjackingSkill
- corsSkill
- credential-testingSkill
- crlf-injectionSkill
- cryptographic-oracleSkill
- csrfSkill
- css-injectionSkill
- data-exfiltration-testSkill
- deserializationSkill
- email-injectionSkill
- file-uploadSkill
- fuzzingSkill
- graphqlSkill
- grpcSkill
- host-headerSkill
- http-smugglingSkill
- idorSkill
- info-disclosureSkill
- jwtSkill
- lateral-movementSkill
- lfi-rfiSkill
- mass-assignmentSkill
- oauthSkill
- open-redirectSkill
- parameter-pollutionSkill
- password-resetSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 6 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 31
Every finding gets exactly one tag, chosen by the strictest standard it meets:
- Distinctive: line 48
Never let a finding's write-up imply a stronger tier than its actual evidence.
- Distinctive: line 79
Every metric choice should trace to something observed, not a guess at worst case.
- Distinctive: line 87
Never report a finding from version/CVE-matching alone — a banner or package version matching a public CVE is Inferred at best until you …
- Distinctive: line 100
Before a finding goes into the report:
- Distinctive: line 116
Don't silently downgrade an uncomfortable finding to Unproven to avoid conflict with the client — the tier reflects evidence quality only.
≈ “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
Signals
- A scan, manual test, or tool flags a potential vulnerability.
- About to write a finding into a report draft.
- Deciding severity/CVSS for something already confirmed.
- Reviewing someone else's draft findings before they ship.
Prerequisites
- The finding originates from in-scope testing (
scope-disciplinealready cleared).
Evidence tiers
Every finding gets exactly one tag, chosen by the strictest standard it meets:
- Demonstrated — you personally triggered the vulnerable behavior against the live target and captured proof (response showing the impact, not just the request). This is the only tier that supports a full, unqualified CVSS score and an "impact" write-up stated as fact.
- Inferred — strong circumstantial evidence (version banner matching a known CVE, behavior consistent with a vuln class, error message indicating a flaw) but you did not trigger the actual impact (e.g. found a SQLi-indicative error but didn't exfiltrate data, or found an outdated library but didn't build/run the matching exploit). Report with explicit "not exploited; inferred from X" language and a CVSS score caveated as "if confirmed."
- Unproven — a scanner/tool flagged it with no independent confirmation (default nikto/ nuclei/nessus output, unconfirmed). Report only as a low-confidence note in an appendix, never as a numbered finding with a CVSS score, unless and until it's escalated to Inferred or Demonstrated.
Never let a finding's write-up imply a stronger tier than its actual evidence. "Appears to allow X" belongs to Inferred language even if the formatted finding title sounds confident.
Methodology
- Capture raw evidence at the moment of discovery, before moving on:
Save full request + full response, not a screenshot cropped to "the interesting part."curl -i -s -X POST https://target/api/reset -d '{"user_id":1337}' -H "Authorization: Bearer $LOW_PRIV_TOKEN" > evidence/idor-001-request.txt - For anything claimed as Demonstrated, write a minimal, reproducible PoC: exact request (curl/HTTPie), exact preconditions (account type, auth token scope, starting state), and the exact observable difference that proves impact (returned another user's data, executed a command, escalated a role). A PoC that only a specific session/token can reproduce is not yet "reproducible" — note that limitation explicitly.
- Re-run the PoC clean right before reporting (see
engagement-flow's VALIDATING phase) — session state, caching, or a since-patched issue can make a stale PoC misleading.# re-run from a fresh, unauthenticated shell/session to rule out leftover state curl -i -s https://target/api/export/1 > evidence/idor-001-retest.txt diff evidence/idor-001-request.txt evidence/idor-001-retest.txt - Score CVSS using the official calculator methodology, and write out the vector string
and the reasoning for each metric — not just the final number:
Every metric choice should trace to something observed, not a guess at worst case.CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N AV:N — reachable over the internet, confirmed via direct curl from outside the network AC:L — no special conditions beyond a valid low-priv token PR:L — requires authentication as any user (tested with a low-privilege account) C:H — returned full PII of an arbitrary user (demonstrated, see evidence/idor-001) - Attach exact version/commit/timestamp info for anything environment-dependent (the finding may be patched by the time the report is read).
- Separate the finding (what's wrong) from the recommendation (how to fix it) — don't let a specific fix suggestion stand in for the actual technical root cause.
- Map the finding to MITRE ATT&CK (tactic + technique ID, e.g.
T1190 — Exploit Public- Facing ApplicationunderInitial Access) based on what was actually demonstrated, not the broadest technique the vuln class could theoretically map to. - Never report a finding from version/CVE-matching alone — a banner or package version matching a public CVE is Inferred at best until you trigger the actual behavior; see the project's anti-fabrication rule (CLAUDE.md) which is stricter than this skill alone and takes precedence.
Tooling
curl -i (always capture full headers), request/response logging via Burp Suite's logger
or mitmproxy, a CVSS 3.1 calculator (official FIRST.org calculator or offline equivalent),
diff for before/after comparisons on retests.
Validation gate
Before a finding goes into the report:
- Tagged Demonstrated / Inferred / Unproven, and the write-up language matches the tag.
- Raw evidence (full request+response or equivalent) saved, not just a summary.
- If Demonstrated: PoC re-run clean immediately before writing the final report.
- CVSS vector string present with per-metric justification, not just a bare score.
- Finding and recommendation are in separate sections.
Gotchas
- Scanner output dressed up as a confirmed finding is the single most common quality failure in pentest reports — a nikto/nuclei hit is Unproven until independently reproduced.
- CVSS inflation: a real but low-impact issue (e.g. verbose error message) scored as High because "it could theoretically lead to..." — score what you demonstrated, not the worst hypothetical chain.
- PoCs that only work with a specific, soon-to-expire session token look reproducible to you but won't be to the client's remediation team — state preconditions explicitly.
- Don't silently downgrade an uncomfortable finding to Unproven to avoid conflict with the client — the tier reflects evidence quality only.
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.

