How to Configure and Use the Case Guard Script Before ACT Execution
The case-guard script validates four mandatory conditions in scope.md—authorization status, network profile, in-scope assets, and ready-for-act flag—exiting with code 2 if checks fail to prevent premature ACT execution.
The reverse-skill repository relies on a strict scope-contract pattern to ensure every penetration test or reverse-engineering task stays within legal and ethical boundaries. Learning how to configure and use the case guard script before ACT execution is essential for operators who need to validate that work/<case>/scope.md satisfies all preconditions defined in skills/ops/scope-contract.md. This lightweight PowerShell gate runs automatically (or manually) immediately before the primary skill launches, blocking execution until the checklist is complete.
What the Case Guard Script Validates
The script located at skills/scripts/case-guard.ps1 (see lines 30-73) performs four non-negotiable inspections using regular-expression matches against the case’s scope.md file:
-
Authorization status – Must find
status: granted(or- status: granted) to confirm legal/ethical approval is recorded. -
Network profile – Requires
network_profile.modeto be explicitly set. If the mode isoffline, a sample cue must be present to justify the lack of network access. -
In-scope assets – Verifies at least one non-empty entry exists under
## in_scope → - assets:to ensure concrete targets are defined. -
Ready-for-ACT flag – Checks for
ready_for_act: true(or- ready_for_act: true) acting as the explicit “go” signal.
If any check fails, the script aggregates issues and exits with code 2 (not ready). A usage or internal error causes exit 1, while a clean validation returns exit 0. Supplying the -Force switch suppresses the failure and forces exit 0 with warnings only.
Configuring the Guard
1. Initialize the Case with case-init.ps1
Rather than manually creating scope.md, use the generator to populate required fields automatically:
powershell -File skills/scripts/case-init.ps1 `
-Hint "web pentest" `
-CaseName my-case `
-AuthGranted `
-TargetUrl "https://target.example" `
-NetworkProfile authorized_target_only
This command creates work\my-case\ and a starter scope.md (see template generation in case-init.ps1 lines 61-110) containing the mandatory YAML sections prepopulated with your arguments.
2. Manual Edits and Indentation Sensitivity
If you need custom values, edit work\<case>\scope.md directly:
-
Ensure
auth → status: grantedis present. -
Set
network_profile → modetooffline,lab_only, orauthorized_target_onlyas appropriate. -
List target assets under
## in_scope → - assets:with each entry prefixed by-. -
Add
ready_for_act: truewhen your checklist is complete.
Critical: The script uses regex matching to locate keys, so the exact indentation and bullet syntax shown in the generated file must be preserved. Changing - assets: to assets: or altering YAML indentation will cause validation failures.
3. Optional Bypass for Testing
To proceed despite warnings (useful for dry-runs), append the -Force flag:
powershell -File skills/scripts/case-guard.ps1 -CaseRoot work\my-case -Force
Running the Guard Before ACT Execution
The standard operator workflow follows three phases:
- Initialize (once per engagement): Run
case-init.ps1to scaffold the case directory. - Verify (repeat while editing): Run
case-guard.ps1to pollscope.mduntil it passes. - Execute ACT: Only when the guard returns exit 0 should you invoke the primary skill.
# Verify scope before ACT
powershell -File skills/scripts/case-guard.ps1 -CaseRoot work\my-case
If the guard returns exit 2, the console output lists specific blockers:
CASE-GUARD NOT READY: work\my-case
- auth.status is not granted
- in_scope.assets appears empty
- ready_for_act is not true
Fix the listed items, then re-run until you see "CASE-GUARD OK" (exit 0).
Practical Code Examples
Example 1 – Successful Validation
PS> powershell -File skills/scripts/case-guard.ps1 -CaseRoot work\my-case
CASE-GUARD OK: work\my-case
Example 2 – Missing Assets and Readiness Flag
PS> powershell -File skills/scripts/case-guard.ps1 -CaseRoot work\my-case
CASE-GUARD NOT READY: work\my-case
- in_scope.assets appears empty
- ready_for_act is not true
Example 3 – Forced Execution Despite Warnings
PS> powershell -File skills/scripts/case-guard.ps1 -CaseRoot work\my-case -Force
CASE-GUARD: -Force set; continuing with warnings only.
CASE-GUARD OK: work\my-case
Key Files and Implementation Details
| File | Role |
|---|---|
skills/scripts/case-guard.ps1 |
The gate script that validates scope.md using regex matches (lines 30-73). |
skills/scripts/case-init.ps1 |
Generates the case directory and default scope.md with required fields (lines 61-110). |
work/<case>/scope.md |
Human-editable contract file; source of truth for auth, assets, and network mode. |
skills/ops/scope-contract.md |
Formal specification defining the required sections and valid values. |
skills/ops/role-map.md |
Reference for role assignments used in the scope checklist. |
Summary
- The case-guard script acts as a mandatory gatekeeper that inspects
scope.mdimmediately before ACT execution. - It enforces four conditions: granted authorization, valid network profile, non-empty asset list, and
ready_for_act: true. - Exit code 2 signals "not ready" and blocks the ACT; exit code 0 allows execution to proceed.
- Use
case-init.ps1to generate properly formattedscope.mdfiles, preserving indentation required by the regex parser. - Append
-Forceto bypass validation failures when testing or debugging workflows.
Frequently Asked Questions
What exit code indicates the case is not ready for ACT execution?
The script exits with code 2 when validation checks fail (e.g., missing authorization or empty asset list). Exit 0 indicates success, while exit 1 signals a usage or internal error.
Can I run the ACT if the guard reports warnings?
By default, no. The guard intentionally blocks ACT execution on any non-zero exit. However, you can supply the -Force switch to case-guard.ps1 to convert failures into warnings and return exit 0, allowing the workflow to continue for testing purposes.
Why must indentation be preserved when editing scope.md?
The validation logic in case-guard.ps1 (lines 30-73) uses regular-expression matches to locate keys like - assets: and ready_for_act. AlteringWhitespace or removing the hyphen prefix causes the regex to miss the entry, triggering false-negative validation failures.
Where is the formal contract defining these requirements documented?
The authoritative specification resides in skills/ops/scope-contract.md within the reverse-skill repository. This document defines the mandatory YAML structure, acceptable values for network_profile.mode, and the semantic meaning of each gate-check implemented by case-guard.ps1.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →