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