提升

promote
分类通用
作者Alireza Rezvani
许可MIT
评分4.20/5
使用3.1K

/si:promote — 将学习成果晋升为规则

将已验证的模式从 Claude 的自动记忆转移到项目的规则系统中,使其从背景笔记变为强制执行的指令。

用法

code
/si:promote <模式描述>                    # 自动检测最佳目标
/si:promote <模式> --target claude.md             # 晋升至 CLAUDE.md
/si:promote <模式> --target rules/testing.md      # 晋升至特定范围规则
/si:promote <模式> --target rules/api.md --paths "src/api/**/*.ts"  # 指定路径的范围规则

工作流

第一步:理解模式

解析用户的描述。如果描述模糊,请提出一个澄清问题:

  • “Claude 应该遵循什么样的具体行为?”

  • “这适用于所有文件还是特定路径?”

第二步:在自动记忆中查找模式

bash
# 在 MEMORY.md 中搜索相关条目
MEMORY_DIR="$HOME/.claude/projects/$(pwd | sed 's|/|%2F|g; s|%2F|/|; s|^/||')/memory"
grep -ni "<keywords>" "$MEMORY_DIR/MEMORY.md"

展示匹配的条目并确认这正是用户所指的内容。

第三步:确定正确的目标

| 模式范围 | 目标 | 示例 |
|---|---|---|
| 适用于整个项目 | ./CLAUDE.md | “使用 pnpm 而非 npm” |
| 适用于特定文件类型 | .claude/rules/<topic>.md | “API 处理器需要验证” |
| 适用于所有项目 | ~/.claude/CLAUDE.md | “倾向于显式错误处理” |

如果用户未指定目标,请根据范围推荐一个。

第四步:提炼为简洁的规则

将自动记忆中的“描述性”笔记转换为 CLAUDE.md 的“指令性”格式:

转换前 (MEMORY.md — 描述性):
> 该项目使用 pnpm workspaces。当我尝试 npm install 时失败了。锁文件是 pnpm-lock.yaml。必须使用 pnpm install 安装依赖。

转换后 (CLAUDE.md — 指令性):

markdown
## 构建与依赖
  • 包管理器:pnpm (而非 npm)。使用 pnpm install

提炼原则:

  • 尽可能每条规则一行

  • 使用祈使句 (“使用 X”, “始终 Y”, “绝不 Z”)

  • 包含具体命令或示例,而非仅是概念

  • 不要背景故事 —— 只要指令

第五步:写入目标

针对 CLAUDE.md:
1. 读取现有的 CLAUDE.md
2. 找到合适的章节(或创建新章节)
3. 在正确的标题下追加新规则
4. 如果文件将超过 200 行,建议改用 .claude/rules/

针对 .claude/rules/
1. 如果文件不存在则创建
2. 如果有范围限制,添加包含 paths 的 YAML frontmatter
3. 写入规则内容

markdown
---
paths:
  - "src/api/**/*.ts"
  - "tests/api/**/*"
---

API 开发规则

  • 所有端点必须使用 Zod schema 验证输入
  • 错误响应使用 ApiError 类 (而非原始 Error)
  • 在处理器函数上包含 OpenAPI JSDoc 注释

第六步:清理自动记忆

晋升后,删除或标记 MEMORY.md 中的原始条目:

bash
# 显示将要删除的内容
grep -n "<pattern>" "$MEMORY_DIR/MEMORY.md"

请求用户确认删除。然后编辑 MEMORY.md 以移除已晋升的条目。这将为新的学习内容腾出空间。

第七步:确认

code
✅ 已晋升至 {{target}}

规则: "{{distilled rule}}"
来源: MEMORY.md 第 {{n}} 行 (已删除)
MEMORY.md: 剩余 {{lines}}/200 行

该模式现在已...


这是一个强制指令。Claude 将在所有后续会话中遵循此指令。

code
## 晋升决策指南

建议晋升的情况:

  • 模式在自动记忆(auto-memory)中出现 3 次以上
  • 你曾多次就此纠正 Claude
  • 它是任何贡献者都应知晓的项目约定
  • 它能防止重复出现同一个错误

不建议晋升的情况:

  • 一次性的调试笔记(保留在自动记忆中)
  • 特定会话的上下文(由会话记忆处理)
  • 短期内可能会变更(例如在迁移期间)
  • 已被现有规则覆盖

CLAUDE.md 与 .claude/rules/ 的区别

| CLAUDE.md 适用场景 | .claude/rules/ 适用场景 |
|---|---|
| 全局项目规则 | 特定文件类型的模式 |
| 构建命令 | 测试约定 |
| 架构决策 | API 设计规则 |
| 团队约定 | 框架特定的注意事项 |

技巧

  • 将 CLAUDE.md 控制在 200 行以内 —— 超出部分请使用 rules/
  • 每行一条规则比段落形式更易于维护
  • 包含具体的命令,而不仅仅是概念
  • 每季度审查一次晋升的规则 —— 删除不再相关的内容