# Skill Install Guard

> 安全拦截型技能，确保安装任何技能前都经过 skill-vetter 的安全审查，输出审查报告并要求用户明确确认，禁止私自安装。

- Skill: `dvcrn/skill-install-guard` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dvcrn/skill-install-guard`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/skill-install-guard/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/skill-install-guard

---


# Skill Install Guard

## Overview

这是安装技能的**安全守门员**。当用户请求安装任何技能时（通过 clawhub install、URL 或其他方式），这个技能会：

1. **拦截**安装请求：暂停任何自动安装行为
2. **审查**技能代码：使用 skill-vetter 进行安全检查
3. **报告**审查结果：提供详细的安全风险评估
4. **确认**用户意图：要求饲养员明确同意安装
5. **执行**安装操作：只有在用户确认后才执行

**核心理念**：没有明确的用户授权，绝不安装任何技能。

## 触发条件

当用户请求以下操作时触发此技能：

```
"安装技能 <skill-name>"
"下载技能 <skill-id>"
"clawhub install <skill>"
"从 ClawHub 安装..."
"安装这个技能"
```

## 安装审查流程

### 第 1 步：识别安装请求

当用户请求安装技能时，首先确认是否为安装意图：

- 如果是**查看/搜索**技能 → 不触发此技能
- 如果是**安装**技能 → 触发此技能并进入审查流程

**识别示例**：
- ✅ "安装 skill-creator" → 触发
- ✅ "用 clawhub 安装 weather" → 触发
- ✅ "下载 ID 为 xxx 的技能" → 触发
- ❌ "搜索天气相关的技能" → 不触发
- ❌ "看看 skill-creator 做什么的" → 不触发

### 第 2 步：暂停并告知用户

立即停止任何安装操作，告知用户安全审查即将开始：

```
🦐 停住！准备安装技能前，我们需要先进行安全审查。
这将使用 skill-vetter 检查技能代码的安全性和风险等级。
```

### 第 3 步：调用 skill-vetter

使用 skill-vetter 进行安全审查：

**如果技能已在本地 workspace**：
```bash
# 直接审查本地技能文件夹
cd $WORKSPACE/skills/<skill-name>
# 读取 SKILL.md 和所有代码文件
# 根据 skill-vetter/SKILL.md 的审查标准进行检查
```

**如果技能未下载**：
```bash
# 先获取技能信息
clawhub info <skill-id> --format json
# 根据信息决定是否下载后审查
# 或者直接使用 skill-vetter 的在线审查功能（如果可用）
```

**必要操作**：
1. 读取并加载 skill-vetter 的 SKILL.md（路径通常在 `~/.openclaw/workspace/skills/skill-vetter/SKILL.md` 或类似位置）
2. 按照 skill-vetter 技能文档中的审查标准逐项检查
3. 记录所有发现的安全问题

### 第 4 步：输出审查报告

生成结构化的审查报告，包含以下内容：

**基本信息**：
- 技能名称和版本
- 来源（ClawHub ID 或 URL）
- 发布者信息（如果可用）

**审查结果**：
- 风险等级：🟢 低 / 🟡 中 / 🔴 高 / 🚨 极端
- 发现的问题列表（按严重程度排序）
- 权限需求评估

**详细检查项**（基于 skill-vetter 标准）：
- [ ] 来源可信度检查
- [ ] 可疑模式检测（URL、凭证、系统文件访问）
- [ ] 权限范围评估
- [ ] 外部依赖分析
- [ ] 代码复杂度评估

**报告示例**：

```markdown
🔍 **Skill 审查报告**

**技能**：skill-creator v1.0.0
**来源**：ClawHub (official)
**风险等级**：🟢 低

**审查项**：
✅ 来源可信：官方技能，签名验证通过
✅ 无可疑模式：未检测到凭证窃取、硬编码密钥等
✅ 权限正常：仅文件读写，无网络请求
⚠️ 外部依赖：需要 Python 运行时

**详细发现**：
- 技能文档清晰完整
- 代码结构合理
- 无执行外部命令的脚本
- 文件操作限制在 workspace 之内

**建议**：可以安全安装

---
```

### 第 5 步：请求用户确认

显示审查报告后，**明确要求用户确认**：

```
🦐 以上是安全审查结果。

**请确认：你是否允许安装此技能？**

回复以下之一：
- "确认安装" 或 "安装" 或 "yes" → 执行安装
- "取消" 或 "不安装" 或 "no" → 停止操作
- "更多信息" → 提供更详细的审查说明

