用途
install-rules 用于把插件规则安装到项目的 .claude/rules/ 目录,使规则在插件未加载时也能持久生效。触发关键词包括 install rules、setup rules、copy rules、install-rules。
主要能力
- 定位插件的规则目录,枚举其中的 *.md 文件(排除 *-project.md 覆盖模板)。
- 执行退役规则清扫:对退役表中的每个名称检查 .claude/rules/ 下的副本,按规则处理(未修改则删除并标记清单条目 deleted: true,同时从项目 CLAUDE.md 的 ## Rules 块中移除对应行;用户修改过则保留并报告)。
- 确定安装集合:支持 --all、指定规则名或交互式选择。
- 读取清单并分类:new(未安装)、unchanged(哈希匹配)、modified(用户修改)、conflict(双方都改动)。
- 智能合并安装:new 复制、unchanged 自动升级、modified 跳过以保留用户编辑、conflict 通过 AskUserQuestion 询问。
- 覆盖模板处理:*-project.md 仅在缺失时复制,从不参与智能合并。
- 回填 CLAUDE.md 引用。
- 输出安装报告。
使用方式
参数:
| 参数 | 说明 |
|---|---|
| --all | 安装所有可用规则 |
| --list | 列出可用规则但不安装 |
| --dry-run | 显示将安装的内容,不做更改 |
| --force | 覆盖已修改的规则 |
| --legacy-strategy <strategy> | 处理无清单的旧安装(ask/overwrite/skip) |
| --customize <rule> | 自定义项目覆盖规则 |
| rule-names... | 指定要安装的规则 |
清单跟踪使用 .sd0x/install-state.json 记录已安装文件的哈希。
自定义模式(--customize)管理 *-project.md 伴随文件:无子参数时显示各节状态;--add-section 添加新节;--update-section <name> 更新指定节;--reset 从模板重新生成。
覆盖模板复制契约:三个覆盖模板(auto-loop.md → auto-loop-project.md、testing.md → testing-project.md、git-workflow.md → git-workflow-project.md)在安装时若缺失则从 rules/ 复制。这是唯一会写入它们的安装或重装路径;它们被排除在受管集合之外,因此合并、升级或 --force 都不会触及。复制和 --reset 重新生成会生成 live-precedence 头(首个 ## 之前的 Precedence: 段落,因为 HTML 注释会从模型上下文中剥离),并盖上 <!-- Based on: <base> @ <hash> -->,使用复制时基础规则的 blob 哈希。已安装的 .claude/rules/*-project.md 归用户所有,安装或重装(包括 --force)都不会重写,唯一例外是用户显式调用 --customize <rule> --reset。
适用场景
需要在项目中持久保留插件规则、不依赖插件加载时使用。
限制
- 不用于安装 hooks(应使用 /install-hooks)、安装脚本(应使用 /install-scripts)或完整项目设置(应使用 /project-setup)。
- 退役规则不会被重新复制;用户修改过的副本由用户自行删除。
- 旧式仅注释头不会被自动迁移,由 /claude-health S2.5 检查 #6 报告,--reset 作为用户可选补救措施。
输出
安装报告以表格形式展示每条规则的状态与操作,并汇总已安装、跳过、冲突数量。