Create hooks to prevent unwanted behaviors from conversation analysis or explicit instructions
/plugin marketplace add CaptainCrouton89/silas-plugins/plugin install hookify@crouton-kitOptional specific behavior to addresscwd: !cwd
FIRST: Load the hookify:writing-rules skill using the Skill tool to understand rule file format and syntax.
Create hook rules to prevent problematic behaviors by analyzing the conversation or from explicit user instructions.
You will help the user create hookify rules to prevent unwanted behaviors. Follow these steps:
If $ARGUMENTS is provided:
$ARGUMENTSIf $ARGUMENTS is empty:
To analyze conversation: Use the Task tool to launch conversation-analyzer agent:
{
"subagent_type": "general-purpose",
"description": "Analyze conversation for unwanted behaviors",
"prompt": "You are analyzing a Claude Code conversation to find behaviors the user wants to prevent.
Read user messages in the current conversation and identify:
1. Explicit requests to avoid something (\"don't do X\", \"stop doing Y\")
2. Corrections or reversions (user fixing Claude's actions)
3. Frustrated reactions (\"why did you do X?\", \"I didn't ask for that\")
4. Repeated issues (same problem multiple times)
For each issue found, extract:
- What tool was used (Bash, Edit, Write, etc.)
- Specific pattern or command
- Why it was problematic
- User's stated reason
Return findings as a structured list with:
- category: Type of issue
- tool: Which tool was involved
- pattern: Regex or literal pattern to match
- context: What happened
- severity: high/medium/low
Focus on the most recent issues (last 20-30 messages). Don't go back further unless explicitly asked."
}
After gathering behaviors (from arguments or agent), present to user using AskUserQuestion:
Question 1: Which behaviors to hookify?
Question 2: For each selected behavior, ask about action:
Question 3: Ask for example patterns:
For each confirmed behavior, create a .claude/hookify.{rule-name}.local.md file:
Rule naming convention:
block-dangerous-rm, warn-console-log, require-tests-before-stopFile format:
---
name: {rule-name}
enabled: true
event: {bash|file|stop|prompt|all}
pattern: {regex pattern}
action: {warn|block}
---
{Message to show Claude when rule triggers}
Action values:
warn: Show message but allow operation (default)block: Prevent operation or stop sessionFor more complex rules (multiple conditions):
---
name: {rule-name}
enabled: true
event: file
conditions:
- field: file_path
operator: regex_match
pattern: \.env$
- field: new_text
operator: contains
pattern: API_KEY
---
{Warning message}
IMPORTANT: Rule files must be created in the current working directory's .claude/ folder, NOT the plugin directory.
Use the current working directory (where Claude Code was started) as the base path.
Check if .claude/ directory exists in current working directory
mkdir -p .claudeUse Write tool to create each .claude/hookify.{name}.local.md file
.claude/hookify.{name}.local.mdShow user what was created:
Created 3 hookify rules:
- .claude/hookify.dangerous-rm.local.md
- .claude/hookify.console-log.local.md
- .claude/hookify.sensitive-files.local.md
These rules will trigger on:
- dangerous-rm: Bash commands matching "rm -rf"
- console-log: Edits adding console.log statements
- sensitive-files: Edits to .env or credentials files
Verify files were created in the correct location by listing them
Inform user: "Rules are active immediately - no restart needed!"
The hookify hooks are already loaded and will read your new rules on the next tool use.
Bash patterns:
rm\s+-rf|chmod\s+777|dd\s+if=npm\s+install\s+|pip\s+installFile patterns:
console\.log\(|eval\(|innerHTML\s*=\.env$|\.git/|node_modules/Stop patterns:
Messages can include shell commands that execute and substitute output. Use !command`` syntax:
---
name: show-git-status
enabled: true
event: prompt
pattern: \bgit\b|\bcommit\b
---
**Current Git Status:**
!`git status --short`
The !command`` is replaced with actual command output. Useful for:
!linear issue list`` - Show Linear tickets!git status --short`` - Show git status!bd list --status=open`` - Show open beads issuesUser says: "/hookify Don't use rm -rf without asking me first"
Your response:
.claude/hookify.dangerous-rm.local.md:
---
name: warn-dangerous-rm
enabled: true
event: bash
pattern: rm\s+-rf
---
⚠️ **Dangerous rm command detected**
You requested to be warned before using rm -rf.
Please verify the path is correct.
~/.claude/hookify.*.local.md - Global rules (apply to all projects).claude/hookify.*.local.md - Project rules (apply to current project only)warn (default) or block operationsIf rule file creation fails:
.claude/ directory exists (create with mkdir if needed){cwd}/.claude/hookify.{name}.local.mdIf rule doesn't trigger after creation:
.claude/ not plugin .claude/python3 -c "import re; print(re.search(r'pattern', 'test text'))"enabled: true in frontmatterIf blocking seems too strict:
action: block to action: warn in the rule fileUse TodoWrite to track your progress through the steps.
/hookifyCreate hooks to prevent unwanted behaviors from conversation analysis or explicit instructions
/hookifyCreate hooks to prevent unwanted behaviors from conversation analysis or explicit instructions
/hookifyCreate hooks to prevent unwanted behaviors from conversation analysis or explicit instructions