介绍
# Skill from Memory
将您的工作转化为可复用的技能。从对话历史或记忆文件中提取工作流、解决方案和模式,将其打包为技能,并发布到 GitHub 和 ClawHub。
## 概述
该技能自动化了完整的工作流程: 1. **提取** - 解析对话历史或记忆以获取可复用的模式 2. **设计** - 构建为包含 `SKILL.md` 和资源的标准技能结构 3. **创建** - 生成技能文件和脚本 4. **发布** - 推送到 GitHub 并发布到 ClawHub
## 快速开始
### 从最近的对话创建技能 ```bash # Analyze last conversation and create skill draft ./scripts/extract-from-history.sh /path/to/session.jsonl ./my-new-skill
# Or specify a time range ./scripts/extract-from-history.sh /path/to/session.jsonl ./my-new-skill --since "2026-02-03" --pattern "backup" ```
### 从记忆文件创建技能 ```bash # Extract from memory markdown ./scripts/extract-from-memory.sh /path/to/memory/2026-02-04.md ./my-new-skill ```
### 全自动创建并发布 ```bash # One command: extract, create, and publish ./scripts/create-and-publish.sh \ --source /path/to/session.jsonl \ --skill-name "my-automation" \ --github-repo "user/my-skills" \ --clawhub-slug "my-automation" ```
## 工作流步骤
### 步骤 1:提取需求
从对话/记忆中识别: - **任务模式**:解决了什么工作流? - **输入/输出**:输入什么,输出什么? - **脚本/工具**:编写了什么代码? - **关键决策**:做出了哪些选择?
### 步骤 2:设计技能结构
确定资源类型: - `scripts/` - 用于可复用的代码 - `references/` - 用于文档 - `assets/` - 用于模板/文件
### 步骤 3:创建技能文件
生成: - 带有 frontmatter 和说明的 `SKILL.md` - `scripts/` 中的脚本 - 任何参考文件
### 步骤 4:发布
推送到 GitHub 并发布到 ClawHub: ```bash ./scripts/publish.sh ./my-skill \ --github "user/repo" \ --clawhub-slug "my-skill" \ --version "1.0.0" ```
## 脚本参考
### extract-from-history.sh 解析对话 JSONL 以获取技能内容。
```bash ./scripts/extract-from-history.sh <session.jsonl> <output-dir> [options]
Options: --since DATE Only extract from DATE onwards --pattern REGEX Filter messages matching pattern --tools-only Only extract tool usage patterns ```
### extract-from-memory.sh 解析记忆 markdown 文件。
```bash ./scripts/extract-from-memory.sh <memory.md> <output-dir> ```
### create-skill.sh 根据提取的内容生成技能结构。
```bash ./scripts/create-skill.sh <extracted-content-dir> <skill-name>
Options: --description "..." Skill description --type workflow Skill type (workflow|tool|reference) ```
### publish.sh 完整的发布工作流。
```bash ./scripts/publish.sh <skill-path> [options]
Options: --github REPO GitHub repo (owner/repo) --clawhub-slug ClawHub slug --version VER Version tag --skip-github Skip GitHub push --skip-clawhub Skip ClawHub publish ```
## 示例:将任务转换为技能
### 原始任务(来自对话) User: "帮我设置每天自动备份OpenClaw配置" → Agent 创建备份脚本 + cron 设置
### 技能创建过程
1. **提取**: ```bash ./scripts/extract-from-history.sh \ ~/.openclaw/agents/main/sessions/latest.jsonl \ ./extracted-backup ```
2. **设计**: - 类型:工作流技能 - 脚本:backup.sh, setup-cron.sh, cleanup.sh - 不需要 assets
3. **创建**: ```bash ./scripts/create-skill.sh ./extracted-backup cron-backup \ --description "Automated backup scheduling with cron" \ --type workflow ```
4. **发布**: ```bash ./scripts/publish.sh ./cron-backup \ --github "zfanmy/openclaw-skills" \ --clawhub-slug "cron-backup" \ --version "1.0.0" ```
## 最佳实践
### 什么构成了一个好技能
✅ **应做**: - 单一、定义明确的目的 - 可跨上下文复用 - 包含可工作的脚本 - 清晰的使用示例 - 渐进式披露设计
❌ **勿做**: - 过于宽泛或模糊 - 硬编码的个人路径 - 缺少错误处理 - 未记录的假设
### 从记忆中提取
寻找这些模式: - "帮我写一个脚本..." - "设置定时任务..." - "以后每次都要..." - "这个流程可以复用..."
### GitHub 集成
所需的设置: ```bash # Configure git git config --global user.name "Your Name" git config --global user.email "[email protected]"
# Setup SSH key for GitHub ssh-keygen -t ed25519 -C "[email protected]" # Add ~/.ssh/id_ed25519.pub to GitHub Settings → SSH Keys
# Login to ClawHub clawhub login ```
### 版本控制
遵循语义化版本控制: - `1.0.0` - 初始版本 - `1.0.1` - 缺陷修复 - `1.1.0` - 新功能 - `2.0.0` - 破坏性变更
## 故障排除
### 提取未找到内容 - 检查会话文件路径 - 使用 `--since` 验证日期范围 - 尝试更广泛的模式匹配
### GitHub 推送失败 - 验证 SSH 密钥已添加到 GitHub - 检查仓库是否存在以及您是否有访问权限 - 确保设置了 git config user.name/email
### ClawHub 发布失败 - 先运行 `clawhub login` - 检查技能验证是否通过 - 验证 slug 是否唯一
### 使用时技能不起作用 - 先手动测试脚本 - 检查是否有硬编码路径 - 验证列出了所有依赖项 - 创建时使用 `--examples` 标志运行
## 相关技能
- **skill-creator** - 底层技能创建工具 - **cron-backup** - 示例输出技能(备份自动化) - **clawhub** - ClawHub CLI 操作