📦 openclaw-skill-manager — OpenClaw 技能管理器

v3.1.1

管理 OpenClaw 技能的多空间安装、查询、更新和自定义空间配置。支持系统内置、全局、主脑、专才和自定义五层技能空间架构,动态识别当前 Agent 配置和技能分布。

0· 48·0 当前·0 累计
liberalchang 头像by @liberalchang·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/16
0
安全扫描
VirusTotal
可疑
查看报告
OpenClaw
安全
high confidence
该技能是一个纯指令管理器,用于管理 OpenClaw 技能。其请求和运行时操作与该目的一致,没有提出任何过度要求,尽管用户应谨慎对待从任意 URL 安装技能(建议进行完整性检查)。
评估建议
该技能似乎能实现其声称的功能:管理 OpenClaw 技能空间和安装/列出技能。使用前需确保 openclaw CLI 可用,并备份 ~/.openclaw/openclaw.json。使用手动安装 URL 流程(curl | tar)时要谨慎,因为它会将任意存档内容解压到技能目录中——建议从可信的 clawhub 源安装,或在安装前验证存档(校验和/签名)。添加自定义技能空间路径时,避免指向敏感系统目录。如需更低风险,请在安装前检查第三方技能的 SKILL.md。...
详细分析 ▾
用途与能力
名称和描述与指令一致:操作 OpenClaw 技能空间、安装技能(从注册表、URL 或本地路径)、更新配置并重启 gateway。未请求任何无关的凭据、二进制文件或配置路径。
指令范围
指令在 OpenClaw CLI 和用户技能目录上操作(列出代理、读写 ~/.openclaw/openclaw.json、重启 gateway、扫描配置的 extraDirs)。这在管理器的职责范围内。注意:手动安装流程允许从任意 URL 使用 curl | tar 解压到技能目录——功能上适合安装第三方技能,但存在完整性风险(无签名/验证步骤)。
安装机制
这是一个纯指令技能(无安装规范,不执行代码文件)。这将安装时的风险降至最低。唯一可能存在风险的运行时操作是描述的手动安装——从任意 URL 下载并解压存档,这对管理器来说是预期功能,但应谨慎使用。
凭证需求
未请求任何环境变量、凭据或无关的配置路径。该技能在用户主目录中读写 OpenClaw 特定的配置文件,并检查用户提供的目录——与其目的相称且适当。
持久化与权限
未请求 always:true,不需要提升权限,仅修改适合技能管理器的 OpenClaw 用户配置和目录。默认允许自主调用,但不与其他令人担忧的权限组合使用。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv3.1.12026/4/15

此版本未检测到任何变更。版本已升级至 3.1.1,但文件和文档均未更新。所有技能功能和文档与上一版本保持一致。

可疑

安装命令

点击复制
官方npx clawhub@latest install openclaw-skill-manager
镜像加速npx clawhub@latest install openclaw-skill-manager --registry https://cn.longxiaskill.com

技能文档

管理 OpenClaw 技能的多空间安装、查询、更新和自定义空间配置。

架构说明

技能空间层级

技能空间层级:
├── 系统内置: /skills (bundled)
├── 全局: ~/.openclaw/skills (managed)
├── 主脑: ~/.openclaw/workspace/skills (workspace)
├── 专才: ~/.openclaw/workspace-shared/skills (extra)
└── 自定义: 用户配置的路径 (extra)

Source 分类映射

Source分类路径
openclaw-bundled系统内置~/openclaw/skills
openclaw-managed全局~/.openclaw/skills
openclaw-workspace主脑~/.openclaw/workspace/skills
openclaw-extra扩展专才 + 自定义空间

命令工作流

Phase 1: 添加自定义技能空间

输入: 用户请求添加新的技能空间

输出: 配置更新结果

Step 1: 获取当前 Agent 配置

openclaw agents list

解析 Workspace 路径:

openclaw agents list | grep -A1 "Workspace:" | grep "Workspace:" | sed 's/.Workspace: //' | sort | uniq

向用户展示可选空间:

检测到以下 Agent 工作空间:
  • 主脑空间: ~/.openclaw/workspace
  • 专才空间: ~/.openclaw/workspace-shared (code_expert, content_expert, stock_expert)

请输入要添加的技能空间路径: (可直接输入序号 1/2,或输入自定义绝对路径)

Step 2: 用户输入处理

  • 输入 1 → 路径=~/.openclaw/workspace/skills
  • 输入 2 → 路径=~/.openclaw/workspace-shared/skills
  • 输入其他路径 → 验证后添加
  • 输入已存在路径 → 提示已存在,跳过

Step 3: 验证路径

# 检查路径是否存在
if [ ! -d "<用户输入路径>" ]; then
    echo "路径不存在,是否创建? (yes/no)"
    # 用户确认后创建
    mkdir -p "<用户输入路径>"
fi

# 检查是否已在配置中 openclaw config get skills.load.extraDirs | grep -q "<用户输入路径>" && echo "已存在,跳过"

Step 4: 用户确认

📝 即将添加技能空间:
路径: /new/custom/path
父目录: /new/custom

⚠️ 确认添加? (yes/no):

Step 5: 更新配置

修改 ~/.openclaw/openclaw.json

{
  "skills": {
    "load": {
      "extraDirs": [
        "/existing/path",
        "/new/custom/path"
      ],
      "watch": true,
      "watchDebounceMs": 250
    }
  }
}

Step 6: 重启 Gateway

openclaw gateway restart

Step 7: 验证

openclaw config get skills.load.extraDirs
openclaw skills list | grep -c "openclaw-extra"

Step 8: 返回结果

✅ 已添加自定义技能空间: /new/custom/path
🔄 Gateway 已重启
📦 该路径下的技能现在可通过 openclaw skills list 查看

Phase 2: 安装技能

输入: 技能名称或地址、目标空间

输出: 安装结果报告

Step 1: 获取可用安装空间

openclaw config get skills.load.extraDirs

分类显示:

可用的安装目标空间:
[1] 全局空间 ~/.openclaw/skills
[2] 主脑空间 ~/.openclaw/workspace/skills (main)
[3] 专才空间 ~/.openclaw/workspace-shared/skills (code_expert, content_expert, stock_expert)
[4] 自定义空间 /Users/liber/custom-skills

请选择安装目标 (输入序号 1-4):

Step 2: 用户输入技能名称

请输入要安装的技能名称:
(或输入 URL/本地路径进行手动安装)

