@elliotllliu/agent-shield 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +253 -170
  2. package/README.zh-CN.md +153 -72
  3. package/dist/cli.js +140 -8
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config.d.ts +4 -4
  6. package/dist/config.js +5 -5
  7. package/dist/config.js.map +1 -1
  8. package/dist/discover.js +1 -1
  9. package/dist/discover.js.map +1 -1
  10. package/dist/llm/anthropic.js +1 -1
  11. package/dist/llm/anthropic.js.map +1 -1
  12. package/dist/llm/ollama.js +1 -1
  13. package/dist/llm/ollama.js.map +1 -1
  14. package/dist/llm/openai.js +1 -1
  15. package/dist/llm/openai.js.map +1 -1
  16. package/dist/llm/prompt.d.ts +1 -1
  17. package/dist/llm/prompt.js +1 -1
  18. package/dist/llm/types.d.ts +1 -1
  19. package/dist/llm-analyzer.js +7 -6
  20. package/dist/llm-analyzer.js.map +1 -1
  21. package/dist/reporter/badge.js +1 -1
  22. package/dist/reporter/badge.js.map +1 -1
  23. package/dist/reporter/terminal.js +32 -18
  24. package/dist/reporter/terminal.js.map +1 -1
  25. package/dist/rules/attack-chain.d.ts +2 -0
  26. package/dist/rules/attack-chain.js +177 -0
  27. package/dist/rules/attack-chain.js.map +1 -0
  28. package/dist/rules/backdoor.js +18 -16
  29. package/dist/rules/backdoor.js.map +1 -1
  30. package/dist/rules/credential-hardcode.js +1 -1
  31. package/dist/rules/credential-hardcode.js.map +1 -1
  32. package/dist/rules/cross-file.d.ts +2 -0
  33. package/dist/rules/cross-file.js +234 -0
  34. package/dist/rules/cross-file.js.map +1 -0
  35. package/dist/rules/crypto-mining.js +1 -1
  36. package/dist/rules/crypto-mining.js.map +1 -1
  37. package/dist/rules/data-exfil.js +15 -4
  38. package/dist/rules/data-exfil.js.map +1 -1
  39. package/dist/rules/description-integrity.d.ts +2 -0
  40. package/dist/rules/description-integrity.js +204 -0
  41. package/dist/rules/description-integrity.js.map +1 -0
  42. package/dist/rules/env-leak.js +1 -1
  43. package/dist/rules/env-leak.js.map +1 -1
  44. package/dist/rules/excessive-perms.js +2 -2
  45. package/dist/rules/excessive-perms.js.map +1 -1
  46. package/dist/rules/hidden-files.js +2 -2
  47. package/dist/rules/hidden-files.js.map +1 -1
  48. package/dist/rules/index.js +21 -0
  49. package/dist/rules/index.js.map +1 -1
  50. package/dist/rules/mcp-manifest.js +14 -14
  51. package/dist/rules/mcp-manifest.js.map +1 -1
  52. package/dist/rules/mcp-runtime.d.ts +2 -0
  53. package/dist/rules/mcp-runtime.js +202 -0
  54. package/dist/rules/mcp-runtime.js.map +1 -0
  55. package/dist/rules/multilang-injection.d.ts +2 -0
  56. package/dist/rules/multilang-injection.js +107 -0
  57. package/dist/rules/multilang-injection.js.map +1 -0
  58. package/dist/rules/network-ssrf.js +8 -8
  59. package/dist/rules/network-ssrf.js.map +1 -1
  60. package/dist/rules/obfuscation.js +6 -6
  61. package/dist/rules/obfuscation.js.map +1 -1
  62. package/dist/rules/phone-home.js +1 -1
  63. package/dist/rules/phone-home.js.map +1 -1
  64. package/dist/rules/privilege.js +4 -4
  65. package/dist/rules/privilege.js.map +1 -1
  66. package/dist/rules/prompt-injection.js +99 -83
  67. package/dist/rules/prompt-injection.js.map +1 -1
  68. package/dist/rules/python-ast.d.ts +2 -0
  69. package/dist/rules/python-ast.js +109 -0
  70. package/dist/rules/python-ast.js.map +1 -0
  71. package/dist/rules/python-security.d.ts +2 -0
  72. package/dist/rules/python-security.js +91 -0
  73. package/dist/rules/python-security.js.map +1 -0
  74. package/dist/rules/reverse-shell.js +1 -1
  75. package/dist/rules/reverse-shell.js.map +1 -1
  76. package/dist/rules/sensitive-read.js +1 -1
  77. package/dist/rules/sensitive-read.js.map +1 -1
  78. package/dist/rules/skill-risks.js +5 -5
  79. package/dist/rules/skill-risks.js.map +1 -1
  80. package/dist/rules/supply-chain.js +4 -4
  81. package/dist/rules/supply-chain.js.map +1 -1
  82. package/dist/rules/tool-shadowing.js +3 -3
  83. package/dist/rules/tool-shadowing.js.map +1 -1
  84. package/dist/rules/toxic-flow.js +3 -3
  85. package/dist/rules/toxic-flow.js.map +1 -1
  86. package/dist/rules/typosquatting.js +1 -1
  87. package/dist/rules/typosquatting.js.map +1 -1
  88. package/dist/scanner/files.d.ts +4 -0
  89. package/dist/scanner/files.js +35 -1
  90. package/dist/scanner/files.js.map +1 -1
  91. package/dist/scanner/index.js +88 -13
  92. package/dist/scanner/index.js.map +1 -1
  93. package/dist/score.d.ts +5 -4
  94. package/dist/score.js +14 -7
  95. package/dist/score.js.map +1 -1
  96. package/dist/types.d.ts +8 -4
  97. package/package.json +22 -20
  98. package/src/analyzers/python_ast.py +304 -0
