除了PreToolUse和PostToolUse，课程还介绍了哪些钩子（Hooks）？	Notification、Stop、SubagentStop、PreCompact、UserPromptSubmit、SessionStart、SessionEnd。
Notification钩子和Stop钩子分别在什么条件下触发？	Notification在Claude需要工具权限或空闲60秒后触发；Stop在Claude完成响应后触发。
为什么不同钩子执行时传入命令的stdin内容会不同？	因为stdin结构取决于当前执行的钩子类型以及所匹配的具体工具。
PostToolUse钩子与Stop钩子的JSON输入结构有何核心差异？	PostToolUse包含tool_name、tool_input和tool_response字段；Stop仅包含基础会话信息和stophookactive状态字段。
示例中PostToolUse钩子监控的是哪个工具？其tool_input包含什么数据？	监控TodoWrite工具；tool_input包含一个待办项数组（todos），每项具有content、status和id属性。
编写自定义钩子时面临的主要技术挑战是什么？	难以预先确定传入命令的stdin确切数据结构，导致直接编写解析逻辑容易出错。
在钩子配置中使用`"matcher": "*"`的作用是什么？	捕获所有事件类型的原始输入，避免被特定工具或事件名称过滤，便于统一调试。
如何利用辅助钩子快速查看实际传入的stdin数据？	配置一条命令`jq . > 文件名.json`，将标准输入完整导出为JSON文件供人工检查。
为什么理解stdin变化规律对钩子开发至关重要？	因为命令的处理逻辑必须严格匹配实际输入的数据结构，否则会导致解析失败或运行时错误。
面对不确定的钩子输入，推荐的标准化调试工作流是什么？	先用通配符辅助钩子导出stdin到日志文件 → 分析确认JSON结构 → 再编写针对性的处理命令。