Step 3: 解析安装源类型

  • 纯名称 (如 stock-market-pro) → clawhub 安装
  • URL (如 https://...) → 手动安装
  • 本地路径 (如 /path/to/skill) → 手动安装

Step 4: 用户确认

📝 即将安装技能:
名称: stock-market-pro
方式: clawhub 安装
目标: 专才空间 (~/.openclaw/workspace-shared/skills)

⚠️ 确认安装? (yes/no):

Step 5: 执行安装

方式 A - clawhub:

clawhub install  --workdir 

方式 B - 手动:

# 下载/复制到目标路径
if [[ "" =~ ^https?:// ]]; then
    curl -L "" | tar -xz -C "/"
else
    cp -r "" "/"
fi

# 标记为手动安装 touch "//.manual-install"

Step 6: 验证安装

# 检查技能是否出现在列表中
openclaw skills list | grep ""

# 检查 SKILL.md 完整性 cat "//SKILL.md" | grep -E "^(name|description):"

Step 7: 返回结果

成功:

✅ 技能  已安装到  空间
📦 来源: clawhub / 手动安装
📍 路径: 

失败:

❌ 安装失败: <错误信息>

🔧 可能原因:

  • 网络连接问题
  • 技能名称拼写错误
  • 目录权限不足

💡 尝试: clawhub search 确认技能名称


Phase 3: 查询技能列表

输入: 查询参数(可选过滤)

输出: 格式化的技能清单

Step 1: 获取 CLI 输出

openclaw skills list 2>&1

CLI 失败时的 fallback:

# 如果 CLI 失败,使用备用方法
if ! openclaw skills list >/dev/null 2>&1; then
    echo "⚠️ CLI 不可用,使用备用扫描..."
    # 扫描配置中的 extraDirs
    for dir in $(openclaw config get skills.load.extraDirs | jq -r '.[]'); do
        ls -1 "$dir" 2>/dev/null
    done
fi

Step 2: 解析 CLI 输出

提取技能信息:

# 提取技能名称、状态、描述、来源
openclaw skills list 2>&1 | awk -F'│' '
NR > 3 && NF >= 5 {
    status = $2
    name = $3
    desc = $4
    source = $5
    
    # 清理空格
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", status)
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", name)
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", desc)
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", source)
    
    # 提取状态
    if (status ~ /✓/) state = "ready"
    else if (status ~ /△/) state = "needs_setup"
    else state = "unknown"
    
    # 提取来源分类
    if (source ~ /bundled/) category = "系统内置"
    else if (source ~ /managed/) category = "全局"
    else if (source ~ /workspace/) category = "主脑"
    else if (source ~ /extra/) category = "扩展"
    else category = "其他"
    
    # 提取描述前50字符
    desc_short = substr(desc, 1, 50)
    if (length(desc) > 50) desc_short = desc_short "..."
    
    print category "|" name "|" state "|" desc_short "|" source
}'

Step 3: 按分类统计

# 统计各分类数量
openclaw skills list 2>&1 | awk -F'│' '
NR > 3 && $5 ~ /bundled/ {bundled++}
NR > 3 && $5 ~ /managed/ {managed++}
NR > 3 && $5 ~ /workspace/ {workspace++}
NR > 3 && $5 ~ /extra/ {extra++}
END {
    print "系统内置:", bundled
    print "全局:", managed
    print "主脑:", workspace
    print "扩展:", extra
}'

Step 4: 格式化输出

完整列表格式:

## 技能清单

系统内置技能 (X个)

技能状态用途
🔐 1password✅ ready1Password CLI 设置使用
📝 apple-notes✅ readyApple Notes 管理
.........

全局技能 (X个)

技能状态用途
📦 ragflow✅ readyRAG 操作客户端
.........

主脑技能 (X个) - main

技能状态用途
📦 darwin-skill✅ readySkill 自动优化
.........

扩展技能 (X个)

技能状态来源用途
📦 stock-market-pro✅ readyworkspace-shared股票市场分析
............
总计:X 个技能(Y 个就绪可用)

中文用途提取规则:

  • 从 CLI 输出的 Description 列提取
  • 截取前 50 个字符或第一个句号/逗号前的内容
  • 转换为简洁中文描述(不超过 10 字)

Phase 4: 更新技能

输入: 技能名称 或 --all 标志

输出: 更新结果报告

Step 1: 定位技能

openclaw skills list | grep ""

Step 2: 检查安装类型

# 查找技能路径
skill_path=$(openclaw skills list 2>&1 | awk -F'│' -v name="" '
$3 ~ name {print $5}' | head -1)

# 检查是否为手动安装 if [ -f "$skill_path//.manual-install" ]; then echo "手动安装" else echo "clawhub 安装" fi

Step 3: 用户确认

📝 即将更新技能:
名称: 
当前版本: 
来源: clawhub / 手动安装

⚠️ 确认更新? (yes/no):

Step 4: 执行更新

clawhub:

# 备份当前版本
cp -r "" ".backup.$(date +%Y%m%d%H%M%S)"

# 执行更新 clawhub update --workdir

手动安装:

⚠️ 技能  为手动安装,无法自动更新

💡 更新选项:

  • 使用 /skill update --force 强制重新下载
  • 使用 /skill install --manual 重新安装
  • 手动删除后重新安装

Step 5: 返回结果

✅ 技能  已更新至最新版本
📦 来源: clawhub
📍 路径: 

Phase 5: 移动技能

输入: 技能名称、目标空间

输出: 移动确认和结果

Step 1: 定位技能

# 获取技能当前路径
source_path=$(openclaw skills list 2>&1 | awk -F'│' -v name="" '
$3 ~ name {
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", $5)
    print $5
}' | head -1)

Step 2: 验证目标空间

# 检查目标空间是否在配置中
openclaw config get skills.load.extraDirs | grep -q "" || echo "❌ 目标空间未配置"

# 检查是否有同名技能 ls "/" 2>/dev/null && echo "⚠️ 目标空间已存在同名技能"

Step 3: 用户确认

📝 即将移动技能:
技能: 
从: 
到: 

⚠️ 移动后原位置将备份,确认移动? (yes/no):

Step 4: 执行移动

# 备份原位置
mv "" ".backup.$(date +%Y%m%d%H%M%S)"

# 复制到新位置 cp -r ".backup." "/"

# 验证 ls "//SKILL.md"

Step 5: 返回结果

✅ 技能  已移动到  空间
📍 新路径: 
🗂️ 备份: .backup.

安装路径映射

空间类型配置路径安装命令
全局~/.openclaw/skillsclawhub install X --workdir ~/.openclaw
主脑~/.openclaw/workspace/skillsclawhub install X --workdir ~/.openclaw/workspace
专才~/.openclaw/workspace-shared/skillsclawhub install X --workdir ~/.openclaw/workspace-shared
自定义用户配置的路径clawhub install X --workdir

异常处理

CLI 命令失败

触发: openclaw skills list 执行失败或超时

检测: 命令返回非零退出码

处理:

# Fallback 到配置扫描
for dir in $(openclaw config get skills.load.extraDirs 2>/dev/null | jq -r '.[]' 2>/dev/null); do
    if [ -d "$dir" ]; then
        ls -1 "$dir" 2>/dev/null | while read skill; do
            echo "| unknown │ $skill │ (fallback scan) │ openclaw-extra │"
        done
    fi
done

空间未配置

触发: 用户尝试安装到未配置的空间

处理:

❌ 空间  未在配置中

💡 请先添加该空间:/skill add-space 或选择已配置的空间安装

手动安装技能更新

触发: 用户尝试更新手动安装的技能

处理:

⚠️ 技能  为手动安装,无法自动更新
📦 原始来源: 

💡 更新选项:

  • 使用 /skill update --force 强制重新下载
  • 使用 /skill install --manual 重新安装
  • 手动删除后重新安装

路径不存在

触发: 添加空间时路径不存在

处理:

⚠️ 路径  不存在

💡 是否创建该目录? (yes/no)


注意事项

  • 添加自定义空间后需要重启 Gateway 生效
  • 手动安装的技能不会自动更新(创建 .manual-install 标记)
  • 移动技能前会自动备份原位置
  • 关键操作前均有用户确认提示
  • CLI 失败时有 fallback 扫描机制

测试验证

测试 Prompt 1: 添加自定义空间

添加一个新的技能空间 /Users/liber/custom-skills

期望: 提示确认 → 更新配置 → 重启 Gateway → 验证

测试 Prompt 2: 安装技能到指定空间

安装 stock-market-pro 到专才空间

期望: 显示可用空间 → 用户选择 → 确认 → clawhub 安装 → 验证

测试 Prompt 3: 查看技能列表

/skill list

期望: 按分类显示所有技能,包含状态、来源、用途

测试 Prompt 4: CLI 失败 fallback

当 openclaw skills list 失败时,使用备用扫描

期望: 检测到 CLI 失败 → 扫描 extraDirs → 显示结果

数据来源ClawHub ↗ · 中文优化:龙虾技能库