yeah-skills-manager
yeah-skills-manager
AI 编码代理的个人技能管理工具 —— 在一个集中位置安装、同步并管理
SKILL.md技能。
yeah-skills-manager(命令为 sm)把分散在各个仓库里的 Agent Skills(SKILL.md)统一收纳到本地的 ~/.yeah-skills-manager 目录,并能将所选技能一键同步进任意项目的 SKILLS.md,供 AI 编码代理(Claude、Cursor、Copilot 等)识别和调用。
目录
核心概念
- 集中存储:所有技能都被复制到
~/.yeah-skills-manager/skills/<name>,并在~/.yeah-skills-manager/registry.json中登记元数据(来源、安装时间、别名等)。 - 来源(source):技能的安装出处,可以是 GitHub 仓库简写、Git URL 或本地路径。同一来源下的多个技能会被分组展示。
- 同步(sync):把你挑选的技能写入当前项目的
SKILLS.md。其中包含给 AI 用的<available_skills>XML 块,以及给人看的 Markdown 表格。 - 别名(alias):你给技能起的、便于自己识别的名字,仅在 CLI 列表中展示,不会进入
SKILLS.md,也不会改动技能的description。
安装
需要 Node.js >= 20.6.0。
# 全局安装(发布后)
npm install -g yeah-skills-manager
# 或免安装直接使用
npx yeah-skills-manager <command>安装后即可使用 sm 命令。
快速开始
# 1. 从 GitHub 安装一组技能
sm install obra/superpowers
# 2. 以树形结构查看已安装的技能
sm list
# 3. 在某个项目目录下,交互式挑选技能并写入 SKILLS.md
cd path/to/your/project
sm sync
# 4. AI 代理在需要时读取某个技能的完整内容
sm read brainstorming命令参考
运行 sm --help 查看所有命令,或 sm <command> --help 查看单个命令的用法。
sm install 安装技能
从 GitHub 仓库、Git URL 或本地路径安装技能。会自动识别以下三种目录布局:
<root>/SKILL.md(单个技能)<root>/<name>/SKILL.md(平铺的多个技能)<root>/skills/<name>/SKILL.md(嵌套在skills/下)
当仓库不符合上述自动识别布局时,可以在 source 后面显式传入一个或多个技能目录(空格分隔):
sm install <source> <folder1> <folder2> ...- 目录路径相对于仓库根目录(或本地 source 根目录)
# GitHub 仓库简写 owner/repo
sm install anthropics/skills
# 任意 Git URL
sm install git@github.com:obra/superpowers.git
# 本地路径
sm install ./my-local-skills
# 显式指定一个或多个技能目录(空格分隔)
sm install ant-design/x tools/skill-a tools/skill-b
# 仅安装来源中的某一个技能
sm install anthropics/skills --name pdf| 选项 | 说明 |
|---|---|
-n, --name <技能名> |
仅安装来源中指定的某个技能 |
sm list 查看技能
默认以树形结构按来源分组展示所有已安装技能(别名 ✓ AI 识别用的 description)。
sm list # 树形展示(默认)
sm ls # 简写别名
sm list --flat # 扁平列表
sm list --filter pdf # 按名称/描述过滤(自动启用扁平模式)| 选项 | 说明 |
|---|---|
-f, --flat |
以扁平列表展示,而非树形结构 |
--filter <关键词> |
按名称或描述过滤技能 |
sm sources 查看来源
按来源分组列出所有技能,并显示每个来源的远程地址,形如 obra/superpowers: https://github.com/obra/superpowers.git。
sm sources # 查看所有来源及其远程地址
sm sources --remove # 交互式选择一个来源并删除其下所有技能
sm sources --remove -s obra/superpowers # 直接删除指定来源| 选项 | 说明 |
|---|---|
--remove |
删除模式:选择一个来源并删除其下所有技能 |
-s, --source <来源地址> |
直接指定要删除的来源(配合 --remove) |
sm sync 同步到项目
交互式(树形勾选)选择技能,写入当前项目的 SKILLS.md。会保留你在受管理区块之外手动添加的内容。
sm sync # 交互式选择并写入 SKILLS.md
sm sync -o docs/SKILLS.md # 自定义输出路径
sm sync -y # 非交互:保留现有选择,若无则全选交互式树形界面快捷键:
| 按键 | 作用 |
|---|---|
| ↑ / ↓ | 在可见行间移动 |
| → / ← | 展开 / 收起来源节点 |
| Space | 切换选择(技能)或切换整个来源 |
| a / n | 全选 / 全不选 |
| Enter | 确认 |
| Ctrl+C | 取消 |
| 选项 | 说明 |
|---|---|
-o, --output <路径> |
输出文件路径(默认 SKILLS.md) |
-y, --yes |
跳过交互,保留当前选择(若无为全选) |
sm read 读取技能内容
将一个或多个技能的完整 SKILL.md 内容打印到标准输出,供 AI 代理读取使用。
sm read brainstorming
sm read brainstorming writing-plans # 一次读取多个sm alias 设置别名
为技能设置便于你自己识别的别名。别名只在 CLI 列表中展示,不会写入 SKILLS.md,也不会修改技能的 description。
sm alias brainstorming 头脑风暴 # 直接设置
sm alias brainstorming # 交互式输入
sm alias brainstorming --clear # 清除别名| 选项 | 说明 |
|---|---|
--clear |
清除别名 |
sm update 更新技能
从记录的来源重新拉取并更新技能。别名等本地设置会被保留。
sm update # 更新全部已安装技能
sm update brainstorming # 更新指定技能sm manage 批量移除
先以树形结构展示所有技能,再交互式(按来源分组)勾选要移除的技能。
sm managesm remove 移除单个技能
sm remove brainstorming
sm rm brainstorming # 简写别名sm open 打开安装目录
在系统文件管理器中打开技能目录。
sm open # 交互式选择技能后打开
sm open brainstorming # 直接打开指定技能目录
sm open --store # 打开整个技能存储根目录| 选项 | 说明 |
|---|---|
--store |
打开技能存储根目录 ~/.yeah-skills-manager/skills |
别名 vs 描述
这是本工具的一个关键设计,务必理解二者区别:
| 别名(alias) | 描述(description) | |
|---|---|---|
| 面向对象 | 人类 | AI |
| 来源 | 你用 sm alias 自定义 |
技能 SKILL.md frontmatter 原文 |
| 展示位置 | 仅 CLI 列表(list / sources / manage) |
写入 SKILLS.md 供 AI 识别 |
| 是否可改 description | 否 | 同步时使用原文 |
别名是给你看的,description 是给 AI 用的。如果修改了 description,AI 就无法准确识别技能用途——所以别名与 description 被刻意分开,互不影响。
SKILLS.md 文件结构
sm sync 在 SKILLS.md 中维护一个被标记包裹的受管理区块:
<!-- SKILLS_TABLE_START -->
<!-- Managed by yeah-skills-manager (sm sync). Do not edit this block manually. -->
<available_skills>
... 给 AI 用的 <skill> XML 条目 ...
</available_skills>
## Selected Skills
... 给人看的 Markdown 表格 ...
<!-- SKILLS_TABLE_END -->
- 两个标记之间的内容由
sm sync全权管理,请勿手动编辑。 - 标记之外的内容(如自定义说明)会被完整保留。
存储位置
| 路径 | 说明 |
|---|---|
~/.yeah-skills-manager/ |
存储根目录 |
~/.yeah-skills-manager/skills/<name>/ |
每个技能的副本(含 references/、scripts/、assets/) |
~/.yeah-skills-manager/registry.json |
技能元数据登记表(来源、别名、安装/更新时间) |
~/.yeah-skills-manager/.tmp/ |
安装/更新时克隆 Git 仓库的临时目录 |
从源码开发
git clone <this-repo>
cd skills-manager
npm install
npm run dev -- <command> # 用 tsx 直接运行源码,例如:npm run dev -- list
npm run typecheck # 仅类型检查
npm run build # 编译到 dist/
npm start -- <command> # 运行编译产物License
MIT