用途:该技能用于在 Claude Code 中创建、配置和调试 hook,实现事件驱动的自动化,例如会话初始化、工具调用前后的校验与记录、提示提交时的处理等。
主要能力:技能按请求类型路由工作流。用户要求新建 hook(如“create a hook for X”“add a hook”“make a SessionStart hook”)时,读取 ${PAI_DIR}/skills/hook-authoring/workflows/create-hook.md 并执行创建流程;需要调试 hook(如“hook not working”“hook troubleshooting”)时,读取 ${PAI_DIR}/skills/hook-authoring/workflows/debug-hooks.md 并运行调试清单。
支持的事件:SessionStart(会话开始,载入上下文/初始化状态)、PreToolUse(工具执行前,安全检查、权限、输入校验)、PostToolUse(工具执行后,日志、指标、审计)、UserPromptSubmit(用户提交提示,预处理、注入上下文、更新标签页)、Stop(Claude 完成回复,提取完成信息、更新标签)、SubagentStop(子代理完成)、ConfigChange(配置变更,同步校验与漂移检测)。
配置方式:hook 配置写在 ${PAI_DIR}/.claude/settings.json 或 ~/.claude/settings.json,在 hooks 字段下按事件名组织,每项含 matcher 与 hooks 数组,hook 项指定 type 与 command(如 ${PAI_DIR}/hooks/my-hook.ts)。hook 通过 stdin 接收 JSON 输入(含 session_id、transcript_path 及事件专属字段),通过 stdout 输出 JSON,例如继续 { "continue": true }、阻断 { "continue": false, "reason": "..." }、注入内容 { "result": "<system-reminder>...</system-reminder>" }、附加上下文 { "decision": "continue", "additionalContext": "..." }。
会话追踪:hook 输入 JSON 中含 session_id;如需持久化,可用 ${PAI_DIR}/state/sessions/${input.session_id}.json,或在 settings.json 中使用 ${CLAUDE_SESSION_ID} 替换。
最佳实践:优雅失败,不阻塞 Claude;对外部调用加超时保护;默认异步;推荐用 TypeScript 并通过 Bun 执行;记录错误而非静默失败。命令模板需以 bun 运行,脚本保存后执行 chmod +x my-hook.ts 赋予可执行权限。
限制:资料未提供 hook 的收费、平台支持范围等信息;具体实现细节以对应工作流文件为准。