‹ 首页

hook-factory

@alirezarezvani · 收录于 1 周前 · 上游提交 8 个月前

Generate production-ready Claude Code hooks with interactive Q&A, automated installation, and enhanced validation. Supports 10 templates across 7 event types for comprehensive workflow automation.

适合你,如果需要在 Claude Code 中快速创建和管理自定义钩子

/ 下载安装
hook-factory.skill双击,或拖进 Claude 桌面版 / Cowork,即完成安装↓ .skill↓ .zip
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
Claude Code~/.claude/skills/(项目级 .claude/skills/)
Codex CLI~/.codex/skills/
Cursor自动读取上面两处目录
其他工具见其文档的「skills」目录;两个下载是同一份文件,只是名字不同
/ 通过 npx 安装 校验哈希
npx oh-my-skill add alirezarezvani/claude-code-skill-factory/hook-factory
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- alirezarezvani/claude-code-skill-factory/hook-factory
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify alirezarezvani/claude-code-skill-factory/hook-factory
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
827GitHub stars
~2.5K最小装载
~25.7K含声明引用
~35K文本包总量
镜像托管

怎么用

技能原文 SKILL.md作者撰写 · MIT · ba18b31

Hook Factory v2.0

Generate production-ready Claude Code hooks with interactive Q&A, automated installation, and enhanced validation.

What This Skill Does

Hook Factory v2.0 is a comprehensive hook generation system with three modes:

  1. Interactive Mode (NEW!) - 7-question guided flow with smart defaults
  2. Natural Language - Describe what you want in plain English
  3. Template Mode - Direct generation from 10 production templates

Key Features:

  • Interactive Q&A - 7 questions with validation and smart defaults
  • Automated Installation - Python and Bash installers with backup/rollback
  • Enhanced Validation - Secrets detection, event-specific rules, command validation
  • 10 Templates - Covering 7 event types (PostToolUse, SubagentStop, SessionStart, PreToolUse, UserPromptSubmit, Stop, PrePush)
  • Comprehensive Safety - Tool detection, silent failure, atomic operations
  • macOS/Linux Support - Production-ready for Unix environments
When to Use This Skill

Use hook-factory when you want to:

  • Auto-format code after editing
  • Automatically stage files with git
  • Run tests when agents complete
  • Load project context at session start
  • Create custom workflow automation
  • Learn how hooks work through examples
Capabilities
Three Generation Modes

1. Interactive Mode (Recommended)

python3 hook_factory.py -i
  • 7-question guided flow
  • Smart defaults based on event type
  • Input validation and safety warnings
  • Optional auto-install

2. Natural Language Mode

python3 hook_factory.py -r "auto-format Python files after editing"
  • Simple keyword matching
  • Quick generation for common patterns

3. Template Mode (Advanced)

python3 hook_factory.py -t post_tool_use_format -l python
  • Direct template selection
  • Full customization control
Supported Hook Templates (10 Total)

Formatting & Code Quality:

  1. post_tool_use_format - Auto-format after editing (Python, JS, TS, Rust, Go)
  2. post_tool_use_git_add - Auto-stage files with git

Testing & Validation:

  1. subagent_stop_test_runner - Run tests when agent completes
  2. pre_tool_use_validation - Validate before tool execution
  3. pre_push_validation - Check before git push

Session Management:

  1. session_start_load_context - Load context at session start
  2. stop_session_cleanup - Cleanup at session end

User Interaction:

  1. user_prompt_submit_preprocessor - Pre-process user prompts
  2. notify_user_desktop - Desktop notifications (macOS/Linux)

Security:

  1. security_scan_code - Security scanning with semgrep/bandit
Languages Supported
  • Python (black formatter, pytest)
  • JavaScript (prettier, jest)
  • TypeScript (prettier, jest)
  • Rust (rustfmt, cargo test)
  • Go (gofmt, go test)
Enhanced Validation (v2.0)

4-Layer Validation System:

  1. Structure Validation - JSON syntax, required fields, types
  2. Safety Validation - No destructive ops, tool detection, silent failure
  3. Matcher Validation - Valid glob patterns, tool names, file paths
  4. Event-Specific Validation - Rules per event type (PreToolUse, SessionStart, etc.)

