claudecode-rule2hook ๐Ÿช

July 1, 2025 ยท View on GitHub

License: MIT Claude Code

Convert natural language project rules into Claude Code hooks automatically! Write rules in plain English, and let Claude transform them into powerful automation hooks.

โœจ Features

  • ๐ŸŽฏ Natural Language Processing - Write rules in plain English
  • ๐Ÿ”„ Automatic Hook Generation - Converts rules to proper hook configurations
  • ๐Ÿง  Smart Detection - Intelligently identifies events, tools, and commands
  • ๐Ÿ“ CLAUDE.md Integration - Reads from existing project memory files
  • ๐Ÿ›ก๏ธ Safe Configuration - Backs up existing hooks before applying changes
  • ๐Ÿš€ Zero Dependencies - Works directly with Claude Code

๐Ÿ“ฆ Installation

To use the rule2hook command in your own project:

# 1. Clone this repository
git clone https://github.com/zxdxjtu/claudecode-rule2hook.git

# 2. Copy the command to your project
mkdir -p your-project/.claude/commands
cp claudecode-rule2hook/.claude/commands/rule2hook.md your-project/.claude/commands/

# 3. Use in your project
cd your-project
# Now /project:rule2hook is available when using Claude Code in this directory

Option 2: Global Installation

To make the command available in all projects:

# Clone the repository
git clone https://github.com/zxdxjtu/claudecode-rule2hook.git

# Copy to global Claude commands directory
mkdir -p ~/.claude/commands
cp claudecode-rule2hook/.claude/commands/rule2hook.md ~/.claude/commands/

# Now /rule2hook is available globally (without /project: prefix)

Option 3: Use Directly in This Repository

# Clone and use directly
git clone https://github.com/zxdxjtu/claudecode-rule2hook.git
cd claudecode-rule2hook

# The /project:rule2hook command is available in this directory only

How it works

Claude Code discovers slash commands by scanning:

  1. ~/.claude/commands/ for global commands (accessible as /commandname)
  2. .claude/commands/ in the current project for project-specific commands (accessible as /project:commandname)

Important: You must be in the correct directory when using Claude Code for the commands to be available.

๐Ÿš€ Quick Start

After installation, in Claude Code, type:

# If using project-specific installation (Option 1)
/project:rule2hook "Format Python files with black after editing"

# If using global installation (Option 2)
/rule2hook "Format Python files with black after editing"

# Convert rules from CLAUDE.md
/project:rule2hook  # or /rule2hook if global

# Convert multiple rules
/project:rule2hook "Run tests after editing, Format code before committing"

๐Ÿ“š How It Works

  1. Input - Provide rules as text or let Claude read from CLAUDE.md
  2. Analysis - Claude analyzes rules to determine:
    • Trigger events (before/after actions)
    • Target tools (Edit, Write, Bash, etc.)
    • Commands to execute
  3. Generation - Creates proper hook configurations
  4. Application - Saves hooks to ~/.claude/hooks.json

๐ŸŽฏ Examples

Example 1: Code Formatting

Input:

Format Python files with black after editing

Generated Hook:

{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Edit|MultiEdit|Write",
      "hooks": [{
        "type": "command",
        "command": "black ."
      }]
    }]
  }
}

Example 2: Git Workflow

Input:

Run git status when finishing a task

Generated Hook:

{
  "hooks": {
    "Stop": [{
      "hooks": [{
        "type": "command",
        "command": "git status"
      }]
    }]
  }
}

๐Ÿ“‹ Supported Rule Patterns

  • Formatting: "Format [language] files after editing"
  • Testing: "Run tests when modifying test files"
  • Git: "Execute git [command] when [event]"
  • Validation: "Check/Validate [something] before [action]"
  • Notifications: "Alert/Notify when [condition]"
  • Custom Commands: Use backticks for specific commands

๐Ÿ› ๏ธ Advanced Usage

Reading from CLAUDE.md

Create a CLAUDE.md file with your project rules:

# Project Rules

- Format Python files with black after editing
- Run tests before committing
- Check for TODO comments before pushing

Then run: /project:rule2hook

Complex Rules

/project:rule2hook "Run 'npm run lint && npm test' after editing source files"

Validation Rules

/project:rule2hook "Validate JSON schema before saving .json files"

๐Ÿงช Testing

Use the included test tools:

# Interactive testing
./quick-test.sh

# Validate generated hooks
python3 validate-hooks.py

# Test specific rules
cat test-rules.txt

๐Ÿค Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Ways to Contribute

  • ๐Ÿ› Report bugs
  • ๐Ÿ’ก Suggest new features
  • ๐Ÿ“ Improve documentation
  • ๐Ÿ”ง Submit pull requests
  • ๐Ÿ“ข Share your rule patterns

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Built for the Claude Code community
  • Inspired by the need for simpler automation
  • Thanks to all contributors!

๐Ÿ“š Resources


Made with โค๏ธ by the Claude Code community

โญ Star us on GitHub!