skill-security-check · git:20260925.32ce6c0 · 2026-09-25 · sha256 ea2810b6cfebfdfa

skill-security-check git:20260925.32ce6c0A

Immutable. This exact content never changes and is served at /api/v1/blob/ea2810b6cfebfdfa.

---
name: skill-security-check
description: "Skill 安装前的静态安全检查:对目标 skill 目录执行 11 项风险扫描(数据外泄、凭证访问、文件系统越界、敏感身份文件访问、动态代码执行、权限提升、持久化机制、运行时安装、代码混淆、进程侦察、浏览器会话访问),输出风险等级 / 最终评级 / 置信度报告并给出安装建议。支持 JavaScript/TypeScript、Python、Rust、Java、Go、C/C++、Ruby、PHP、Shell、PowerShell、Perl。必须在安装或更新任何第三方、社区或来源不明的 skill 之前使用此 skill 做全面安全审查。触发词:安全检查、安全审查、skill 安全、安装前检查、检查这个 skill 安全吗、有没有风险、第三方 skill 审查、security check、security audit、skill safety、is this skill safe、malicious skill。"
---

# Skill 安装前安全检查 (Multi-Language)

## Purpose

在安装一个 skill 之前,把它当作不可信代码做只读静态审查,产出一份带风险等级、最终评级和
置信度的 Markdown 报告,并给出「可以安装 / 需用户确认 / 不建议安装」的明确建议。它回答的是
"这个 skill 会不会外泄数据、越权、驻留或混淆代码",不是"这个 skill 好不好用"。

**支持语言**: JavaScript/TypeScript, Python, Rust, Java, Go, C/C++, Ruby, PHP, Shell, PowerShell, Perl

## When to Use

- 安装来自 GitHub、npm、PyPI、Crates.io 或其他源的第三方 skill。
- 安装社区贡献的 skill。
- 更新已安装的 skill 到新版本。
- 用户对某个 skill 的安全性有疑问,或要求"检查一下这个 skill"。
- 触发词:安全检查、安全审查、安装前检查、skill 安全、security check、security audit、
  is this skill safe。

## When NOT to Use

- **代码质量 / 重构审查**(不涉及不可信来源)-> 交给 `claude-simplify` 或 `clean-code`。
- **自己正在编写、且完全可信的 skill** -> 无需安装前审查;如需自查,只跑工具即可。
- **运行时防护 / 入侵检测 / 沙箱** -> 本 skill 是安装前的一次性静态审查,不是运行时安全产品。
- **非 skill 的普通依赖审计**(如 `npm audit` 场景)-> 用对应生态的工具。
- **要求执行或"试跑"目标代码来验证** -> 本 skill 只做只读静态分析,拒绝执行被检查代码。

## Workflow

1. **获取 skill 文件**:本地路径直接读取;远程链接先下载到临时目录再扫描。
2. **优先跑工具**:`node <skill>/scripts/security-check.js <skill-path>`。工具对目标目录执行
   11 项静态扫描并写出报告。
3. **人工复核**:按 `references/checklist.md` 逐项确认;工具覆盖不到或结果可疑时,用
   `references/grep-patterns.md` 的 grep 定位具体代码位置。
4. **判定等级**:按 `references/report-format.md` 汇总为风险等级 / 最终评级 / 置信度。
5. **给出建议**:明确写「可以安装 / 请先看需要用户知晓的点 / 不建议安装」,并保存报告。

## Decision Rules

- 目标是本地目录 -> 直接扫描;是远程仓库/包 -> 先下载到临时目录,扫描下载结果。
- 命中第 1 项数据外泄、第 6 项权限提升、或第 5 项恶意动态执行 -> 至少 HIGH 风险,除下方
  Priority 的受控声明情形外不得降级。
- 目标 skill 声明了 `network_access: user-configured-origin` -> 按「需要用户知晓并在人工
  审查后放行」处理,**不自动判 SAFE**;仍须确认代码只使用用户配置的 base URL(见
  `references/checklist.md` 第 1 项「网络能力声明」)。
- 命中第 7 项持久化或第 11 项浏览器会话复用 -> 通常是「需要用户知晓的点」,不是漏洞,但必须
  写进报告。