NEW in v2.0:

  • Secrets Detection - AWS keys, JWT tokens, API keys, private keys (20+ patterns)
  • Event-Specific Rules - PreToolUse must have tool matcher, SessionStart read-only, etc.
  • Command Validation - Bash syntax, Unix commands, path validation, dangerous operations
  • macOS/Linux Validation - Platform-specific command checks
Safety Features

Every generated hook includes:

  • ✅ Tool detection (checks if required tools are installed)
  • ✅ Silent failure mode (never interrupts your workflow)
  • ✅ Appropriate timeout settings (5s-120s based on event type)
  • ✅ No destructive operations
  • ✅ Comprehensive validation before generation
  • ✅ Clear documentation and troubleshooting guides
  • ✅ Automatic backup during installation
How to Invoke
Natural Language Requests

Simply describe what you want the hook to do:

"I want to auto-format Python files after editing"
"Create a hook that runs tests when agents complete"
"Auto-add files to git after editing"
"Load my TODO.md at session start"
Explicit Template Selection

If you know which template you want:

"Generate a hook using the post_tool_use_format template for JavaScript"
"Create a test runner hook for Rust"
List Available Templates
"Show me all available hook templates"
"List hook templates"
Example Interactions
Example 1: Auto-Format Python

You: "I need a hook to auto-format my Python code after editing"

Hook Factory:

  • Detects template: post_tool_use_format
  • Detects language: Python
  • Generates hook with black formatter
  • Validates configuration
  • Saves to generated-hooks/auto-format-code-after-editing-python/
  • Creates hook.json and README.md
Example 2: Git Auto-Add

You: "Automatically stage files with git when I edit them"

Hook Factory:

  • Detects template: post_tool_use_git_add
  • Generates git auto-add hook
  • Validates git commands
  • Saves to generated-hooks/auto-add-files-to-git-after-editing/
Example 3: Test Runner

You: "Run my JavaScript tests after the agent finishes coding"

Hook Factory:

  • Detects template: subagent_stop_test_runner
  • Detects language: JavaScript
  • Configures jest/npm test
  • Saves to generated-hooks/run-tests-when-agent-completes-javascript/
Output Structure

For each hook, Hook Factory creates:

generated-hooks/
└── [hook-name]/
    ├── hook.json        # Complete hook configuration (validated)
    └── README.md        # Installation guide, usage, troubleshooting
hook.json

Valid JSON configuration ready to copy into your Claude Code settings:

{
  "matcher": {
    "tool_names": ["Write", "Edit"]
  },
  "hooks": [
    {
      "type": "command",
      "command": "if ! command -v black &> /dev/null; then\n    exit 0\nfi\n\nif [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.py ]]; then\n    black \"$CLAUDE_TOOL_FILE_PATH\" || exit 0\nfi",
      "timeout": 60
    }
  ]
}
README.md

Comprehensive documentation including:

  • Overview and how it works
  • Prerequisites
  • Installation instructions (manual)
  • Configuration options
  • Safety notes
  • Troubleshooting guide
  • Advanced customization tips
Installation of Generated Hooks
Automated Installation (NEW in v2.0!)

Using Python Installer:

cd generated-skills/hook-factory

# Install to user level (~/.claude/settings.json)
python3 installer.py install generated-hooks/[hook-name] user

# Install to project level (.claude/settings.json)
python3 installer.py install generated-hooks/[hook-name] project

# Uninstall
python3 installer.py uninstall [hook-name] user

# List installed hooks
python3 installer.py list user

Using Bash Script (macOS/Linux):

cd generated-skills/hook-factory

# Install
./install-hook.sh generated-hooks/[hook-name] user

# Features:
# - Automatic backup with timestamp
# - JSON validation before/after
# - Atomic write operations
# - Rollback on failure
# - Keeps last 5 backups

Auto-Install from Interactive Mode:

  • Answer 'y' to Q7 (Auto-Install)
  • Hook is automatically installed
  • No manual steps required
Manual Installation (Legacy)
  1. Review Generated Files ```bash cd generated-hooks/[hook-name] cat README.md cat hook.json ```
  1. Manual Installation
  2. Open .claude/settings.json (project) or ~/.claude/settings.json (user)
  3. Copy the hook configuration from hook.json
  4. Add to the appropriate event type array
  5. Save and restart Claude Code
  1. Verify
  2. Check Claude Code logs: ~/.claude/logs/
  3. Test the hook by performing the trigger action
