| name | optimize-rules |
| description | 分析并优化 .omp/rules/ 文件,修复过时内容、缺失覆盖、冗余规则和未记录的约束。在重构后规则与代码脱节时使用,或当 Claude 开始忽略/误用规则时使用。 |
| argument-hint | [范围: all | <规则文件名>] |
用途
审计并更新 .omp/rules/ 文件,使其保持准确、精准、精简。本技能会在规则文本与实际代码之间进行系统性的交叉比对,然后应用修复。
触发时机
在重大重构之后、规则文件长期未更新时,或 Claude 报告"找不到 X"但规则声称 X 存在时调用。
TTSR 规则结构
本技能审计的 .omp/rules/*.md 文件是 TTSR(Time-Traveling Stream Rules)规则,通过 frontmatter 中的 condition(触发正则)和 scope(流范围)决定何时触发和在哪触发。
数据流向
助手在"说话"(生成回复)
│
├─ 写自然语言(text)──→ text 缓冲区
├─ 思考过程(thinking)──→ thinking 缓冲区
└─ 调用工具(tool)──→ tool 缓冲区
│
▼
每个缓冲区的内容不断累积,
每来一段新内容就拿 condition 正则去匹配
│
匹配上了?
├─ 否 → 继续流
└─ 是 → scope 允许在这个场景触发吗?
├─ 否 → 继续流
└─ 是 → 中断助手 → 注入规则内容 → 重试
关键术语
- "流"(stream):助手生成回复不是一次性给的,是一段一段(像水流一样)陆续产生的。规则检查在流中进行。
- 三种流来源(source):
text — 助手写的自然语言正文
thinking — 模型的思考过程
tool — 助手调用工具时传的参数(如 edit 工具传的补丁内容、write 工具传的文件内容)
- condition(触发正则):正则表达式,匹配流缓冲区内容。命中时触发规则检查(如果 scope 也允许)。审计时重点验证:(a) condition 是否实际匹配它声称要约束的代码模式,(b) condition 是否过于宽泛导致误触发
- scope(流范围):定义哪些流来源(
text/thinking/tool)在哪些路径上允许触发。审计时重点验证 scope 是否覆盖了规则约束的所有文件路径
有关 TTSR 规则的完整设计指南,参见 skill://add-rule。
执行流程
第一阶段:并行发现(6 个 agent)
如果传入了 args(如 ".omp/RULES.md" 或 "plugin-system.md"),则所有 Agent 只分析指定的规则文件。如果 args 为 "all" 或未传入,则分析全部 .omp/rules/*.md 文件。
同时启动六个 Explore agent,各负责一个维度:
Agent 0 — Frontmatter 覆盖分析
Agent 1 — 结构覆盖
Agent 2 — 代码与规则匹配
Agent 3 — 新模式发现
Agent 4 — 最佳实践审计
Agent 5 — Condition 触发重叠与同质/异质判定
第二阶段:综合发现
阅读六份 agent 报告,产出一份合并差异清单:
- 需要修改的文件 — 按严重程度排序(最严重排最前)
- 每个文件的具体改动 — 增、删、改的具体内容
- 需要新增的规则 — 重构中产生但尚未文档化的模式
- 违反最佳实践 — 按
.omp/RULES.md(工程纪律)和 .omp/rules/(条件规则)的最佳实践需要收紧、拆分或删除的规则
- 冲突规则 — 两条或多条规则之间存在矛盾,需要再次审查,决定保留哪条、删除哪条
第三阶段:呈现计划
进入 plan 模式,将综合发现以结构化计划形式呈现,计划必须:
- 按规则文件分组,严重程度排序
- 每处改动说明具体的失配(规则说 X,代码实际是 Y)
- 对每条过时/错误的规则给出具体的替换文本
- 按"缓慢添加,果断删除"原则,标记应该 删除(而非仅更新)的规则
第四阶段:执行(用户批准后)
应用所有已批准的改动,然后验证:
cargo check 通过(本技能专用于 ZeroLaunch-rs Rust 项目)
- 更新后的规则中提到的每个文件路径在磁盘上确实存在(逐个 Glob 验证)
- 快速一致性检查:是否有两条规则现在互相矛盾?
- 并集守恒(仅适用于拆分组):拆分后小规则
condition ∪ 大规则(新) condition == 原大规则 condition,触发覆盖不丢失
- 零重叠(仅适用于拆分组):拆分后两规则
condition 交集为空,不再重复触发
- 同质/异质复核:对每对重叠规则,确认"小规则是大规则主题子方面(同质)还是独立关切点(异质)"的判定成立
核心原则(适用于规则文件)
以下原则指导本技能的所有判断:
- "如果删掉这条规则,AI agent 会不会更容易犯错?" — 唯一的试金石。如果删掉一条规则不会改变 agent 的行为,立即删除。
- 有原因的规则才具有泛化能力 — 每条约束必须解释为什么。"不要做 X,遇到这种情况应该做 Y"是禁止性规则的标准格式。
- 不要记录工具已经能强制执行的内容 — 如果 ESLint/rustfmt/clippy 已经能捕获,就不要写进规则。
- 缓慢添加,果断删除 — 每次出错就加一条规则是膨胀之路。等同一类错误重复出现 2-3 次再固化为规则。
- 积极使用 scope 限定作用域 — 如果规则只适用于
commands/ 或 plugin_system/,用 scope frontmatter 限定。不要全局加载。
- 目标每个文件不超过 200 行 — 超过则按主题或路径拆分。
- 具体优于模糊 — 将"注意性能"替换为具体、可验证的标准。
- 审计冲突 — 两条规则说相反的话 = 两条都不会被遵循。积极消解冲突。
参考资料