关于 hooks
面向 Claude Code 开发者的技能说明,介绍 Shell 与 TypeScript 配合编写钩子的模式、事件、注册和测试方式。
主要功能
- 01通过 `npx tsx` 调用 TypeScript 的 Shell 包装脚本
- 02钩子事件概览
- 03在 `.claude/settings.json` 中注册
- 04手动测试钩子
适用场景
- 01创建 Shell 与 TypeScript 钩子
- 02为事件注册钩子
- 03手动测试会话启动钩子
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ parcadei/ continuous-claude-v3 --skill hooks安装后在 Claude Code 中输入/hooks确认已加载。
详细介绍
Hook 开发规则
处理 .claude/hooks/ 中的文件时:
模式
Shell 包装脚本(.sh)→ 通过 npx tsx 调用 TypeScript(.ts)
Shell 包装脚本模板
#!/bin/bash
set -e
cd "$CLAUDE_PROJECT_DIR/.claude/hooks"
cat | npx tsx <handler>.ts
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));
}
Hook 事件
- PreToolUse - 工具执行前(可阻止执行)
- PostToolUse - 工具执行后
- UserPromptSubmit - 处理用户提示词前
- PreCompact - 上下文压缩前
- SessionStart - 会话开始/恢复/压缩时
- Stop - Agent 完成时
测试
手动测试 hook:
echo '{"type": "resume"}' | .claude/hooks/session-start-continuity.sh
注册
将 hook 添加到 .claude/settings.json:
{
"hooks": {
"EventName": [{
"matcher": ["pattern"], // Optional
"hooks": [{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/hook.sh"
}]
}]
}
}
评论
支持 Markdown