ClawHub 发布安全技能 🔒 描述
为 ClawHub 技能发布提供的强制性安全扫描器。自动检测并防止在发布前意外暴露技能中的敏感信息。
何时使用此技能
在以下情况下始终运行 ClawHub 发布安全技能:
发布第一个技能
更新现有技能
任何包含配置示例的技能
处理凭证或路径的脚本
安装
# 通过 ClawHub 安装
clawhub install clawhub-publish-security
# 此技能安装:
- security-scan.py(自动扫描器)
- README.md(完整的安全指南)
- SKILL.md(此文件)
使用
快速扫描
# 扫描技能以进行发布
python skills/clawhub-publish-security/security-scan.py skills/your-skill
# 或从技能目录中
cd skills/your-skill
python ../clawhub-publish-security/security-scan.py .
发布前工作流
cd skills/my-awesome-skill
python ../clawhub-publish-security/security-scan.py .
python ../clawhub-publish-security/security-scan.py .
clawhub publish . --slug my-awesome-skill
它检查什么 ❌ 被阻止的模式(将失败扫描)
类型 模式 示例(❌ 坏) 修复(✅ 好)
电话号码 +420...,+1... +420XXXXXXXXX
个人路径 Users\name\ C:\COMFYUI C:\ComfyUI
API 密钥 api_key=XXX api_key=sk-XXX os.environ.get("API_KEY")
令牌 token=XXX token=ghp_XXX
电子邮件 XXX@XXX.com placeholder@placeholder.com
密码 password=XXX password=XXX
秘密 secret=XXX secret=XXX
✅ 允许的模式(安全)
类型 示例 状态
占位符 ✅ 安全
环境变量 os.environ.get("API_KEY") ✅ 安全
通用路径 C:\ComfyUI,~/.openclaw ✅ 安全
作者名称 "author": "Name (user)" ✅ 安全
公共 URL https://github.com/... ✅ 安全
输出示例
清除扫描 ✅
============================================================
[LOCK] ClawHub 发布安全扫描器
============================================================
[DIR] 正在扫描:C:\Users\vilda\.openclaw\workspace\skills\your-skill
[OK] 电话号码:清除(0 个找到)
[OK] 个人路径:清除(0 个找到)
[OK] API 密钥:清除(0 个找到)
[OK] 令牌:清除(0 个找到)
[OK] 电子邮件:清除(0 个找到)
[OK] 密码:清除(0 个找到)
[OK] 秘密:清除(0 个找到)
[PASS] 所有检查都通过 - 准备好发布!
[OK] 您现在可以安全地运行:clawhub publish
失败的扫描 ❌
============================================================
[LOCK] ClawHub 发布安全扫描器
============================================================
[DIR] 正在扫描:C:\Users\vilda\.openclaw\workspace\skills\your-skill
[FAIL] 电话号码:找到(1 个问题)- config.json:15: "+420XXXXXXXXX"
[OK] 个人路径:清除(0 个找到)
[OK] API 密钥:清除(0 个找到)
...
============================================================
[FAIL] 安全问题找到 - 不要发布!
总问题:1
============================================================
[INFO] 如何修复:
[FAIL] 在修复后重新运行:python security-scan.py /path/to/skill
[OK] 仅当所有检查都通过时才发布!
要扫描的文件
始终扫描以下文件:
文件 风险级别 常见问题
.py,.js 🔴 高 难以破解的凭证
config.json 🔴 高 API 密钥,令牌
.sh,.ps1 🔴 高 个人路径
README.md 🟡 中等 示例值
SKILL.md 🟡 中等 配置示例
可以跳过:
文件 原因
*.md(仅文档) 低风险,但仍然扫描
LICENSE 没有凭证
.gitignore 没有凭证
集成
OpenClaw 发布前钩子
将以下代码添加到您的工作流中:
# 在每次发布之前
alias clawhub-publish="python skills/clawhub-publish-security/security-scan.py . && clawhub publish"
# 使用
clawhub-publish . --slug my-skill
CI/CD 管道
GitHub Actions 示例
运行:python skills/clawhub-publish-security/security-scan.py ./skills/my-skill
如果:success()
运行:clawhub publish ./skills/my-skill
最佳实践
DO ✅
# 环境变量
api_key = os.environ.get("API_KEY")
# 通用路径
comfyui_path = r"C:\ComfyUI"
# 文档中的占位符
"target": ""
# 作者属性
"author": "Name (username)"
DON'T ❌
# 硬编码的凭证
api_key = "sk-XXX"
# 个人路径
comfyui_path = r"C:\\ComfyUI"
# 示例中的实际值
"target": "+420XXXXXXXXX"
故障排除
虚假阳性:作者字段中的电子邮件
问题:扫描器标记作者属性中的电子邮件
解决方案:这是故意的 - 电子邮件不应在发布的技能中使用。使用:"author": "Name (username)"
虚假阳性:通用路径
问题:C:\Program Files 被标记
解决方案:这是一个系统路径,应该是安全的。如果被标记,请报告为 bug。
扫描挂起
问题:扫描需要太长时间
解决方案:检查是否有大文件或二进制文件。