|
Download plugins/hookify/commands/help.md from SaylorTwift/claude-code: direct link, hf CLI and curl.
- Browser
- Download file 4.62 kB
-
https://huggingface.co/SaylorTwift/claude-code/resolve/main/plugins/hookify/commands/help.md
- Command line
-
hf download hf://SaylorTwift/claude-code/plugins/hookify/commands/help.md
-
curl -L -o help.md https://huggingface.co/SaylorTwift/claude-code/resolve/main/plugins/hookify/commands/help.md
4.62 kB
| description: Get help with the hookify plugin | |
| allowed-tools: ["Read"] | |
| # Hookify Plugin Help | |
| Explain how the hookify plugin works and how to use it. | |
| ## Overview | |
| The hookify plugin makes it easy to create custom hooks that prevent unwanted behaviors. Instead of editing `hooks.json` files, users create simple markdown configuration files that define patterns to watch for. | |
| ## How It Works | |
| ### 1. Hook System | |
| Hookify installs generic hooks that run on these events: | |
| - **PreToolUse**: Before any tool executes (Bash, Edit, Write, etc.) | |
| - **PostToolUse**: After a tool executes | |
| - **Stop**: When Claude wants to stop working | |
| - **UserPromptSubmit**: When user submits a prompt | |
| These hooks read configuration files from `.claude/hookify.*.local.md` and check if any rules match the current operation. | |
| ### 2. Configuration Files | |
| Users create rules in `.claude/hookify.{rule-name}.local.md` files: | |
| ```markdown | |
| --- | |
| name: warn-dangerous-rm | |
| enabled: true | |
| event: bash | |
| pattern: rm\s+-rf | |
| --- | |
| ⚠️ **Dangerous rm command detected!** | |
| This command could delete important files. Please verify the path. | |
| ``` | |
| **Key fields:** | |
| - `name`: Unique identifier for the rule | |
| - `enabled`: true/false to activate/deactivate | |
| - `event`: bash, file, stop, prompt, or all | |
| - `pattern`: Regex pattern to match | |
| The message body is what Claude sees when the rule triggers. | |
| ### 3. Creating Rules | |
| **Option A: Use /hookify command** | |
| ``` | |
| /hookify Don't use console.log in production files | |
| ``` | |
| This analyzes your request and creates the appropriate rule file. | |
| **Option B: Create manually** | |
| Create `.claude/hookify.my-rule.local.md` with the format above. | |
| **Option C: Analyze conversation** | |
| ``` | |
| /hookify | |
| ``` | |
| Without arguments, hookify analyzes recent conversation to find behaviors you want to prevent. | |
| ## Available Commands | |
| - **`/hookify`** - Create hooks from conversation analysis or explicit instructions | |
| - **`/hookify:help`** - Show this help (what you're reading now) | |
| - **`/hookify:list`** - List all configured hooks | |
| - **`/hookify:configure`** - Enable/disable existing hooks interactively | |
| ## Example Use Cases | |
| **Prevent dangerous commands:** | |
| ```markdown | |
| --- | |
| name: block-chmod-777 | |
| enabled: true | |
| event: bash | |
| pattern: chmod\s+777 | |
| --- | |
| Don't use chmod 777 - it's a security risk. Use specific permissions instead. | |
| ``` | |
| **Warn about debugging code:** | |
| ```markdown | |
| --- | |
| name: warn-console-log | |
| enabled: true | |
| event: file | |
| pattern: console\.log\( | |
| --- | |
| Console.log detected. Remember to remove debug logging before committing. | |
| ``` | |
| **Require tests before stopping:** | |
| ```markdown | |
| --- | |
| name: require-tests | |
| enabled: true | |
| event: stop | |
| pattern: .* | |
| --- | |
| Did you run tests before finishing? Make sure `npm test` or equivalent was executed. | |
| ``` | |
| ## Pattern Syntax | |
| Use Python regex syntax: | |
| - `\s` - whitespace | |
| - `\.` - literal dot | |
| - `|` - OR | |
| - `+` - one or more | |
| - `*` - zero or more | |
| - `\d` - digit | |
| - `[abc]` - character class | |
| **Examples:** | |
| - `rm\s+-rf` - matches "rm -rf" | |
| - `console\.log\(` - matches "console.log(" | |
| - `(eval|exec)\(` - matches "eval(" or "exec(" | |
| - `\.env$` - matches files ending in .env | |
| ## Important Notes | |
| **No Restart Needed**: Hookify rules (`.local.md` files) take effect immediately on the next tool use. The hookify hooks are already loaded and read your rules dynamically. | |
| **Block or Warn**: Rules can either `block` operations (prevent execution) or `warn` (show message but allow). Set `action: block` or `action: warn` in the rule's frontmatter. | |
| **Rule Files**: Keep rules in `.claude/hookify.*.local.md` - they should be git-ignored (add to .gitignore if needed). | |
| **Disable Rules**: Set `enabled: false` in frontmatter or delete the file. | |
| ## Troubleshooting | |
| **Hook not triggering:** | |
| - Check rule file is in `.claude/` directory | |
| - Verify `enabled: true` in frontmatter | |
| - Confirm pattern is valid regex | |
| - Test pattern: `python3 -c "import re; print(re.search('your_pattern', 'test_text'))"` | |
| - Rules take effect immediately - no restart needed | |
| **Import errors:** | |
| - Check Python 3 is available: `python3 --version` | |
| - Verify hookify plugin is installed correctly | |
| **Pattern not matching:** | |
| - Test regex separately | |
| - Check for escaping issues (use unquoted patterns in YAML) | |
| - Try simpler pattern first, then refine | |
| ## Getting Started | |
| 1. Create your first rule: | |
| ``` | |
| /hookify Warn me when I try to use rm -rf | |
| ``` | |
| 2. Try to trigger it: | |
| - Ask Claude to run `rm -rf /tmp/test` | |
| - You should see the warning | |
| 4. Refine the rule by editing `.claude/hookify.warn-rm.local.md` | |
| 5. Create more rules as you encounter unwanted behaviors | |
| For more examples, check the `${CLAUDE_PLUGIN_ROOT}/examples/` directory. | |