package/README.zh-CN.md CHANGED
@@ -1,128 +1,209 @@
1
1
  # 🛡️ AgentShield — AI Agent 安全扫描器
2
2
 
3
- [![npm](https://img.shields.io/npm/v/@elliotllliu/agentshield)](https://www.npmjs.com/package/@elliotllliu/agentshield)
3
+ [![npm](https://img.shields.io/npm/v/@elliotllliu/agent-shield)](https://www.npmjs.com/package/@elliotllliu/agent-shield)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
5
+ [![Tests](https://img.shields.io/badge/tests-236%20passing-brightgreen)]()
6
+ [![F1 Score](https://img.shields.io/badge/F1-100%25-brightgreen)]()
7
+ [![Rules](https://img.shields.io/badge/rules-30-blue)]()
5
8
 
6
- 专为 AI Agent 技能、MCP Server、插件设计的安全扫描工具。在安装第三方扩展之前,检测数据窃取、后门、凭证泄露和供应链漏洞。
9
+ 专为 AI Agent 技能、MCP Server、Dify 插件设计的安全扫描工具。检测数据窃取、后门、提示注入、工具投毒和供应链攻击。
7
10
 
8
- > **我们扫描了 ClawHub 热门 skill 仓库 平均安全分仅 47/100。** [查看完整报告 →](docs/clawhub-security-report.md)
11
+ **离线运行 · AST 级分析 · 开源免费 · 数据不出本机**
12
+
13
+ > 🆚 **对标 Snyk Agent Scan:** AgentShield 拥有 **30 条规则**(Snyk 仅 6 条),100% 本地运行,独家支持跨文件分析、杀伤链检测、AST 污点追踪、多语言注入检测。
9
14
 
10
15
  ## 为什么需要 AgentShield?
11
16
 
12
- AI Agent 会安装并执行第三方技能和插件,安全审查几乎为零。一个恶意 skill 就能:
17
+ AI Agent 安装执行第三方技能和插件,安全审查几乎为零。一个恶意组件就能:
13
18
 
14
19
  - 🔑 **偷凭证** — SSH 密钥、AWS Secret、API Token
15
- - 📤 **外泄数据** — 读取敏感文件发送到外部服务器
16
- - 💀 **植入后门** — eval()、反弹 Shell、动态代码执行
17
- - ⛏️ **挖矿**利用你的算力挖加密货币
18
- - 🕵️ **越权**声称只读但实际执行 Shell 命令
20
+ - 📤 **外泄数据** — 读敏感文件发到外部服务器
21
+ - 💀 **植入后门** — `eval()`、反弹 Shell、动态代码执行
22
+ - 🧟 **投毒记忆**植入持久化指令,跨会话存活
23
+ - 🎭 **影子工具**用恶意版本覆盖合法工具
24
+ - ⛓️ **链式攻击** — 侦察 → 获取权限 → 收集数据 → 外泄 → 持久化
19
25
 
20
- AgentShield 用 **16 条安全规则**在 50ms 内检出这些威胁。
26
+ AgentShield 用 **30 条安全规则**、**Python AST 污点追踪**和**跨文件关联分析**检出这些威胁。
21
27
 
22
28
  ## 快速开始
23
29
 
24
30
  ```bash
25
- npx @elliotllliu/agentshield scan ./my-skill/
26
- ```
31
+ # 扫描技能/插件(30 条规则,离线,<1s)
32
+ npx @elliotllliu/agent-shield scan ./my-skill/
33
+
34
+ # 扫描 Dify 插件(.difypkg 自动解压)
35
+ npx @elliotllliu/agent-shield scan ./plugin.difypkg
36
+
37
+ # AI 深度分析(用你自己的 API Key)
38
+ npx @elliotllliu/agent-shield scan ./skill/ --ai --provider openai --model gpt-4o
39
+ npx @elliotllliu/agent-shield scan ./skill/ --ai --provider ollama --model llama3
27
40
 
28
- 无需安装,Node.js 18+ 即可运行。
41
+ # 发现本机已安装的 Agent
42
+ npx @elliotllliu/agent-shield discover
29
43
 
30
- ## 16 条安全规则
44
+ # CI/CD 集成
45
+ npx @elliotllliu/agent-shield scan ./skill/ --json --fail-under 70
46
+ ```
47
+
48
+ ## 30 条安全规则
31
49
 
32
- ### 🔴 严重(自动判定不安全)
50
+ ### 🔴 高风险(-25 分/条)
33
51
 
34
52
  | 规则 | 检测内容 |
35
53
  |------|----------|
36
- | `data-exfil` | 读敏感文件 + 发 HTTP 请求(数据外泄模式) |
37
- | `backdoor` | `eval()`、`exec()`、动态代码执行 |
54
+ | `data-exfil` | 读敏感数据 + 发 HTTP 请求(外泄模式) |
55
+ | `backdoor` | `eval()`、`exec()`、`new Function()` + 动态输入 |
38
56
  | `reverse-shell` | Socket 外连 + Shell 管道 |
39
57
  | `crypto-mining` | 矿池连接、xmrig、coinhive |
40
- | `credential-hardcode` | 硬编码 AWS Key、GitHub PAT、Stripe Key |
41
- | `env-leak` | 环境变量 + HTTP 外发 |
42
- | `obfuscation` | base64+eval、十六进制混淆 |
43
- | `typosquatting` | npm 包名仿冒(`1odash` → `lodash`) |
44
- | `hidden-files` | `.env` 明文密钥 |
58
+ | `credential-hardcode` | 硬编码 AWS Key (`AKIA...`)、GitHub PAT、Stripe Key |
59
+ | `obfuscation` | `eval(atob(...))`、十六进制混淆、`String.fromCharCode` |
45
60
 
46
- ### 🟡 警告(建议审查)
61
+ ### 🟡 中风险(-8 分/条)
62
+
63
+ | 规则 | 检测内容 |
64
+ |------|----------|
65
+ | `prompt-injection` | 55+ 模式:指令覆盖、身份操纵、TPA、编码绕过 |
66
+ | `multilang-injection` | **8 语言注入**:中/日/韩/俄/阿/西/法/德 🆕 |
67
+ | `tool-shadowing` | 跨服务器工具名冲突、工具覆盖攻击 |
68
+ | `env-leak` | 环境变量 + HTTP 外发(凭证窃取) |
69
+ | `network-ssrf` | 用户可控 URL、AWS 元数据端点 |
70
+ | `phone-home` | 定时器 + HTTP 心跳(信标/C2 模式) |
71
+ | `toxic-flow` | 跨工具数据泄露和破坏性流 |
72
+ | `skill-risks` | 金融操作、不可信内容、外部依赖 |
73
+ | `python-security` | 35 种模式:eval、pickle、subprocess、SQL 注入、SSTI |
74
+ | `cross-file` | **跨文件数据流**:A 读密钥 → B 发 HTTP 🆕 |
75
+ | `attack-chain` | **杀伤链检测**:侦察→获取→收集→外泄→持久化 🆕 |
76
+ | `description-integrity` | **描述-代码一致性**:声称只读但发网络请求 🆕 |
77
+ | `mcp-runtime` | **MCP 运行时**:debug inspector、非 HTTPS、工具爆炸 🆕 |
78
+ | `python-ast` | **AST 污点追踪**:`input()` → `eval()` 数据流 🆕 |
79
+
80
+ ### 🟢 低风险(-2 分/条)
47
81
 
48
82
  | 规则 | 检测内容 |
49
83
  |------|----------|
50
- | `network-ssrf` | 用户可控 URL、SSRF |
51
84
  | `privilege` | SKILL.md 声明 vs 代码实际行为不匹配 |
52
85
  | `supply-chain` | npm 依赖已知 CVE |
53
- | `sensitive-read` | 读取 SSH 密钥、AWS 凭证 |
54
- | `excessive-perms` | 权限声明过多 |
55
- | `phone-home` | 定时器 + HTTP 心跳 |
56
- | `mcp-manifest` | MCP Server 通配权限、可疑工具描述 |
86
+ | `sensitive-read` | 读取 `~/.ssh`、`~/.aws`、`~/.kube` |
87
+ | `excessive-perms` | 权限声明过多或过危险 |
88
+ | `mcp-manifest` | MCP 通配权限、未声明能力 |
89
+ | `typosquatting` | npm 包名仿冒:`1odash` `lodash` |
90
+ | `hidden-files` | `.env` 明文密钥提交到仓库 |
57
91
 
58
- ## 真实扫描数据
92
+ ## 🔬 独家能力
59
93
 
60
- 我们扫了 ClawHub **Top 9 热门 skill 仓库**(总安装量 70 万+):
94
+ ### 跨文件关联分析
61
95
 
62
- | 仓库 | 安装量 | 分数 | 风险 |
63
- |------|--------|------|------|
64
- | vercel-labs/agent-skills | 157K | 40 | ✅ deploy 脚本误报已自动标注 |
65
- | obra/superpowers | 94K | 45 | ⚠️ 测试代码 + 渲染脚本 exec() |
66
- | coreyhaines31/marketingskills | 42K | 0 | ⚠️ 122 个 critical(CRM 凭证模式) |
67
- | anthropics/skills | 36K | 35 | ⚠️ 模板有 exec() |
68
- | expo/skills | 11K | 30 | ⚠️ CI 脚本读 env(FP 已标注) |
69
- | google-labs-code/stitch-skills | 63K | 100 | ✅ 干净 |
70
- | supercent-io/skills-template | 106K | 100 | ✅ 干净 |
96
+ 不同于单文件扫描器,AgentShield 追踪整个代码库的数据流:
71
97
 
72
- **平均分:59/100** — AgentShield v0.2.1 智能识别 test/deploy 文件,减少误报。
98
+ ```
99
+ 🔴 跨文件数据流:
100
+ config_reader.py 读取密钥 → exfiltrator.py 发送 HTTP
101
+ (通过 import 关联)
102
+ ```
73
103
 
74
- ## 使用方法
104
+ ### 多步攻击链检测
75
105
 
76
- ```bash
77
- # 扫描目录
78
- npx @elliotllliu/agentshield scan ./skill/
106
+ 5 阶段杀伤链模型:
79
107
 
80
- # JSON 输出
81
- npx @elliotllliu/agentshield scan ./skill/ --json
108
+ ```
109
+ 侦察 获取权限 收集数据 → 外泄 → 持久化
110
+ 🔴 完整杀伤链:apt.py:4 收集系统信息 → apt.py:8 读密钥 → apt.py:12 POST 到 C2
111
+ ```
82
112
 
83
- # CI 门禁
84
- npx @elliotllliu/agentshield scan ./skill/ --fail-under 70
113
+ ### Python AST 污点追踪
85
114
 
86
- # 禁用特定规则
87
- npx @elliotllliu/agentshield scan ./skill/ --disable supply-chain
115
+ Python `ast` 模块精确分析,不是正则:
88
116
 
89
- # 初始化配置
90
- npx @elliotllliu/agentshield init
117
+ ```python
118
+ user = input("cmd: ")
119
+ eval(user) # → 🔴 HIGH:污染输入
120
+ eval("{'a': 1}") # → ✅ 不标记(安全字面量)
121
+ ```
91
122
 
92
- # 实时监控
93
- npx @elliotllliu/agentshield watch ./skill/
123
+ ### 多语言提示注入
94
124
 
95
- # 版本对比
96
- npx @elliotllliu/agentshield compare ./v1/ ./v2/
125
+ 8 种语言,大多数扫描器只查英文:
97
126
 
98
- # 生成安全徽章
99
- npx @elliotllliu/agentshield badge ./skill/
127
+ ```
128
+ 忽略上面的指令 → 🔴 中文注入
129
+ 前の指示を無視 → 🔴 日文注入
130
+ 이전의 지시를 무시 → 🔴 韩文注入
131
+ Игнорируй инструкции → 🔴 俄文注入
100
132
  ```
101
133
 
102
- ## GitHub Actions 集成
134
+ ## 真实验证:493 Dify 插件
135
+
136
+ 我们扫描了完整的 [langgenius/dify-plugins](https://github.com/langgenius/dify-plugins) 仓库:
137
+
138
+ | 指标 | 数值 |
139
+ |------|------|
140
+ | 扫描插件数 | 493 |
141
+ | 分析文件数 | 9,862 |
142
+ | 代码行数 | 939,367 |
143
+ | 扫描耗时 | ~120s |
144
+ | 平均分 | **93/100** |
145
+
146
+ | 风险等级 | 数量 | 占比 |
147
+ |----------|------|------|
148
+ | 🔴 高风险(真实问题) | 6 | 1.2% |
149
+ | 🟡 中风险 | 73 | 14.8% |
150
+ | 🟢 安全 | 414 | 84.0% |
151
+
152
+ **6 个确认高风险插件**存在真实的 `eval()`/`exec()` 执行动态代码。高风险零误报。
153
+
154
+ ## 对比:AgentShield vs Snyk Agent Scan
155
+
156
+ | 功能 | AgentShield | Snyk Agent Scan |
157
+ |------|------------|-----------------|
158
+ | 安全规则 | **30 条** | 6 条 |
159
+ | 跨文件分析 | ✅ import 图 + 数据流 | ❌ 单文件 |
160
+ | 杀伤链检测 | ✅ 5 阶段模型 | ❌ |
161
+ | AST 污点追踪 | ✅ Python ast 模块 | ❌ |
162
+ | 多语言注入 | ✅ 8 种语言 | ❌ 仅英文 |
163
+ | 描述-代码一致性 | ✅ 语义不匹配 | ❌ |
164
+ | MCP 运行时分析 | ✅ 配置 + schema | 部分 |
165
+ | Python 安全 | ✅ 35 模式 + AST | ❌ |
166
+ | Dify .difypkg | ✅ 自动解压 | ❌ |
167
+ | 提示注入 | ✅ 55+ 正则 + AI | ✅ LLM(云端) |
168
+ | 100% 离线 | ✅ | ❌ 需要云端 |
169
+ | 零安装 (`npx`) | ✅ | ❌ 需要 Python + uv |
170
+ | GitHub Action | ✅ | ❌ |
171
+ | 无需账号 | ✅ | ❌ 需要 Snyk Token |
172
+ | 自选 LLM | ✅ OpenAI/Anthropic/Ollama | ❌ |
173
+ | 开源透明 | ✅ | ❌ 黑盒 |
174
+
175
+ ## CI 集成
176
+
177
+ ### GitHub Action
103
178
 
104
179
  ```yaml
105
- - uses: elliotllliu/agentshield@main
106
- with:
107
- path: './skills/'
108
- fail-under: '70'
180
+ name: Security Scan
181
+ on: [push, pull_request]
182
+ jobs:
183
+ scan:
184
+ runs-on: ubuntu-latest
185
+ steps:
186
+ - uses: actions/checkout@v4
187
+ - uses: elliotllliu/agent-shield@main
188
+ with:
189
+ path: './skills/'
190
+ fail-under: '70'
109
191
  ```
110
192
 
111
- ## 与其他工具对比
193
+ ## Benchmark
112
194
 
113
- | 功能 | AgentShield | npm audit | Snyk | ESLint |
114
- |------|------------|-----------|------|--------|
115
- | AI Skill/MCP 专用规则 | | | | ❌ |
116
- | 数据外泄检测 | | ❌ | ❌ | ❌ |
117
- | 权限不匹配检测 | | ❌ | ❌ | ❌ |
118
- | 零配置 | | | ❌ | ❌ |
119
- | < 50ms 扫描 | | ❌ | ❌ | ❌ |
195
+ | 指标 | 数值 |
196
+ |------|------|
197
+ | 样本数 | 57(33 恶意 + 24 良性) |
198
+ | 召回率 | 100% |
199
+ | 精确率 | 100% |
200
+ | F1 分数 | **100%** |
201
+ | 误报率 | 0% |
120
202
 
121
203
  ## 链接
122
204
 
123
- - 📦 [npm](https://www.npmjs.com/package/@elliotllliu/agentshield)
205
+ - 📦 [npm](https://www.npmjs.com/package/@elliotllliu/agent-shield)
124
206
  - 📖 [规则文档](docs/rules.md)
125
- - 📊 [ClawHub 安全报告](docs/clawhub-security-report.md)
126
207
  - 🇬🇧 [English README](README.md)
127
208
 
128
209
  ## 许可证
package/dist/cli.js CHANGED
@@ -3,6 +3,7 @@ import { Command } from "commander";
3
3
  import { resolve, join } from "path";
4
4
  import { existsSync, statSync, writeFileSync, watch as fsWatch, mkdirSync } from "fs";
5
5
  import { scan } from "./scanner/index.js";
6
+ import { extractDifypkg, cleanupTemp } from "./scanner/files.js";
6
7
  import { printReport } from "./reporter/terminal.js";
7
8
  import { printJsonReport } from "./reporter/json.js";
8
9
  import { generateBadgeSvg, generateBadgeMarkdown } from "./reporter/badge.js";
@@ -11,7 +12,7 @@ import { resolveAiConfig, runLlmAnalysis } from "./llm-analyzer.js";
11
12
  import { DEFAULT_CONFIG, DEFAULT_IGNORE } from "./config.js";
12
13
  const program = new Command();
13
14
  program
14
- .name("agentshield")
15
+ .name("agent-shield")
15
16
  .description("Security scanner for AI agent skills, MCP servers, and plugins")
16
17
  .version("0.1.0");
17
18
  program
@@ -27,7 +28,18 @@ program
27
28
  .option("--model <model>", "AI model to use (e.g. gpt-4o, claude-sonnet-4-20250514, llama3)")
28
29
  .action(async (directory, options) => {
29
30
  const target = resolve(directory);
30
- if (!existsSync(target) || !statSync(target).isDirectory()) {
31
+ let scanTarget = target;
32
+ let tempDir = null;
33
+ // Support .difypkg files (zip archives)
34
+ if (target.endsWith(".difypkg") || target.endsWith(".zip")) {
35
+ if (!existsSync(target) || !statSync(target).isFile()) {
36
+ console.error(`Error: "${directory}" is not a valid file`);
37
+ process.exit(1);
38
+ }
39
+ tempDir = extractDifypkg(target);
40
+ scanTarget = tempDir;
41
+ }
42
+ else if (!existsSync(target) || !statSync(target).isDirectory()) {
31
43
  console.error(`Error: "${directory}" is not a valid directory`);
32
44
  process.exit(1);
33
45
  }
@@ -41,7 +53,7 @@ program
41
53
  configOverride.rules.enable = options.enable.split(",").map((s) => s.trim());
42
54
  }
43
55
  }
44
- const result = scan(target, configOverride);
56
+ const result = scan(scanTarget, configOverride);
45
57
  // AI-powered deep analysis (optional)
46
58
  if (options.ai) {
47
59
  const llmConfig = resolveAiConfig(options.provider, options.model);
@@ -66,20 +78,24 @@ program
66
78
  }
67
79
  const threshold = options.failUnder ?? result.score;
68
80
  if (options.failUnder !== undefined && result.score < options.failUnder) {
81
+ if (tempDir)
82
+ cleanupTemp(tempDir);
69
83
  process.exit(1);
70
84
  }
85
+ if (tempDir)
86
+ cleanupTemp(tempDir);
71
87
  });
72
88
  program
73
89
  .command("init")
74
- .description("Generate .agentshield.yml and .agentshieldignore config files")
90
+ .description("Generate .agent-shield.yml and .agent-shieldignore config files")
75
91
  .argument("[directory]", "Target directory", ".")
76
92
  .action((directory) => {
77
93
  const target = resolve(directory);
78
94
  if (!existsSync(target)) {
79
95
  mkdirSync(target, { recursive: true });
80
96
  }
81
- const configPath = join(target, ".agentshield.yml");
82
- const ignorePath = join(target, ".agentshieldignore");
97
+ const configPath = join(target, ".agent-shield.yml");
98
+ const ignorePath = join(target, ".agent-shieldignore");
83
99
  if (existsSync(configPath)) {
84
100
  console.log(`⚠️ ${configPath} already exists, skipping`);
85
101
  }
@@ -131,7 +147,7 @@ program
131
147
  });
132
148
  }
133
149
  catch {
134
- console.error("⚠️ fs.watch recursive not supported on this platform. Use: nodemon --exec 'agentshield scan .'");
150
+ console.error("⚠️ fs.watch recursive not supported on this platform. Use: nodemon --exec 'agent-shield scan .'");
135
151
  }
136
152
  });
137
153
  program
@@ -225,6 +241,122 @@ program
225
241
  console.log(`\nPaste this in your README.md to show the badge.`);
226
242
  }
227
243
  });
244
+ program
245
+ .command("install-check")
246
+ .description("Scan a remote skill/plugin before installing it")
247
+ .argument("<url>", "GitHub URL, npm package, or local path")
248
+ .option("--json", "Output results as JSON")
249
+ .option("--fail-under <score>", "Exit with code 1 if score is below threshold", parseInt)
250
+ .option("--ai", "Enable AI-powered deep analysis")
251
+ .option("--provider <provider>", "AI provider: openai | anthropic | ollama")
252
+ .option("--model <model>", "AI model to use")
253
+ .action(async (url, options) => {
254
+ const { execSync } = await import("child_process");
255
+ const { mkdtempSync, rmSync, existsSync: ex } = await import("fs");
256
+ const { tmpdir } = await import("os");
257
+ const { join: pjoin } = await import("path");
258
+ let scanDir;
259
+ let tempDir = null;
260
+ let source = url;
261
+ // Determine source type
262
+ const isGitHub = /^https?:\/\/(www\.)?github\.com\//.test(url) || /^[\w-]+\/[\w.-]+$/.test(url);
263
+ const isNpm = url.startsWith("@") || (!url.includes("/") && !url.includes(".") && !ex(url));
264
+ if (isGitHub) {
265
+ // GitHub URL or owner/repo shorthand
266
+ const repoUrl = url.startsWith("http") ? url : `https://github.com/${url}`;
267
+ tempDir = mkdtempSync(pjoin(tmpdir(), "agent-shield-check-"));
268
+ console.error(`📥 Cloning ${repoUrl}...`);
269
+ try {
270
+ execSync(`git clone --depth 1 ${repoUrl} ${tempDir}/repo`, { stdio: "pipe" });
271
+ }
272
+ catch {
273
+ console.error(`❌ Failed to clone ${repoUrl}`);
274
+ if (tempDir)
275
+ rmSync(tempDir, { recursive: true, force: true });
276
+ process.exit(1);
277
+ }
278
+ scanDir = pjoin(tempDir, "repo");
279
+ source = repoUrl;
280
+ }
281
+ else if (isNpm) {
282
+ // npm package
283
+ tempDir = mkdtempSync(pjoin(tmpdir(), "agent-shield-check-"));
284
+ console.error(`📥 Downloading npm package ${url}...`);
285
+ try {
286
+ execSync(`npm pack ${url} --pack-destination ${tempDir}`, { stdio: "pipe" });
287
+ const tgz = execSync(`ls ${tempDir}/*.tgz`).toString().trim();
288
+ execSync(`tar -xzf ${tgz} -C ${tempDir}`, { stdio: "pipe" });
289
+ scanDir = pjoin(tempDir, "package");
290
+ }
291
+ catch {
292
+ console.error(`❌ Failed to download ${url} from npm`);
293
+ if (tempDir)
294
+ rmSync(tempDir, { recursive: true, force: true });
295
+ process.exit(1);
296
+ }
297
+ source = `npm:${url}`;
298
+ }
299
+ else {
300
+ // Local path or .difypkg
301
+ const target = resolve(url);
302
+ if (target.endsWith(".difypkg") || target.endsWith(".zip")) {
303
+ tempDir = extractDifypkg(target);
304
+ scanDir = tempDir;
305
+ }
306
+ else if (ex(target) && statSync(target).isDirectory()) {
307
+ scanDir = target;
308
+ }
309
+ else {
310
+ console.error(`❌ "${url}" is not a valid URL, npm package, or directory`);
311
+ process.exit(1);
312
+ }
313
+ source = target;
314
+ }
315
+ console.error(`🔍 Scanning ${source}...\n`);
316
+ const result = scan(scanDir);
317
+ // AI analysis if requested
318
+ if (options.ai) {
319
+ const llmConfig = resolveAiConfig(options.provider, options.model);
320
+ if (!llmConfig) {
321
+ console.error("Error: --ai requires an API key.");
322
+ if (tempDir)
323
+ rmSync(tempDir, { recursive: true, force: true });
324
+ process.exit(1);
325
+ }
326
+ console.error(`🤖 Running AI analysis...`);
327
+ const { collectFiles } = await import("./scanner/files.js");
328
+ const files = collectFiles(scanDir);
329
+ const llmFindings = await runLlmAnalysis(files, llmConfig);
330
+ result.findings.push(...llmFindings);
331
+ const { computeScore } = await import("./score.js");
332
+ result.score = computeScore(result.findings);
333
+ }
334
+ if (options.json) {
335
+ printJsonReport(result);
336
+ }
337
+ else {
338
+ printReport(result);
339
+ // Install recommendation
340
+ console.log();
341
+ if (result.score >= 90) {
342
+ console.log("✅ Safe to install — no significant risks detected.");
343
+ }
344
+ else if (result.score >= 70) {
345
+ console.log("🟡 Moderate risk — review the warnings above before installing.");
346
+ }
347
+ else if (result.score >= 40) {
348
+ console.log("🟠 High risk — investigate findings carefully before using.");
349
+ }
350
+ else {
351
+ console.log("🔴 Critical risk — DO NOT install. Serious security issues detected.");
352
+ }
353
+ }
354
+ if (tempDir)
355
+ rmSync(tempDir, { recursive: true, force: true });
356
+ if (options.failUnder !== undefined && result.score < options.failUnder) {
357
+ process.exit(1);
358
+ }
359
+ });
228
360
  program
229
361
  .command("discover")
230
362
  .description("Discover installed AI agents, MCP servers, and skills on this machine")
@@ -258,7 +390,7 @@ program
258
390
  });
259
391
  // Default: if first arg looks like a directory, treat as scan
260
392
  const args = process.argv.slice(2);
261
- if (args.length > 0 && !args[0].startsWith("-") && !["scan", "init", "watch", "compare", "badge", "discover", "help"].includes(args[0])) {
393
+ if (args.length > 0 && !args[0].startsWith("-") && !["scan", "init", "watch", "compare", "badge", "discover", "install-check", "help"].includes(args[0])) {
262
394
  process.argv.splice(2, 0, "scan");
263
395
  }
264
396
  program.parse();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -6,7 +6,7 @@ export interface ScanConfig {
6
6
  disable?: string[];
7
7
  };
8
8
  /** Severity overrides: rule-id → severity */
9
- severity?: Record<string, "critical" | "warning" | "info">;
9
+ severity?: Record<string, "high" | "medium" | "low">;
10
10
  /** Score threshold for CI (same as --fail-under) */
11
11
  failUnder?: number;
12
12
  /** Glob patterns to ignore */
@@ -14,11 +14,11 @@ export interface ScanConfig {
14
14
  }
15
15
  /** Load config from target directory or parents */
16
16
  export declare function loadConfig(dir: string): ScanConfig;
17
- /** Load .agentshieldignore patterns */
17
+ /** Load .agent-shieldignore patterns */
18
18
  export declare function loadIgnorePatterns(dir: string): string[];
19
19
  /** Check if a file path matches any ignore pattern */
20
20
  export declare function isIgnored(filePath: string, patterns: string[]): boolean;
21
- /** Default config content for `agentshield init` */
22
- export declare const DEFAULT_CONFIG = "# AgentShield Configuration\n# https://github.com/elliotllliu/agentshield\n\nrules:\n # disable:\n # - supply-chain # skip npm audit\n # - phone-home # allow periodic HTTP\n\n# severity:\n# sensitive-read: info # downgrade to info\n\n# failUnder: 70 # CI threshold\n\n# ignore:\n# - \"tests/**\"\n# - \"*.test.ts\"\n";
21
+ /** Default config content for `agent-shield init` */
22
+ export declare const DEFAULT_CONFIG = "# AgentShield Configuration\n# https://github.com/elliotllliu/agent-shield\n\nrules:\n # disable:\n # - supply-chain # skip npm audit\n # - phone-home # allow periodic HTTP\n\n# severity:\n# sensitive-read: info # downgrade to info\n\n# failUnder: 70 # CI threshold\n\n# ignore:\n# - \"tests/**\"\n# - \"*.test.ts\"\n";
23
23
  /** Default ignore content */
24
24
  export declare const DEFAULT_IGNORE = "# AgentShield Ignore\n# Patterns here will be excluded from scanning\n\nnode_modules/\ndist/\nbuild/\n.git/\n*.test.ts\n*.test.js\n*.spec.ts\n*.spec.js\n__tests__/\ncoverage/\n";
package/dist/config.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { readFileSync, existsSync } from "fs";
2
2
  import { join } from "path";
3
3
  import { parse as parseYaml } from "./yaml-simple.js";
4
- const CONFIG_NAMES = [".agentshield.yml", ".agentshield.yaml", "agentshield.config.yml"];
4
+ const CONFIG_NAMES = [".agent-shield.yml", ".agent-shield.yaml", "agent-shield.config.yml"];
5
5
  /** Load config from target directory or parents */
6
6
  export function loadConfig(dir) {
7
7
  for (const name of CONFIG_NAMES) {
@@ -18,9 +18,9 @@ export function loadConfig(dir) {
18
18
  }
19
19
  return {};
20
20
  }
21
- /** Load .agentshieldignore patterns */
21
+ /** Load .agent-shieldignore patterns */
22
22
  export function loadIgnorePatterns(dir) {
23
- const ignorePath = join(dir, ".agentshieldignore");
23
+ const ignorePath = join(dir, ".agent-shieldignore");
24
24
  if (!existsSync(ignorePath))
25
25
  return [];
26
26
  try {
@@ -55,9 +55,9 @@ export function isIgnored(filePath, patterns) {
55
55
  }
56
56
  return false;
57
57
  }
58
- /** Default config content for `agentshield init` */
58
+ /** Default config content for `agent-shield init` */
59
59
  export const DEFAULT_CONFIG = `# AgentShield Configuration
60
- # https://github.com/elliotllliu/agentshield
60
+ # https://github.com/elliotllliu/agent-shield
61
61
 
62
62
  rules:
63
63
  # disable:
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiBtD,MAAM,YAAY,GAAG,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,wBAAwB,CAAC,CAAC;AAEzF,mDAAmD;AACnD,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAClD,OAAO,SAAS,CAAC,OAAO,CAAe,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC;aACrC,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,QAAkB;IAC5D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,yCAAyC;QACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,oBAAoB;YACpB,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;QACpF,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,GAAG,CACzF,CAAC;YACF,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,8BAA8B;YAC9B,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC1G,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;CAgB7B,CAAC;AAEF,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;CAa7B,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiBtD,MAAM,YAAY,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;AAE5F,mDAAmD;AACnD,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAClD,OAAO,SAAS,CAAC,OAAO,CAAe,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC;aACrC,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,QAAkB;IAC5D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,yCAAyC;QACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,oBAAoB;YACpB,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;QACpF,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,GAAG,CACzF,CAAC;YACF,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,8BAA8B;YAC9B,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC1G,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;CAgB7B,CAAC;AAEF,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;CAa7B,CAAC"}
package/dist/discover.js CHANGED
@@ -137,7 +137,7 @@ export function printDiscovery(agents) {
137
137
  }
138
138
  console.log();
139
139
  }
140
- console.log(chalk.dim("Run `agentshield scan <path>` on any config or skills directory above."));
140
+ console.log(chalk.dim("Run `agent-shield scan <path>` on any config or skills directory above."));
141
141
  console.log();
142
142
  }
143
143
  //# sourceMappingURL=discover.js.map