Catalog
affaan-m/hookify-rules

affaan-m

hookify-rules

Create and configure hookify rules — markdown files with YAML frontmatter that match bash, file, prompt, or stop events by regex or conditions and show warn/block messages to the agent. Use when creating a hookify rule, writing hook rule syntax, configuring hookify, or adding pattern guardrails such as blocking dangerous commands, .env edits, or debug code.

NewUpdated Oct 12, 2026

Writing Hookify Rules

Overview

ECC evaluates project-local Hookify rules with its built-in Node runtime. No separate Hookify plugin or Python installation is required when ECC hooks are enabled.

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 \(
  • \s whitespace, \d digit, \w word char
  • + one or more, * zero or more, ? optional
  • | OR operator

Common Pitfalls

  • Too broad: log matches "login", "dialog" — use console\.log\(
  • Too specific: rm -rf /tmp — use rm\s+-rf
  • YAML escaping: Use unquoted patterns; quoted strings need \\s

Testing

python3 -c "import re; print(re.search(r'your_pattern', 'test text'))"

Avoid nested quantifiers such as (a+)+. The runtime rejects patterns with common catastrophic-backtracking shapes because rules run synchronously in the hook path, and every regex evaluation has a 25 ms hard timeout. Invalid, symlinked, or oversized local rules fail open and emit a diagnostic without disabling other Hookify rules.

Git-tracked local rules are disabled by default. Set ECC_HOOKIFY_ALLOW_TRACKED=1 only after reviewing those files; ordinary gitignored rules created locally remain active without that override.

Runtime Behavior

  • warn injects the message as event-specific additional context and does not block.
  • block denies matching Bash, PowerShell, Write, Edit, or MultiEdit calls before execution.
  • On prompt, post-tool, and stop events, block uses Claude Code's structured block decision.
  • Stop rules skip recursive stop_hook_active events to prevent infinite continuation loops.

File Organization

  • Location: .claude/ directory in project root
  • Naming: .claude/hookify.{descriptive-name}.local.md
  • Gitignore: Add .claude/*.local.md to .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
Files1
1 files · 1.0 KB

Select a file to preview

Grade adjusted by static analysis guardrails

AI scored this skill as grade A, but static analysis findings capped it to B:

  • • Recursive deletion pattern (rm -rf) (max: B)

Overall Score

88/100

Grade

B

Good

Grades are signals, not a certification. Always review a skill yourself before use.

Safety

85

Quality

92

Clarity

89

Completeness

85

Summary

This skill teaches agents to create and configure Hookify rules — markdown files with YAML frontmatter that intercept bash, file, prompt, and stop events in the Claude Code environment. Rules match patterns using regex or condition-based logic and trigger warn or block actions to enforce security guardrails (e.g., blocking dangerous commands, preventing .env edits, catching debug code).

Static Analysis Findings

2 findings

Patterns detected by deterministic static analysis before AI scoring. Hover over any finding code for detailed information and remediation guidance.

Credential Exposure
SEC-020Direct .env File Access4x in 1 file

Direct .env file access

SKILL.md.env4x
Destructive Operation
SEC-001Recursive DeletionMax: B

Recursive deletion pattern (rm -rf)

SKILL.mdrm -rf

Detected Capabilities

file readregex pattern matchingconditional logic evaluationstructured YAML parsingbash command interceptionfile edit monitoring

Trigger Keywords

Phrases that agents use to match this skill to user intent.

create hookify ruleblock dangerous commandsprevent env exposureconfigure guardrailsregex hook patternintercept bash eventssetup security rules

Risk Signals

INFO

SEC-001: rm -rf example shown as pattern to match in bash events section

SKILL.md, bash Events subsection: `rm\s+-rf`
WARNING

SEC-020: .env file path referenced in multiple contexts for security guardrail examples

SKILL.md, lines: Advanced Format example, file Events subsection, Sensitive files list

Use Cases

  • Block recursive deletion and destructive bash commands (rm -rf, dd if=, mkfs)
  • Prevent accidental credentials exposure by intercepting .env file edits
  • Catch debug code patterns (console.log, debugger, eval) before commits
  • Enforce permission safety by warning on chmod 777 and privilege escalation attempts (sudo, su)
  • Create project-local security guardrails without external tools or plugins

Quality Notes

  • Excellent structure with clear section hierarchy, table-based reference, and practical examples
  • Each event type (bash, file, stop, prompt) is well-documented with concrete use cases and pattern examples
  • Advanced Format demonstrates complex multi-condition rule syntax with field/operator guide
  • Runtime Behavior section clearly explains warn vs. block semantics and timeout constraints
  • Pattern Writing Tips section includes common pitfalls (too broad, too specific) and testing guidance
  • Security constraint documented: 25 ms regex timeout to prevent catastrophic backtracking
  • Git-tracked rules behavior and ECC_HOOKIFY_ALLOW_TRACKED override clearly explained
  • Quick Reference section provides minimal viable rule for fast onboarding
  • YAML escaping pitfall noted (quoted strings need \\s vs. unquoted \s)
  • Use case—creating guardrails for .env access—is legitimate and well-contextualized in skill purpose
Model: claude-haiku-4-5-20251001Analyzed: Oct 12, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Version History

  1. v2.1

    Content updated

    ✦ AIClarifies that ECC evaluates Hookify rules with built-in Node runtime; adds limits on regex patterns (25 ms timeout, no nested quantifiers) and constraints on git-tracked rules requiring explicit…

    2026-10-12

    LATEST
  2. v2.0

    Contract changed: description

    ✦ AIDescription expands scope to cover hookify configuration details and guardrail patterns; agents now activate for guidance on blocking dangerous commands or .env edits.

    triggering2026-09-27

    View This Version
  3. v1.1

    Content updated

    ✦ AIAdds LICENSE file.

    2026-04-20

    View This Version
  4. v1.0

    2026-04-05

    View This VersionInitial version

Use affaan-m/hookify-rules in your dev environment

Command Palette

Search for a command to run...