SuperAPI AI 工具集

extract

智能体与模型

查看项目

更新于 10-16 10:25

技能介绍

用途

/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                     # 仅预览,不创建文件

工作流程分为几步:

  1. 识别模式:读取用户描述,并在 auto-memory 中搜索相关条目:
MEMORY_DIR="$HOME/.claude/projects/$(pwd | sed 's|/|%2F|g; s|%2F|/|; s|^/||')/memory"
grep -rni "<keywords>" "$MEMORY_DIR/"

如果 auto-memory 中找到,则以这些条目作为素材;否则直接使用用户描述。

  1. 确定技能范围:最多提 2 个问题,例如“这解决了什么问题”(若不清晰)和“是否应包含代码示例”(如适用)。

  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-)并与用户确认。

  1. 创建技能文件:调用 skill-extractor 智能体生成实际文件,结构为:
<skill-name>/
├── SKILL.md            # 带 frontmatter 的主技能文件
├── README.md           # 面向人类的概览
└── reference/          # (可选)支撑文档
    └── examples.md     # 具体示例与边界情况
  1. 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}}
  1. 质量门禁:定稿前需核对:
  • SKILL.md 具包含 name 和 description 的有效 YAML frontmatter
  • name 与文件夹名一致(小写、连字符)
  • name 不含保留片段 claude 或 anthropic(Claude Code 技能用 cc- 前缀)
  • description 含“Use when:”触发条件
  • 解决方案自包含(无需外部上下文)
  • 代码示例完整且可直接复制粘贴
  • 无项目特定的硬编码值(路径、URL、凭据)
  • 无多余依赖
  1. 报告输出示例:
✅ 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 集成片段以及常见失败模式。

提示

  • 提取能在其他项目中节省时间的模式
  • 保持技能聚焦,一个技能对应一个问题
  • 包含人们会搜索的错误消息
  • 通过脱离原始上下文阅读技能来测试其是否成立