[ PROMPT_NODE_26120 ]
Writing Hookify Rules
[ SKILL_DOCUMENTATION ]
# 编写 Hookify 规则
## 概述
Hookify 规则是带有 YAML 前置元数据的 Markdown 文件,定义了要监视的模式以及当这些模式匹配时要显示的消息。规则存储在 `.claude/hookify.{rule-name}.local.md` 文件中。
## 规则文件格式
### 基本结构
markdown
---
name: rule-identifier
enabled: true
event: bash|file|stop|prompt|all
pattern: regex-pattern-here
---
当此规则触发时向 Claude 显示的消息。
可以包含 Markdown 格式、警告、建议等。
### 前置元数据字段
**name** (必需):规则的唯一标识符
- 使用 kebab-case:`warn-dangerous-rm`, `block-console-log`
- 具有描述性和行动导向
- 以动词开头:warn, prevent, block, require, check
**enabled** (必需):激活/停用的布尔值
- `true`:规则处于活动状态
- `false`:规则已禁用(不会触发)
- 无需删除规则即可切换
**event** (必需):触发的钩子事件
- `bash`:Bash 工具命令
- `file`:编辑、写入、多文件编辑工具
- `stop`:当智能体想要停止时
- `prompt`:当用户提交提示词时
- `all`:所有事件
**action** (可选):规则匹配时执行的操作
- `warn`:显示消息但允许操作(默认)
- `block`:阻止操作 (PreToolUse) 或停止会话 (Stop 事件)
- 如果省略,默认为 `warn`
**pattern** (简单格式):用于匹配的正则表达式
- 用于简单的单条件规则
- 匹配命令 (bash) 或新文本 (file)
- Python 正则表达式语法
**示例:**
yaml
event: bash
pattern: rms+-rf
### 高级格式(多条件)
对于具有多个条件的复杂规则:
markdown
---
name: warn-env-file-edits
enabled: true
event: file
conditions:
- field: file_path
operator: regex_match
pattern: .env$
- field: new_text
operator: contains
pattern: API_KEY
---
你正在向 .env 文件添加 API 密钥。请确保此文件在 .gitignore 中!
**条件字段:**
- `field`:要检查的字段
- 对于 bash:`command`
- 对于 file:`file_path`, `new_text`, `old_text`, `content`
- `operator`:匹配方式
- `regex_match`:正则匹配
- `contains`:子字符串检查
- `equals`:精确匹配
- `not_contains`:子字符串必须不存在
- `starts_with`:前缀检查
- `ends_with`:后缀检查
- `pattern`:要匹配的模式或字符串
**所有条件必须匹配,规则才会触发。**
## 消息正文
前置元数据之后的 Markdown 内容会在规则触发时显示给 Claude