mcpField
H
hooks

hooks

github.com/parcadei开发3.9k509 次安装39 周前更新
代码仓库

关于 hooks

面向 Claude Code 开发者的技能说明,介绍 Shell 与 TypeScript 配合编写钩子的模式、事件、注册和测试方式。

主要功能

  1. 01通过 `npx tsx` 调用 TypeScript 的 Shell 包装脚本
  2. 02钩子事件概览
  3. 03在 `.claude/settings.json` 中注册
  4. 04手动测试钩子

适用场景

  1. 01创建 Shell 与 TypeScript 钩子
  2. 02为事件注册钩子
  3. 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