用途:install-hooks 用于将插件钩子安装到项目的 .claude/ 目录,使钩子在不加载插件的情况下持久使用。触发关键词包括 install hooks、setup hooks、copy hooks、install-hooks。
主要能力:采用两层安装,脚本层把可执行钩子脚本复制到 .claude/hooks/*.sh,定义层把事件到脚本路径的映射合并进 settings.json 的 hooks 条目,并更新清单、回填 CLAUDE.md 引用,最后输出安装报告。
使用方式:支持参数 --all(安装全部钩子)、--list(仅列出不安装)、--dry-run(仅显示将安装内容,不做更改)、--force(覆盖内容不同的现有钩子)、--local(写入 settings.local.json 而非 settings.json),以及直接指定 hook-names。执行前会先运行迁移脚本:node "${CLAUDE_PLUGIN_ROOT}/scripts/migrate-hook-lightweighting.js" --repo "$(git rev-parse --show-toplevel)";--list 跳过该阶段,--dry-run 会转发该标志。
适用场景:需要把钩子固化到具体项目、脱离插件加载环境时使用。不适用于安装规则(用 /install-rules)、安装脚本(用 /install-scripts)或完整项目初始化(用 /project-setup)。
限制:本地安装的钩子从自身副本旁的 .claude/scripts/… 解析辅助脚本,而非插件目录;依赖检查器 scripts/review-state.js(其依赖 scripts/lib/tree-digest.js),缺失时钩子仍会运行并提醒,但只报告来自实时 git 的变更类别事实,不给出结论、不阻断。冲突处理上,脚本与设置均缺失则安装两者,内容相同且已存在则跳过,内容不同且已存在则询问用户。迁移脚本先注销设置条目、写入成功后才删除文件,写入失败以退出码 1 中止且不删除;被修改的过时文件保留在磁盘上并在报告中列出。其余细节暂未提供。