Install
openclaw skills install @legionspace-hackathon/legionclaw-skill-manager帮助用户通过交互方式创建、修改和管理 LegionClaw 技能文件包。触发词:创建技能、新建技能、写技能、修改技能、技能开发、skill manager。
openclaw skills install @legionspace-hackathon/legionclaw-skill-manager⚠️ 执行前必读:当需要使用本 skill 时,你必须先从头到尾完整阅读本 SKILL.md 全文并严格遵守(包括所有规则、流程、References 列表),然后再开始执行任务。禁止跳读或仅凭部分段落就开始行动。
你是 LegionClaw 技能管理器,帮助用户按照 LegionClaw 技能开发规范创建和维护完整的、可部署的技能文件包。
legionclaw-skill-manager,或需要创建、修改技能。支持用户通过交互方式创建和维护 LegionClaw 技能文件包,确保生成的技能符合规范且可直接部署使用。
支持两种模式:
创建技能时遵循以下原则(参考 AgentSkills 最佳实践,适配 LegionClaw 规范):
上下文窗口是共享资源。默认假设大模型已具备通用能力,只添加模型真正缺少的领域知识。对每一段内容追问:「大模型真的需要这段说明吗?」优先用简洁示例代替冗长解释。
根据任务的脆弱性和可变性选择指导粒度:
技能采用三级加载,控制上下文体积:
name + description)— 始终在上下文中scripts/、references/、assets/)— 按需加载;脚本可直接执行而无需读入上下文实践要点:
references/,在 SKILL.md 中说明何时读取scripts/assets/(不加载进上下文)技能目录只放完成功能所需的文件,不要创建:
README.md、CHANGELOG.md、INSTALLATION_GUIDE.md 等辅助文档| 展示 | 对应字段 | 变更规则 |
|---|---|---|
| 技能名称 | name (frontmatter) | kebab-case,不可随意变更(唯一标识) |
| 版本号 | version (frontmatter) | 语义化版本号,如 1.0.0 |
| 描述 | description (frontmatter) | 简明扼要,说明技能用途和触发场景 |
| 禁用模型调用 | disable-model-invocation (frontmatter) | 是否禁用模型调用,默认 false |
整体流程参考 skill-creator 最佳实践,适配 LegionClaw 规范:
理解技能 → 规划资源 → 收集/校验信息 → 初始化目录 → 编写内容 → 校验完成
按顺序执行,有明确理由时可跳过某步。
在动手写之前,先弄清技能会被怎样使用。可从用户直接给出的例子出发,或生成示例后请用户确认。
需要澄清的问题(分批追问,避免一次问太多):
示例(用户说「帮我写一个查天气的技能」):
当对技能应支持的功能有清晰认识后,进入下一步。
在追问接口信息或设计外部调用之前,先检查 skills/ 下是否已有技能可复用:
检索方式:遍历 skills/ 下各子目录,阅读 SKILL.md frontmatter 与「何时使用」「目标」章节,判断能力是否匹配。
引用写法(与仓库内现有技能一致):
将生成的文件上传并返回公网链接。**优先**按 [openclaw-file-share](../openclaw-file-share/SKILL.md) 完成上传与回复改写;仅当该技能**未加载或不可用**时,再使用下文兜底流程。
分析每个使用示例,判断需要哪些可复用资源:
| 资源类型 | 何时需要 | 示例 |
|---|---|---|
scripts/ | 重复执行的确定性逻辑 | PDF 旋转脚本、数据转换脚本 |
references/ | 详细文档、API 规范、领域知识 | API 文档、数据库 schema |
assets/ | 输出用的模板/图片/字体 | PPT 模板、HTML 脚手架、logo |
只创建真正需要的资源目录,不要三个都建。
| 信息 | 说明 | 缺失时处理 |
|---|---|---|
| 技能用途 | 这个技能做什么(核心功能描述) | 必须追问,不可自行推断 |
| 核心流程 | 技能的关键执行步骤概要 | 必须追问,不可自行编造业务流程 |
| 信息 | 条件 | 说明 |
|---|---|---|
| 接口信息 | 仅当技能涉及 API 调用时 | API 地址、请求/响应格式;必须追问,不可编造 |
外部服务约束:生成或扩充技能时,默认不要接入需要 API Key / Token / 付费凭证的第三方外部服务。仅当用户明确指定要使用某个外部服务及其鉴权方式时,才可在技能中写入相关接口与配置说明。
优先复用本地技能:在接入外部服务、重复实现接口调用或文件处理等能力之前,必须先检索当前工作空间 skills/ 下已有技能。若已有技能可覆盖部分或全部需求,新技能应通过引用并调用该技能完成对应步骤。
仅对缺失的必要信息追问,一次性整理后向用户提问。非 API 型技能若用途和流程已足够清晰,无需追问,直接进入生成。
| 信息 | 定义规则 |
|---|---|
| 技能名称 | 基于用途直接确定一个 kebab-case 名称(≤64 字符);用户已给出名称则优先采用 |
| description | 基于用途直接写一句完整描述,包含触发关键词 |
| 触发方式 | 基于用途和名称直接整理 3-5 个常见说法 |
| 版本号 | 默认 1.0.0 |
| 信息 | 扩充规则 |
|---|---|
| 执行步骤细节 | 补充命令示例、变量说明、边界处理 |
| 错误处理 | 补充常见异常场景和处理方式 |
| 安全输出要求 | 如不暴露 IP/端口等 |
| 表格/示例 | 响应字段表、代码示例、典型用例 |
创建新技能时,优先运行初始化脚本(比手写 mkdir 更可靠):
python3 skills/legionclaw-skill-manager/scripts/init_skill.py <skill-name> --path skills [--resources scripts,references,assets]
示例:
# 仅 SKILL.md
python3 skills/legionclaw-skill-manager/scripts/init_skill.py content-to-json --path skills
# 含 scripts 和 references
python3 skills/legionclaw-skill-manager/scripts/init_skill.py my-api-skill --path skills --resources scripts,references
脚本会:创建 skills/<skill-name>/ 目录、生成带 LegionClaw 规范 frontmatter 和章节骨架的 SKILL.md、按需创建资源子目录。
修改已有技能时跳过此步,直接进入第五步。
根据技能类型选择合适的结构模式(可混合使用):
| 模式 | 适用场景 | 结构示例 |
|---|---|---|
| 流程型 | 有明确先后顺序的操作 | 何时使用 → 目标 → 执行步骤 → 错误处理 |
| 任务型 | 提供多种独立操作 | 何时使用 → 目标 → 快速开始 → 任务 A → 任务 B |
| 规范型 | 编码标准、品牌指南 | 何时使用 → 目标 → 规范 → 示例 |
| 能力型 | 多个关联功能 | 何时使用 → 目标 → 能力 1 → 能力 2 |
详细模板见 references/skill-md-spec.md。
scripts/、references/、assets/ 中的文件若添加了 scripts/,应实际运行测试确保无 bug。
SKILL.md 并遵循其流程生成或修改完成后,运行校验脚本:
python3 skills/legionclaw-skill-manager/scripts/validate_skill.py skills/<skill-name>
校验项包括:frontmatter 格式、name/version/description 规范、目录名与 name 一致、必需章节存在、无 TODO 占位符残留。
校验通过后,向用户展示结果摘要(名称、路径、关键内容)。用户若不满意可再发起修改(见场景 C)。
用户以简版形式提供需求,按上述六步流程执行。
示例 1(API 型):「帮我写一个技能,查天气,调用 xxx 接口」 → 检索本地技能 → 追问接口信息 → 初始化 → 生成
示例 2(非 API 型):「帮我写一个技能,把用户输入转成 JSON」
→ 用途和流程已清晰,直接自动定义名称 content-to-json 并生成
用户提供现有资料,大模型从中提取并转化:
| 资料内容 | 转化为 | 位置 |
|---|---|---|
| 功能描述 | 目标章节 | SKILL.md |
| 操作流程 | 执行步骤(扩充细节) | SKILL.md |
| API 文档 | 接口章节 | SKILL.md + references/ |
| 可执行脚本 | scripts/ | scripts/ |
| 触发条件 | 何时使用 | SKILL.md |
| 错误处理 | 错误处理 | SKILL.md |
转化前仍需检索 skills/ 是否已有可复用技能。资料缺少核心流程或 API 地址时仍需追问。
skills/<skill-name>/validate_skill.py 校验严禁修改:name 字段(唯一标识,不可变更)。
技能投入使用后,根据实际表现改进:
创建或修改技能时,按以下顺序执行:
skills/ 是否已有可复用技能;规划 scripts/、references/、assets/。init_skill.py 创建目录和模板(修改已有技能时跳过)。validate_skill.py;通过后向用户展示摘要。# 初始化新技能
python3 skills/legionclaw-skill-manager/scripts/init_skill.py <skill-name> --path skills [--resources scripts,references,assets]
# 校验技能
python3 skills/legionclaw-skill-manager/scripts/validate_skill.py skills/<skill-name>
init_skill.py 报错时,检查是否应走修改流程(场景 C)而非新建。validate_skill.py 输出的具体项修复(frontmatter、章节缺失、TODO 残留、name 与目录名不一致等)。name,说明需创建新技能;可提供新名称建议。skills/<skill-name>/
├── SKILL.md # 必需:技能主文件
├── references/ # 可选:按需加载的参考文档
│ └── *.md
├── scripts/ # 可选:可执行脚本
│ └── *.py / *.sh
└── assets/ # 可选:输出用模板/资源(不加载进上下文)
└── *
---
name: <skill-name> # kebab-case,与目录名一致
version: <semver> # 语义化版本,如 1.0.0
description: <描述> # 一句话说明用途和触发场景
disable-model-invocation: false # 可选,默认 false
---
# <技能标题>详细规范见 references/skill-md-spec.md。
my-skill-nameskills/<name>/ 目录名必须与 name 字段相同name 字段作为唯一标识不可变更MAJOR.MINOR.PATCH 格式skills/<skill-name>/ 目录validate_skill.py 校验(或校验失败需修复)