---
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` 即可，无需先构建。
