Skip to main content

skill-manager

管理 Agent Skills 全生命周期:多源发现、去重溯源、评测对比、安全审查、经 skills CLI 安装/更新/卸载、各 Agent 链接验证与状态诊断。 TRIGGER(中文):"找个适合 X 的技能""有没有现成的 X 技能""对比/评测一下这几个技能""安装这个技能""更新已装技能""卸载/删掉某技能""检查技能状态""技能装不上/看不见了""skill manager"。 DO NOT TRIGGER:从零创作自研技能(用 skill-creator);把自家技能发布到 GitHub 等多平台(用 skill-publisher);项目版本发布流程(用 release-...

Install this skill

or
50/100

Security score

The skill-manager skill was audited on Oct 2, 2026 and we found 14 security issues across 2 threat categories. Review the findings below before installing.

Categories Tested

Security Issues

low line 154

Command substitution pattern

SourceSKILL.md
152
153```bash
154for d in ~/.claude/skills/*; do printf '%s -> %s\n' "$(basename "$d")" "$(readlink "$d" 2>/dev/null || echo 非链接)"; done
155```
156
medium line 19

Access to home directory dotfiles

SourceSKILL.md
17
181. **CLI 是唯一执行层。** 安装/更新/卸载一律走 `npx skills`,禁止把 git clone / cp -R 当常规安装方式;只有 CLI 已完成安装但 Agent 链接缺失或损坏时,才允许安全地手动修复软链接。
192. **~/.agents/skills 是唯一实体。** 全局技能的真实文件只存在 `~/.agents/skills/<name>/`;symlink 类 Agent 目录(~/.claude/skills、~/.openclaw/skills 等)只能是软链接,绝不允许同一技能存在两份实体副本。
203. **安装前必过安全审查。** 安装与更新前必须读候选技能完整源码并按 `references/security-vetting.md` 审查;安全是硬门槛判定(PASS / WARNING / DANGER)而非评分项,DANGER 直接淘汰。
214. **只读自由,写入需意图。** 搜索、读源码、读元数据、查状态、非破坏诊断无需确认;安装、卸载、替换文件必须来自用户明确意图。
medium line 28

Access to home directory dotfiles

SourceSKILL.md
26本机 Agent 分两类(CLI 安装时自己也这么分组,实测行为):
27
28**直读类(universal)**:CLI 注册表里技能目录就是 `.agents/skills` 的 Agent,安装**不建链、也不核查其链接**——Codex、Cursor、Gemini CLI、Antigravity、GitHub Copilot、OpenCode(其全局目录 `~/.config/opencode/skills` 独立,无链接即不核查)等。可见性判据:`~/.agents/skills/<name>/SKILL.md` 存在即可。
29
30**ZCode 特例**:ZCode 应用自身直读 `~/.agents/skills`(新技能须新会话生效),但 CLI 注册表把 zcode 归为 symlink 类(全局目录 `~/.zcode/skills`,本机现为空)——安装**勿用 `-a zcode`**;装后发现 `~/.zcode/skills` 出现链接时如实报告(与直读叠加成双路可见)。
medium line 30

Access to home directory dotfiles

SourceSKILL.md
28**直读类(universal)**:CLI 注册表里技能目录就是 `.agents/skills` 的 Agent,安装**不建链、也不核查其链接**——Codex、Cursor、Gemini CLI、Antigravity、GitHub Copilot、OpenCode(其全局目录 `~/.config/opencode/skills` 独立,无链接即不核查)等。可见性判据:`~/.agents/skills/<name>/SKILL.md` 存在即可。
29
30**ZCode 特例**:ZCode 应用自身直读 `~/.agents/skills`(新技能须新会话生效),但 CLI 注册表把 zcode 归为 symlink 类(全局目录 `~/.zcode/skills`,本机现为空)——安装**勿用 `-a zcode`**;装后发现 `~/.zcode/skills` 出现链接时如实报告(与直读叠加成双路可见)。
31
32**symlink 类**:CLI 安装时在其目录创建指向 canonical 的软链接——Claude Code(`~/.claude/skills/`)、OpenClaw(`~/.openclaw/skills/`)、Qwen(`~/.qwen/skills/`)、Kilo Code(`~/.kilocode/skills/`)等。可见性判据:对应目录下 `<name>` 为软链接且解析后指向 `~/.agents/skills/<name>`。
medium line 32

Access to home directory dotfiles

SourceSKILL.md
30**ZCode 特例**:ZCode 应用自身直读 `~/.agents/skills`(新技能须新会话生效),但 CLI 注册表把 zcode 归为 symlink 类(全局目录 `~/.zcode/skills`,本机现为空)——安装**勿用 `-a zcode`**;装后发现 `~/.zcode/skills` 出现链接时如实报告(与直读叠加成双路可见)。
31
32**symlink 类**:CLI 安装时在其目录创建指向 canonical 的软链接——Claude Code(`~/.claude/skills/`)、OpenClaw(`~/.openclaw/skills/`)、Qwen(`~/.qwen/skills/`)、Kilo Code(`~/.kilocode/skills/`)等。可见性判据:对应目录下 `<name>` 为软链接且解析后指向 `~/.agents/skills/<name>`。
33
34两类归属与目录清单**以实际枚举为准,勿硬编码**:
low line 37

Access to home directory dotfiles

SourceSKILL.md
35
36```bash
37ls -d ~/.claude/skills ~/.openclaw/skills ~/.qwen/skills ~/.kilocode/skills ~/.config/opencode/skills ~/.cursor/skills ~/.gemini/skills ~/.gemini/antigravity/skills ~/.codex/skills ~/.copilot/skills ~/.factory/skills 2>/dev/null
38```
39
low line 97

Access to home directory dotfiles

SourceSKILL.md
952. **执行安装**(本机约定一律全局安装,命令显式带 `-g`——注意 CLI 不带 `-g` 时默认装到项目目录):
96 ```bash
97 # 默认:canonical 落 ~/.agents/skills;symlink 类 Agent 自动建链,直读类 Agent 直读无需链接(实测行为)
98 npx skills add <owner/repo> --skill <skill-name> -g -y
99 # 收窄:只给指定 Agent 安装(技能名含空格须加引号,如 --skill "Convex Best Practices")
medium line 104

Access to home directory dotfiles

SourceSKILL.md
102 CLI 行为异常时,先换 `npx skills@latest ...` 重试一次再排查。
1033. **三重验证**:
104 - `~/.agents/skills/<name>/SKILL.md` 存在且可读;
105 - symlink 类 Agent 的链接正确(`ls -la` + `readlink`,对照上方可见性模型;直读类不核查链接,canonical 存在即可);
106 - frontmatter 的 name 与目录名一致。
medium line 125

Access to home directory dotfiles

SourceSKILL.md
123```
124
125- 卸载后验证:`~/.agents/skills/<name>` 与各 Agent 链接均不存在。
126- **孤儿链接清理**:canonical 已删但 Agent 链接残留时——先确认该路径确为软链接且指向已删除的 canonical,再仅 `rm` 链接本体;未验证指向关系前禁止 `rm -rf`。
127- **红线(无确认例外)**:`~/.agents/skills` 下的文件永不物理删除。注意 `npx skills remove <name> -g` 会**递归强删 canonical 实体**,且在 AI agent 环境下自动跳过确认(实测源码行为)——因此对 `~/.agents/skills` 的 CLI remove 仅限"用户点名卸载的第三方技能"(Benchmark 临时目录内自装自清不在此列);自制技能与身份存疑技能**一律不执行 CLI remove**(哪怕它出现在 list 里、哪怕用户催促确认),只给替代方案(移入 ~/.agents/skills-disabled 停用、仅移除 Agent 链接、用户自行归档)。自制技能的参考判据是 `npx skills list -g` 中 Source 为 `local`(如 commit、reply-polish);注意经 CLI 安装过的自制技能会带上游 Source(如 simplify 实测显示为 brianlovin/agent-config)——身份存疑时向用户求证,勿只认 Source 字段。
medium line 127

Access to home directory dotfiles

SourceSKILL.md
125- 卸载后验证:`~/.agents/skills/<name>` 与各 Agent 链接均不存在。
126- **孤儿链接清理**:canonical 已删但 Agent 链接残留时——先确认该路径确为软链接且指向已删除的 canonical,再仅 `rm` 链接本体;未验证指向关系前禁止 `rm -rf`。
127- **红线(无确认例外)**:`~/.agents/skills` 下的文件永不物理删除。注意 `npx skills remove <name> -g` 会**递归强删 canonical 实体**,且在 AI agent 环境下自动跳过确认(实测源码行为)——因此对 `~/.agents/skills` 的 CLI remove 仅限"用户点名卸载的第三方技能"(Benchmark 临时目录内自装自清不在此列);自制技能与身份存疑技能**一律不执行 CLI remove**(哪怕它出现在 list 里、哪怕用户催促确认),只给替代方案(移入 ~/.agents/skills-disabled 停用、仅移除 Agent 链接、用户自行归档)。自制技能的参考判据是 `npx skills list -g` 中 Source 为 `local`(如 commit、reply-polish);注意经 CLI 安装过的自制技能会带上游 Source(如 simplify 实测显示为 brianlovin/agent-config)——身份存疑时向用户求证,勿只认 Source 字段。
128
129## 八、status(技能状态表)
medium line 146

Access to home directory dotfiles

SourceSKILL.md
144
145- `OK`:canonical 存在,且本应存在的 symlink 类链接均正常(直读类只需 canonical 存在)
146- `broken-link`:canonical 存在,但本应存在的 symlink 类链接(Agents 字段列出该 symlink 类 Agent,或 add 时用 `-a` 指定过)缺失或断裂。**只核查 symlink 类**——Agents 字段里的直读类 Agent(Codex/Cursor/Gemini CLI 等)从不据此报 broken-link,否则会整列误报;zcode 虽在 CLI 注册表归 symlink 类,但 ZCode 应用直读 canonical,`~/.zcode/skills` 为空属正常态,同样不据此报 broken-link(该目录出现链接时仅如实备注双路可见)。Agents 字段会截断(前 5 个 + "+N more"):无法确认某 symlink 类 Agent 是否在列时以链接实测为准——链接在记 ✓;链接不在且该 Agent 未直接出现在字段里,记 `-` 并注明"字段截断无法确认",不凭猜记 ✗
147- `orphan-link`:canonical 不存在,但 Agent 目录下链接残留
148- `conflict`:Agent 路径上是实体目录,或链接解析后目标 ≠ `~/.agents/skills/<name>`(比较前对目标做 realpath/去尾斜杠归一化;绝对路径链接归一化后指向 canonical 即正常,不算 conflict)
medium line 148

Access to home directory dotfiles

SourceSKILL.md
146- `broken-link`:canonical 存在,但本应存在的 symlink 类链接(Agents 字段列出该 symlink 类 Agent,或 add 时用 `-a` 指定过)缺失或断裂。**只核查 symlink 类**——Agents 字段里的直读类 Agent(Codex/Cursor/Gemini CLI 等)从不据此报 broken-link,否则会整列误报;zcode 虽在 CLI 注册表归 symlink 类,但 ZCode 应用直读 canonical,`~/.zcode/skills` 为空属正常态,同样不据此报 broken-link(该目录出现链接时仅如实备注双路可见)。Agents 字段会截断(前 5 个 + "+N more"):无法确认某 symlink 类 Agent 是否在列时以链接实测为准——链接在记 ✓;链接不在且该 Agent 未直接出现在字段里,记 `-` 并注明"字段截断无法确认",不凭猜记 ✗
147- `orphan-link`:canonical 不存在,但 Agent 目录下链接残留
148- `conflict`:Agent 路径上是实体目录,或链接解析后目标 ≠ `~/.agents/skills/<name>`(比较前对目标做 realpath/去尾斜杠归一化;绝对路径链接归一化后指向 canonical 即正常,不算 conflict)
149- `local`:`npx skills list -g` 显示 Source 为 `local` 的自制/手工安装技能(正常现象,不视为问题)。状态列**优先标 `local`**;其在 Agent 目录的既有实体目录布局(如 agent-reach)单独备注即可,不按 conflict 给修复建议
150
low line 154

Access to home directory dotfiles

SourceSKILL.md
152
153```bash
154for d in ~/.claude/skills/*; do printf '%s -> %s\n' "$(basename "$d")" "$(readlink "$d" 2>/dev/null || echo 非链接)"; done
155```
156
low line 163

Access to home directory dotfiles

SourceSKILL.md
161```bash
162# 相对路径形式,与本机既有链接(../../.agents/skills/<name>)及 CLI 行为一致
163ln -sfn ../../.agents/skills/<name> ~/.claude/skills/<name>
164```
165
Scanned on Oct 2, 2026
View Security Dashboard
Installation guide →