Skill一键打包安装

SKILLAI 工具
AI 工具 未标注权限 许可证不明确
安装这个技能

将来自 GitHub 仓库或本地目的一组 Agent Skills(整合打包为一个「整包技能目录」,统一安装到 WorkBuddy 用户技能目录并集中管理。适用于:用户拿到一个含多个技能的仓库(如 scientific-agent-skills 这类 Skill 合集)希望「一个目录安装/更新/卸载」;或想把分散在本地目录的技能整理成整包。核心原理是利用 WorkBuddy 对技能目录的递归扫描(SKILL.md 处于二级目录即可被发现),配合 git 实现整包版本管理。打包时自动在整包根生成【父级索引 SKILL.md】(安装入口:声明整合技能包,递归索引所有子技能的实际路径并指引 AI 如何使用)和【技能汇总表 JSON/HTML】(中文名+中文说明,可搜索)。触发词:打包技能、整合技能、合并技能、技能整包、pack skills、skill pack、把一个仓库的技能装成一个、统一管理技能、无法安装、没有 skill.md、子技能在深层目录。使用本技能后,整包以父级 SKILL.md 为入口,子技能按路径索引使用,功能不受影响。

一句话选型结论

按资料字段整理

Skill一键打包安装是AI 工具类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类AI 工具 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_7cf770a3/skills-packager
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

AI 工具
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_7cf770a3仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791677059
正文体量17.3 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
组合多个 AI 能力

把写作、检索、总结串成一条流程。

搭工作流

把固定流程做成可重复调用的步骤。

做提示词与评测

整理提示词并对比输出效果。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在AI 工具场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Skill一键打包安装当前 未标注权限 未标注 未标注 未标注 有
执行计划 只读 GitHub 仓库 151.5 万 Codex、Claude、Cursor 有
Playwright MCP 测试 浏览器控制 ClawHub 市场 136.5 万 OpenClaw 有
完成前的验证 未标注权限 GitHub 仓库 131.9 万 Codex、Claude、Cursor 有
子 Agent 驱动开发 只读 GitHub 仓库 131.2 万 Codex、Claude、Cursor 有
前端设计 执行命令 GitHub 仓库 125.6 万 Codex、Claude、Cursor 有

SKILL.md 全文

17.3 KB
模型实际读到的说明书原文,来自技能仓库

Skill Packager · 技能整包化安装与管理

把「一堆技能」装成一个「包」:一个目录搞定安装、更新、卸载、迁移。

何时使用

  • 用户从 GitHub 仓库(或本地目录)拿到一个包含多个 Agent Skills 的合集,希望统一安装和管理
  • 用户想减少技能目录的平铺混乱,用「一个父目录 + git」管理一组技能
  • 已装过平铺副本,想整理成整包

核心原理(必须先理解)

WorkBuddy 递归扫描技能目录:只要 ~/.workbuddy/skills/<任意深度>/SKILL.md 存在,该技能就会被识别
(实测证据:本机 nature-review-studio/skill/SKILL.md 位于二级目录,仍被正常加载)。

因此整包结构 ~/.workbuddy/skills/<包名>/<skill-name>/SKILL.md 是完全可用的——技能功能不变,
而管理动作(更新/卸载/迁移)收敛到一个目录。

但有两个必须处理的边界(实测踩坑):
1. 整包根必须有自己的 SKILL.md,否则 WorkBuddy 无法把整包识别为可安装的技能;
2. 部分小包的 SKILL.md 位于更深层级(如 <skill>/skill/SKILL.md、<skill>/docs/SKILL.md),
单靠递归识别可能漏掉 → 必须依赖整包根的父级索引 SKILL.md 兜底。

打包脚本会自动:① 把 skills/ 下所有子目录(无论内部 SKILL.md 在几层)提升到整包根;
② 在整包根生成父级索引 SKILL.md(名字=包名),内含子技能索引表(实际相对路径)
与 AI 使用指引——AI 按索引用文件读取工具直接打开子技能 SKILL.md 并严格遵循执行,
不依赖子技能是否被单独注册。

整包结构

~/.workbuddy/skills/
├── <包名>/                    ← 整包(推荐保留 .git 以便 git pull 更新)
│   ├── SKILL.md               ← ★ 父级索引 SKILL.md(安装入口,自动生成)
│   ├── <skill-1>/SKILL.md     ← 子技能(可能位于更深层级,如 <skill>/skill/SKILL.md)
│   ├── <skill-2>/SKILL.md
│   ├── 技能汇总表.html        ← 中文汇总表(搜索/分类筛选,自动生成)
│   ├── 技能汇总表.json        ← 汇总元数据(含待填中文字段)
│   ├── README.md / docs/      ← 仓库自带文件(可保留)
│   └── .git/                  ← 若来源是 git 仓库,保留之
├── <其他独立技能>/            ← 未打包技能,保持原样,绝不动
└── _bm_skillid_migration.json ← WorkBuddy 标记文件,勿动

工作流(8 步)

第 0 步:确认来源与目标

  • 来源:git clone URL 或本地目录
  • 目标包名:短横线命名,如 scientific-agent-skills;若包名会与包内某个子技能同名
    (如 ponytail 仓库内含 ponytail 技能),加 -skills 后缀区分(先例:ponytail-skills、
    nature-skills),避免整包根索引与子技能注册重名互相混淆

第 1 步:克隆/定位来源

git clone --depth 1 <URL> <临时目录>
# 或直接使用本地目录(注意:本地目录若无 .git,后续无法整包更新)
# 临时目录必须放在【工作区内】(如 <workspace>/.pack-tmp/),不要用系统 /tmp——见常见坑

第 2 步:安全审计(必做,不能跳)

两条线并行:

a. 官方报告(若仓库有):
- 查看 SECURITY.md、docs/security-report.md、docs/security-triage.md
- 区分「真实问题」与「扫描器系统性误报」(如 API-key 认证、model.eval() 常被误判)

b. 本地静态扫描(无条件执行,只读):

# 危险调用:应全部为零
grep -rnoE "(^|[^a-zA-Z_\.])(eval|exec)\(" --include="*.py" skills/ | head
grep -rnoE "os\.(system|popen)" --include="*.py" skills/ | head
grep -rnoE "shell\s*=\s*True" --include="*.py" skills/ | head
# 硬编码凭证(应只有环境变量名,无真实密钥)
grep -rnoiE "(api[_-]?key|secret|token|password)\s*[=:]\s*['\"][A-Za-z0-9_\-]{16,}['\"]" --include="*.py" skills/ | head
# 网络外联目标(应均为技能声称调用的服务)
grep -rhoE "https?://[a-zA-Z0-9\.\-]+" --include="*.py" skills/ | sort | uniq -c | sort -rn
# 反向shell/挖矿/持久化/prompt注入
grep -rnoiE "(reverse[_ ]?shell|/dev/tcp/|cryptominer|ignore (previous|prior|above))" skills/ | head

审计结论分三档:✅ 通过 / ⚠️ 有需注意项(记录后仍可装) / 🔴 有风险(拒绝安装并汇报)。

第 3 步:目录重组(关键一步)

目标:把 skills/ 下的所有子目录(无论其中 SKILL.md 在几层)提升到整包根,
使技能目录扁平化。

若技能原本在仓库 skills/ 子目录,且有 .git:

cd <仓库目录>
git mv skills/* ./        # 提升所有子目录(含深层),git 记录为重命名
git add -A && git commit -m "chore: flatten skills/ to repo root for recursive discovery"

无 .git 的本地目录:直接 mv skills/* ./ 即可。

第 4 步:迁移到技能目录

mv <仓库目录> ~/.workbuddy/skills/<包名>

第 5 步:清理顶层冲突副本(慎!)

若用户技能目录顶层已有同名平铺技能(通常是此前平铺安装的副本):

  1. 先 MD5 校验一致性(内容一致才可处理,避免误删用户数据):
# 逐目录对比:顶层 <name> vs 整包 <name> 的每个文件 MD5 是否完全一致
  1. 处理方式:优先「移动」到备份目录,而非「删除」:
    - 原因:WorkBuddy 的 safe-delete 机制会拦截单轮批量删除(>50 目标需命令级确认,用
    AskUserQuestion 确认也无效),而 shutil.move 不触发拦截
    - 移动后告知用户备份位置,由用户决定是否彻底删除
  2. 绝不误动与本次打包无关的独立技能(判断标准:不在打包来源清单内,如用户已有的
    nature-* 等),即使它们与打包技能名字相似

第 6 步:验证

# 1) 数量:整包内 SKILL.md 总数(递归,含深层)== 来源技能数
# 2) frontmatter:每个 SKILL.md 都有 ^name: 和 ^description:
# 3) git:整包目录内 git status 干净
# 4) 结构:所有技能目录已在整包根(深层 SKILL.md 保留其原相对路径)

第 7 步:生成安装入口与汇总表(自动 + AI 填充)

打包脚本在整包根自动生成两个文件:

a. 父级索引 SKILL.md(安装入口,必生成)
- 递归扫描整包内所有 SKILL.md(含深层),生成索引表(实际相对路径 + 名称 + 用途简介)
- frontmatter 的 name = 包名,description 指引 AI:按索引用文件读取工具打开子技能
SKILL.md 并严格遵循执行;子技能未注册也不影响使用
- 作用:① 整包根有 SKILL.md → WorkBuddy 可识别安装;② 深层子技能有兜底入口
- license 字段自动识别:从包内 LICENSE 文件推断(APACHE/MIT/GPL/BSD/MPL),
识别不出才回退 MIT——避免把 Apache-2.0 的上游仓库标成 MIT(实测踩坑)
- 中文优先:若同目录 技能汇总表.json 已被 AI 填好 zh_name/zh_desc/category,
build_pack_index 会自动改产按分类分组的中文索引(共享/支持包排最后),
否则回退单一英文表;填完中文后重跑 --repair <包目录> 即可刷新为中文索引
- 入库判定:--repair 以 frontmatter 块内的 skill-author: SkillPackager 标记
判断「本工具生成」,检测窗口是整个 frontmatter 而非前 800 字符——子技能很多时
description 极长,800 字符窗口会把标记挤出而误判跳过(实测踩坑)

b. 技能汇总表.json(中文由 AI 填充)
1. 读取 <包名>/技能汇总表.json
2. 为每个技能填写 zh_name(中文名)、zh_desc(1-2 句中文说明,基于 desc 翻译提炼)、
category(领域分类,如「生信·基因组学」「机器学习·AI」,同类技能归一类便于筛选;
分类建议合并到 8-12 组,过碎会让索引分组失去意义)
3. 运行渲染命令生成 技能汇总表.html(深色主题、实时搜索、分类筛选):
bash python scripts/pack_skills.py --render <包名>/技能汇总表.json
> HTML 是纯生成物:重跑本命令即按最新模板刷新(含历史 bug 修复),
> 例如旧版表头错位的 HTML 重渲染即自动修复;JSON 中已填中文不受影响。
4. 渲染时 zh_name/zh_desc 为空的技能会自动回退显示英文原文,方便检查漏填项
5. 填完中文后重跑 --repair <包目录>,让父级索引同步升级为中文分组版

第 8 步:收尾汇报

  • 告知用户:重启/新会话后技能才会出现在技能列表(当前会话是启动时快照)
  • 管理方式:更新 = cd <包名> && git pull;卸载 = 删除整个包目录;迁移 = 复制整个目录
  • 汇总表 HTML 已随包存放在整包根目录
  • 若仓库 README 含作者商业推广链接(如代充/赞助广告),提醒用户只进人读文档、
    不进任何 SKILL.md 与可执行代码
    ,技能触发时不会进入 AI 上下文

常见坑与对策(实测踩坑记录)

坑 现象 对策
整包根无 SKILL.md 无法安装 WorkBuddy 找不到包级 SKILL.md,提示"没有 skill.md" 打包时在整包根自动生成父级索引 SKILL.md(name=包名),含子技能索引表与 AI 使用指引
子技能 SKILL.md 在更深层级 小包 SKILL.md 位于 <skill>/<子目录>/SKILL.md,递归识别漏掉 flatten 提升 skills/ 下所有子目录;父索引递归扫描所有 SKILL.md 并给出实际相对路径,AI 按路径直接读取
safe-delete 批量拦截 删除 >50 个目录被拒绝,报 SAFE_DELETE_BULK_CONFIRM_REQUIRED 改用 shutil.move 移到备份目录;或分批 <50 删除;不要指望 AskUserQuestion 能解除该拦截
safe-delete 钩子拦截 rmtree/rmdir shutil.rmtree、shutil.move 回退路径、甚至 os.rmdir 都被钩子接管,沙箱内回收站不可用报 SAFE_DELETE_FAIL_CLOSED 脚本全程零删除:安装用 shutil.copytree,冲突副本只检测提示不删除;清理空目录失败仅提示不阻塞
git mv 后状态不干净 整包内 git status 显示 R 重命名未提交 重组后立即自动 git commit(带 -c user.name/email 兜底),保持整包 git 干净
bash 转义破坏 Python 代码 python -c &quot;...\s...&quot; 中 \s/\n 被 bash 改写导致误判 一律把 Python 代码写成 .py 文件再执行,不要内联 -c
误判 frontmatter 误报「缺 name」 用脚本文件方式跑正则 ^name: / ^description: 复核,避免 shell 转义干扰
误动用户已有技能 把用户独立技能(nature-*)卷进清理 维护「保留清单 keep-list」,凡不在打包清单内的目录一律跳过
删除后才发现整包缺技能 顶层删了,整包缺 先 git mv/复制让整包完整,再 MD5 校验,最后才处理顶层
索引 license 标错 整包根 SKILL.md 一律写 MIT,Apache 仓库名不符实 detect_license() 读取整包 LICENSE 自动推断 SPDX 标识
--repair 误判跳过 子技能多时 description 长,txt[:800] 窗口内找不到 SkillPackager 标记,索引不更新 改成在 frontmatter 块内检测 skill-author: SkillPackager
索引只有英文 填完中文后索引仍是英文摘要 填完 技能汇总表.json 后重跑 --repair,索引自动升级为中文分组版
大包根索引膨胀 几百个技能的整包,父级 SKILL.md 单行表 100KB+,每次触发都灌满上下文 用 --index-mode category(auto 会自动触发)生成两级分类索引,根文件只列分类,具体技能表放在各分类 README.md
repair 收尾误报 NameError / 假警告 根 SKILL.md 原本不存在时,收尾判断引用了未定义的 txt;补了兜底后又会对自己刚生成的文件报"非本工具生成" 用 idx_before = idx.exists() 记录原始状态再判定,不要复用读取到的文本
分类简介需自动生成 两级索引的分类"一句话简介"无来源 build_category_index 自动读取 &lt;分类&gt;/README.md 的 ## Overview 首段并截断到 130 字符
汇总表 HTML 表头错位遮盖 旧模板 thead th 硬编码 position:sticky; top:96px,而上方工具栏(搜索框+分类按钮)高度随分类数与窗口宽度变化(分类多换行后 130~200px),滚动时表头停在错误位置、被不透明工具栏(z-index 更高)压住,出现表头与文字错位重叠 布局改为「整页不滚动」:body 定高 overflow:hidden + flex 纵向,.table-wrap 独占剩余高度并内部 overflow:auto,thead th position:sticky; top:0 相对自己的滚动容器吸顶——吸顶位置与工具栏高度彻底解耦,任何分类数/窗口宽度都不再错位;旧版 HTML 重跑 --render 即刷新
/tmp 暂存克隆丢失 git clone 到系统 /tmp 报成功,但后续命令看不到该目录、rm 也无法清理(临时目录与沙箱写入视图不一致) 暂存/克隆一律放在工作区内(如 &lt;workspace&gt;/.pack-tmp/),彻底避开系统 /tmp
平台变体重复副本 仓库在隐藏目录(如 .openclaw/skills/)附带同名平台变体 SKILL.md,递归扫描会把整包技能注册成重名重复项 打包前 find . -name SKILL.md 排查全部副本位置;把非正式来源(平台变体)副本移出整包(移入备份 + git commit,保持状态干净)
跨盘 shutil.move 留源残留 跨盘移动(=复制+删除)中删除段被 safe-delete 钩子拦截时:目标已完整就位、源目录仍残留;重跑脚本因目标已存在而跳过 属零删除设计的预期代价:校验目标完整后,把源残留提示用户手动删除即可,不要改回删除重试

脚本用法

本技能附带 scripts/pack_skills.py,封装了第 1~7 步的可自动化部分(已在本机端到端验证):

# 打包模式(自动提取技能元数据到 &lt;包名&gt;/技能汇总表.json)
python scripts/pack_skills.py \
  --source &quot;https://github.com/xxx/skill-collection.git&quot; \
  --name my-skill-pack \
  [--skills-dir &quot;C:/Users/Miracle R/.workbuddy/skills&quot;] \
  [--no-scan]          # 跳过安全静态扫描(不推荐)

# 渲染模式(AI 填充中文后,生成 &lt;包名&gt;/技能汇总表.html)
python scripts/pack_skills.py --render &lt;包名&gt;/技能汇总表.json [--out 自定义路径.html]

# 修复模式(为已有整包补全父级索引 SKILL.md,如旧包缺安装入口)
python scripts/pack_skills.py --repair &lt;包目录&gt; [--name 包名] [--index-mode auto|flat|category]

脚本行为:
- 零删除:安装用复制,冲突副本只检测(MD5 一致性)并提示,删除动作一律交给用户——规避平台 safe-delete 钩子
- 重组后自动 git commit,整包 git 状态保持干净
- flatten 提升 skills/ 下所有子目录(含深层 SKILL.md 结构)
- 打包完成自动生成:父级索引 SKILL.md(安装入口,递归索引全部子技能)+ 汇总元数据 JSON
- --repair 可为旧包/已有整包补全父级索引;汇总表 JSON 已存在时保留(不覆盖已填中文)
- --index-mode(大包必用):
- auto(默认):子技能 > 120 个且 80% 以上位于「分类/<技能>/SKILL.md」两层结构时,
自动生成两级分类索引
- category:强制两级索引。根 SKILL.md 只列分类(分类目录 / 中文分类名 / 技能数 /
一句话简介 / 该分类 README.md 入口),AI 先开分类 README 看技能表,再开具体
SKILL.md —— 上下文按需加载。适用于 100+ 技能的大包
(实测:bioSkills 562 技能,两级索引根文件 17 KB;若平铺成单行表会到 100 KB+)
- flat:强制单一全量表格(几十个技能的小包)
- 中文填充后 --render 生成可搜索 HTML 汇总表
- description 提取支持引号单行/跨行、YAML 块标量(&gt;-/|)、缩进续行等多种 frontmatter 写法
- 输出逐步日志与最终验证摘要(技能数、frontmatter、git 状态)

调试与修改指南(用户)

  • 本技能是独立文件夹,可直接编辑 SKILL.md 和 scripts/pack_skills.py
  • 想调整目标目录:改 --skills-dir 参数;想调整保留清单:改脚本内 KEEP 常量
  • 测试:用一个小型 git 仓库(如 2-3 个技能的合集)跑一遍,观察日志输出
  • 修改后无需重新安装,WorkBuddy 每次会话重新读取 SKILL.md

边界

  • 本技能只做文件系统级打包与静态审计,不执行技能内含代码
  • 不负责第三方技能依赖(Python 包/API Key)的安装
  • 个别技能的许可证可能与仓库主许可证不同,打包前提示用户确认

常见问题

5 问
答案由本站依据条目字段整理
Skill一键打包安装怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_7cf770a3/skills-packager。安装方式为未标注。装完刷新技能列表或重开客户端。

Skill一键打包安装支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Skill一键打包安装权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Skill一键打包安装收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Skill一键打包安装用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。