Add governance policies and PR-driven CI validation#3
Open
TX-RX wants to merge 2 commits into
Open
Conversation
Policies:
* CODE_OF_CONDUCT.md (Contributor Covenant 2.1, short summary inline)
* SECURITY.md (what is/isn't a security issue, private reporting via
GitHub advisories, SLA targets, coordinated-disclosure window)
* CONTRIBUTING.md (the five contribution rules with rationale, local
validator command, PR process, code style, license CLA-by-PR)
* .github/PULL_REQUEST_TEMPLATE.md (checklist enforcing each rule)
CI:
* .github/workflows/validate.yml runs on every PR to main on
windows-latest. Installs PSScriptAnalyzer and runs Validate-Pranks.ps1.
* .github/scripts/Validate-Pranks.ps1 performs five checks:
1. PowerShell parse errors across every .ps1
2. PSScriptAnalyzer findings (Error fails; Warning advisory)
3. Paired Install-<X>/Uninstall-<X> for every top-level payload
4. Denylist + network allowlist (loaded from JSON to keep the .ps1
itself free of AV-tripping literal pattern strings; an earlier
inline version got quarantined by Defender's AMSI)
5. README mentions every top-level payload
* .github/scripts/denylist.json holds the regex patterns and host
allowlist as pure data, so the rules can evolve without touching the
validator and AMSI never sees the forbidden strings as code.
README updated to link the policy docs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the standard set of GitHub repo policies and a CI workflow that mechanically enforces the contribution rules so we don't have to remember to check them by hand.
Policy files
CI
main(and on push tomain) onwindows-latest. Installs PSScriptAnalyzer and runs the validator..ps1.Errorblocks;Warningadvisory.Install-<X>/Uninstall-<X>for every top-level payload.VirtualAlloc,Mimikatz, registry Run-key paths, etc.) out of the.ps1means AMSI doesn't quarantine the validator itself. (An earlier inline version got blocked locally by Defender during testing.)README
Updated to link the new policy docs.
Test plan
pwsh -File ./.github/scripts/Validate-Pranks.ps1— verified locally, exits 0.Set-MpPreference -DisableRealtimeMonitoring) and confirm validate.yml fails.Notes for reviewers
Mimikatzdenylist pattern uses aM[i]mikatzregex trick to match the real name while not containing the literal string statically — this is the same pattern AV-evasion vendors use defensively when shipping detection rules. Documented inline.catfact.ninjaandraw.githubusercontent.com/TX-RX/. New endpoints require an allowlist update in the same PR that introduces them.<you>/OfficePranks/main/...placeholder inInstall-CatFacts.ps1. Acceptable.🤖 Generated with Claude Code