
hook-factory
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.
- Installs
- 59
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/alirezarezvani/claude-code-skill-factory --skill hook-factory- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads hook-factory automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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:
- Interactive Mode (NEW!) - 7-question guided flow with smart defaults
- Natural Language - Describe what you want in plain English
- 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:
- post_tool_use_format - Auto-format after editing (Python, JS, TS, Rust, Go)
- post_tool_use_git_add - Auto-stage files with git
Testing & Validation: 3. subagent_stop_test_runner - Run tests when agent completes 4. pre_tool_use_validation - Validate before tool execution 5. pre_push_validation - Check before git push
Session Management: 6. session_start_load_context - Load context at session start 7. stop_session_cleanup - Cleanup at session end
User Interaction: 8. user_prompt_submit_preprocessor - Pre-process user prompts 9. notify_user_desktop - Desktop notifications (macOS/Linux)
Security: 10. 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:
- Structure Validation - JSON syntax, required fields, types
- Safety Validation - No destructive ops, tool detection, silent failure
- Matcher Validation - Valid glob patterns, tool names, file paths
- 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.jsonandREADME.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)
-
Review Generated Files
cd generated-hooks/[hook-name] cat README.md cat hook.json -
Manual Installation
- Open
.claude/settings.json(project) or~/.claude/settings.json(user) - Copy the hook configuration from
hook.json - Add to the appropriate event type array
- Save and restart Claude Code
- Open
-
Verify
- Check Claude Code logs:
~/.claude/logs/ - Test the hook by performing the trigger action
- Check Claude Code logs:
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
- Start Simple: Use natural language requests for common patterns
- Review Before Installing: Always read the generated README.md
- Test in Isolation: Try hooks in a test project first
- Customize Gradually: Start with defaults, customize later
- 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 filehook_factory.py- Main orchestrator with CLI interface (687 lines)generator.py- Template substitution and hook generationvalidator.py- Enhanced validation engine (700+ lines)templates.json- 10 production hook templatesREADME.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:
- Add template to
templates.json - Update keyword matching in
generator.py - Add example to
examples/ - 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
FAQ
What does the hook-factory skill do?
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.
How do I install hook-factory?
Run npx skills add https://github.com/alirezarezvani/claude-code-skill-factory --skill hook-factory in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/hook-factory/ (personal) or .claude/skills/hook-factory/ (project).
Which AI agents can use hook-factory?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is hook-factory safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains hook-factory?
It is published by alirezarezvani in alirezarezvani/claude-code-skill-factory. It has 59 recorded installs.
More from alirezarezvani/claude-code-skill-factory
scrum-master-agent
alirezarezvani/claude-code-skill-factory
Open the skill to read its SKILL.md instructions.
content-trend-researcher
alirezarezvani/claude-code-skill-factory
Open the skill to read its SKILL.md instructions.
aws-solution-architect
alirezarezvani/claude-code-skill-factory
Expert AWS solution architecture for startups focusing on serverless, scalable, and cost-effective cloud infrastructure with modern DevOps practices and infrastructure-as-code
claude-md-enhancer
alirezarezvani/claude-code-skill-factory
Open the skill to read its SKILL.md instructions.
social-media-analyzer
alirezarezvani/claude-code-skill-factory
Open the skill to read its SKILL.md instructions.
prompt-factory
alirezarezvani/claude-code-skill-factory
Open the skill to read its SKILL.md instructions.
Popular productivity & automation skills
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
lark-doc
open.feishu.cn
飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。
lark-base
open.feishu.cn
飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。
lark-drive
open.feishu.cn
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
lark-shared
open.feishu.cn
Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.
lark-im
open.feishu.cn
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。