Help us improve
Share bugs, ideas, or general feedback.
From agent-guardrails
Installs behavioral guardrails for Claude agents into .claude/ directory via bash Stop hook script and settings.local.json config. Enforces 6 rules like no-stalling, no-speculative-language.
npx claudepluginhub florianbuetow/claude-code --plugin agent-guardrailsHow this skill is triggered — by the user, by Claude, or both
Slash command
/agent-guardrails:installThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Install agent behavioral guardrail rules into the current project. Generates a bash script Stop hook and configures `settings.local.json` — no external plugin dependencies.
Guides creation of markdown-based Hookify rules to block dangerous bash commands, warn on risky file edits, and enforce behavioral guardrails in Claude Code.
Implements hooks for permission control, blocking dangerous operations, and audit trails in custom Claude Code agents.
Adds a new rule, convention, or instruction to the project's agent configuration, analyzing placement in root CLAUDE.md, docs/agents/ files, or a new skill.
Share bugs, ideas, or general feedback.
Install agent behavioral guardrail rules into the current project. Generates a bash script Stop hook and configures settings.local.json — no external plugin dependencies.
templates/stop-guardrails.sh inside this pluginrules/no-*.md are the source of truth for patterns and messages.claude/hooks/stop-guardrails.sh in the target project.claude/settings.local.jsonRule definitions: plugins/agent-guardrails/rules/no-*.md
Bundled script: plugins/agent-guardrails/templates/stop-guardrails.sh
| # | Rule | Description |
|---|---|---|
| 1 | no-speculative-language | Blocks hedging, guessing, unverified claims |
| 2 | no-stalling | Blocks stalling language, padding before action |
| 3 | no-preference-asking | Blocks delegating decisions to the user |
| 4 | no-false-completion | Blocks unverified completion claims |
| 5 | no-skipping | Blocks skipping work or hand-waving |
| 6 | no-dismissing | Blocks dismissing issues without investigation |
Check what guardrail files already exist in the project:
ls .claude/hooks/stop-guardrails.sh 2>/dev/null
cat .claude/settings.local.json 2>/dev/null
If $ARGUMENTS contains specific rule names (e.g., "install no-stalling no-skipping"):
If $ARGUMENTS mentions "all" or "curated" (e.g., "install all"):
If $ARGUMENTS is empty:
mkdir -p .claude/hooks
Read the bundled template from ${CLAUDE_PLUGIN_ROOT}/templates/stop-guardrails.sh and write it to .claude/hooks/stop-guardrails.sh in the target project.
If only a subset of rules was requested (Step 2), remove the unwanted grep blocks from the copied script before writing.
If the user has an existing .claude/hooks/stop-guardrails.sh with custom rules (grep blocks not in the curated set), preserve those custom blocks when overwriting.
chmod +x .claude/hooks/stop-guardrails.sh
Read the existing .claude/settings.local.json if it exists. Merge the Stop hook entry into it, preserving any existing hooks and permissions.
The Stop hook entry to add:
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/stop-guardrails.sh",
"timeout": 5000
}
]
}
]
}
}
If a Stop hook for stop-guardrails.sh already exists, leave it as-is (just update the script file).
After writing all files, verify:
ls -la .claude/hooks/stop-guardrails.sh
head -5 .claude/hooks/stop-guardrails.sh
cat .claude/settings.local.json | jq '.hooks.Stop'
Show what was installed:
## Agent Guardrails Installed
| Rule | Status |
|------|--------|
| no-speculative-language | Installed |
| no-stalling | Installed |
| no-preference-asking | Installed |
| no-false-completion | Installed |
| no-skipping | Installed |
| no-dismissing | Installed |
**Script:** `.claude/hooks/stop-guardrails.sh`
**Config:** `.claude/settings.local.json` (Stop hook)
**Runtime:** bash + jq + grep (no plugin dependencies)
**Effect:** Requires a session restart. Run `/exit` and start a new Claude session for hooks to take effect.
Rules trigger on the assistant's Stop event. To test after restarting, run `/agent-guardrails:test`.
**To customize:** Edit `.claude/hooks/stop-guardrails.sh` directly.
**To add/remove rules:** Re-run /agent-guardrails:install with specific rule names.
**To refine:** Run /agent-guardrails:update after using the rules for a few sessions.
If the user provides a custom behavior description (not one of the six curated rules), add a new grep block to the bash script following the same pattern:
# {kebab-case-name}
if echo "$message" | grep -qiE '{pattern}'; then
blocked+=("**{kebab-case-name}**: {message}")
fi