Skip to content

列出已安装技能

学完你能做什么

  • 使用 openskills list 查看所有已安装的技能
  • 理解 (project)(global) 位置标签的区别
  • 快速统计项目技能和全局技能的数量
  • 判断技能是否安装成功

你现在的困境

安装了几个技能后,你可能遇到这些问题:

  • "我刚才安装了哪些技能?忘记了"
  • "这个技能是安装到项目还是全局了?"
  • "为什么某些技能在 A 项目能看到,在 B 项目看不到?"
  • "我想删除一些用不到的技能,但不知道具体名字"

openskills list 命令就是为了解决这些疑惑——它像技能的"目录",帮你一目了然地看到所有已安装的技能及其位置。

什么时候用这一招

场景动作
安装技能后确认是否成功执行 openskills list 查看技能是否出现
切换到新项目,检查可用技能执行 openskills list 看看有哪些 project 技能
清理技能前先盘点执行 openskills list 列出所有技能,再删除不需要的
调试技能加载问题确认技能名和安装位置是否正确

核心思路

OpenSkills 支持在4 个位置安装技能(按查找优先级):

  1. project .agent/skills - 项目级的通用技能目录(多代理环境)
  2. global .agent/skills - 全局的通用技能目录(多代理环境)
  3. project .claude/skills - 项目级的 Claude Code 技能目录
  4. global .claude/skills - 全局的 Claude Code 技能目录

openskills list 会:

  1. 遍历这 4 个目录查找所有技能
  2. 去重:同一个技能名只显示一次(优先显示 project 的)
  3. 排序:project 技能在前,global 技能在后;同一位置内按字母顺序
  4. 标记位置:用 (project)(global) 标签区分
  5. 统计汇总:显示 project 技能数、global 技能数和总数

为什么需要去重?

如果你在 project 和 global 都安装了同一个技能(例如 pdf),OpenSkills 会优先使用 project 版本。list 命令只显示一次,避免混淆。

跟我做

第 1 步:列出所有已安装技能

为什么 快速查看当前环境下有哪些技能可用

执行以下命令:

bash
npx openskills list

你应该看到

如果没有安装任何技能,会显示:

Available Skills:

No skills installed.

Install skills:
  npx openskills install anthropics/skills         # Project (default)
  npx openskills install owner/skill --global     # Global (advanced)

如果已安装技能,会看到类似:

Available Skills:

  pdf                         (project)
    Comprehensive PDF manipulation toolkit for extracting text and tables...

  code-analyzer                (project)
    Static code analysis tool for identifying security vulnerabilities...

  email-reader                 (global)
    Read email content and attachments via IMAP protocol...

Summary: 2 project, 1 global (3 total)

第 2 步:理解输出格式

为什么 知道每行代表什么含义,才能快速定位需要的信息

输出格式说明:

部分说明
pdf技能名称(从 SKILL.md 的 name 字段提取)
(project)位置标签:蓝色表示项目级技能,灰色表示全局技能
Comprehensive PDF...技能描述(从 SKILL.md 的 description 字段提取)
Summary: 2 project, 1 global (3 total)统计汇总:project 技能数、global 技能数、总数

第 3 步:验证位置标签

为什么 确认技能安装到了预期位置,避免"为什么这个项目看不到这个技能"的疑惑

尝试以下操作来理解位置标签:

bash
# 1. 安装一个项目级技能
npx openskills install anthropics/skills -y

# 2. 查看列表(应该显示 project 标签)
npx openskills list

# 3. 安装一个全局技能
npx openskills install anthropics/skills --global -y

# 4. 再次查看列表(两个 pdf 技能,只显示一次,标签为 project)
npx openskills list

你应该看到

Available Skills:

  pdf                         (project)
    Comprehensive PDF manipulation toolkit for extracting text...

Summary: 1 project, 0 global (1 total)

即使全局和项目都安装了同一个技能,list 命令也只会显示一次,因为 project 版本优先级更高。

检查点 ✅

确认以下内容:

  • [ ] 执行 openskills list 能看到已安装的技能列表
  • [ ] 能区分 (project)(global) 标签(颜色不同:蓝色 vs 灰色)
  • [ ] Summary 统计数字正确(project 技能数 + global 技能数 = 总数)
  • [ ] 理解同一个技能名只显示一次的规则

踩坑提醒

常见问题 1:找不到刚安装的技能

现象:执行 install 命令成功,但 list 看不到

排查步骤

  1. 检查是否在正确的项目目录下(project 技能只对当前项目可见)
  2. 确认是否安装到了全局(用 --global 标志)
  3. 验证安装位置:
bash
# 检查项目目录
ls -la .claude/skills/

# 检查全局目录
ls -la ~/.claude/skills/

常见问题 2:看到奇怪的技能名

现象:技能名不是你预期的(例如文件夹名 vs SKILL.md 中的 name)

原因:OpenSkills 使用 SKILL.md 中的 name 字段作为技能名,而不是文件夹名

解决方法:检查 SKILL.md 的 frontmatter:

yaml
---
name: pdf  # 这是 list 命令显示的名称
description: Comprehensive PDF manipulation toolkit...
---

常见问题 3:描述显示不全

现象:技能描述被截断了

原因:这是终端宽度的限制,不影响技能内容

解决方法:直接查看 SKILL.md 文件获取完整描述

本课小结

openskills list 是技能管理的"目录"命令,帮你:

  • 📋 查看所有技能:一目了然地看到已安装技能
  • 🏷️ 区分位置标签(project) 表示项目级,(global) 表示全局级
  • 📊 统计汇总:快速了解 project 和 global 技能的数量
  • 🔍 排查问题:验证技能是否安装成功,定位技能位置

核心规则:

  1. 同名技能只显示一次(project 优先)
  2. project 技能在前,global 技能在后
  3. 同一位置内按字母顺序排列

下一课预告

下一课我们学习 更新技能

你会学到:

  • 如何从源仓库刷新已安装技能
  • 批量更新所有技能
  • 处理无元数据的旧技能

附录:源码参考

点击展开查看源码位置

更新时间:2026-01-24

功能文件路径行号
list 命令实现src/commands/list.ts7-43
查找所有技能src/utils/skills.ts30-64
搜索目录配置src/utils/dirs.ts18-25
Skill 类型定义src/types.ts1-6

关键函数

  • listSkills():列出所有已安装技能,格式化输出
  • findAllSkills():遍历 4 个搜索目录,收集所有技能
  • getSearchDirs():返回 4 个搜索目录路径(按优先级)

关键常量

  • 无(搜索目录路径是动态计算的)

核心逻辑

  1. 去重机制:使用 Set 记录已处理的技能名(skills.ts:32-33, 43, 57)
  2. 位置判断:通过 dir.includes(process.cwd()) 判断是否为 project 目录(skills.ts:48)
  3. 排序规则:project 优先,同位置按字母顺序(list.ts:21-26)