OpenClaw Agent Skills 开发教程

从零开始编写你的第一个 AI Skill —— 让 OpenClaw 学会新技能

📅 更新于 2026年4月12日 ⏱️ 阅读时间:20分钟 🏷️ Skills, OpenClaw, 开发指南

🎯 什么是 Agent Skills?

世界上有一种技能,叫 Agent Skills。它就像是给AI Agent写的一本操作手册 —— 告诉它在什么场景下该做什么、怎么做。

"凌晨2点,我终于写好了一个Skill。看着OpenClaw按照我的指示完成任务,那种成就感,就像看着自己的孩子第一次学会走路。只不过这孩子走得比我还快。"

📚 核心概念

  • Skill 目录 - 每个 Skill 是一个文件夹,包含 SKILL.md 和可选的代码文件
  • SKILL.md - 技能的说明书,包含元数据和操作指令
  • 工具绑定 - Skill 可以声明需要的工具权限
  • 条件加载 - 根据环境、配置、二进制存在性动态加载

📁 Skill 目录结构

my-skill/
├── SKILL.md          # 技能说明书(必需)
├── README.md         # 详细文档(可选)
├── index.js          # 实现代码(可选)
└── templates/        # 模板文件(可选)
    └── example.txt

📝 SKILL.md 完整规范

基础模板

---
name: my-awesome-skill
description: 这个Skill能帮你完成xxx任务
tools:
  - web_search
  - web_fetch
  - write
lifecycle:
  startup: |
    # 启动时执行的指令
    加载必要的上下文...
  shutdown: |
    # 关闭时执行的指令
    保存状态...
---

# 操作指令

## 任务类型A
当用户需要xxx时:
1. 首先做yyy
2. 然后做zzz
3. 最后返回结果

## 任务类型B
当用户需要aaa时:
1. 检查bbb条件
2. 执行ccc操作
3. 验证ddd结果

YAML Frontmatter 字段说明

字段 类型 说明
name string Skill 唯一标识
description string Skill 功能描述
tools array 需要的工具列表
lifecycle.startup string 启动指令
lifecycle.shutdown string 关闭指令
filters.env array 环境变量条件
filters.binary array 必需的二进制文件

💻 实战示例

示例 1: SEO 分析 Skill

---
name: seo-analyzer
description: 分析网页SEO指标,生成优化建议
tools:
  - web_fetch
  - write
---

# SEO 分析器

## 网页分析
当用户要求分析网页SEO时:
1. 使用 web_fetch 获取页面内容
2. 检查以下指标:
   - title 标签是否存在且长度合适(50-60字符)
   - meta description 是否存在(150-160字符)
   - h1 标签是否唯一
   - 图片是否有 alt 属性
   - 是否有结构化数据
3. 生成分析报告

## 输出格式
```markdown
## SEO 分析报告

**URL**: [网址]

### 标题分析
- 当前标题: [xxx]
- 长度: [xx] 字符
- 建议: [优化建议]

### Meta 描述
...
```

示例 2: Git 工作流 Skill

---
name: git-workflow
description: 规范的Git工作流程管理
tools:
  - exec
filters:
  binary:
    - git
---

# Git 工作流

## 创建功能分支
当用户说"创建功能分支 xxx"时:
1. 执行 `git checkout -b feature/xxx`
2. 确认分支创建成功
3. 提示用户开始开发

## 提交更改
当用户说"提交更改"时:
1. 执行 `git status` 查看更改
2. 询问用户提交信息
3. 执行 `git add . && git commit -m "[message]"`

## 创建 PR
当用户说"创建 PR"时:
1. 执行 `git push origin [current-branch]`
2. 使用 gh CLI 创建 PR
3. 返回 PR 链接

示例 3: 内容创作 Skill

---
name: content-creator
description: 妙趣风格的内容创作助手
tools:
  - web_search
  - write
---

# 妙趣内容创作

## 文章创作
当用户要求创作文章时:
1. 确定主题和风格(妙趣风格/王家卫风格)
2. 如果是热点类,先使用 web_search 搜索最新信息
3. 按照以下结构创作:
   - 开场:时间标记 + 脑洞转折
   - 正文:故事性叙述 + 技术干货
   - 结尾:哲理升华 + 行动号召
4. 检查是否去除AI痕迹:
   - 避免过度使用"值得注意的是"
   - 避免三段式结构
   - 使用口语化表达
   - 适当加入吐槽

🚀 安装和使用 Skill

方法 1: 本地 Skill

# 创建 Skill 目录
mkdir -p ~/.openclaw/skills/my-skill

# 创建 SKILL.md
cat > ~/.openclaw/skills/my-skill/SKILL.md << 'EOF'
---
name: my-skill
description: 我的自定义技能
tools:
  - write
---

# 技能指令
当用户说"hello"时,回复"World!"
EOF

# 重启 OpenClaw 加载 Skill
openclaw restart

方法 2: ClawHub 安装

# 从 ClawHub 安装社区 Skill
clawhub install user/skill-name

# 列出已安装 Skill
clawhub list

# 更新 Skill
clawhub update skill-name

方法 3: 项目级 Skill

# 在项目根目录创建 .openclaw/skills/
mkdir -p my-project/.openclaw/skills/project-skill

# OpenClaw 会自动加载项目级 Skill
cd my-project
openclaw

🎯 最佳实践

✅ 指令要具体

不要说"处理文件",要说"读取 /path/to/file.txt 的内容,提取其中的邮箱地址,保存到 emails.txt"。AI 需要明确的指令。

✅ 使用条件判断

用 "当...时" 来定义触发条件。条件越清晰,Skill 越智能。

✅ 声明工具权限

在 tools 数组中声明需要的工具,这样既安全又高效。不要一股脑要所有权限。

⚠️ 避坑指南

  • 指令冲突 - 多个 Skill 的触发条件不要重叠
  • 循环引用 - 避免 Skill A 调用 Skill B,B 又调用 A
  • 过度授权 - 只申请必要的工具权限
  • 缺乏示例 - 提供足够的示例帮助 AI 理解

🚀 进阶技巧

动态工具过滤

---
name: conditional-skill
description: 根据环境动态加载
tools:
  - exec
  - write
filters:
  env:
    - OPENCLAW_ENV: production
  binary:
    - node
    - npm
---

Skill 组合

一个复杂的任务可以拆分为多个 Skill,然后通过父 Skill 协调:

---
name: complex-workflow
description: 复杂工作流协调器
tools:
  - all
---

## 发布流程
当用户说"发布新版本"时:
1. 调用 git-workflow skill 创建发布分支
2. 调用 test-runner skill 执行测试
3. 调用 deploy-skill 部署到生产环境
4. 生成发布报告

🐛 调试技巧

# 查看加载的 Skills
openclaw skills list

# 查看 Skill 详情
openclaw skills info skill-name

# 调试模式运行
openclaw --debug

# 测试特定 Skill
echo "测试指令" | openclaw --skill my-skill

📚 相关资源

🎬 结语

Agent Skills 是 OpenClaw 的灵魂。写一个好的 Skill,就像培养一个得力的助手 —— 你需要告诉它什么时候做什么、怎么做、做到什么程度。

"世界上有一种艺术,叫指令的艺术。好的 Skill 不是写出来的,是调教出来的。"

现在,去写你的第一个 Skill 吧。记住:从简单开始,逐步迭代。最好的 Skill 永远是下一个。