等待你的明确指令...
```

**重要规则**：
- ⚠️ 不得在用户确认前执行任何安装操作
- ⚠️ 不得预设用户的同意（不要说"如果你同意，我就安装"）
- ⚠️ 必须得到明确的"确认"或类似的肯定回复
- ⚠️ 如果用户回复"更多信息"，提供更多细节，然后再次请求确认

### 第 6 步：执行安装

只有收到用户的**明确确认**后才执行安装：

**确认词包括**：
- "确认安装"
- "安装"
- "yes"
- "好的"
- "继续"
- "可以"
- 同样肯定的中文或英文表达

**执行安装**：
```bash
clawhub install <skill-id>
```

**安装后**：
- 告知用户安装成功
- 建议用户查看安装日志（如有问题）

### 第 7 步：处理取消请求

如果用户回复取消或否定：

- ⛔ 停止所有安装操作
- 📝 记录取消操作到 memory（可选）
- 🦐 告知用户操作已取消

**取消词包括**：
- "取消"
- "不安装"
- "no"
- "算了"
- 同样否定的中文或英文表达

## 特殊场景处理

### 场景 1：批量安装请求

如果用户请求一次安装多个技能：

```
用户："同时安装 skill-creator, weather, 和这三个技能"
```

**处理方式**：
1. 告知用户：每次只能安装一个技能
2. 询问优先安装哪一个
3. 对每个技能逐一进行审查流程

### 场景 2：从 URL 安装

如果用户提供 GitHub 或其他 URL：

```
用户："从 https://github.com/xxx/skill.git 安装"
```

**处理方式**：
1. 告知用户：非 ClawHub 来源的技能需要更严格的审查
2. 询问：是否继续
3. 如果继续，先克隆或下载到临时位置
4. 使用 skill-vetter 严格审查（高风险假设）
5. 报告时强调"非官方来源"风险

### 场景 3：审查失败

如果 skill-vetter 无法完成审查：

**处理方式**：
1. 告知用户：审查过程遇到问题
2. 提供错误信息摘要
3. 询问：
   - 是否重试审查
   - 是否停止安装（推荐选项）
4. 如果用户坚持安装：
   - 再次警告风险
   - 要求明确确认"我理解风险，坚持安装"
   - 记录到 memory（跳过审查风险的案例）

### 场景 4：技能更新

如果用户请求更新现有技能：

```
用户："更新 skill-creator"
```

**处理方式**：
1. 视为"新安装"请求，执行完整审查流程
2. 报告时对比"当前版本"和"新版本"
3. 强调更新的变更内容（如果可能）

## 记录和追踪

### 安装历史

每次安装操作（成功或失败）都可以记录到 memory 文件中：

**建议格式**（`memory/skill-install-history.md`）：

```markdown
## [日期] 技能安装记录

### 技能名称
- **版本**：1.0.0
- **来源**：ClawHub (xxx)
- **风险等级**：🟢 低
- **审查结果**：通过
- **用户决定**：确认安装
- **安装时间**：2026-03-10 09:15:00
- **操作结果**：成功

### 技能名称
- **版本**：2.1.0
- **来源**：GitHub (xxx/skill)
- **风险等级**：🔴 高
- **审查结果**：发现高风险代码
- **用户决定**：取消安装
- **操作结果**：已取消
```

**何时记录**：
- ✅ 安装成功
- ✅ 安装失败（审查未过或用户取消）
- ⚠️ 跳过审查的特殊情况（需详细说明）

## 错误处理

### skill-vetter 不可用

如果 skill-vetter 未安装或无法加载：

```
错误：skill-vetter 不可用，无法进行安全审查。

选项：
1. 先安装 skill-vetter，然后继续
2. 手动审查代码（高风险，不推荐）
3. 取消本次安装

请选择：
```

### 网络问题

如果无法连接 ClawHub 或下载技能：

```
错误：无法访问 ClawHub，下载失败。

建议：
- 检查网络连接
- 稍后重试
- 使用已下载在本地缓存中的版本（如果有）

请选择：
```

## 安全原则

此技能遵循的核心安全原则：

1. **显式授权优先**：没有明确的用户同意，不执行任何操作
2. **透明性**：清晰地告知用户审查过程和结果
3. **最小权限**：只执行必要的安装操作，不做额外的事情
4. **可审计**：所有安装操作都有记录（可选实现）
5. **失败安全**：当不确定时，选择不安装（保守策略）

## 与其他技能的协作

### skill-vetter
- **关系**：此技能作为 skill-vetter 的工作流封装
- **调用方式**：加载 skill-vetter 的 SKILL.md，遵循其审查标准
- **输出**：基于 skill-vetter 输出生成用户可读的报告

### clawhub
- **关系**：此技能作为 clawhub 命令的安全前置守卫
- **调用时机**：审查通过且用户确认后才调用 `clawhub install`
- **不调用**：未经审查确认，不执行任何 clawhub install 命令

---

**记住：你的职责是确保安全，而不是方便安装。当有疑问时，选择更安全的选项。**

