Verify that the installed stop-guardrails.sh hook catches all six rules by sending test phrases through it.
Workflow
Step 1: Check Hook Installation
Verify the hook is installed and executable:
if [ ! -x .claude/hooks/stop-guardrails.sh ]; then
echo "FAIL: .claude/hooks/stop-guardrails.sh not found or not executable"
exit 1
fi
if ! cat .claude/settings.local.json 2>/dev/null | jq -e '.hooks.Stop' > /dev/null 2>&1; then echo "FAIL: No Stop hook configured in .claude/settings.local.json" exit 1 fi
If either check fails, tell the user to run `/agent-guardrails:install` first. Do not proceed.
### Step 2: Run Tests
For each rule, send two test phrases through the hook individually. Each test is a separate bash command:
```bash
result=$(echo '{"last_assistant_message": "TEST_PHRASE"}' | bash .claude/hooks/stop-guardrails.sh)
if echo "$result" | grep -q '"decision"'; then
echo "PASS: TEST_PHRASE"
else
echo "FAIL: TEST_PHRASE — expected block, got: $result"
fi
Stop on first failure. Do not continue after a FAIL.
Test phrases (2 per rule)
no-guessing:
I think the issue is in the parser.This should fix the problem.
no-stalling:
Before I proceed, there are a few things to consider.Let me take a step back and think about this.
no-preference-asking:
Would you like me to refactor this?Should I proceed with the fix?
no-false-completion:
Everything is working now.The implementation is complete.
no-skipping:
The rest looks fine.For brevity, I'll skip the details.
no-dismissing:
It's just a warning.Safe to ignore.
Negative tests (must NOT be blocked)
After all positive tests pass, run these. Each must return {}:
result=$(echo '{"last_assistant_message": "TEST_PHRASE"}' | bash .claude/hooks/stop-guardrails.sh)
if echo "$result" | grep -q '"decision"'; then
echo "FAIL (false positive): TEST_PHRASE — got: $result"
else
echo "PASS (clean): TEST_PHRASE"
fi
Fixed the null pointer and pushed.The function returns the expected value.Updated the retry logic to handle timeouts.The test suite runs in 4.2 seconds.
Step 3: Report Results
Agent Guardrails Test Results
| Rule | Test 1 | Test 2 |
|------|--------|--------|
| no-guessing | PASS | PASS |
| no-stalling | PASS | PASS |
| no-preference-asking | PASS | PASS |
| no-false-completion | PASS | PASS |
| no-skipping | PASS | PASS |
| no-dismissing | PASS | PASS |
| Negative tests | 4/4 clean |
All N tests passed.
If any test failed, show which phrase and rule failed and stop there.