hooks
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseHook Development Rules
Hook开发规则
When working with files in :
.claude/hooks/在处理中的文件时:
.claude/hooks/Pattern
模式
Shell wrapper (.sh) → TypeScript (.ts) via
npx tsxShell包装器(.sh)→ 通过调用TypeScript(.ts)
npx tsxShell Wrapper Template
Shell包装器模板
bash
#!/bin/bash
set -e
cd "$CLAUDE_PROJECT_DIR/.claude/hooks"
cat | npx tsx <handler>.tsbash
#!/bin/bash
set -e
cd "$CLAUDE_PROJECT_DIR/.claude/hooks"
cat | npx tsx <handler>.tsTypeScript Handler Pattern
TypeScript处理器模式
typescript
interface HookInput {
// Event-specific fields
}
async function main() {
const input: HookInput = JSON.parse(await readStdin());
// Process input
const output = {
result: 'continue', // or 'block'
message: 'Optional system reminder'
};
console.log(JSON.stringify(output));
}typescript
interface HookInput {
// 事件专属字段
}
async function main() {
const input: HookInput = JSON.parse(await readStdin());
// 处理输入
const output = {
result: 'continue', // 或 'block'
message: '可选系统提醒'
};
console.log(JSON.stringify(output));
}Hook Events
Hook事件
- PreToolUse - Before tool execution (can block)
- PostToolUse - After tool execution
- UserPromptSubmit - Before processing user prompt
- PreCompact - Before context compaction
- SessionStart - On session start/resume/compact
- Stop - When agent finishes
- PreToolUse - 工具执行前(可阻止)
- PostToolUse - 工具执行后
- UserPromptSubmit - 处理用户提示前
- PreCompact - 上下文压缩前
- SessionStart - 会话启动/恢复/压缩时
- Stop - Agent结束时
Testing
测试
Test hooks manually:
bash
echo '{"type": "resume"}' | .claude/hooks/session-start-continuity.sh手动测试Hook:
bash
echo '{"type": "resume"}' | .claude/hooks/session-start-continuity.shRegistration
注册
Add hooks to :
.claude/settings.jsonjson
{
"hooks": {
"EventName": [{
"matcher": ["pattern"], // Optional
"hooks": [{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/hook.sh"
}]
}]
}
}在中添加Hook:
.claude/settings.jsonjson
{
"hooks": {
"EventName": [{
"matcher": ["pattern"], // 可选
"hooks": [{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/hook.sh"
}]
}]
}
}