Validation

Every hook is validated for:

  • JSON Syntax: Valid, parseable JSON
  • Structure: Required fields present and correct types
  • Safety: No destructive operations (rm -rf, etc.)
  • Tool Detection: External tools have detection checks
  • Silent Failure: Commands won't interrupt workflow
  • Timeouts: Appropriate for event type
  • Matchers: Valid glob patterns and tool names
Best Practices
  1. Start Simple: Use natural language requests for common patterns
  2. Review Before Installing: Always read the generated README.md
  3. Test in Isolation: Try hooks in a test project first
  4. Customize Gradually: Start with defaults, customize later
  5. Monitor Logs: Check ~/.claude/logs/ if hooks aren't working
Limitations

Platform Support:

  • ✅ macOS and Linux fully supported
  • ❌ Windows not supported (Unix commands, bash-specific syntax)

Customization:

  • Interactive mode provides smart defaults but limited deep customization
  • Advanced users should use template mode + manual editing
  • No GUI - CLI only

Template System:

  • 10 templates cover common patterns
  • Custom templates require manual addition to templates.json
  • No template composition yet (combining multiple patterns)
Technical Details
Files in This Skill

Core Files:

  • SKILL.md - This manifest file
  • hook_factory.py - Main orchestrator with CLI interface (687 lines)
  • generator.py - Template substitution and hook generation
  • validator.py - Enhanced validation engine (700+ lines)
  • templates.json - 10 production hook templates
  • README.md - Skill usage guide and examples

NEW in v2.0:

  • installer.py - Automated installation system (536 lines)
  • install-hook.sh - Bash installation script (148 lines)
  • examples/ - 10 reference examples (10 folders × 2 files)
Dependencies
  • Python 3.7+
  • Standard library only (no external dependencies)
Architecture (v2.0)

Interactive Mode Flow:

User: python3 hook_factory.py -i
    ↓
[7-Question Flow with Smart Defaults]
    ↓
[Template Selection]
    ↓
[Variable Substitution]
    ↓
[4-Layer Validation]
    ↓
[File Generation]
    ↓
[Optional: Auto-Install via installer.py]
    ↓
Generated Hook in generated-hooks/ + Installed

Natural Language Flow:

User Request
    ↓
[Keyword Matching]
    ↓
[Template Selection]
    ↓
[Variable Substitution]
    ↓
[4-Layer Validation]
    ↓
[File Generation]
    ↓
Generated Hook in generated-hooks/

Installation Flow:

Hook Folder
    ↓
[installer.py or install-hook.sh]
    ↓
[Backup settings.json]
    ↓
[Load + Validate JSON]
    ↓
[Merge Hook]
    ↓
[Atomic Write (temp → rename)]
    ↓
[Validate Result]
    ↓
✅ Installed (or ❌ Rollback)
Troubleshooting
"Could not determine hook type from request"
  • Use more specific keywords (format, test, git add, load)
  • Or use explicit template selection
  • Or list templates to see what's available
Generated hook not working
  • Check Claude Code logs
  • Verify required tools are installed
  • Test command manually in terminal
  • Review README.md troubleshooting section
Validation errors
  • Review error messages and fix suggestions
  • Common issues: missing tool detection, destructive commands
  • Modify template if needed
Examples Directory

The examples/ directory contains reference implementations:

examples/
├── auto-format-python/      # PostToolUse format example
├── git-auto-add/            # PostToolUse git example
├── test-runner/             # SubagentStop test example
└── load-context/            # SessionStart context example

Each example includes working hook.json and README.md files you can copy directly.

Contributing

To add new hook patterns:

  1. Add template to templates.json
  2. Update keyword matching in generator.py
  3. Add example to examples/
  4. Update this SKILL.md
Version History
  • 1.0.0 (2025-10-30): Initial release
  • 4 core hook patterns
  • Natural language generation
  • Comprehensive validation
  • Simple keyword matching
Support
  • Documentation: See README.md in skill directory
  • Examples: See examples/ directory
  • Validation Issues: Check validator.py output
  • Claude Code Hooks: https://docs.claude.com/en/docs/claude-code/hooks

Generated by Claude Code Skills Factory Last Updated: 2025-10-30

按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。