> 不是阅读文档,是开发工具。帮你从零搭建一个可运行的OpenClaw Skill。
用户说:"帮我创建一个XX技能" 或 "我想开发一个Skill"
python scripts/scaffold.py --name "my-skill" --display-name "我的技能" --description "技能描述"
自动生成:
my-skill/
├── SKILL.md # 技能定义文件
├── scripts/
│ └── main.py # 主脚本(含模板代码)
└── references/
└── README.md # 参考文档说明
用户说:"帮我检查这个Skill" 或 "验证一下结构"
python scripts/validate.py --path ./my-skill
检查项:
用户说:"测试一下这个Skill"
python scripts/debug.py --path ./my-skill --input '{"arg1": "value1"}'
模拟OpenClaw加载流程:
用户说:"给我一个XX功能的模板"
# 查看所有可用模板
python scripts/templates.py --list
# 生成特定模板
python scripts/templates.py --type file-io --output ./my-skill/scripts/file_utils.py
可用模板:
file-io — 文件读写工具http-request — HTTP请求工具(web_fetch风格)data-process — 数据清洗/转换工具report-gen — 报告生成工具(Markdown输出)cli-parser — 命令行参数解析工具---
name: skill-name # 英文标识符,小写+短横线,唯一
description: 一句话描述 # 80字以内,说清干什么
version: "1.0.0" # 语义化版本号
updated_at: "2026-06-03" # 最后更新日期
---
category: ["开发工具"] # 分类标签数组
tags: ["模板", "脚手架"] # 搜索标签
trigger: ["创建技能"] # 触发词,Agent匹配用
# 技能名称
> 一句话定位,不是阅读文档是什么
## 核心能力
1. 能力1 — 输入什么 → 输出什么
2. 能力2 — ...
## 交互流程
### 流程1:XXX
1. 用户说/做什么
2. 调用哪个脚本
3. 输出什么
## 脚本说明
### scripts/xxx.py
- 输入:JSON格式参数
- 输出:JSON格式结果
- 逻辑:核心算法说明
## 设计原则
- 原则1
- 原则2
python scripts/xxx.py --input '...' 能直接跑skill-name/
├── SKILL.md # 必填,技能定义+交互流程
├── scripts/ # 必填,至少1个可执行脚本
│ ├── main.py # 主脚本
│ └── utils.py # 工具函数(可选)
├── references/ # 可选,参考文档
│ └── api-spec.md # API文档等
└── README.md # 可选,给人看的说明
multi-search-engine)profit_calc.py)#!/usr/bin/env python3
"""脚本功能一句话描述"""
import sys
import json
import argparse
def main(args):
"""主逻辑"""
# 解析输入
if args.input:
data = json.loads(args.input)
else:
data = {}
# 核心逻辑
result = process(data)
# 输出结果
print(json.dumps(result, ensure_ascii=False, indent=2))
def process(data):
"""核心处理逻辑,输入dict,输出dict"""
# TODO: 实现你的逻辑
return {"status": "ok", "data": data}
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="脚本描述")
parser.add_argument("--input", type=str, help="JSON格式输入参数")
parser.add_argument("--output", type=str, help="输出文件路径(可选)")
args = parser.parse_args()
main(args)
--input 接JSON字符串--output 写文件{"status": "error", "message": "错误描述"}python scripts/main.py --input '{"test": "hello"}'
python scripts/validate.py --path ./skill-name
python scripts/debug.py --path ./skill-name --input '{"arg1": "value1"}'
| 问题 | 原因 | 解决 |
|---|---|---|
| ------ | ------ | ------ |
| 脚本报ModuleNotFoundError | 用了第三方包 | 换标准库实现 |
| 输出不是JSON | print了调试信息 | 只输出最终JSON |
| SKILL.md解析失败 | front matter格式错 | 检查---包围和YAML语法 |
| 脚本无执行权限 | 缺shebang | 加 #!/usr/bin/env python3 |
cd skill-name
zip -r ../skill-name.zip . -x "*.pyc" "__pycache__/*" ".git/*"
curl -X POST https://skill-platform.example.com/api/skills \
-H "Authorization: Bearer $PLATFORM_API_KEY" \
-F "file=@skill-name.zip" \
-F "name=skill-name" \
-F "description=技能描述"
python xxx.py 执行共 1 个版本