scope-discipline
Skill1 starsChanged 11 days agoMITView on GitHub
Scope validation rules for pentest engagements: how to confirm a target is in scope before touching it, how to handle out-of-scope discoveries, and how to handle scope ambiguity. Use before ANY recon, scanning, or testing action against a target, and whenever a new host/domain/IP/asset is discovered mid-engagement. This is a gating skill, not a recon technique — every other skill depends on it.
7 other projects use a version of this.
Adopted by
Most recently taken up by
- uxjulia/CrossInktheir own version, first seen Oct 8, 2026
- daveallie/crosspoint-readertheir own version, first seen Oct 8, 2026
- kalshamsi/fable-discipline-skillstheir own version, first seen Oct 8, 2026
- crosspoint-reader/crosspoint-readertheir own version, first seen Oct 8, 2026
- duvi-ai/skillstheir own version, first seen Oct 5, 2026
- hypnguyen1209/offensive-claudetheir own version, first seen Sep 21, 2026
Used with
Projects with it also use control-flow-clarity, hal-and-abstractions and 2 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
uxjuliaSkillcontrol-flow-clarity
Branching and state-modeling clarity in C/C++. Use when writing or refactoring logic that branches on discrete values: if/else-if ladders, status flags, mode or state ints, or anything that should be an enum plus an exhaustive switch. Covers enum class over magic ints, exhaustive switch over nested if, early-return guard clauses, table dispatch, and when each is the right call.
Also in 3 projects that use this
uxjuliaSkillhal-and-abstractions
Layering and abstraction discipline for the firmware. Use when touching storage, input, display, settings, i18n, or rendering, or any code that could reach into the SDK. Covers routing through the HAL (HalStorage / HalGPIO / HalDisplay) instead of raw SDK classes, MappedInputManager logical buttons instead of raw GPIO indices, UITheme/GUI for all rendering, the singleton macros, tr() for user-facing text, and where a new abstraction boundary belongs.
Also in 3 projects that use this
- +2 more from uxjulia
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- daveallie/crosspoint-reader★ 8.7ksame name
- crosspoint-reader/crosspoint-reader★ 8.7ksame name
- uxjulia/CrossInk★ 1.7ksame name
- hypnguyen1209/offensive-claude★ 401same name
- IgorGanapolsky/ThumbGate★ 30same name
- duvi-ai/skills★ 2same name
- kalshamsi/fable-discipline-skills★ 0same 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
- finding-disciplineSkill
- http-headers-securitySkill
- oob-interactionsSkill
- opsec-disciplineSkill
- research-firstSkill
- 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. 0 are common, 4 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 19
Before the first action against any new host, domain, IP range, or cloud asset.
- Very specific: line 32
Before engagement start, build an explicit scope list from the RoE — domains, subdomains, CIDR ranges, cloud account IDs, and anything …
- Distinctive: line 58
When a scan/tool returns results outside the defined ranges (common with wildcard subdomain brute force, ASN-based IP discovery, or …
- Distinctive: line 63
Do not hunt or exploit against the filtered-out set, even "just to see."
- Distinctive: line 72
Before any active action against a target:
- Very specific: line 87
Never widen scope based on verbal requests mid-engagement ("can you also check our other site?") without written confirmation added to the …
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Signals
- Before the first action against any new host, domain, IP range, or cloud asset.
- A recon skill discovers a new subdomain, IP, CNAME target, or cloud bucket not in the original scope list.
- The client asks to "just check this one more thing" mid-engagement.
- Ambiguity about whether a shared/third-party asset (CDN, SaaS, partner API) is testable.
Prerequisites
- Written authorization: a signed statement of work, rules of engagement (RoE) document, or explicit written client sign-off naming the exact assets, IP ranges, and testing windows. Verbal "go ahead" is not sufficient for anything beyond passive OSINT.
Methodology
- Before engagement start, build an explicit scope list from the RoE — domains, subdomains,
CIDR ranges, cloud account IDs, and anything explicitly excluded. Keep it as a literal file
(e.g.
scope.txtwith one entry per line) that every other skill reads from. - For every new target before touching it, validate membership:
# domain/subdomain membership grep -E "(^|\.)example\.com$" scope.txt # IP in CIDR range python3 -c "import ipaddress; print(ipaddress.ip_address('1.2.3.4') in ipaddress.ip_network('1.2.3.0/24'))" # or with a CLI tool prips 1.2.3.0/24 | grep 1.2.3.4 - For discovered assets with ambiguous ownership (shared hosting, CDN edge, SaaS subdomain),
confirm actual ownership before scanning:
A CNAME to infra not owned by the client (Shopify, AWS CloudFront, Cloudflare Pages, etc.) is presumptively out of scope unless the RoE explicitly covers shared/cloud infrastructure testing — stop and ask.whois example.com | grep -i "org\|registrant" dig +short CNAME sub.example.com # does it point to a third party (e.g. *.herokuapp.com, *.cloudfront.net)? curl -sI https://sub.example.com | grep -i "server\|x-served-by" - Log every scope decision, including exclusions, in a scope-log (timestamp, asset, decision, reasoning). This is evidence for the final report and for covering yourself if questioned later.
- When a scan/tool returns results outside the defined ranges (common with wildcard subdomain
brute force, ASN-based IP discovery, or Shodan/Censys queries), filter immediately:
Do not hunt or exploit against the filtered-out set, even "just to see."subfinder -d example.com -silent | grep -E "\.example\.com$" > inscope-subs.txt
Tooling
whois, dig/host, curl -I, ipaddress (Python stdlib), prips, grep/comm for set
filtering against scope.txt.
Validation gate
Before any active action against a target:
- Target appears in
scope.txt(domain suffix match, or IP within an authorized CIDR). - If the target resolves/CNAMEs to third-party infrastructure, ownership and RoE coverage confirmed explicitly — not assumed.
- If in doubt, the ambiguity has been raised with the human operator, not resolved silently.
Gotchas
- Wildcard DNS and subdomain brute force will return hosts the client doesn't own (dev environments on third-party PaaS, abandoned subdomains pointing to expired cloud resources, partner integrations). Scope match on the domain name is necessary but not sufficient — check what actually answers.
- "In scope" at engagement start doesn't mean "in scope forever" — RoE windows, IP allowlisting requirements, and excluded assets can change; re-check scope.txt if the engagement spans more than a few days.
- Never widen scope based on verbal requests mid-engagement ("can you also check our other
site?") without written confirmation added to the RoE — redirect to
engagement-flow's escalation step. - A target that was in scope and is now unreachable/decommissioned is not an invitation to pivot to whatever replaced it without re-confirming that the replacement is also in scope.
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.

