From ecc
Guides writing and configuring Hookify rules with YAML frontmatter, regex patterns, and conditions to monitor bash commands, file edits, prompts, and stop events.
npx claudepluginhub ck1sap/everything-claude-codeThis skill uses the workspace's default tool permissions.
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.
Delivers DB-free sandbox API regression tests for Next.js/Vitest to catch AI blind spots in self-reviewed code changes like API routes and backend logic.
Implements Clean Architecture in Android and Kotlin Multiplatform projects: module layouts, dependency rules, UseCases, Repositories, domain models, and data layers with Room, SQLDelight, Ktor.
Provides process, architecture, review, hiring, and testing guidelines for engineering teams relying on AI code generation.
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.
---
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.
| 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) |
---
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:
commandfile_path, new_text, old_text, contentuser_promptOperators: regex_match, contains, equals, not_contains, starts_with, ends_with
All conditions must match for rule to trigger.
Match Bash command patterns:
rm\s+-rf, dd\s+if=, mkfssudo\s+, su\s+chmod\s+777Match Edit/Write/MultiEdit operations:
console\.log\(, debuggereval\(, innerHTML\s*=\.env$, credentials, \.pem$Completion checks and reminders. Pattern .* matches always.
Match user prompt content for workflow enforcement.
. to \., ( to \(\s whitespace, \d digit, \w word char+ one or more, * zero or more, ? optional| OR operatorlog matches "login", "dialog" — use console\.log\(rm -rf /tmp — use rm\s+-rf\\spython3 -c "import re; print(re.search(r'your_pattern', 'test text'))"
.claude/ directory in project root.claude/hookify.{descriptive-name}.local.md.claude/*.local.md to .gitignore/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 documentationMinimum viable rule:
---
name: my-rule
enabled: true
event: bash
pattern: dangerous_command
---
Warning message here