用途
/si:extract 用于把一个反复出现的模式或调试解决方案转变成独立、可移植的技能,可安装到任意项目中。它把零散的经验固化为包含 SKILL.md、参考文档和示例的可复用技能目录。
何时适合提取
当满足以下任一条件时,一个经验就适合提取为技能:
- 反复出现:同一问题出现在 2 个及以上项目中
- 非显而易见:需要真实调试才能发现
- 广泛适用:不绑定于某一个具体代码库
- 复杂方案:多步骤修复,容易遗忘
- 用户指定:用户说“把这个保存为技能”“我想复用这个”
使用方式
命令用法如下:
/si:extract <pattern description> # 交互式提取
/si:extract <pattern> --name docker-m1-fixes # 指定技能名称
/si:extract <pattern> --output ./skills/ # 自定义输出目录
/si:extract <pattern> --dry-run # 仅预览,不创建文件
工作流程分为几步:
- 识别模式:读取用户描述,并在 auto-memory 中搜索相关条目:
MEMORY_DIR="$HOME/.claude/projects/$(pwd | sed 's|/|%2F|g; s|%2F|/|; s|^/||')/memory"
grep -rni "<keywords>" "$MEMORY_DIR/"
如果 auto-memory 中找到,则以这些条目作为素材;否则直接使用用户描述。
-
确定技能范围:最多提 2 个问题,例如“这解决了什么问题”(若不清晰)和“是否应包含代码示例”(如适用)。
-
生成技能名称:规则为小写、单词间用连字符、描述性但简洁(2 到 4 个词),例如 docker-m1-fixes、api-timeout-patterns、pnpm-workspace-setup。名称中不得出现保留片段 claude 和 anthropic;若技能是关于 Claude Code 本身的,改用 cc- 前缀,例如:
- ❌ claude-code-settings → ✅ cc-settings
- ❌ claude-code-maintenance → ✅ cc-maintenance
- ❌ claude-mcp-tools → ✅ cc-mcp-tools
- ❌ claude-plugin-development → ✅ cc-plugin-development
写入技能目录前,需对照该清单检查名称;若含保留片段,则进行转换(去掉该片段,或将 claude*/anthropic* 前缀替换为 cc-)并与用户确认。
- 创建技能文件:调用 skill-extractor 智能体生成实际文件,结构为:
<skill-name>/
├── SKILL.md # 带 frontmatter 的主技能文件
├── README.md # 面向人类的概览
└── reference/ # (可选)支撑文档
└── examples.md # 具体示例与边界情况
- SKILL.md 结构:生成的 SKILL.md 需遵循以下格式:
---
name: "skill-name"
description: "<one-line description>. Use when: <trigger conditions>."
---
# <Skill Title>
> One-line summary of what this skill solves.
## Quick Reference
| Problem | Solution |
|---------|----------|
| {{problem 1}} | {{solution 1}} |
| {{problem 2}} | {{solution 2}} |
## The Problem
{{2-3 sentences explaining what goes wrong and why it's non-obvious.}}
## Solutions
### Option 1: {{Name}} (Recommended)
{{Step-by-step with code examples.}}
### Option 2: {{Alternative}}
{{For when Option 1 doesn't apply.}}
## Trade-offs
| Approach | Pros | Cons |
|----------|------|------|
| Option 1 | {{pros}} | {{cons}} |
| Option 2 | {{pros}} | {{cons}} |
## Edge Cases
- {{edge case 1 and how to handle it}}
- {{edge case 2 and how to handle it}}
- 质量门禁:定稿前需核对:
- SKILL.md 具包含 name 和 description 的有效 YAML frontmatter
- name 与文件夹名一致(小写、连字符)
- name 不含保留片段 claude 或 anthropic(Claude Code 技能用 cc- 前缀)
- description 含“Use when:”触发条件
- 解决方案自包含(无需外部上下文)
- 代码示例完整且可直接复制粘贴
- 无项目特定的硬编码值(路径、URL、凭据)
- 无多余依赖
- 报告输出示例:
✅ Skill extracted: {{skill-name}}
Files created:
{{path}}/SKILL.md ({{lines}} lines)
{{path}}/README.md ({{lines}} lines)
{{path}}/reference/examples.md ({{lines}} lines)
Install: /plugin install (copy to your skills directory)
Publish: clawhub publish {{path}}
Source: MEMORY.md entries at lines {{n, m, ...}} (retained — the skill is portable, the memory is project-specific)
示例
提取调试模式:
/si:extract "Fix for Docker builds failing on Apple Silicon with platform mismatch"
会创建 docker-m1-fixes/SKILL.md,内容包括平台不匹配错误消息、三种解决方案(构建标志、Dockerfile、docker-compose)、权衡表和关于 Rosetta 2 模拟的性能说明。
提取工作流模式:
/si:extract "Always regenerate TypeScript API client after modifying OpenAPI spec"
会创建 api-client-regen/SKILL.md,内容包括为何需要手动重新生成、确切的命令序列、CI 集成片段以及常见失败模式。
提示
- 提取能在其他项目中节省时间的模式
- 保持技能聚焦,一个技能对应一个问题
- 包含人们会搜索的错误消息
- 通过脱离原始上下文阅读技能来测试其是否成立