- 命中第 9 项代码混淆 -> 置信度降为 LOW/MEDIUM,并在报告中标注需人工复核。
- 某项无法判定 -> 记为「需要人工确认」,不得猜测结论。
- 支持语言之外的代码 -> 明确说明未覆盖,不给出结论。
- 报告落盘位置 -> 当前目录 `security-report-<skill-name>.md`。

## Constraints

- **只读分析,绝不执行被检查 skill 的任何代码**,也不运行其安装脚本。
- 静态分析不能替代完整安全审计;报告必须写明这一限制。
- 「已声明能力」不是安全证明,只能把网络请求降级为「需要用户知晓」。
- 不得对未覆盖的语言或高度混淆代码给出确定结论。
- 报告中的 skill 名称、路径、代码位置必须来自实际扫描目标,不得编造。

## Priority

1. **硬阻断优先**:数据外泄、权限提升、恶意动态执行 -> 不得因「已声明用途」降为 SAFE。
2. **受控的已声明能力**可降为「需要用户知晓」,但仅在确认代码不存在固定第三方上报端点、
   隐蔽 telemetry 或跨主机重定向之后。
3. **工具结果与人工判断冲突时**,以人工复核为准,并把该项标为 MEDIUM + 需人工确认。

## Stop Conditions

- 目标目录大到遍历成本不可接受,或大量文件命中混淆指标 -> 停止全量逐行审查,改为抽样扫描
  并把置信度标为 LOW。
- 单项无法判定 -> 停止该项、记为需人工确认,不继续推测。
- 不为了"更确定"而反复重扫同一目录;一次工具扫描 + 一次人工复核即止。

## Verification

- [ ] 11 项检查逐项都有结论(通过 / 需要用户知晓 / 风险)。
- [ ] 报告同时给出风险等级、最终评级、置信度。
- [ ] 每条风险都指向具体文件、行号或检测模式。
- [ ] 未执行被检查 skill 的任何代码。
- [ ] 报告已保存为 `security-report-<skill-name>.md`,且给出了明确的安装建议。

## Output

- **Outcome**:一份 Markdown 安全检查报告(安全优势 / 需要用户知晓的点 / 安全风险 / 详细
  检查项表格),外加明确的安装建议。
- **Done when**:11 项检查完成,报告写入 `security-report-<skill-name>.md`,安装建议明确。
- **Evidence**:报告中的风险等级、最终评级、置信度,以及每条风险对应的具体代码位置。

## References

Load only when needed:

- `references/checklist.md` — 执行 11 项检查、或需要单项目判定标准与网络能力声明处理方式时读。
- `references/report-format.md` — 准备产出报告、或需要判定风险等级 / 最终评级 / 置信度时读。
- `references/grep-patterns.md` — 工具未覆盖、需要人工 grep 定位风险模式时读。
- `references/six-layer-architecture.md` — 仅在扩展本工具实现(六层架构、基线记忆、AST
  语义分析、多层解码)时读;它不是当前 11 项静态扫描的运行逻辑。

## Examples

仅在需要参照成品报告形态时读。示例中的 skill 名与路径仅为样例,不要照抄:

- `examples/security-report-attention-daily.md` — 参照「低风险 + 可以安装」的报告成品形态时读。
- `examples/security-report-infocard.md` — 参照带「需要用户知晓的点」(浏览器自动化)的报告形态时读。
- `examples/security-report-fengshuixue.md` — 参照短报告的裁剪形态时读。
- `examples/security-report-article-deconstructor.md` — 参照另一类 skill 的报告结构时读。
- `examples/security-report-translate-polisher.md` — 参照翻译类 skill 的报告结构时读。

## Scripts

- `scripts/security-check.js` — 主扫描入口。运行 `node scripts/security-check.js <skill-path>`,
  对目标目录执行 11 项静态扫描并输出 Markdown 报告。
- `scripts/security-check.test.js` — 工具自测。运行 `npm test`(等价于
  `node scripts/security-check.test.js`)验证检测逻辑。

实现说明:`src/` 为 TypeScript 源码(`npm install && npm run build` 编译至 `dist/`,
`dist/` 被 .gitignore 忽略);日常审查用 `scripts/security-check.js` 即可,无需先构建。