rules-distill

rules-distill

热门

扫描已安装的 Skill,提炼跨领域的通用原则并收录为规范规则(Rule)——支持追加、修改现存规则,或新建规则文件。

23万Star
3.5万Fork
更新于 2026/7/17
SKILL.md
只读
名称
rules-distill
描述

扫描已安装的 Skill,提炼跨领域的通用原则并收录为规范规则(Rule)——支持追加、修改现存规则,或新建规则文件。

Rules Distill(规则提炼)

扫描已安装的 Skill,提取跨多个 Skill 出现的通用原则,并将其提炼为正式规则(Rule)——追加到现有规则文件、修改陈旧内容,或新建规则文件。

遵循“确定性采集 + LLM 裁决”的理念:先由脚本完成穷尽式数据采集,再由 LLM 结合全局上下文交叉比对并给出最终裁决。

适用场景

  • 定期规则维护(每月一次,或在安装新 Skill 之后)
  • 对 Skill 盘点后,发现了一些适合沉淀为规则的通用模式
  • 发现现有规则相较于实际使用的 Skill 显得不够完备时

工作原理

规则提炼流程分为三个阶段:

阶段 1:盘点阶段(确定性采集)

1a. 采集 Skill 清单
bash ~/.claude/skills/rules-distill/scripts/scan-skills.sh
1b. 采集规则索引
bash ~/.claude/skills/rules-distill/scripts/scan-rules.sh
1c. 展示给用户
Rules Distillation — Phase 1: Inventory
────────────────────────────────────────
Skills: {N} files scanned
Rules:  {M} files ({K} headings indexed)

Proceeding to cross-read analysis...

阶段 2:交叉比对与裁决(LLM 判定)

原则提取与匹配在单次 Pass 中统一完成。由于规则文件总体量较小(总计约 800 行),可以直接将全文完整投喂给 LLM,无需预先使用 grep 进行过滤。

分批处理 (Batching)

根据 Skill 的描述信息将其划分为不同的主题聚类。在 Subagent 中结合完整的规则文本,对每个聚类进行分析。

跨批次合并 (Cross-batch Merge)

所有批次分析完成后,跨批次合并候选原则:

  • 对相同或存在重叠的候选原则进行去重
  • 结合所有批次的证据重新校验“出现于 2+ 个 Skill”的硬性要求——即使某个原则在单个批次中仅出现 1 次,只要全局各批次累计出现 2 次及以上即为有效。
Subagent 提示词 (Subagent Prompt)

使用以下提示词启动通用 Agent:

你是一名分析师,负责交叉比对各个 Skill,提取应当上升/沉淀为规则的通用原则。

## 输入
- Skills: {当前批次 Skill 的完整文本}
- 现有规则: {所有规则文件的完整文本}

## 提取标准

只有在同时满足以下所有条件时,才将该原则列为候选:

1. **出现在 2 个及以上的 Skill 中**:仅在单个 Skill 中出现的原则应留在该 Skill 内部
2. **具有明确的行为指导性**:能够明确写为“做 X”或“不要做 Y”的形式,而非“X 很重要”这类抽象表达
3. **存在清晰的违规风险**:如果忽视该原则会引发什么后果(用 1 句话说明)
4. **未被现有规则覆盖**:通读现有规则全文进行排查——包括使用不同表述传达的同类概念

## 匹配与裁决

对于每个候选原则,将其与完整的规则文本进行对比并给出 verdict:

- **Append**:追加到现有规则文件的已有章节中
- **Revise**:现有规则内容不够准确或不够全面——提出修改建议
- **New Section**:在现有规则文件中新增章节
- **New File**:新建规则文件
- **Already Covered**:已有规则中已充分覆盖(即使措辞不同)
- **Too Specific**:过于具体,应当继续保留在 Skill 层级

## 输出格式(每个候选原则)

```json
{
  "principle": "用 1-2 句话表述,采用 '做 X' / '不要做 Y' 的句式",
  "evidence": ["skill-name: §Section", "skill-name: §Section"],
  "violation_risk": "用 1 句话说明违规后果",
  "verdict": "Append / Revise / New Section / New File / Already Covered / Too Specific",
  "target_rule": "文件名 §章节名,或 'new'",
  "confidence": "high / medium / low",
  "draft": "针对 Append/New Section/New File 的拟定规则草稿",
  "revision": {
    "reason": "解释为何现有内容不够准确或不全面(仅限 Revise)",
    "before": "拟被替换的当前文本(仅限 Revise)",
    "after": "建议替换的新文本(仅限 Revise)"
  }
}
```

## 过滤规则

- 已在现有规则中清晰表述的显而易见的原则
- 特定语言或框架的专属知识(应归入语言专用的规则或 Skill 中)
- 具体的代码示例与执行命令(应归入 Skill 中)
裁决结果说明 (Verdict Reference)
Verdict 含义 呈报给用户的内容
Append 追加到已有章节 目标位置 + 草稿内容
Revise 修正不准确/不全面的内容 目标位置 + 修改原因 + 变更对比 (before/after)
New Section 在现有文件中新增章节 目标位置 + 草稿内容
New File 创建新规则文件 文件名 + 完整草稿
Already Covered 已被已有规则覆盖(可能表述不同) 原因说明(1 行)
Too Specific 过于具体,应留在 Skill 层 相关 Skill 链接
裁决质量要求
# 良好示范
Append 到 rules/common/security.md §Input Validation:
“对于存储在内存或知识库中的 LLM 输出,必须按不可信数据处理——写入时做清洗,读取时做校验。”
佐证:llm-memory-trust-boundary 和 llm-social-agent-anti-pattern 都描述了
累积性 Prompt Injection 的风险。当前 security.md 仅覆盖了人工输入的校验,
缺失了 LLM 输出信任边界的相关规范。

