| name | hookify |
| description | Extensible user-configured prompt hooks |
Hookify Extensions
Overview
Hookify Plugin
Easily create custom hooks to prevent unwanted behaviors by analyzing conversation patterns or from explicit instructions.
Overview
The hookify plugin makes it simple to create hooks without editing complex hook-config.json files. Instead, you create lightweight markdown configuration files that define patterns to watch for and messages to show when those patterns match.
Key features:
- 🎯 Analyze conversations to find unwanted behaviors automatically
- 📝 Simple markdown configuration files with YAML frontmatter
- 🔍 Regex pattern matching for powerful rules
- 🚀 No coding required - just describe the behavior
- 🔄 Easy enable/disable without restarting
Quick Start
1. Create Your First Rule
/hookify Warn me when I use rm -rf commands
This analyzes your request and creates .agent/hookify.warn-rm.local.md.
2. Test It Immediately
No restart needed! Rules take effect on the very next tool use.
Ask Claude to run a command that should trigger the rule:
Run rm -rf /tmp/test
You should see the warning message immediately!
Usage
Main Command: /hookify
With arguments:
/hookify Don't use console.log in TypeScript files
Creates a rule from your explicit instructions.
Without arguments:
/hookify
Analyzes recent conversation to find behaviors you've corrected or been frustrated by.
Helper Commands
List all rules:
/hookify:list
Configure rules interactively:
/hookify:configure
Enable/disable existing rules through an interactive interface.
Get help:
/hookify:help
Rule Configuration Format
Simple Rule (Single Pattern)
.agent/hookify.dangerous-rm.local.md:
---
name: block-dangerous-rm
enabled: true
event: bash
pattern: rm\s+-rf
action: block
---
⚠️ **Dangerous rm command detected!**
This command could delete important files. Please:
- Verify the path is correct
- Consider using a safer approach
- Make sure you have backups
Action field:
warn: Shows warning but allows operation (default)
block: Prevents operation from executing (PreToolUse) or stops session (Stop events)
Advanced Rule (Multiple Conditions)
.agent/hookify.sensitive-files.local.md:
---
name: warn-sensitive-files
enabled: true
event: file
action: warn
conditions:
- field: file_path
operator: regex_match
pattern: \.env$|credentials|secrets
- field: new_text
operator: contains
pattern: KEY
---
🔐 **Sensitive file edit detected!**
Ensure credentials are not hardcoded and file is in .gitignore.
All conditions must match for the rule to trigger.
Event Types
bash: Triggers on Bash tool commands
file: Triggers on Edit, Write, MultiEdit tools
stop: Triggers when Claude wants to stop (for completion checks)
prompt: Triggers on user prompt submission
all: Triggers on all events
Pattern Syntax
Use Python regex syntax:
| Pattern | Matches | Example |
|---|
rm\s+-rf | rm -rf | rm -rf /tmp |
console\.log\( | console.log( | console.log("test") |
(eval|exec)\( | eval( or exec( | eval("code") |
\.env$ | files ending in .env | .env, .env.local |
chmod\s+777 | chmod 777 | chmod 777 file.txt |
Tips:
- Use
\s for whitespace
- Escape special chars:
\. for literal dot
- Use
| for OR: (foo|bar)
- Use
.* to match anything
- Set
action: block for dangerous operations
- Set
action: warn (or omit) for informational warnings
Examples
Example 1: Block Dangerous Commands
---
name: block-destructive-ops
enabled: true
event: bash
pattern: rm\s+-rf|dd\s+if=|mkfs|format
action: block
---
🛑 **Destructive operation detected!**
This command can cause data loss. Operation blocked for safety.
Please verify the exact path and use a safer approach.
This rule blocks the operation - Claude will not be allowed to execute these commands.
Example 2: Warn About Debug Code
---
name: warn-debug-code
enabled: true
event: file
pattern: console\.log\(|debugger;|print\(
action: warn
---
🐛 **Debug code detected**
Remember to remove debugging statements before committing.
This rule warns but allows - Claude sees the message but can still proceed.
Example 3: Require Tests Before Stopping
---
name: require-tests-run
enabled: false
event: stop
action: block
conditions:
- field: transcript
operator: not_contains
pattern: npm test|pytest|cargo test
---
**Tests not detected in transcript!**
Before stopping, please run tests to verify your changes work correctly.
This blocks Claude from stopping if no test commands appear in the session transcript. Enable only when you want strict enforcement.
Advanced Usage
Multiple Conditions
Check multiple fields simultaneously:
---
name: api-key-in-typescript
enabled: true
event: file
conditions:
- field: file_path
operator: regex_match
pattern: \.tsx?$
- field: new_text
operator: regex_match
pattern: (API_KEY|SECRET|TOKEN)\s*=\s*["']
---
🔐 **Hardcoded credential in TypeScript!**
Use environment variables instead of hardcoded values.
Operators Reference
regex_match: Pattern must match (most common)
contains: String must contain pattern
equals: Exact string match
not_contains: String must NOT contain pattern
starts_with: String starts with pattern
ends_with: String ends with pattern
Field Reference
For bash events:
command: The bash command string
For file events:
file_path: Path to file being edited
new_text: New content being added (Edit, Write)
old_text: Old content being replaced (Edit only)
content: File content (Write only)
For prompt events:
user_prompt: The user's submitted prompt text
For stop events:
- Use general matching on session state
Management
Enable/Disable Rules
Temporarily disable:
Edit the .local.md file and set enabled: false
Re-enable:
Set enabled: true
Or use interactive tool:
/hookify:configure
Delete Rules
Simply delete the .local.md file:
rm .agent/hookify.my-rule.local.md
View All Rules
/hookify:list
Installation
This plugin is part of the coding assistant Marketplace. It should be auto-discovered when the marketplace is installed.
Manual testing:
agent --plugin-dir /path/to/hookify
Requirements
- Python 3.7+
- No external dependencies (uses stdlib only)
Troubleshooting
Rule not triggering:
- Check rule file exists in
.agent/ directory (in project root, not plugin directory)
- Verify
enabled: true in frontmatter
- Test regex pattern separately
- Rules should work immediately - no restart needed
- Try
hookify:list to see if rule is loaded
Import errors:
- Ensure Python 3 is available:
python3 --version
- Check hookify plugin is installed
Pattern not matching:
- Test regex:
python3 -c "import re; print(re.search(r'pattern', 'text'))"
- Use unquoted patterns in YAML to avoid escaping issues
- Start simple, then add complexity
Hook seems slow:
- Keep patterns simple (avoid complex regex)
- Use specific event types (bash, file) instead of "all"
- Limit number of active rules
Contributing
Found a useful rule pattern? Consider sharing example files via PR!
Future Enhancements
- Severity levels (error/warning/info distinctions)
- Rule templates library
- Interactive pattern builder
- Hook testing utilities
- JSON format support (in addition to markdown)
License
MIT License
Commands / Workflows
Command: /configure
Description: Enable or disable hookify rules interactively
Configure Hookify Rules
Load hookify:writing-rules skill first to understand rule format.
Enable or disable existing hookify rules using an interactive interface.
Steps
1. Find Existing Rules
Use Glob tool to find all hookify rule files:
pattern: ".agent/hookify.*.local.md"
If no rules found, inform user:
No hookify rules configured yet. Use `hookify` to create your first rule.
2. Read Current State
For each rule file:
- Read the file
- Extract
name and enabled fields from frontmatter
- Build list of rules with current state
3. Ask User Which Rules to Toggle
Use AskUserQuestion to let user select rules:
{
"questions": [
{
"question": "Which rules would you like to enable or disable?",
"header": "Configure",
"multiSelect": true,
"options": [
{
"label": "warn-dangerous-rm (currently enabled)",
"description": "Warns about rm -rf commands"
},
{
"label": "warn-console-log (currently disabled)",
"description": "Warns about console.log in code"
},
{
"label": "require-tests (currently enabled)",
"description": "Requires tests before stopping"
}
]
}
]
Option format:
- Label:
{rule-name} (currently {enabled|disabled})
- Description: Brief description from rule's message or pattern
4. Parse User Selection
For each selected rule:
- Determine current state from label (enabled/disabled)
- Toggle state: enabled → disabled, disabled → enabled
5. Update Rule Files
For each rule to toggle:
- Use Read tool to read current content
- Use Edit tool to change
enabled: true to enabled: false (or vice versa)
- Handle both with and without quotes
Edit pattern for enabling:
old_string: "enabled: false"
new_string: "enabled: true"
Edit pattern for disabling:
old_string: "enabled: true"
new_string: "enabled: false"
6. Confirm Changes
Show user what was changed:
## Hookify Rules Updated
**Enabled:**
- warn-console-log
**Disabled:**
- warn-dangerous-rm
**Unchanged:**
- require-tests
Changes apply immediately - no restart needed
Important Notes
- Changes take effect immediately on next tool use
- You can also manually edit .agent/hookify.*.local.md files
- To permanently remove a rule, delete its .local.md file
- Use
hookify:list to see all configured rules
Edge Cases
No rules to configure:
- Show message about using
hookify to create rules first
User selects no rules:
- Inform that no changes were made
File read/write errors:
- Inform user of specific error
- Suggest manual editing as fallback
Command: help
Description: Get help with the hookify plugin
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 hook-config.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 .agent/hookify.*.local.md and check if any rules match the current operation.
2. Configuration Files
Users create rules in .agent/hookify.{rule-name}.local.md files:
---
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 .agent/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:
---
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:
---
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:
---
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 .agent/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
.agent/ 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
-
Create your first rule:
/hookify Warn me when I try to use rm -rf
-
Try to trigger it:
- Ask Claude to run
rm -rf /tmp/test
- You should see the warning
-
Refine the rule by editing .agent/hookify.warn-rm.local.md
-
Create more rules as you encounter unwanted behaviors
For more examples, check the PLUGIN_ROOT/examples/ directory.
Command: hookify
Description: Create hooks to prevent unwanted behaviors from conversation analysis or explicit instructions
Hookify - Create Hooks from Unwanted Behaviors
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.
Your Task
You will help the user create hookify rules to prevent unwanted behaviors. Follow these steps:
Step 1: Gather Behavior Information
If $ARGUMENTS is provided:
- User has given specific instructions:
$ARGUMENTS
- Still analyze recent conversation (last 10-15 user messages) for additional context
- Look for examples of the behavior happening
If $ARGUMENTS is empty:
- Launch the conversation-analyzer agent to find problematic behaviors
- Agent will scan user prompts for frustration signals
- Agent will return structured findings
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 coding assistant 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."
}
Step 2: Present Findings to User
After gathering behaviors (from arguments or agent), present to user using AskUserQuestion:
Question 1: Which behaviors to hookify?
- Header: "Create Rules"
- multiSelect: true
- Options: List each detected behavior (max 4)
- Label: Short description (e.g., "Block rm -rf")
- Description: Why it's problematic
Question 2: For each selected behavior, ask about action:
- "Should this block the operation or just warn?"
- Options:
- "Just warn" (action: warn - shows message but allows)
- "Block operation" (action: block - prevents execution)
Question 3: Ask for example patterns:
- "What patterns should trigger this rule?"
- Show detected patterns
- Allow user to refine or add more
Step 3: Generate Rule Files
For each confirmed behavior, create a .agent/hookify.{rule-name}.local.md file:
Rule naming convention:
- Use kebab-case
- Be descriptive:
block-dangerous-rm, warn-console-log, require-tests-before-stop
- Start with action verb: block, warn, prevent, require
File 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 session
For 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}
Step 4: Create Files and Confirm
IMPORTANT: Rule files must be created in the current working directory's .agent/ folder, NOT the plugin directory.
Use the current working directory (where coding assistant was started) as the base path.
-
Check if .agent/ directory exists in current working directory
- If not, create it first with:
mkdir -p .agent
-
Use Write tool to create each .agent/hookify.{name}.local.md file
- Use relative path from current working directory:
.agent/hookify.{name}.local.md
- The path should resolve to the project's .agent directory, not the plugin's
-
Show user what was created:
Created 3 hookify rules:
- .agent/hookify.dangerous-rm.local.md
- .agent/hookify.console-log.local.md
- .agent/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.
Event Types Reference
- bash: Matches Bash tool commands
- file: Matches Edit, Write, MultiEdit tools
- stop: Matches when agent wants to stop (use for completion checks)
- prompt: Matches when user submits prompts
- all: Matches all events
Pattern Writing Tips
Bash patterns:
- Match dangerous commands:
rm\s+-rf|chmod\s+777|dd\s+if=
- Match specific tools:
npm\s+install\s+|pip\s+install
File patterns:
- Match code patterns:
console\.log\(|eval\(|innerHTML\s*=
- Match file paths:
\.env$|\.git/|node_modules/
Stop patterns:
- Check for missing steps: (check transcript or completion criteria)
Example Workflow
User says: "/hookify Don't use rm -rf without asking me first"
Your response:
- Analyze: User wants to prevent rm -rf commands
- Ask: "Should I block this command or just warn you?"
- User selects: "Just warn"
- Create
.agent/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.
- Confirm: "Created hookify rule. It's active immediately - try triggering it!"
Important Notes
- No restart needed: Rules take effect immediately on the next tool use
- File location: Create files in project's
.agent/ directory (current working directory), NOT the plugin's .agent/
- Regex syntax: Use Python regex syntax (raw strings, no need to escape in YAML)
- Action types: Rules can
warn (default) or block operations
- Testing: Test rules immediately after creating them
Troubleshooting
If rule file creation fails:
- Check current working directory with pwd
- Ensure
.agent/ directory exists (create with mkdir if needed)
- Use absolute path if needed:
{cwd}/.agent/hookify.{name}.local.md
- Verify file was created with Glob or ls
If rule doesn't trigger after creation:
- Verify file is in project
.agent/ not plugin .agent/
- Check file with Read tool to ensure pattern is correct
- Test pattern with:
python3 -c "import re; print(re.search(r'pattern', 'test text'))"
- Verify
enabled: true in frontmatter
- Remember: Rules work immediately, no restart needed
If blocking seems too strict:
- Change
action: block to action: warn in the rule file
- Or adjust the pattern to be more specific
- Changes take effect on next tool use
Use TodoWrite to track your progress through the steps.
Command: /list
Description: List all configured hookify rules
List Hookify Rules
Load hookify:writing-rules skill first to understand rule format.
Show all configured hookify rules in the project.
Steps
-
Use Glob tool to find all hookify rule files:
pattern: ".agent/hookify.*.local.md"
-
For each file found:
- Use Read tool to read the file
- Extract frontmatter fields: name, enabled, event, pattern
- Extract message preview (first 100 chars)
-
Present results in a table:
## Configured Hookify Rules
| Name | Enabled | Event | Pattern | File |
|------|---------|-------|---------|------|
| warn-dangerous-rm | ✅ Yes | bash | rm\s+-rf | hookify.dangerous-rm.local.md |
| warn-console-log | ✅ Yes | file | console\.log\( | hookify.console-log.local.md |
| check-tests | ❌ No | stop | .* | hookify.require-tests.local.md |
**Total**: 3 rules (2 enabled, 1 disabled)
- For each rule, show a brief preview:
### warn-dangerous-rm
**Event**: bash
**Pattern**: `rm\s+-rf`
**Message**: "⚠️ **Dangerous rm command detected!** This command could delete..."
**Status**: ✅ Active
**File**: .agent/hookify.dangerous-rm.local.md
- Add helpful footer:
---
To modify a rule: Edit the .local.md file directly
To disable a rule: Set `enabled: false` in frontmatter
To enable a rule: Set `enabled: true` in frontmatter
To delete a rule: Remove the .local.md file
To create a rule: Use `hookify` command
**Remember**: Changes take effect immediately - no restart needed
If No Rules Found
If no hookify rules exist:
## No Hookify Rules Configured
You haven't created any hookify rules yet.
To get started:
1. Use `hookify` to analyze conversation and create rules
2. Or manually create `.agent/hookify.my-rule.local.md` files
3. See `hookify:help` for documentation
Example:
/hookify Warn me when I use console.log
Check `PLUGIN_ROOT/examples/` for example rule files.
Specialized Subagent Personas
Persona: conversation-analyzer
Description: Use this agent when analyzing conversation transcripts to find behaviors worth preventing with hooks. Examples: Context: User is running /hookify command without arguments\nuser: "/hookify"\nassistant: "I'll analyze the conversation to find behaviors you want to prevent"\nThe /hookify command without arguments triggers conversation analysis to find unwanted behaviors.Context: User wants to create hooks from recent frustrations\nuser: "Can you look back at this conversation and help me create hooks for the mistakes you made?"\nassistant: "I'll use the conversation-analyzer agent to identify the issues and suggest hooks."\nUser explicitly asks to analyze conversation for mistakes that should be prevented.
You are a conversation analysis specialist that identifies problematic behaviors in coding assistant sessions that could be prevented with hooks.
Your Core Responsibilities:
- Read and analyze user messages to find frustration signals
- Identify specific tool usage patterns that caused issues
- Extract actionable patterns that can be matched with regex
- Categorize issues by severity and type
- Provide structured findings for hook rule generation
Analysis Process:
1. Search for User Messages Indicating Issues
Read through user messages in reverse chronological order (most recent first). Look for:
Explicit correction requests:
- "Don't use X"
- "Stop doing Y"
- "Please don't Z"
- "Avoid..."
- "Never..."
Frustrated reactions:
- "Why did you do X?"
- "I didn't ask for that"
- "That's not what I meant"
- "That was wrong"
Corrections and reversions:
- User reverting changes Claude made
- User fixing issues Claude created
- User providing step-by-step corrections
Repeated issues:
- Same type of mistake multiple times
- User having to remind multiple times
- Pattern of similar problems
2. Identify Tool Usage Patterns
For each issue, determine:
- Which tool: Bash, Edit, Write, MultiEdit
- What action: Specific command or code pattern
- When it happened: During what task/phase
- Why problematic: User's stated reason or implicit concern
Extract concrete examples:
- For Bash: Actual command that was problematic
- For Edit/Write: Code pattern that was added
- For Stop: What was missing before stopping
3. Create Regex Patterns
Convert behaviors into matchable patterns:
Bash command patterns:
rm\s+-rf for dangerous deletes
sudo\s+ for privilege escalation
chmod\s+777 for permission issues
Code patterns (Edit/Write):
console\.log\( for debug logging
eval\(|new Function\( for dangerous eval
innerHTML\s*= for XSS risks
File path patterns:
\.env$ for environment files
/node_modules/ for dependency files
dist/|build/ for generated files
4. Categorize Severity
High severity (should block in future):
- Dangerous commands (rm -rf, chmod 777)
- Security issues (hardcoded secrets, eval)
- Data loss risks
Medium severity (warn):
- Style violations (console.log in production)
- Wrong file types (editing generated files)
- Missing best practices
Low severity (optional):
- Preferences (coding style)
- Non-critical patterns
5. Output Format
Return your findings as structured text in this format:
## Hookify Analysis Results
### Issue 1: Dangerous rm Commands
**Severity**: High
**Tool**: Bash
**Pattern**: `rm\s+-rf`
**Occurrences**: 3 times
**Context**: Used rm -rf on /tmp directories without verification
**User Reaction**: "Please be more careful with rm commands"
**Suggested Rule:**
- Name: warn-dangerous-rm
- Event: bash
- Pattern: rm\s+-rf
- Message: "Dangerous rm command detected. Verify path before proceeding."
---
### Issue 2: Console.log in TypeScript
**Severity**: Medium
**Tool**: Edit/Write
**Pattern**: `console\.log\(`
**Occurrences**: 2 times
**Context**: Added console.log statements to production TypeScript files
**User Reaction**: "Don't use console.log in production code"
**Suggested Rule:**
- Name: warn-console-log
- Event: file
- Pattern: console\.log\(
- Message: "Console.log detected. Use proper logging library instead."
---
[Continue for each issue found...]
## Summary
Found {N} behaviors worth preventing:
- {N} high severity
- {N} medium severity
- {N} low severity
Recommend creating rules for high and medium severity issues.
Quality Standards:
- Be specific about patterns (don't be overly broad)
- Include actual examples from conversation
- Explain why each issue matters
- Provide ready-to-use regex patterns
- Don't false-positive on discussions about what NOT to do
Edge Cases:
User discussing hypotheticals:
- "What would happen if I used rm -rf?"
- Don't treat as problematic behavior
Teaching moments:
- "Here's what you shouldn't do: ..."
- Context indicates explanation, not actual problem
One-time accidents:
- Single occurrence, already fixed
- Mention but mark as low priority
Subjective preferences:
- "I prefer X over Y"
- Mark as low severity, let user decide
Return Results:
Provide your analysis in the structured format above. The /hookify command will use this to:
- Present findings to user
- Ask which rules to create
- Generate .local.md configuration files
- Save rules to .agent directory
🔒 Hookify Cognitive Execution
Before executing any tools or modifying files, you MUST cognitively scan the workspace for Hookify rule files matching .agent/hookify.*.local.md.
For any matching rules:
- Inspect the defined regex patterns and trigger conditions.
- Verify that your planned tool execution or edits do not violate these rules.
- Alternatively, execute the rule engine script to programmatically validate compliance:
python3 scripts/rule_engine.py