hookify-rules
affaan-m/everything-claude-code
Create and manage Hookify rules to enforce patterns and guard against risky operations in Claude Code.
What is hookify-rules?
Hookify rules are YAML-frontmatter markdown files that watch for patterns in bash commands, file edits, prompts, and task completion, then display warnings or block operations. Use this skill when you need to write, configure, or troubleshoot Hookify rules for your project.
- Define regex patterns that trigger on bash commands, file edits, prompts, or task completion
- Show warnings or block operations when patterns match
- Use simple pattern syntax or advanced multi-condition rules with field operators
- Store rules in `.claude/hookify.{name}.local.md` files with YAML frontmatter
- Toggle rules on/off without deleting them via enabled flag
- Test patterns with Python regex before deploying
How to install hookify-rules
npx skills add https://github.com/affaan-m/everything-claude-code --skill hookify-rules- Claude Code or Cursor with Hookify support
- Project with `.claude/` directory in root
- Basic understanding of regex patterns
How to use hookify-rules
- 1.Install the skill via `npx skills add https://github.com/affaan-m/everything-claude-code --skill hookify-rules`
- 2.Run `/hookify [description]` to create a new rule or let it auto-analyze your conversation
- 3.Define the rule's name (kebab-case), event type (bash/file/stop/prompt/all), and regex pattern
- 4.Add optional action (warn or block) and conditions for complex matching
- 5.Save the rule as `.claude/hookify.{name}.local.md`
- 6.Run `/hookify-list` to view all active rules
- 7.Use `/hookify-configure` to toggle rules on/off interactively
Use cases
- Prevent accidental `rm -rf` or other destructive bash commands
- Block debug code like `console.log()` or `debugger` from being committed
- Warn when API keys or credentials are added to `.env` files
- Enforce workflow steps by matching user prompts
- Remind developers to check `.gitignore` before sensitive file operations
- Development teams using Claude Code or Cursor
- Projects needing automated safety guardrails
- Teams enforcing code quality or security standards
- Individual developers protecting against common mistakes
hookify-rules FAQ
warn (default) displays a message to Claude but allows the operation to proceed. block prevents the operation entirely.
Yes, use the advanced format with a conditions array. Each condition has field, operator, and pattern. All must match for the rule to trigger.
Run `python3 -c "import re; print(re.search(r'your_pattern', 'test text'))"` to verify the pattern matches your test string.
Store rules in `.claude/hookify.{descriptive-name}.local.md` in your project root, and add `.claude/*.local.md` to `.gitignore` to keep them local.
Common operators: `\.` (escape dot), `\s` (whitespace), `\d` (digit), `+` (one or more), `*` (zero or more), `|` (OR). Avoid overly broad patterns like `log` which matches unintended strings.
Full instructions (SKILL.md)
Source of truth, from affaan-m/everything-claude-code.
name: hookify-rules description: This skill should be used when the user asks to create a hookify rule, write a hook rule, configure hookify, add a hookify rule, or needs guidance on hookify rule syntax and patterns.
Writing Hookify Rules
Overview
Hookify rules are markdown files with YAML frontmatter that define patterns to watch for and messages to show when those patterns match. Rules are stored in .claude/hookify.{rule-name}.local.md files.
Rule File Format
Basic Structure
---
name: rule-identifier
enabled: true
event: bash|file|stop|prompt|all
pattern: regex-pattern-here
---
Message to show Claude when this rule triggers.
Can include markdown formatting, warnings, suggestions, etc.
Frontmatter Fields
| Field | Required | Values | Description |
|---|---|---|---|
| name | Yes | kebab-case string | Unique identifier (verb-first: warn-, block-, require-*) |
| enabled | Yes | true/false | Toggle without deleting |
| event | Yes | bash/file/stop/prompt/all | Which hook event triggers this |
| action | No | warn/block | warn (default) shows message; block prevents operation |
| pattern | Yes* | regex string | Pattern to match (*or use conditions for complex rules) |
Advanced Format (Multiple Conditions)
---
name: warn-env-api-keys
enabled: true
event: file
conditions:
- field: file_path
operator: regex_match
pattern: \.env$
- field: new_text
operator: contains
pattern: API_KEY
---
You're adding an API key to a .env file. Ensure this file is in .gitignore!
Condition fields by event:
- bash:
command - file:
file_path,new_text,old_text,content - prompt:
user_prompt
Operators: regex_match, contains, equals, not_contains, starts_with, ends_with
All conditions must match for rule to trigger.
Event Type Guide
bash Events
Match Bash command patterns:
- Dangerous commands:
rm\s+-rf,dd\s+if=,mkfs - Privilege escalation:
sudo\s+,su\s+ - Permission issues:
chmod\s+777
file Events
Match Edit/Write/MultiEdit operations:
- Debug code:
console\.log\(,debugger - Security risks:
eval\(,innerHTML\s*= - Sensitive files:
\.env$,credentials,\.pem$
stop Events
Completion checks and reminders. Pattern .* matches always.
prompt Events
Match user prompt content for workflow enforcement.
Pattern Writing Tips
Regex Basics
- Escape special chars:
.to\.,(to\( \swhitespace,\ddigit,\wword char+one or more,*zero or more,?optional|OR operator
Common Pitfalls
- Too broad:
logmatches "login", "dialog" — useconsole\.log\( - Too specific:
rm -rf /tmp— userm\s+-rf - YAML escaping: Use unquoted patterns; quoted strings need
\\s
Testing
python3 -c "import re; print(re.search(r'your_pattern', 'test text'))"
File Organization
- Location:
.claude/directory in project root - Naming:
.claude/hookify.{descriptive-name}.local.md - Gitignore: Add
.claude/*.local.mdto.gitignore
Commands
/hookify [description]- Create new rules (auto-analyzes conversation if no args)/hookify-list- View all rules in table format/hookify-configure- Toggle rules on/off interactively/hookify-help- Full documentation
Quick Reference
Minimum viable rule:
---
name: my-rule
enabled: true
event: bash
pattern: dangerous_command
---
Warning message here
Related skills
More from affaan-m/everything-claude-code and the wider catalog.

security-review
Security checklist and patterns for authentication, input validation, secrets, and sensitive features.

golang-patterns
Idiomatic Go patterns, best practices, and conventions for building robust, efficient, and maintainable applications.

coding-standards
Baseline coding conventions for naming, readability, immutability, and quality across projects.

frontend-patterns
React and Next.js patterns for components, state management, performance, and modern frontend practices.

backend-patterns
REST/GraphQL API design, database optimization, and server-side patterns for Node.js, Express, and Next.js.

golang-testing
Go testing patterns: table-driven tests, subtests, benchmarks, fuzzing, and TDD methodology.