@pwddd/skills-scanner 3.0.21 → 3.0.23
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.
- package/README.md +2 -2
- package/index.ts +1 -1
- package/openclaw.plugin.json +2 -2
- package/package.json +1 -1
- package/skills/skills-scanner/SKILL.md +21 -18
- package/skills/skills-scanner/scan.py +1 -1
- package/src/config.ts +3 -3
- package/src/prompt-guidance.ts +31 -2
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ openclaw plugins install @openclaw/skills-scanner
|
|
|
32
32
|
"skills-scanner": {
|
|
33
33
|
"enabled": true,
|
|
34
34
|
"config": {
|
|
35
|
-
"apiUrl": "
|
|
35
|
+
"apiUrl": "https://110.vemic.com/skills-scanner",
|
|
36
36
|
"scanDirs": ["~/.openclaw/skills", "~/.openclaw/workspace/skills"],
|
|
37
37
|
"behavioral": false,
|
|
38
38
|
"useLLM": false,
|
|
@@ -160,7 +160,7 @@ python --version
|
|
|
160
160
|
skill-scanner-api
|
|
161
161
|
```
|
|
162
162
|
|
|
163
|
-
默认服务地址为 `
|
|
163
|
+
默认服务地址为 `https://110.vemic.com/skills-scanner`,可以在配置中修改。
|
|
164
164
|
|
|
165
165
|
## 工作流程
|
|
166
166
|
|
package/index.ts
CHANGED
|
@@ -40,7 +40,7 @@ const PYTHON_CMD = getPythonCommand();
|
|
|
40
40
|
export default function register(api: OpenClawPluginApi) {
|
|
41
41
|
const cfg: ScannerConfig =
|
|
42
42
|
api.config?.plugins?.entries?.["skills-scanner"]?.config ?? {};
|
|
43
|
-
const apiUrl = cfg.apiUrl ?? "
|
|
43
|
+
const apiUrl = cfg.apiUrl ?? "https://110.vemic.com/skills-scanner";
|
|
44
44
|
const scanDirs =
|
|
45
45
|
(cfg.scanDirs?.map(expandPath) ?? []).filter(existsSync).length > 0
|
|
46
46
|
? cfg.scanDirs!.map(expandPath)
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "skills-scanner",
|
|
3
3
|
"name": "Skills Scanner",
|
|
4
4
|
"description": "Security scanner for OpenClaw Skills to detect potential threats",
|
|
5
|
-
"version": "3.0.
|
|
5
|
+
"version": "3.0.23",
|
|
6
6
|
"author": "pwddd",
|
|
7
7
|
"skills": ["./skills"],
|
|
8
8
|
"configSchema": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"apiUrl": {
|
|
13
13
|
"type": "string",
|
|
14
14
|
"description": "Scanner API service URL",
|
|
15
|
-
"default": "
|
|
15
|
+
"default": "https://110.vemic.com/skills-scanner"
|
|
16
16
|
},
|
|
17
17
|
"scanDirs": {
|
|
18
18
|
"type": "array",
|
package/package.json
CHANGED
|
@@ -150,7 +150,7 @@ AI: 好的,让我先更新 skills-scanner 插件...
|
|
|
150
150
|
|
|
151
151
|
**检查方法**:
|
|
152
152
|
```bash
|
|
153
|
-
python3 {baseDir}/scan.py --api-url
|
|
153
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner health
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
**处理规则**:
|
|
@@ -167,7 +167,7 @@ python3 {baseDir}/scan.py --api-url http://10.110.3.133 health
|
|
|
167
167
|
|
|
168
168
|
如需启用安全扫描,请:
|
|
169
169
|
1. 启动 skill-scanner-api 服务
|
|
170
|
-
2. 确认服务地址配置正确(当前:
|
|
170
|
+
2. 确认服务地址配置正确(当前: https://110.vemic.com/skills-scanner)
|
|
171
171
|
3. 重新执行安装操作
|
|
172
172
|
```
|
|
173
173
|
- **不要阻止用户的操作**(如安装 Skill)
|
|
@@ -478,7 +478,7 @@ python -m pip install --user --quiet "requests>=2.31.0"
|
|
|
478
478
|
"entries": {
|
|
479
479
|
"skills-scanner": {
|
|
480
480
|
"config": {
|
|
481
|
-
"apiUrl": "
|
|
481
|
+
"apiUrl": "https://110.vemic.com/skills-scanner"
|
|
482
482
|
}
|
|
483
483
|
}
|
|
484
484
|
}
|
|
@@ -489,7 +489,7 @@ python -m pip install --user --quiet "requests>=2.31.0"
|
|
|
489
489
|
或直接调用时使用 `--api-url` 参数:
|
|
490
490
|
|
|
491
491
|
```bash
|
|
492
|
-
python3 {baseDir}/scan.py --api-url
|
|
492
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner scan <路径>
|
|
493
493
|
```
|
|
494
494
|
|
|
495
495
|
---
|
|
@@ -613,7 +613,7 @@ AI: 好的,让我先扫描一下这个 skill 的安全性...
|
|
|
613
613
|
#### 示例 2:详细检查 PDF Skill
|
|
614
614
|
|
|
615
615
|
```bash
|
|
616
|
-
python3 {baseDir}/scan.py --api-url
|
|
616
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner clawhub https://clawhub.ai/steipete/nano-pdf --detailed
|
|
617
617
|
```
|
|
618
618
|
|
|
619
619
|
**用户对话**:
|
|
@@ -636,7 +636,7 @@ AI: 好的,我会进行详细扫描...
|
|
|
636
636
|
#### 示例 3:深度扫描可疑 Skill
|
|
637
637
|
|
|
638
638
|
```bash
|
|
639
|
-
python3 {baseDir}/scan.py --api-url
|
|
639
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner clawhub https://clawhub.ai/username/suspicious-skill --detailed --behavioral --policy strict
|
|
640
640
|
```
|
|
641
641
|
|
|
642
642
|
**用户对话**:
|
|
@@ -659,7 +659,7 @@ AI: 明白,我会使用严格模式进行深度扫描...
|
|
|
659
659
|
#### 示例 4:包含 VirusTotal 扫描结果
|
|
660
660
|
|
|
661
661
|
```bash
|
|
662
|
-
python3 {baseDir}/scan.py --api-url
|
|
662
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner clawhub https://clawhub.ai/username/project --detailed
|
|
663
663
|
```
|
|
664
664
|
|
|
665
665
|
**用户对话(未检测到威胁)**:
|
|
@@ -772,25 +772,25 @@ https://clawhub.ai/<username>/<project>
|
|
|
772
772
|
### 基础扫描(推荐,速度快)
|
|
773
773
|
|
|
774
774
|
```bash
|
|
775
|
-
python3 {baseDir}/scan.py --api-url
|
|
775
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner scan <skill路径>
|
|
776
776
|
```
|
|
777
777
|
|
|
778
778
|
### 详细模式(显示所有发现)
|
|
779
779
|
|
|
780
780
|
```bash
|
|
781
|
-
python3 {baseDir}/scan.py --api-url
|
|
781
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner scan <skill路径> --detailed
|
|
782
782
|
```
|
|
783
783
|
|
|
784
784
|
### 深度扫描(加入行为分析)
|
|
785
785
|
|
|
786
786
|
```bash
|
|
787
|
-
python3 {baseDir}/scan.py --api-url
|
|
787
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner scan <skill路径> --detailed --behavioral
|
|
788
788
|
```
|
|
789
789
|
|
|
790
790
|
### 最强扫描(加入 LLM 语义分析)
|
|
791
791
|
|
|
792
792
|
```bash
|
|
793
|
-
python3 {baseDir}/scan.py --api-url
|
|
793
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner scan <skill路径> --detailed --behavioral --llm
|
|
794
794
|
```
|
|
795
795
|
|
|
796
796
|
---
|
|
@@ -802,31 +802,32 @@ python3 {baseDir}/scan.py --api-url http://10.110.3.133 scan <skill路径> --det
|
|
|
802
802
|
### 扫描指定目录下的所有 Skills
|
|
803
803
|
|
|
804
804
|
```bash
|
|
805
|
-
python3 {baseDir}/scan.py --api-url
|
|
805
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner batch <目录路径>
|
|
806
806
|
```
|
|
807
807
|
|
|
808
808
|
### 递归扫描(含子目录)
|
|
809
809
|
|
|
810
810
|
```bash
|
|
811
|
-
python3 {baseDir}/scan.py --api-url
|
|
811
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner batch <目录路径> --recursive
|
|
812
812
|
```
|
|
813
813
|
|
|
814
814
|
### 批量扫描并输出 JSON 报告
|
|
815
815
|
|
|
816
816
|
```bash
|
|
817
|
-
python3 {baseDir}/scan.py --api-url
|
|
817
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner batch <目录路径> --detailed --json /tmp/scan-report.json
|
|
818
|
+
```
|
|
818
819
|
```
|
|
819
820
|
|
|
820
821
|
### 常用目录示例
|
|
821
822
|
|
|
822
823
|
扫描 OpenClaw 默认 skills 目录:
|
|
823
824
|
```bash
|
|
824
|
-
python3 {baseDir}/scan.py --api-url
|
|
825
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner batch ~/.openclaw/skills
|
|
825
826
|
```
|
|
826
827
|
|
|
827
828
|
扫描 workspace skills:
|
|
828
829
|
```bash
|
|
829
|
-
python3 {baseDir}/scan.py --api-url
|
|
830
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner batch ~/.openclaw/workspace/skills --recursive
|
|
830
831
|
```
|
|
831
832
|
|
|
832
833
|
---
|
|
@@ -835,8 +836,10 @@ python3 {baseDir}/scan.py --api-url http://10.110.3.133 batch ~/.openclaw/worksp
|
|
|
835
836
|
|
|
836
837
|
检查 API 服务是否运行:
|
|
837
838
|
|
|
839
|
+
### 健康检查
|
|
840
|
+
|
|
838
841
|
```bash
|
|
839
|
-
python3 {baseDir}/scan.py --api-url
|
|
842
|
+
python3 {baseDir}/scan.py --api-url https://110.vemic.com/skills-scanner health
|
|
840
843
|
```
|
|
841
844
|
|
|
842
845
|
---
|
|
@@ -1038,7 +1041,7 @@ AI: 好的,让我先更新扫描插件...
|
|
|
1038
1041
|
- VirusTotal 有 API 调用频率限制(免费版:4 次/分钟,付费版更高)。
|
|
1039
1042
|
- 退出码 `0` 表示安全,`1` 表示存在问题(便于 CI/CD 集成)。
|
|
1040
1043
|
- `{baseDir}` 占位符会自动替换为 Skill 的安装目录。
|
|
1041
|
-
- 如果你配置了非默认的 API URL(如 `
|
|
1044
|
+
- 如果你配置了非默认的 API URL(如 `https://110.vemic.com/skills-scanner`),请在命令中使用 `--api-url` 参数指定你的 URL。
|
|
1042
1045
|
|
|
1043
1046
|
### VirusTotal 特别说明
|
|
1044
1047
|
|
package/src/config.ts
CHANGED
|
@@ -68,7 +68,7 @@ export const skillsScannerConfigSchema: OpenClawPluginConfigSchema = {
|
|
|
68
68
|
apiUrl: {
|
|
69
69
|
label: "API 服务地址",
|
|
70
70
|
help: "扫描 API 服务的 URL 地址",
|
|
71
|
-
placeholder: "
|
|
71
|
+
placeholder: "https://110.vemic.com/skills-scanner"
|
|
72
72
|
},
|
|
73
73
|
scanDirs: {
|
|
74
74
|
label: "扫描目录",
|
|
@@ -136,7 +136,7 @@ export function generateConfigGuide(
|
|
|
136
136
|
' "skills-scanner": {',
|
|
137
137
|
' "enabled": true,',
|
|
138
138
|
' "config": {',
|
|
139
|
-
' "apiUrl": "
|
|
139
|
+
' "apiUrl": "https://110.vemic.com/skills-scanner",',
|
|
140
140
|
' "scanDirs": ["~/.openclaw/skills"],',
|
|
141
141
|
' "behavioral": false,',
|
|
142
142
|
' "useLLM": false,',
|
|
@@ -152,7 +152,7 @@ export function generateConfigGuide(
|
|
|
152
152
|
"",
|
|
153
153
|
"💡 配置说明:",
|
|
154
154
|
"",
|
|
155
|
-
"1. apiUrl 默认
|
|
155
|
+
"1. apiUrl 默认 https://110.vemic.com/skills-scanner,需先启动 skill-scanner-api 服务",
|
|
156
156
|
"2. scanDirs 可添加多个目录(默认自动检测 ~/.openclaw/skills)",
|
|
157
157
|
"3. behavioral false=快速扫描(推荐),true=深度分析",
|
|
158
158
|
"4. useLLM false=不使用 LLM(推荐),true=语义分析",
|
package/src/prompt-guidance.ts
CHANGED
|
@@ -95,16 +95,45 @@ export const SKILLS_SECURITY_GUIDANCE = [
|
|
|
95
95
|
"",
|
|
96
96
|
"### 📋 Installation Command Recognition (IMPORTANT)",
|
|
97
97
|
"",
|
|
98
|
-
"
|
|
98
|
+
"**🔴 CRITICAL RULE: ALL COMMANDS MATCHING INSTALLATION PATTERNS REQUIRE COMPLETE SECURITY WORKFLOW 🔴**",
|
|
99
99
|
"",
|
|
100
|
+
"**When users send ANY command containing the following installation patterns, you MUST:**",
|
|
101
|
+
"1. STOP immediately",
|
|
102
|
+
"2. Execute STEP 0: `openclaw plugins update skills-scanner`",
|
|
103
|
+
"3. Search for full URL (if only skill name provided)",
|
|
104
|
+
"4. Run security scan",
|
|
105
|
+
"5. Execute installation command ONLY if scan passes",
|
|
106
|
+
"",
|
|
107
|
+
"**⛔ NEVER execute any installation command directly without completing the security workflow above ⛔**",
|
|
108
|
+
"",
|
|
109
|
+
"**Installation command patterns to recognize (ANY command containing these patterns):**",
|
|
110
|
+
"",
|
|
111
|
+
"**Core installation patterns:**",
|
|
112
|
+
"- `clawhub install` ← ANY command with this pattern",
|
|
113
|
+
"- `skill install` ← ANY command with this pattern",
|
|
114
|
+
"- `skills add` ← ANY command with this pattern",
|
|
115
|
+
"- `skills install` ← ANY command with this pattern",
|
|
116
|
+
"",
|
|
117
|
+
"**Examples of commands that trigger this rule:**",
|
|
118
|
+
"- `clawhub install <skill-name>`",
|
|
119
|
+
"- `clawhub install --force <skill-name>`",
|
|
120
|
+
"- `clawhub install --verbose <skill-name>`",
|
|
100
121
|
"- `openclaw clawhub install <skill-name>`",
|
|
101
122
|
"- `openclaw skill install <skill-name>`",
|
|
102
123
|
"- `openclaw skills add <skill-name>`",
|
|
103
|
-
"- `
|
|
124
|
+
"- `openclaw skills install <skill-name>`",
|
|
125
|
+
"- `npx clawhub@latest install <skill-name>`",
|
|
126
|
+
"- `npx @openclaw/clawhub install <skill-name>`",
|
|
127
|
+
"- `npm exec clawhub install <skill-name>`",
|
|
128
|
+
"- `yarn dlx clawhub install <skill-name>`",
|
|
129
|
+
"",
|
|
130
|
+
"**Natural language patterns:**",
|
|
104
131
|
"- \"install this skill\"",
|
|
105
132
|
"- \"add this skill\"",
|
|
106
133
|
"- \"download this skill\"",
|
|
107
134
|
"- \"setup this skill\"",
|
|
135
|
+
"- \"use npx to install\"",
|
|
136
|
+
"- \"install via clawhub\"",
|
|
108
137
|
"",
|
|
109
138
|
"**CRITICAL: ClawHub Installation Workflow**",
|
|
110
139
|
"",
|