复合学习技能Skill compound-learnings

该技能用于自动化地将临时会话中的学习内容转化为永久性的能力,如技能、规则和代理。通过分析学习文件、提取模式、并创建相应的规则、技能或钩子,以提高工作流程的效率和知识管理。关键词:学习转化、模式提取、技能创建、工作流优化、知识复合。

DevOps 0 次安装 0 次浏览 更新于 3/14/2026

name: 复合学习 description: 将会话学习转化为永久能力(技能、规则、代理)。当被要求“改进设置”、“从会话中学习”、“复合学习”或“哪些模式应成为技能”时使用。 allowed-tools: [读取, 全局, 搜索, 写入, 编辑, Bash, 询问用户问题]

复合学习

将临时的会话学习转化为永久、复合的能力。

何时使用

  • “我应该从最近的会话中学到什么?”
  • “基于最近的工作改进我的设置”
  • “将学习转化为技能/规则”
  • “哪些模式应成为永久性的?”
  • “复合我的学习”

过程

步骤 1:收集学习

# 列出学习(按时间倒序)
ls -t $CLAUDE_PROJECT_DIR/.claude/cache/learnings/*.md | head -20

# 计数总数
ls $CLAUDE_PROJECT_DIR/.claude/cache/learnings/*.md | wc -l

读取最近的 5-10 个文件(或指定日期范围)。

步骤 2:提取模式(结构化)

对于每个学习文件,从以下特定部分提取条目:

部分标题 提取内容
## Patterns可重用技术 规则的直接候选
**要点:****可操作要点:** 决策启发式
## 有效的方法 成功模式
## 失败的方法 反模式(转化为规则)
## 关键决策 设计原则

在过程中构建频率表:

| 模式 | 会话 | 类别 |
|---------|----------|----------|
| “编辑前检查工件” | abc, def, ghi | 调试 |
| “显式传递 ID” | abc, def, ghi, jkl | 可靠性 |

步骤 2b:合并相似模式

在计数之前,合并表达相同原则的模式:

合并示例:

  • “工件优先调试”
  • “通过检查文件验证钩子输出”
  • “文件系统优先调试” → 所有表达:“编辑代码前观察输出”

使用最通用的表述。更新频率表。

步骤 3:检测元模式

关键步骤: 查看学习聚集在哪些主题周围。

如果超过 50% 的模式与一个主题相关(例如,“钩子”、“追踪”、“异步”): → 该主题可能需要 专用技能 而不是多个规则 → 一个技能比五个规则复合得更好

问自己:“是否有一个技能可以使所有这些规则变得不必要?”

步骤 4:分类(决策树)

对于每个模式,确定工件类型:

它是一个命令/步骤序列吗?
  → 是 → 技能(可执行 > 声明性)
  → 否 ↓

它应该在事件上自动运行吗(SessionEnd、PostToolUse 等)?
  → 是 → 钩子(自动 > 手动)
  → 否 ↓

它是“当 X 时,做 Y”或“永远不要做 X”吗?
  → 是 → 规则
  → 否 ↓

它是否增强现有的代理工作流?
  → 是 → 代理更新
  → 否 → 跳过(不值得捕获)

工件类型示例:

模式 类型 为什么
“提交前运行 linting” 钩子 (PreToolUse) 自动门控
“会话结束时提取学习” 钩子 (SessionEnd) 自动触发
“逐步调试钩子” 技能 手动序列
“总是显式传递 ID” 规则 启发式

步骤 5:应用信号阈值

出现次数 行动
1 注意但跳过(除非关键失败)
2 考虑 - 呈现给用户
3+ 强信号 - 推荐创建
4+ 肯定创建

步骤 6:提出工件

以这种格式呈现每个提议:

---

## 模式: [通用名称]

**信号:** [N] 会话 ([列出会话 ID])

**类别:** [调试 / 可靠性 / 工作流 / 等]

**工件类型:** 规则 / 技能 / 代理更新

**理由:** [为什么选择这种工件类型,为什么值得创建]

**草稿内容:**
\`\`\`markdown
[实际将写入文件的内容]
\`\`\`

**文件:** `.claude/rules/[名称].md` 或 `.claude/skills/[名称]/SKILL.md`

---

使用 AskUserQuestion 获取每个工件的批准(或批量批准)。

步骤 7:创建批准的工件

对于规则:

# 写入规则目录
cat > $CLAUDE_PROJECT_DIR/.claude/rules/<name>.md << 'EOF'
# 规则名称
[上下文:为什么这条规则存在,基于 N 个会话]

## 模式
[可重用原则]

## 做
- [具体行动]

## 不要做
- [反模式]

## 源会话
- [session-id-1]: [发生了什么]
- [session-id-2]: [发生了什么]
EOF

对于技能:

创建 .claude/skills/<name>/SKILL.md 包含:

  • 前言(名称、描述、允许工具)
  • 何时使用
  • 分步说明(可执行)
  • 来自学习的示例

如果适当,添加到 skill-rules.json 的触发器。

对于钩子:

创建 Shell 包装器 + TypeScript 处理程序:

# Shell 包装器
cat > $CLAUDE_PROJECT_DIR/.claude/hooks/<name>.sh << 'EOF'
#!/bin/bash
set -e
cd "$CLAUDE_PROJECT_DIR/.claude/hooks"
cat | node dist/<name>.mjs
EOF
chmod +x $CLAUDE_PROJECT_DIR/.claude/hooks/<name>.sh

然后创建 src/<name>.ts,用 esbuild 构建,并在 settings.json 中注册:

{
  "hooks": {
    "EventName": [{
      "hooks": [{
        "type": "command",
        "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/<name>.sh"
      }]
    }]
  }
}

对于代理更新:

编辑 .claude/agents/<name>.md 中的现有代理以添加学习到的能力。

步骤 8:总结报告

## 复合完成

**分析的学习:** [N] 会话
**找到的模式:** [M]
**创建的工件:** [K]

### 已创建:
- 规则: `explicit-identity.md` - 跨边界显式传递 ID
- 技能: `debug-hooks` - 钩子调试工作流

### 跳过(信号不足):
- “模式 X” (1 次出现)

**您的设置现在已永久改进。**

质量检查

在创建任何工件之前:

  1. 它是否足够通用? 是否适用于其他项目?
  2. 它是否足够具体? 是否提供具体指导?
  3. 是否已经存在? 首先检查 .claude/rules/.claude/skills/
  4. 类型是否正确? 序列 → 技能,启发式 → 规则

文件参考

  • 学习: .claude/cache/learnings/*.md
  • 技能: .claude/skills/<name>/SKILL.md
  • 规则: .claude/rules/<name>.md
  • 钩子: .claude/hooks/<name>.sh + src/<name>.ts + dist/<name>.mjs
  • 代理: .claude/agents/<name>.md
  • 技能触发器: .claude/skills/skill-rules.json
  • 钩子注册: .claude/settings.jsonhooks 部分