Skill 安装前安全检查 (Multi-Language)
此skill用于在skill安装前进行全面的安全检查,确保待安装的skill不会对系统造成安全威胁。
支持语言: JavaScript/TypeScript, Python, Rust, Java, Go, C/C++, Ruby, PHP, Shell, PowerShell, Perl
自动化工具(推荐入口)
本 skill 随附可执行实现,优先用工具扫描,再按需做人工研判:
下方「安全检查流程」即工具的检测逻辑;手动审查时可直接使用文末的 grep 模式。
scripts/security-report-*.md 为示例输出,仅作格式参考(其中引用的 skill 名仅为样例)。
何时使用
在以下情况下必须执行安全检查:
- 安装来自GitHub、npm、PyPI、Crates.io或其他源的第三方skill
- 安装社区贡献的skill
- 更新已安装的skill到新版本
- 对安全性有疑问时
安全检查流程
对于每个待检查的skill,按照以下清单逐项检查:
1. 数据外泄检查
检查目标: 确保skill不会将敏感数据传输到外部服务器
检测模式 (按语言):
- JavaScript:
fetch, axios, XMLHttpRequest, WebSocket
- Python:
requests, urllib, http.client, aiohttp, httpx
- Rust:
reqwest, hyper, ureq, curl
- Java:
HttpClient, HttpURLConnection, OkHttp, Retrofit
- Go:
http.Get, http.Post, net/http
- Ruby:
Net::HTTP, open-uri, httparty, faraday
- PHP:
curl_, file_get_contents, fsockopen
预期结果: ✅ 无 - 无外部服务器通信(除非是skill的核心功能且已明确声明)
2. 凭证访问检查
检查目标: 确保skill安全地访问凭证和敏感配置
检测模式 (按语言):
- JavaScript:
process.env, dotenv
- Python:
os.environ, os.getenv
- Rust:
std::env, dotenv
- Java:
System.getenv, System.getProperty
- Go:
os.Getenv, os.LookupEnv
- Ruby:
ENV[], ENV.
- PHP:
$_ENV, $_SERVER, getenv
预期结果: ✅ 安全 - 仅读取配置型环境变量
3. 文件系统越界检查
检查目标: 确保skill只在预期目录内操作文件
检测模式 (按语言):
- JavaScript:
fs.writeFile, fs.readFile, fs.copyFile
- Python:
open, pathlib, shutil.copy, shutil.move
- Rust:
File::create, File::open, fs::write, std::fs
- Java:
FileWriter, FileReader, Files.write, Files.read
- Go:
os.WriteFile, os.ReadFile, os.Open, os.Create
- Ruby:
File.open, File.write, FileUtils
- PHP:
file_put_contents, file_get_contents, fopen, fwrite
预期结果: ✅ 无 - 仅访问预期目录
4. 身份文件访问检查
检查目标: 确保skill不访问敏感的身份识别文件
检测文件:
MEMORY.md - AI记忆文件
~/.ssh/* - SSH密钥
~/.gitconfig - Git配置
id_rsa, id_ed25519 - SSH私钥
known_hosts, authorized_keys
预期结果: ✅ 无 - 不访问 MEMORY.md 等敏感文件
5. 动态代码执行检查
检查目标: 确保动态代码执行是可控且安全的
检测模式 (按语言):
- JavaScript:
eval(), new Function(), child_process, vm.runInNewContext
- Python:
exec(), eval(), subprocess.call, os.system, os.popen
- Rust:
Command::new, std::process::Command, libc::system
- Java:
Runtime.exec, ProcessBuilder, ScriptEngine
- Go:
exec.Command, os.Exec, syscall.Exec
- Ruby:
eval, instance_eval, system, ``, Open3
- PHP:
eval(), exec(), system(), shell_exec(), proc_open()
预期结果: ✅ 受控 - 仅用于 Chrome 自动化或明确的合法用途
6. 权限提升检查
检查目标: 确保skill不尝试提升系统权限
检测模式 (按语言):
- Shell:
sudo, chmod +x, chmod 777, chown
- Python:
os.chmod, os.chown, shutil.copymode
- Rust:
std::os::unix::fs::PermissionsExt, set_permissions
- Java:
Runtime.exec("sudo"), ProcessBuilder
- Go:
os.Chmod, os.Chown, syscall.Chmod
- Ruby:
File.chmod, File.chown, system("sudo")
- PHP:
chmod(), chown(), exec(), system()
预期结果: ✅ 无 - 无特权操作
7. 持久化机制检查
检查目标: 确保skill不会在后台持续运行或保持驻留
检测模式 (按语言):
- Shell:
daemon, cron, crontab, systemctl, nohup
- Python:
schedule, APScheduler, threading.Timer, daemon=True
- Rust:
tokio::time, std::thread::spawn
- Java:
TimerTask, ScheduledExecutorService, @Scheduled
- Go:
time.Tick, time.NewTicker
- Ruby:
whenever, rufus-scheduler, Thread.new
- 开机启动:
/etc/init.d, /etc/systemd, Library/LaunchAgents, Windows注册表Run键
预期结果: ✅ 无 - 无后台驻留
8. 运行时安装检查
检查目标: 确保依赖是预先声明的,运行时不会偷偷安装
检测模式 (按语言):
- JavaScript:
npm install, yarn add, pnpm add
- Python:
pip install, pip3 install, subprocess.call("pip"), importlib
- Rust:
Command::new("cargo")
- Java:
Runtime.exec("mvn"), ProcessBuilder("gradle")
- Go:
exec.Command("go get")
- Ruby:
system("gem install")
预期结果: ✅ 无 - 依赖预先声明
9. 代码混淆检查
检查目标: 确保源代码清晰可读,没有恶意混淆
检测指标:
- 单字母变量比例 > 50%
- 超长行数 (>500字符) > 5行
- 大量长字符串 (>50字符) > 5个
- Base64/Hex编码的可疑字符串 > 10个
- 检测语言: JavaScript, TypeScript, Python, Rust, Java, Go, Ruby, PHP, C/C++
预期结果: ✅ 无 - 源码清晰可读
10. 进程侦察检查
检查目标: 确保skill不会扫描或枚举系统进程
检测模式 (按语言):
- Shell:
ps, tasklist, wmic, /proc/
- Python:
psutil, subprocess.call("ps"), os.listdir("/proc")
- Rust:
sysinfo, psutil, std::process::Command("ps")
- Java:
ProcessHandle.allProcesses, ManagementFactory, sigar
- Go:
exec.Command("ps"), process.
- Ruby:
Sys::ProcTable, `ps`, system("ps")
- PHP:
proc_open, shell_exec("ps"), exec("ps")
预期结果: ✅ 无 - 无系统扫描
11. 浏览器会话访问检查
检查目标: 确保浏览器自动化使用独立的配置文件
检测模式 (按语言):
- JavaScript:
puppeteer, playwright, selenium, --user-data-dir
- Python:
selenium, playwright, pyppeteer, user_data_dir
- Rust:
headless_chrome, thirtyfour, fantoccini
- Java:
selenium, ChromeDriver, WebDriver, HtmlUnitDriver
- Go:
chromedp, rod, playwright-go
- Ruby:
selenium-webdriver, watir, capybara
- PHP:
facebook/webdriver, php-webdriver, panther
预期结果: ✅ 受控 - 使用独立 Chrome 配置文件
执行检查
当用户要求检查一个skill时,按照以下步骤执行:
- 获取skill文件: 如果skill是本地路径,直接读取;如果是远程链接,先下载
- 静态代码分析: 使用grep等工具搜索风险模式(支持多语言)
- 逐项检查: 按照上述11项检查清单逐一验证
- 生成报告: 创建结构化的安全检查报告
输出格式
生成安全检查报告,格式如下:
# 安全审查完成 ✅
已完成对 **xxx** skill
的全面安全审查,并生成详细报告。
## 📊 审查结果
**风险等级:** 🟢 LOW / 🟡 MEDIUM / 🔴 HIGH
**最终评级:** ✅ SAFE / ⚠️ REVIEW_NEEDED / ❌ UNSAFE
**置信度:** HIGH / MEDIUM / LOW
---
## 🔍 关键发现
### ✅ 安全优势
1. **无数据外泄** - 无外部服务器通信
2. **透明代码** - 所有源码可读,无混淆
3. **凭证安全** - 不访问敏感凭证或会话令牌
4. **作用域隔离** - 仅访问用户明确提供的文件
5. **无持久化** - 无 crontab、启动脚本或后台服务
6. **无权限提升** - 无 sudo、chmod 或 setuid 操作
7. **干净的依赖** - 所有依赖都是预先声明的
### ⚠️ 需要用户知晓的点(非漏洞)
1. **Chrome 会话持久化** - 首次运行需手动登录,会话保存在 Chrome 配置文件中
2. **网络图片下载** - 如果 Markdown 包含外部图片 URL,skill 会下载
3. **浏览器自动化** - 通过 CDP 控制 Chrome(发布功能所需)
### 🚨 安全风险(如果有)
1. **数据外泄** - [具体问题描述]
2. **权限提升** - [具体问题描述]
...
---
## 📋 详细检查项
| 检查项 | 结果 | 说明 |
|--------|------|------|
| 数据外泄 | ✅ | 无外部服务器通信 |
| 凭证访问 | ✅ | 仅读取配置型环境变量 |
| ... | ... | ... |
## 💡 建议操作
- **安全等级:** ✅ 安全 / ⚠️ 需要注意 / ❌ 高风险
- **建议:** 可以安装 / 请仔细阅读需要用户知晓的点 / 不建议安装
风险评级标准
风险等级
- 🟢 LOW (低风险) - 所有检查项通过,或仅有低风险问题且已明确说明用途
- 🟡 MEDIUM (中风险) - 存在中风险问题,或需要用户确认某些功能
- 🔴 HIGH (高风险) - 存在数据外泄、权限提升、恶意代码等高风险问题
最终评级
- ✅ SAFE - 可以安全安装
- ⚠️ REVIEW_NEEDED - 需要用户查看"需要用户知晓的点"后决定是否安装
- ❌ UNSAFE - 不建议安装
置信度
- HIGH - 静态分析结果明确,无歧义
- MEDIUM - 部分情况需要人工确认
- LOW - 代码复杂或存在混淆,检测结果不确定
报告结构说明
报告分为三个主要部分:
- 安全优势 - 展示该skill的安全亮点,让用户了解为什么它是安全的
- 需要用户知晓的点 - 非漏洞,但用户需要了解的功能行为(如浏览器自动化、网络请求等)
- 安全风险 - 真正的安全问题(如果有),会列出具体问题
网络能力声明
需要访问用户指定服务地址的 Skill,应在 SKILL.md frontmatter 中明确声明:
network_access: user-configured-origin
该声明只把网络请求从“未声明外发”降为“需要用户知晓并人工审查”,不会自动证明安全。审查时仍须确认代码只使用用户配置的 base URL,不包含固定第三方上报端点、隐蔽 telemetry 或跨主机重定向。
常见模式搜索
在执行检查时,使用以下grep模式进行快速扫描:
# 网络请求 (多语言)
grep -r "fetch\|axios\|requests\.\|urllib\|reqwest\|http\.client" \
--include="*.js" --include="*.ts" --include="*.py" --include="*.rs"
# 动态代码执行 (多语言)
grep -r "eval\|exec\s*(\|subprocess\|Command::new\|Runtime\.exec" \
--include="*.js" --include="*.ts" --include="*.py" --include="*.rs" --include="*.java" --include="*.go"
# 文件系统访问
grep -r "fs\.\|open\s*(\|File::\|FileWriter\|os\.WriteFile" \
--include="*.js" --include="*.ts" --include="*.py" --include="*.rs" --include="*.java" --include="*.go"
# 子进程 (多语言)
grep -r "child_process\|subprocess\|Command::new\|exec\.Command\|Runtime\.exec" \
--include="*.js" --include="*.ts" --include="*.py" --include="*.rs" --include="*.java" --include="*.go"
# 环境变量 (多语言)
grep -r "process\.env\|os\.environ\|os\.Getenv\|System\.getenv\|std::env" \
--include="*.js" --include="*.ts" --include="*.py" --include="*.go" --include="*.java" --include="*.rs"
# 敏感文件路径
grep -r "MEMORY\.md\|\.ssh\|\.gitconfig\|id_rsa" \
--include="*.js" --include="*.ts" --include="*.py" --include="*.rs" --include="*.java" --include="*.go"
执行步骤
- 询问用户要检查的skill路径或来源
- 获取skill代码文件(支持多语言项目)
- 执行上述11项安全检查(使用语言特定的检测模式)
- 生成完整的安全检查报告(包含安全优势和注意事项)
- 给出明确的安装建议
1---2name: skill-security-check3description: 专门用于skill安装前的安全检查。支持多种编程语言(JavaScript/TypeScript, Python, Rust, Java, Go, C/C++, Ruby, PHP等)。在用户安装任何skill之前自动执行安全检查,检查数据外泄、凭证访问、文件系统越界、敏感文件访问、动态代码执行、权限提升、持久化机制、运行时安装、代码混淆、进程侦察、浏览器会话访问等安全风险。必须在安装任何第三方或社区skill之前使用此skill进行全面安全审查。4---56# Skill 安装前安全检查 (Multi-Language)78此skill用于在skill安装前进行全面的安全检查,确保待安装的skill不会对系统造成安全威胁。910**支持语言**: JavaScript/TypeScript, Python, Rust, Java, Go, C/C++, Ruby, PHP, Shell, PowerShell, Perl1112## 自动化工具(推荐入口)1314本 skill 随附可执行实现,优先用工具扫描,再按需做人工研判:1516- `scripts/security-check.js`:开箱即用的 Node CLI。对目标 skill 目录做 11 项静态扫描并生成报告:17 ```bash18 node scripts/security-check.js <skill-path>19 ```20- `src/`:TypeScript 源码(`npm install && npm run build` 编译至 `dist/`,`dist/` 默认被 .gitignore 忽略)。2122下方「安全检查流程」即工具的检测逻辑;手动审查时可直接使用文末的 grep 模式。23`scripts/security-report-*.md` 为示例输出,仅作格式参考(其中引用的 skill 名仅为样例)。2425## 何时使用2627在以下情况下必须执行安全检查:28- 安装来自GitHub、npm、PyPI、Crates.io或其他源的第三方skill29- 安装社区贡献的skill30- 更新已安装的skill到新版本31- 对安全性有疑问时3233## 安全检查流程3435对于每个待检查的skill,按照以下清单逐项检查:3637### 1. 数据外泄检查3839**检查目标:** 确保skill不会将敏感数据传输到外部服务器4041**检测模式 (按语言):**42- JavaScript: `fetch`, `axios`, `XMLHttpRequest`, `WebSocket`43- Python: `requests`, `urllib`, `http.client`, `aiohttp`, `httpx`44- Rust: `reqwest`, `hyper`, `ureq`, `curl`45- Java: `HttpClient`, `HttpURLConnection`, `OkHttp`, `Retrofit`46- Go: `http.Get`, `http.Post`, `net/http`47- Ruby: `Net::HTTP`, `open-uri`, `httparty`, `faraday`48- PHP: `curl_`, `file_get_contents`, `fsockopen`4950**预期结果:** ✅ 无 - 无外部服务器通信(除非是skill的核心功能且已明确声明)5152### 2. 凭证访问检查5354**检查目标:** 确保skill安全地访问凭证和敏感配置5556**检测模式 (按语言):**57- JavaScript: `process.env`, `dotenv`58- Python: `os.environ`, `os.getenv`59- Rust: `std::env`, `dotenv`60- Java: `System.getenv`, `System.getProperty`61- Go: `os.Getenv`, `os.LookupEnv`62- Ruby: `ENV[]`, `ENV.`63- PHP: `$_ENV`, `$_SERVER`, `getenv`6465**预期结果:** ✅ 安全 - 仅读取配置型环境变量6667### 3. 文件系统越界检查6869**检查目标:** 确保skill只在预期目录内操作文件7071**检测模式 (按语言):**72- JavaScript: `fs.writeFile`, `fs.readFile`, `fs.copyFile`73- Python: `open`, `pathlib`, `shutil.copy`, `shutil.move`74- Rust: `File::create`, `File::open`, `fs::write`, `std::fs`75- Java: `FileWriter`, `FileReader`, `Files.write`, `Files.read`76- Go: `os.WriteFile`, `os.ReadFile`, `os.Open`, `os.Create`77- Ruby: `File.open`, `File.write`, `FileUtils`78- PHP: `file_put_contents`, `file_get_contents`, `fopen`, `fwrite`7980**预期结果:** ✅ 无 - 仅访问预期目录8182### 4. 身份文件访问检查8384**检查目标:** 确保skill不访问敏感的身份识别文件8586**检测文件:**87- `MEMORY.md` - AI记忆文件88- `~/.ssh/*` - SSH密钥89- `~/.gitconfig` - Git配置90- `id_rsa`, `id_ed25519` - SSH私钥91- `known_hosts`, `authorized_keys`9293**预期结果:** ✅ 无 - 不访问 MEMORY.md 等敏感文件9495### 5. 动态代码执行检查9697**检查目标:** 确保动态代码执行是可控且安全的9899**检测模式 (按语言):**100- JavaScript: `eval()`, `new Function()`, `child_process`, `vm.runInNewContext`101- Python: `exec()`, `eval()`, `subprocess.call`, `os.system`, `os.popen`102- Rust: `Command::new`, `std::process::Command`, `libc::system`103- Java: `Runtime.exec`, `ProcessBuilder`, `ScriptEngine`104- Go: `exec.Command`, `os.Exec`, `syscall.Exec`105- Ruby: `eval`, `instance_eval`, `system`, ``, `Open3`106- PHP: `eval()`, `exec()`, `system()`, `shell_exec()`, `proc_open()`107108**预期结果:** ✅ 受控 - 仅用于 Chrome 自动化或明确的合法用途109110### 6. 权限提升检查111112**检查目标:** 确保skill不尝试提升系统权限113114**检测模式 (按语言):**115- Shell: `sudo`, `chmod +x`, `chmod 777`, `chown`116- Python: `os.chmod`, `os.chown`, `shutil.copymode`117- Rust: `std::os::unix::fs::PermissionsExt`, `set_permissions`118- Java: `Runtime.exec("sudo")`, `ProcessBuilder`119- Go: `os.Chmod`, `os.Chown`, `syscall.Chmod`120- Ruby: `File.chmod`, `File.chown`, `system("sudo")`121- PHP: `chmod()`, `chown()`, `exec()`, `system()`122123**预期结果:** ✅ 无 - 无特权操作124125### 7. 持久化机制检查126127**检查目标:** 确保skill不会在后台持续运行或保持驻留128129**检测模式 (按语言):**130- Shell: `daemon`, `cron`, `crontab`, `systemctl`, `nohup`131- Python: `schedule`, `APScheduler`, `threading.Timer`, `daemon=True`132- Rust: `tokio::time`, `std::thread::spawn`133- Java: `TimerTask`, `ScheduledExecutorService`, `@Scheduled`134- Go: `time.Tick`, `time.NewTicker`135- Ruby: `whenever`, `rufus-scheduler`, `Thread.new`136- 开机启动: `/etc/init.d`, `/etc/systemd`, `Library/LaunchAgents`, Windows注册表Run键137138**预期结果:** ✅ 无 - 无后台驻留139140### 8. 运行时安装检查141142**检查目标:** 确保依赖是预先声明的,运行时不会偷偷安装143144**检测模式 (按语言):**145- JavaScript: `npm install`, `yarn add`, `pnpm add`146- Python: `pip install`, `pip3 install`, `subprocess.call("pip")`, `importlib`147- Rust: `Command::new("cargo")`148- Java: `Runtime.exec("mvn")`, `ProcessBuilder("gradle")`149- Go: `exec.Command("go get")`150- Ruby: `system("gem install")`151152**预期结果:** ✅ 无 - 依赖预先声明153154### 9. 代码混淆检查155156**检查目标:** 确保源代码清晰可读,没有恶意混淆157158**检测指标:**159- 单字母变量比例 > 50%160- 超长行数 (>500字符) > 5行161- 大量长字符串 (>50字符) > 5个162- Base64/Hex编码的可疑字符串 > 10个163- 检测语言: JavaScript, TypeScript, Python, Rust, Java, Go, Ruby, PHP, C/C++164165**预期结果:** ✅ 无 - 源码清晰可读166167### 10. 进程侦察检查168169**检查目标:** 确保skill不会扫描或枚举系统进程170171**检测模式 (按语言):**172- Shell: `ps`, `tasklist`, `wmic`, `/proc/`173- Python: `psutil`, `subprocess.call("ps")`, `os.listdir("/proc")`174- Rust: `sysinfo`, `psutil`, `std::process::Command("ps")`175- Java: `ProcessHandle.allProcesses`, `ManagementFactory`, `sigar`176- Go: `exec.Command("ps")`, `process.`177- Ruby: `Sys::ProcTable`, `` `ps` ``, `system("ps")`178- PHP: `proc_open`, `shell_exec("ps")`, `exec("ps")`179180**预期结果:** ✅ 无 - 无系统扫描181182### 11. 浏览器会话访问检查183184**检查目标:** 确保浏览器自动化使用独立的配置文件185186**检测模式 (按语言):**187- JavaScript: `puppeteer`, `playwright`, `selenium`, `--user-data-dir`188- Python: `selenium`, `playwright`, `pyppeteer`, `user_data_dir`189- Rust: `headless_chrome`, `thirtyfour`, `fantoccini`190- Java: `selenium`, `ChromeDriver`, `WebDriver`, `HtmlUnitDriver`191- Go: `chromedp`, `rod`, `playwright-go`192- Ruby: `selenium-webdriver`, `watir`, `capybara`193- PHP: `facebook/webdriver`, `php-webdriver`, `panther`194195**预期结果:** ✅ 受控 - 使用独立 Chrome 配置文件196197## 执行检查198199当用户要求检查一个skill时,按照以下步骤执行:2002011. **获取skill文件:** 如果skill是本地路径,直接读取;如果是远程链接,先下载2022. **静态代码分析:** 使用grep等工具搜索风险模式(支持多语言)2033. **逐项检查:** 按照上述11项检查清单逐一验证2044. **生成报告:** 创建结构化的安全检查报告205206## 输出格式207208生成安全检查报告,格式如下:209210```markdown211# 安全审查完成 ✅212213已完成对 **xxx** skill214的全面安全审查,并生成详细报告。215216## 📊 审查结果217218**风险等级:** 🟢 LOW / 🟡 MEDIUM / 🔴 HIGH219**最终评级:** ✅ SAFE / ⚠️ REVIEW_NEEDED / ❌ UNSAFE220**置信度:** HIGH / MEDIUM / LOW221222---223224## 🔍 关键发现225226### ✅ 安全优势2272281. **无数据外泄** - 无外部服务器通信2292. **透明代码** - 所有源码可读,无混淆2303. **凭证安全** - 不访问敏感凭证或会话令牌2314. **作用域隔离** - 仅访问用户明确提供的文件2325. **无持久化** - 无 crontab、启动脚本或后台服务2336. **无权限提升** - 无 sudo、chmod 或 setuid 操作2347. **干净的依赖** - 所有依赖都是预先声明的235236### ⚠️ 需要用户知晓的点(非漏洞)2372381. **Chrome 会话持久化** - 首次运行需手动登录,会话保存在 Chrome 配置文件中2392. **网络图片下载** - 如果 Markdown 包含外部图片 URL,skill 会下载2403. **浏览器自动化** - 通过 CDP 控制 Chrome(发布功能所需)241242### 🚨 安全风险(如果有)2432441. **数据外泄** - [具体问题描述]2452. **权限提升** - [具体问题描述]246...247248---249250## 📋 详细检查项251252| 检查项 | 结果 | 说明 |253|--------|------|------|254| 数据外泄 | ✅ | 无外部服务器通信 |255| 凭证访问 | ✅ | 仅读取配置型环境变量 |256| ... | ... | ... |257258## 💡 建议操作259260- **安全等级:** ✅ 安全 / ⚠️ 需要注意 / ❌ 高风险261- **建议:** 可以安装 / 请仔细阅读需要用户知晓的点 / 不建议安装262```263264## 风险评级标准265266### 风险等级267268- **🟢 LOW (低风险)** - 所有检查项通过,或仅有低风险问题且已明确说明用途269- **🟡 MEDIUM (中风险)** - 存在中风险问题,或需要用户确认某些功能270- **🔴 HIGH (高风险)** - 存在数据外泄、权限提升、恶意代码等高风险问题271272### 最终评级273274- **✅ SAFE** - 可以安全安装275- **⚠️ REVIEW_NEEDED** - 需要用户查看"需要用户知晓的点"后决定是否安装276- **❌ UNSAFE** - 不建议安装277278### 置信度279280- **HIGH** - 静态分析结果明确,无歧义281- **MEDIUM** - 部分情况需要人工确认282- **LOW** - 代码复杂或存在混淆,检测结果不确定283284## 报告结构说明285286报告分为三个主要部分:2872881. **安全优势** - 展示该skill的安全亮点,让用户了解为什么它是安全的2892. **需要用户知晓的点** - 非漏洞,但用户需要了解的功能行为(如浏览器自动化、网络请求等)2903. **安全风险** - 真正的安全问题(如果有),会列出具体问题291292### 网络能力声明293294需要访问用户指定服务地址的 Skill,应在 `SKILL.md` frontmatter 中明确声明:295296```yaml297network_access: user-configured-origin298```299300该声明只把网络请求从“未声明外发”降为“需要用户知晓并人工审查”,不会自动证明安全。审查时仍须确认代码只使用用户配置的 base URL,不包含固定第三方上报端点、隐蔽 telemetry 或跨主机重定向。301302## 常见模式搜索303304在执行检查时,使用以下grep模式进行快速扫描:305306```bash307# 网络请求 (多语言)308grep -r "fetch\|axios\|requests\.\|urllib\|reqwest\|http\.client" \309 --include="*.js" --include="*.ts" --include="*.py" --include="*.rs"310311# 动态代码执行 (多语言)312grep -r "eval\|exec\s*(\|subprocess\|Command::new\|Runtime\.exec" \313 --include="*.js" --include="*.ts" --include="*.py" --include="*.rs" --include="*.java" --include="*.go"314315# 文件系统访问316grep -r "fs\.\|open\s*(\|File::\|FileWriter\|os\.WriteFile" \317 --include="*.js" --include="*.ts" --include="*.py" --include="*.rs" --include="*.java" --include="*.go"318319# 子进程 (多语言)320grep -r "child_process\|subprocess\|Command::new\|exec\.Command\|Runtime\.exec" \321 --include="*.js" --include="*.ts" --include="*.py" --include="*.rs" --include="*.java" --include="*.go"322323# 环境变量 (多语言)324grep -r "process\.env\|os\.environ\|os\.Getenv\|System\.getenv\|std::env" \325 --include="*.js" --include="*.ts" --include="*.py" --include="*.go" --include="*.java" --include="*.rs"326327# 敏感文件路径328grep -r "MEMORY\.md\|\.ssh\|\.gitconfig\|id_rsa" \329 --include="*.js" --include="*.ts" --include="*.py" --include="*.rs" --include="*.java" --include="*.go"330```331332## 执行步骤3333341. 询问用户要检查的skill路径或来源3352. 获取skill代码文件(支持多语言项目)3363. 执行上述11项安全检查(使用语言特定的检测模式)3374. 生成完整的安全检查报告(包含安全优势和注意事项)3385. 给出明确的安装建议