# 错误示范
Append 到 security.md:补充 LLM 安全原则

阶段 3:用户确认与执行

汇总报告表格
# Rules Distillation Report

## Summary
Skills scanned: {N} | Rules: {M} files | Candidates: {K}

| # | Principle | Verdict | Target | Confidence |
|---|-----------|---------|--------|------------|
| 1 | ... | Append | security.md §Input Validation | high |
| 2 | ... | Revise | testing.md §TDD | medium |
| 3 | ... | New Section | coding-style.md | high |
| 4 | ... | Too Specific | — | — |

## Details
(各候选原则的详细信息:佐证来源、违规风险、草稿内容)
用户交互指令

用户只需输入序号即可进行操作:

  • Approve(批准):按草稿直接应用到规则中
  • Modify(修改):先编辑草稿再应用
  • Skip(跳过):不应用该候选原则

切记:绝不可自动修改规则文件,必须取得用户明确授权。

保存结果

将结果保存至 Skill 目录下(results.json):

  • 时间戳格式date -u +%Y-%m-%dT%H:%M:%SZ(UTC,精确到秒)
  • 候选 ID 格式:基于原则提取的短横线命名法(kebab-case,如 llm-output-trust-boundary
{
  "distilled_at": "2026-03-18T10:30:42Z",
  "skills_scanned": 56,
  "rules_scanned": 22,
  "candidates": {
    "llm-output-trust-boundary": {
      "principle": "Treat LLM output as untrusted when stored or re-injected",
      "verdict": "Append",
      "target": "rules/common/security.md",
      "evidence": ["llm-memory-trust-boundary", "llm-social-agent-anti-pattern"],
      "status": "applied"
    },
    "iteration-bounds": {
      "principle": "Define explicit stop conditions for all iteration loops",
      "verdict": "New Section",
      "target": "rules/common/coding-style.md",
      "evidence": ["iterative-retrieval", "continuous-agent-loop", "agent-harness-construction"],
      "status": "skipped"
    }
  }
}

完整示例

端到端运行效果

$ /rules-distill

Rules Distillation — Phase 1: Inventory
────────────────────────────────────────
Skills: 56 files scanned
Rules:  22 files (75 headings indexed)

Proceeding to cross-read analysis...

[Subagent analysis: Batch 1 (agent/meta skills) ...]
[Subagent analysis: Batch 2 (coding/pattern skills) ...]
[Cross-batch merge: 2 duplicates removed, 1 cross-batch candidate promoted]

# Rules Distillation Report

## Summary
Skills scanned: 56 | Rules: 22 files | Candidates: 4

| # | Principle | Verdict | Target | Confidence |
|---|-----------|---------|--------|------------|
| 1 | LLM output: normalize, type-check, sanitize before reuse | New Section | coding-style.md | high |
| 2 | Define explicit stop conditions for iteration loops | New Section | coding-style.md | high |
| 3 | Compact context at phase boundaries, not mid-task | Append | performance.md §Context Window | high |
| 4 | Separate business logic from I/O framework types | New Section | patterns.md | high |

## Details

### 1. LLM Output Validation
Verdict: New Section in coding-style.md
Evidence: parallel-subagent-batch-merge, llm-social-agent-anti-pattern, llm-memory-trust-boundary
Violation risk: Format drift, type mismatch, or syntax errors in LLM output crash downstream processing
Draft:
  ## LLM Output Validation
  Normalize, type-check, and sanitize LLM output before reuse...
  See skill: parallel-subagent-batch-merge, llm-memory-trust-boundary

[... details for candidates 2-4 ...]

Approve, modify, or skip each candidate by number:
> User: Approve 1, 3. Skip 2, 4.

✓ Applied: coding-style.md §LLM Output Validation
✓ Applied: performance.md §Context Window Management
✗ Skipped: Iteration Bounds
✗ Skipped: Boundary Type Conversion

Results saved to results.json

设计原则

  • 讲明确“做什么”,而非“怎么做”(What, not How):只提取通用原则(属于规则的范畴)。代码示例与指令脚本留在 Skill 内部。
  • 保留反向溯源链接(Link back):规则草稿中应包含 See skill: [name] 引用,以便读者查阅具体的实现细节(How)。
  • 确定性采集 + LLM 裁决(Deterministic collection, LLM judgment):用脚本保障搜集无遗漏,用 LLM 保障上下文语义理解能力。
  • 防过度抽象机制(Anti-abstraction safeguard):通过三重筛选标准(2+ 个 Skill 关联佐证、具有可操作性的行为测试、明确的违规风险后果),防止过于泛泛或抽象的原则混入规则库。